diff --git a/src/examples/IfcAlignment.cpp b/src/examples/IfcAlignment.cpp index 450bb8e5cb..fb701dc667 100644 --- a/src/examples/IfcAlignment.cpp +++ b/src/examples/IfcAlignment.cpp @@ -17,478 +17,423 @@ * * ********************************************************************************/ -// This example illustrates the basic of building an alignment model. -// The alignment is based on "Bridge Geometry Manual", April 2022 -// US Department of Transportation, Federal Highway Administration (FHWA) -// https://www.fhwa.dot.gov/bridge/pubs/hif22034.pdf -// -// Sections and page number for this document are cited in the code comments. -// -// This examples differs from IfcSimplifiedAlignment because it builds the -// alignment explicitly +/******************************************************************************** + * * + * Example that generates extrusions of parameterized profiles. * + * * + ********************************************************************************/ -// Disable warnings coming from IfcOpenShell -#pragma warning(disable : 4018 4267 4250 4984 4985) - -#include "../ifcparse/Ifc4x3_add2.h" +#include "../ifcparse/Ifc2x3.h" #include "../ifcparse/IfcHierarchyHelper.h" +#include "../ifcparse/IfcUtil.h" -#include #include +#include +#include -const double PI = boost::math::constants::pi(); -double to_radian(double deg) { return PI * deg / 180; } +typedef std::string S; +typedef IfcWrite::IfcGuidHelper guid; +boost::none_t const null = (static_cast(0)); -#define Schema Ifc4x3_add2 +void create_testcase_for(IfcSchema::IfcProfileDef::list::ptr profiles) { + IfcSchema::IfcProfileDef* profile = *profiles->begin(); + const std::string profile_type = IfcSchema::Type::ToString(profile->type()); + const std::string filename = profile_type + ".ifc"; -// performs basic project setup including created the IfcProject object -// and initializing the project units to FEET -Schema::IfcProject* setup_project(IfcHierarchyHelper& file) { - std::vector file_description; - file_description.push_back("ViewDefinition[Alignment-basedReferenceView]"); - file.header().file_description()->setdescription(file_description); + IfcHierarchyHelper file; + file.filename(filename); - auto project = file.addProject(); - project->setName(std::string("FHWA Bridge Geometry Manual Example Alignment")); - project->setDescription(std::string("C++ Example")); + int i = 0; + for (IfcSchema::IfcProfileDef::list::it it = profiles->begin(); it != profiles->end(); ++it, ++i) { + IfcSchema::IfcProfileDef* profile = *it; + IfcSchema::IfcBuildingElementProxy* product = new IfcSchema::IfcBuildingElementProxy( + guid(), 0, S("profile"), null, null, 0, 0, null, null); + file.addBuildingProduct(product); + file.getSingle()->setName(profile_type); + product->setOwnerHistory(file.getSingle()); - // set up project units for feet - // the call to file.addProject() sets up length units as millimeter. - auto units_in_context = project->UnitsInContext(); - auto units = units_in_context->Units(); - auto begin = units->begin(); - auto iter = begin; - auto end = units->end(); - for (; iter != end; iter++) { - auto unit = *iter; - if (unit->as() && unit->as()->UnitType() == Schema::IfcUnitEnum::IfcUnit_LENGTHUNIT) { - auto dimensions = new Schema::IfcDimensionalExponents(1, 0, 0, 0, 0, 0, 0); - file.addEntity(dimensions); + product->setObjectPlacement(file.addLocalPlacement(0, 100. * i)); - auto conversion_factor = new Schema::IfcMeasureWithUnit(new Schema::IfcLengthMeasure(304.80), unit->as()); - file.addEntity(conversion_factor); - - auto conversion_based_unit = new Schema::IfcConversionBasedUnit(dimensions, Schema::IfcUnitEnum::IfcUnit_LENGTHUNIT, "FEET", conversion_factor); - file.addEntity(conversion_based_unit); - - units->remove(unit); // remove the millimeter unit - units->push(conversion_based_unit); // add the feet unit - units_in_context->setUnits(units); // update the UnitsInContext - - break; // Done!, the length unit was found, so break out of the loop + if (profile->is(IfcSchema::Type::IfcParameterizedProfileDef)) { + ((IfcSchema::IfcParameterizedProfileDef*)profile)->setPosition(file.addPlacement2d()); } + + IfcSchema::IfcExtrudedAreaSolid* solid = new IfcSchema::IfcExtrudedAreaSolid(profile, + file.addPlacement3d(), + file.addTriplet(0, 0, 1), + 20.0); + + file.addEntity(profile); + file.addEntity(solid); + + IfcSchema::IfcRepresentation::list::ptr reps(new IfcSchema::IfcRepresentation::list); + IfcSchema::IfcRepresentationItem::list::ptr items(new IfcSchema::IfcRepresentationItem::list); + + items->push(solid); + IfcSchema::IfcShapeRepresentation* rep = new IfcSchema::IfcShapeRepresentation( + file.getSingle(), S("Body"), S("SweptSolid"), items); + reps->push(rep); + + IfcSchema::IfcProductDefinitionShape* shape = new IfcSchema::IfcProductDefinitionShape(0, 0, reps); + file.addEntity(rep); + file.addEntity(shape); + + product->setRepresentation(shape); } - return project; + std::ofstream f(filename.c_str()); + f << file; } -// creates geometry and business logic segments for horizontal alignment tangent runs -std::pair create_tangent(typename Schema::IfcCartesianPoint* p, double dir, double length) { - // geometry - auto parent_curve = new Schema::IfcLine( - new Schema::IfcCartesianPoint(std::vector({0, 0})), - new Schema::IfcVector(new Schema::IfcDirection(std::vector{1.0, 0.0}), 1.0)); - - auto curve_segment = new Schema::IfcCurveSegment( - Schema::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Schema::IfcAxis2Placement2D(p, new Schema::IfcDirection(std::vector{cos(dir), sin(dir)})), - new Schema::IfcLengthMeasure(0.0), // start - new Schema::IfcLengthMeasure(length), - parent_curve); - - // business logic - auto design_parameters = new Schema::IfcAlignmentHorizontalSegment( - boost::none, boost::none, p, dir, 0.0, 0.0, length, boost::none, Schema::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_LINE); - - auto alignment_segment = new Schema::IfcAlignmentSegment( - IfcParse::IfcGlobalId(), nullptr, boost::none, boost::none, boost::none, nullptr, nullptr, design_parameters); - - return {curve_segment, alignment_segment}; -} - -// creates geometry and business logic segments for horizontal alignment horizonal curves -std::pair create_hcurve(typename Schema::IfcCartesianPoint* pc, double dir, double radius, double lc) { - // geometry - double sign = radius / fabs(radius); - auto parent_curve = new Schema::IfcCircle( - new Schema::IfcAxis2Placement2D(new Schema::IfcCartesianPoint(std::vector({0, 0})), new Schema::IfcDirection(std::vector{1, 0})), - fabs(radius)); - - auto curve_segment = new Schema::IfcCurveSegment( - Schema::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Schema::IfcAxis2Placement2D(pc, new Schema::IfcDirection(std::vector{cos(dir), sin(dir)})), - new Schema::IfcLengthMeasure(0.0), - new Schema::IfcLengthMeasure(sign * lc), - parent_curve); - - // business logic - auto design_parameters = new Schema::IfcAlignmentHorizontalSegment(boost::none, boost::none, pc, dir, radius, radius, lc, boost::none, Schema::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_CIRCULARARC); - auto alignment_segment = new Schema::IfcAlignmentSegment(IfcParse::IfcGlobalId(), nullptr, boost::none, boost::none, boost::none, nullptr, nullptr, design_parameters); - - return {curve_segment, alignment_segment}; -} - -// creates geometry and business logic segments for vertical profile gradient runs -std::pair create_gradient(typename Schema::IfcCartesianPoint* p, double slope, double length) { - // geometry - auto parent_curve = new Schema::IfcLine( - new Schema::IfcCartesianPoint(std::vector({0, 0})), - new Schema::IfcVector(new Schema::IfcDirection(std::vector{1, 0}), 1.0)); - - auto curve_segment = new Schema::IfcCurveSegment( - Schema::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Schema::IfcAxis2Placement2D(p, new Schema::IfcDirection(std::vector{sqrt(1 - slope * slope), slope})), - new Schema::IfcLengthMeasure(0.0), // start - new Schema::IfcLengthMeasure(length), - parent_curve); - - // business logic - auto design_parameters = new Schema::IfcAlignmentVerticalSegment(boost::none, boost::none, p->Coordinates()[0], length, p->Coordinates()[1], slope, slope, boost::none, Schema::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_CONSTANTGRADIENT); - auto alignment_segment = new Schema::IfcAlignmentSegment(IfcParse::IfcGlobalId(), nullptr, boost::none, boost::none, boost::none, nullptr, nullptr, design_parameters); - - return {curve_segment, alignment_segment}; -} - -// creates geometry and business logic segments for vertical profile parabolic vertical curves -std::pair create_vcurve(typename Schema::IfcCartesianPoint* p, double start_slope, double end_slope, double length) { - // geometry - double A = p->Coordinates()[1]; - double B = start_slope; - double C = (end_slope - start_slope) / (2 * length); - - auto parent_curve = new Schema::IfcPolynomialCurve( - new Schema::IfcAxis2Placement2D(new Schema::IfcCartesianPoint(std::vector{0.0, 0.0}), new Schema::IfcDirection(std::vector{1.0, 0.0})), - std::vector{0.0, 1.0}, - std::vector{A, B, C}, - boost::none); - - auto curve_segment = new Schema::IfcCurveSegment( - Schema::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Schema::IfcAxis2Placement2D(p, new Schema::IfcDirection(std::vector{sqrt(1 - start_slope * start_slope), start_slope})), - new Schema::IfcLengthMeasure(0.0), - new Schema::IfcLengthMeasure(length), - parent_curve); - - // business logic - double k = (end_slope - start_slope) / length; - auto design_parameters = new Schema::IfcAlignmentVerticalSegment(boost::none, boost::none, p->Coordinates()[0], length, p->Coordinates()[1], start_slope, end_slope, 1 / k, Schema::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_PARABOLICARC); - auto alignment_segment = new Schema::IfcAlignmentSegment(IfcParse::IfcGlobalId(), nullptr, boost::none, boost::none, boost::none, nullptr, nullptr, design_parameters); - - return {curve_segment, alignment_segment}; -} - -// creates representations for each IfcAlignmentSegment per CT 4.1.7.1.1.4 -// https://standards.buildingsmart.org/IFC/RELEASE/IFC4_3/HTML/concepts/Product_Shape/Product_Geometric_Representation/Alignment_Geometry/Alignment_Geometry_-_Segments/content.html -void create_segment_representations(IfcHierarchyHelper& file, Schema::IfcLocalPlacement* global_placement, Schema::IfcGeometricRepresentationSubContext* segment_axis_subcontext, typename aggregate_of::ptr curve_segments, typename aggregate_of::ptr segments) { - auto cs_iter = curve_segments->begin(); - auto s_iter = segments->begin(); - for (; cs_iter != curve_segments->end(); cs_iter++, s_iter++) { - auto curve_segment = *cs_iter; - auto alignment_segment = (*s_iter)->as(); - - typename aggregate_of::ptr representation_items(new aggregate_of()); - representation_items->push(curve_segment); - - auto axis_representation = new Schema::IfcShapeRepresentation(segment_axis_subcontext, std::string("Axis"), std::string("Segment"), representation_items); - file.addEntity(axis_representation); - - typename aggregate_of::ptr representations(new aggregate_of()); - representations->push(axis_representation); - - auto product = new Schema::IfcProductDefinitionShape(boost::none, boost::none, representations); - file.addEntity(product); - - alignment_segment->setObjectPlacement(global_placement); - alignment_segment->setRepresentation(product); - } -} - -int main() { - IfcHierarchyHelper file; - - auto project = setup_project(file); - - auto geometric_representation_context = file.getRepresentationContext(std::string("Model")); // creates the representation context if it doesn't already exist - - auto axis_model_representation_subcontext = new Schema::IfcGeometricRepresentationSubContext(std::string("Axis"), std::string("Model"), geometric_representation_context, boost::none, Schema::IfcGeometricProjectionEnum::IfcGeometricProjection_MODEL_VIEW, boost::none); - file.addEntity(axis_model_representation_subcontext); - - auto global_placement = file.addLocalPlacement(); - - // - // Define horizontal alignment - // - - // define key points - // B.1.4 pg 212 - auto pob = file.addDoublet(500, 2500); // beginning - auto pc1 = file.addDoublet(2142.237995, 1436.014820); // Point of curve (PC), Curve #1 - auto pt1 = file.addDoublet(3660.446123, 2050.736173); // Point of tangent (PT), Curve #1 - auto pc2 = file.addDoublet(4084.115884, 3889.462938); // Point of curve (PC), Curve #2 - auto pt2 = file.addDoublet(5469.395067, 4847.566310); // Point of tangent (PT), Curve #2 - auto pc3 = file.addDoublet(7019.971367, 4638.286073); // Point of curve (PC), Curve #3 - auto pt3 = file.addDoublet(7790.932128, 4006.730765); // Point of tangent (PT), Curve #3 - auto poe = file.addDoublet(8480, 2010); // ending - - // define tangent runs and curve lengths - double run_1 = 1956.785654; - double lc_1 = 1919.222667; - double run_2 = 1886.905454; - double lc_2 = 1848.115835; - double run_3 = 1564.635765; - double lc_3 = 1049.119737; - double run_4 = 2112.285084; - - // define curve radii - double rc_1 = 1000; - double rc_2 = -1250; // negative radius for curves to the right - double rc_3 = -950; - - // bearing of tangents - double angle_1 = to_radian(327.0613); - double angle_2 = to_radian(77.0247); - double angle_3 = to_radian(352.3133); - double angle_4 = to_radian(289.0395); - - // create containers to store the curve segments - typename aggregate_of::ptr horizontal_curve_segments(new aggregate_of()); // geometry - typename aggregate_of::ptr horizontal_segments(new aggregate_of()); // business logic - - // - // Build the horizontal alignment segments - // - - // POB to PC1 - auto curve_segment_1 = create_tangent(pob, angle_1, run_1); - horizontal_curve_segments->push(curve_segment_1.first); - horizontal_segments->push(curve_segment_1.second); - - // Curve 1 - auto curve_segment_2 = create_hcurve(pc1, angle_1, rc_1, lc_1); - horizontal_curve_segments->push(curve_segment_2.first); - horizontal_segments->push(curve_segment_2.second); - - // PT1 to PC2 - auto curve_segment_3 = create_tangent(pt1, angle_2, run_2); - horizontal_curve_segments->push(curve_segment_3.first); - horizontal_segments->push(curve_segment_3.second); - - // Curve 2 - auto curve_segment_4 = create_hcurve(pc2, angle_2, rc_2, lc_2); - horizontal_curve_segments->push(curve_segment_4.first); - horizontal_segments->push(curve_segment_4.second); - - // PT2 to PC3 - auto curve_segment_5 = create_tangent(pt2, angle_3, run_3); - horizontal_curve_segments->push(curve_segment_5.first); - horizontal_segments->push(curve_segment_5.second); - - // Curve 3 - auto curve_segment_6 = create_hcurve(pc3, angle_3, rc_3, lc_3); - horizontal_curve_segments->push(curve_segment_6.first); - horizontal_segments->push(curve_segment_6.second); - - // PT3 to POE - auto curve_segment_7 = create_tangent(pt3, angle_4, run_4); - horizontal_curve_segments->push(curve_segment_7.first); - horizontal_segments->push(curve_segment_7.second); - - // Zero-length terminator segment - auto terminator_segment = create_tangent(poe, angle_4, 0.0); - terminator_segment.first->setTransition(Schema::IfcTransitionCode::IfcTransitionCode_DISCONTINUOUS); - horizontal_curve_segments->push(terminator_segment.first); - horizontal_segments->push(terminator_segment.second); - - // - // Create the horizontal alignment (IfcAlignmentHorizontal) and nest alignment segments - // - auto horizontal_alignment = new Schema::IfcAlignmentHorizontal(IfcParse::IfcGlobalId(), nullptr, std::string("Horizontal Alignment"), boost::none, boost::none, nullptr, nullptr); - file.addEntity(horizontal_alignment); - - auto nests_horizontal_segments = new Schema::IfcRelNests(IfcParse::IfcGlobalId(), nullptr, boost::none, std::string("Nests horizontal alignment segments with horizontal alignment"), horizontal_alignment, horizontal_segments); - file.addEntity(nests_horizontal_segments); - - // - // Create plan view footprint model representation for the horizontal alignment - // - - // start by defining a composite curve composed of the horizonal curve segments - auto composite_curve = new Schema::IfcCompositeCurve(horizontal_curve_segments, false /*not self-intersecting*/); - file.addEntity(composite_curve); - - // the composite curve is a representation item - typename aggregate_of::ptr alignment_representation_items(new aggregate_of()); - alignment_representation_items->push(composite_curve); - - // create the footprint representation - auto footprint_shape_representation = new Schema::IfcShapeRepresentation(axis_model_representation_subcontext, std::string("FootPrint"), std::string("Curve2D"), alignment_representation_items); - file.addEntity(footprint_shape_representation); - - // - // Define vertical profile segments - // - - // create containers to store the curve segments - typename aggregate_of::ptr vertical_curve_segments(new aggregate_of()); // geometry - typename aggregate_of::ptr vertical_segments(new aggregate_of()); // business logic - - // define key profile points - auto vpob = file.addDoublet(0.0, 100.0); // beginning - auto vpc1 = file.addDoublet(1200.0, 121.0); // Vertical Curve Point (VPC), Vertical Curve #1 - auto vpt1 = file.addDoublet(2800.0, 127.0); // Vertical Curve Tangent (VPT), Vertical Curve #1 - auto vpc2 = file.addDoublet(4400.0, 111.0); // Vertical Curve Point (VPC), Vertical Curve #2 - auto vpt2 = file.addDoublet(5600.0, 117.0); // Vertical Curve Tangent (VPT), Vertical Curve #2 - auto vpc3 = file.addDoublet(6400.0, 133.0); // Vertical Curve Point (VPC), Vertical Curve #3 - auto vpt3 = file.addDoublet(8400.0, 133.0); // Vertical Curve Tangent (VPT), Vertical Curve #3 - auto vpc4 = file.addDoublet(9400.0, 113.0); // Vertical Curve Point (VPC), Vertical Curve #4 - auto vpt4 = file.addDoublet(10200.0, 103.0); // Vertical Curve Tangent (VPT), Vertical Curve #4 - auto vpoe = file.addDoublet(12800.0, 90.0); // ending - - // - // Build the vertical alignment segments - // - - // Grade start to VPC1 - auto vertical_profile_segment_1 = create_gradient(vpob, 1.75 / 100, 1200); - vertical_curve_segments->push(vertical_profile_segment_1.first); - vertical_segments->push(vertical_profile_segment_1.second); - - // Vertical Curve 1 - auto vertical_profile_segment_2 = create_vcurve(vpc1, 1.75 / 100, -1.0 / 100, 1600); - vertical_curve_segments->push(vertical_profile_segment_2.first); - vertical_segments->push(vertical_profile_segment_2.second); - - // Grade VPT1 to VPC2 - auto vertical_profile_segment_3 = create_gradient(vpt1, -1.0 / 100, 1600); - vertical_curve_segments->push(vertical_profile_segment_3.first); - vertical_segments->push(vertical_profile_segment_3.second); - - // Vertical Curve 2 - auto vertical_profile_segment_4 = create_vcurve(vpc2, -1.0 / 100, 2.0 / 100, 1200); - vertical_curve_segments->push(vertical_profile_segment_4.first); - vertical_segments->push(vertical_profile_segment_4.second); - - // Grade PVT2 to VPC3 - auto vertical_profile_segment_5 = create_gradient(vpt2, 2.0 / 100, 800); - vertical_curve_segments->push(vertical_profile_segment_5.first); - vertical_segments->push(vertical_profile_segment_5.second); - - // Vertical Curve 3 - auto vertical_profile_segment_6 = create_vcurve(vpc3, 2.0 / 100, -2.0 / 100, 2000); - vertical_curve_segments->push(vertical_profile_segment_6.first); - vertical_segments->push(vertical_profile_segment_6.second); - - // Grade PVT3 to VPC4 - auto vertical_profile_segment_7 = create_gradient(vpt3, -2.0 / 100, 1000); - vertical_curve_segments->push(vertical_profile_segment_7.first); - vertical_segments->push(vertical_profile_segment_7.second); - - // Vertical Curve 4 - auto vertical_profile_segment_8 = create_vcurve(vpc4, -2.0 / 100, -0.5 / 100, 800); - vertical_curve_segments->push(vertical_profile_segment_8.first); - vertical_segments->push(vertical_profile_segment_8.second); - - // Grade VPT4 to End - auto vertical_profile_segment_9 = create_gradient(vpt4, -0.5 / 100, 2600); - vertical_curve_segments->push(vertical_profile_segment_9.first); - vertical_segments->push(vertical_profile_segment_9.second); - - // Zero-length terminator - auto vertical_terminator_segment = create_gradient(vpoe, -0.5 / 100, 0.0); - vertical_terminator_segment.first->setTransition(Schema::IfcTransitionCode::IfcTransitionCode_DISCONTINUOUS); - vertical_curve_segments->push(vertical_terminator_segment.first); - vertical_segments->push(vertical_terminator_segment.second); - - // - // Create the vertical alignment (IfcAlignmentVertical) and nest alignment segments - // - auto vertical_profile = new Schema::IfcAlignmentVertical(IfcParse::IfcGlobalId(), nullptr, std::string("Vertical Alignment"), boost::none, boost::none, nullptr, nullptr); - file.addEntity(vertical_profile); - - auto nests_vertical_segments = new Schema::IfcRelNests(IfcParse::IfcGlobalId(), nullptr, boost::none, std::string("Nests vertical alignment segments with vertical alignment"), vertical_profile, vertical_segments); - file.addEntity(nests_vertical_segments); - - // - // Create profile view axis model representation for the vertical profile - // - - // start by defining a gradient curve composed of the vertical curve segments and associated with the horizontal composite curve - auto gradient_curve = new Schema::IfcGradientCurve(vertical_curve_segments, false, composite_curve, nullptr); - file.addEntity(gradient_curve); - - // the gradient curve is a representation item - typename aggregate_of::ptr profile_representation_items(new aggregate_of()); - profile_representation_items->push(gradient_curve); - - // create the axis representation - auto axis3d_shape_representation = new Schema::IfcShapeRepresentation(axis_model_representation_subcontext, std::string("Axis"), std::string("Curve3D"), profile_representation_items); - file.addEntity(axis3d_shape_representation); - - // create axis representations for each segment - create_segment_representations(file, global_placement, axis_model_representation_subcontext, horizontal_curve_segments, horizontal_segments); - create_segment_representations(file, global_placement, axis_model_representation_subcontext, vertical_curve_segments, vertical_segments); - - // - // Create the IfcAlignment - // - - // the alignment has two representations, a plan view footprint and a 3d curve - typename aggregate_of::ptr alignment_representations(new aggregate_of()); - alignment_representations->push(footprint_shape_representation); // 2D footprint - alignment_representations->push(axis3d_shape_representation); // 3D curve - - // create the alignment product definition - auto alignment_product = new Schema::IfcProductDefinitionShape(std::string("Alignment Product Definition Shape"), boost::none, alignment_representations); - - // create the alignment - auto alignment = new Schema::IfcAlignment(IfcParse::IfcGlobalId(), nullptr, std::string("Example Alignment"), boost::none, boost::none, global_placement, alignment_product, boost::none); - file.addEntity(alignment); - - // Nest the IfcAlignmentHorizontal and IfcAlignmentVertical with the IfcAlignment to complete the business logic - // 4.1.4.4.1 Alignments nest horizontal and vertical layouts - // https://standards.buildingsmart.org/IFC/RELEASE/IFC4_3/HTML/concepts/Object_Composition/Nesting/Alignment_Layouts/content.html - typename aggregate_of::ptr alignment_layout_list(new aggregate_of()); - alignment_layout_list->push(horizontal_alignment); - alignment_layout_list->push(vertical_profile); - - auto nests_alignment_layouts = new Schema::IfcRelNests(IfcParse::IfcGlobalId(), nullptr, std::string("Nest horizontal and vertical alignment layouts with the alignment"), boost::none, alignment, alignment_layout_list); - file.addEntity(nests_alignment_layouts); - - // Define the relationship with the project - - // IFC 4.1.4.1.1 "Every IfcAlignment must be related to IfcProject using the IfcRelAggregates relationship" - // https://standards.buildingsmart.org/IFC/RELEASE/IFC4_3/HTML/concepts/Object_Composition/Aggregation/Alignment_Aggregation_To_Project/content.html - // IfcProject <-> IfcRelAggregates <-> IfcAlignment - typename aggregate_of::ptr list_of_alignments_in_project(new aggregate_of()); - list_of_alignments_in_project->push(alignment); - auto aggregate_alignments_with_project = new Schema::IfcRelAggregates(IfcParse::IfcGlobalId(), nullptr, std::string("Alignments in project"), boost::none, project, list_of_alignments_in_project); - file.addEntity(aggregate_alignments_with_project); - - // Define the spatial structure of the alignment with respect to the site - - // IFC 4.1.5.1 alignment is referenced in spatial structure of an IfcSpatialElement. In this case IfcSite is the highest level IfcSpatialElement - // https://standards.buildingsmart.org/IFC/RELEASE/IFC4_3/HTML/concepts/Object_Connectivity/Alignment_Spatial_Reference/content.html - // IfcSite <-> IfcRelReferencedInSpatialStructure <-> IfcAlignment - // This means IfcAlignment is not part of the IfcSite (it is not an aggregate component) but instead IfcAlignment is used within - // the IfcSite by reference. This implies an IfcAlignment can traverse many IfcSite instances within an IfcProject - typename Schema::IfcSpatialReferenceSelect::list::ptr list_alignments_referenced_in_site(new Schema::IfcSpatialReferenceSelect::list); - list_alignments_referenced_in_site->push(alignment); - - // this alignment traverse 3 bridge sites. - for (int i = 1; i <= 3; i++) { - std::ostringstream os; - os << "Site of Bridge " << i; - auto site = file.addSite(project, nullptr); - site->setName(os.str()); - - std::ostringstream description; - description << "Alignments referenced into the spatial structure of Bridge Site " << i; - - auto rel_referenced_in_spatial_structure = new Schema::IfcRelReferencedInSpatialStructure(IfcParse::IfcGlobalId(), nullptr, boost::none, description.str(), list_alignments_referenced_in_site, site); - file.addEntity(rel_referenced_in_spatial_structure); +int main(int argc, char** argv) { + { + IfcSchema::IfcProfileDef::list::ptr profiles(new IfcSchema::IfcProfileDef::list); + profiles->push(new Ifc2x3::IfcUShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + 5.0, + null, + null, + null, + null)); + profiles->push(new Ifc2x3::IfcUShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + 5.0, + 2.0, + 2.0, + null, + null)); + profiles->push(new Ifc2x3::IfcUShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + 5.0, + null, + null, + 4.0, + null)); + profiles->push(new Ifc2x3::IfcUShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + 5.0, + 1.0, + 3.0, + 6.0, + null)); + create_testcase_for(profiles); } - // That's it - save the model to a file - std::ofstream ofs("FHWA_Bridge_Geometry_Alignment_Example.ifc"); - ofs << file; + { + IfcSchema::IfcProfileDef::list::ptr profiles(new IfcSchema::IfcProfileDef::list); + profiles->push(new Ifc2x3::IfcTShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + 5.0, + null, + null, + null, + null, + null, + null)); + profiles->push(new Ifc2x3::IfcTShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + 5.0, + 2.0, + 2.0, + 2.0, + null, + null, + null)); + profiles->push(new Ifc2x3::IfcTShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + 5.0, + null, + null, + null, + 2.0, + 2.0, + null)); + profiles->push(new Ifc2x3::IfcTShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + 5.0, + 3.0, + 2.0, + 1.0, + 2.0, + 2.0, + null)); + create_testcase_for(profiles); + } + + { + IfcSchema::IfcProfileDef::list::ptr profiles(new IfcSchema::IfcProfileDef::list); + profiles->push(new Ifc2x3::IfcZShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + 5.0, + null, + null)); + profiles->push(new Ifc2x3::IfcZShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + 5.0, + 2.0, + 2.0)); + create_testcase_for(profiles); + } + + { + IfcSchema::IfcProfileDef::list::ptr profiles(new IfcSchema::IfcProfileDef::list); + profiles->push(new Ifc2x3::IfcEllipseProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 25.0, + 15.0)); + profiles->push(new Ifc2x3::IfcEllipseProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 15.0, + 25.0)); + create_testcase_for(profiles); + } + + { + IfcSchema::IfcProfileDef::list::ptr profiles(new IfcSchema::IfcProfileDef::list); + profiles->push(new Ifc2x3::IfcIShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 25.0, + 50.0, + 5.0, + 5.0, + null)); + profiles->push(new Ifc2x3::IfcIShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 25.0, + 50.0, + 5.0, + 5.0, + 2.0)); + profiles->push(new Ifc2x3::IfcAsymmetricIShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 25.0, + 50.0, + 5.0, + 5.0, + 2.0, + 20.0, + 10.0, + 5.0, + null)); + create_testcase_for(profiles); + } + + { + IfcSchema::IfcProfileDef::list::ptr profiles(new IfcSchema::IfcProfileDef::list); + profiles->push(new Ifc2x3::IfcLShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + null, + null, + null, + null, + null)); + profiles->push(new Ifc2x3::IfcLShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + 2.0, + 2.0, + null, + null, + null)); + profiles->push(new Ifc2x3::IfcLShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + null, + null, + 2.0, + null, + null)); + profiles->push(new Ifc2x3::IfcLShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + 1.0, + 2.0, + 2.0, + null, + null)); + create_testcase_for(profiles); + } + + { + IfcSchema::IfcProfileDef::list::ptr profiles(new IfcSchema::IfcProfileDef::list); + profiles->push(new Ifc2x3::IfcCShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + 10.0, + null, + null)); + profiles->push(new Ifc2x3::IfcCShapeProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + 10.0, + 2.0, + null)); + create_testcase_for(profiles); + } + + { + IfcSchema::IfcProfileDef::list::ptr profiles(new IfcSchema::IfcProfileDef::list); + profiles->push(new Ifc2x3::IfcCircleProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 25.0)); + profiles->push(new Ifc2x3::IfcCircleHollowProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 25.0, + 5.0)); + create_testcase_for(profiles); + } + + { + IfcSchema::IfcProfileDef::list::ptr profiles(new IfcSchema::IfcProfileDef::list); + profiles->push(new Ifc2x3::IfcRectangleProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0)); + profiles->push(new Ifc2x3::IfcRoundedRectangleProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0)); + profiles->push(new Ifc2x3::IfcRectangleHollowProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + null, + null)); + profiles->push(new Ifc2x3::IfcRectangleHollowProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 25.0, + 5.0, + 2.0, + 4.0)); + create_testcase_for(profiles); + } + + { + IfcSchema::IfcProfileDef::list::ptr profiles(new IfcSchema::IfcProfileDef::list); + profiles->push(new Ifc2x3::IfcTrapeziumProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 30.0, + 25.0, + 0.0)); + profiles->push(new Ifc2x3::IfcTrapeziumProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 60.0, + 25.0, + -20.0)); + profiles->push(new Ifc2x3::IfcTrapeziumProfileDef( + IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, + null, + 0, + 50.0, + 10.0, + 25.0, + 30.0)); + create_testcase_for(profiles); + } } diff --git a/src/ifcconvert/IfcConvert.cpp b/src/ifcconvert/IfcConvert.cpp index d31882ae4d..acd220862b 100644 --- a/src/ifcconvert/IfcConvert.cpp +++ b/src/ifcconvert/IfcConvert.cpp @@ -61,6 +61,7 @@ #endif #include +#include #include #include @@ -202,7 +203,7 @@ struct exclusion_traverse_filter : public geom_filter { exclusion_traverse_filte size_t read_filters_from_file(const std::string&, inclusion_filter&, inclusion_traverse_filter&, exclusion_filter&, exclusion_traverse_filter&); void parse_filter(geom_filter &, const std::vector&); -std::vector setup_filters(const std::vector&, const std::string&); +std::vector setup_filters(const std::vector&, const std::string&); bool init_input_file(const std::string& filename, IfcParse::IfcFile*& ifc_file, bool no_progress, bool mmap, bool bypass_properties=false); @@ -755,7 +756,7 @@ int main(int argc, char** argv) { if (exclude_filter.type != geom_filter::UNUSED) { used_filters.push_back(exclude_filter); } if (exclude_traverse_filter.type != geom_filter::UNUSED) { used_filters.push_back(exclude_traverse_filter); } - std::vector filter_funcs = setup_filters(used_filters, IfcUtil::path::to_utf8(output_extension)); + std::vector filter_funcs = setup_filters(used_filters, IfcUtil::path::to_utf8(output_extension)); if (filter_funcs.empty()) { cerr_ << "[Error] Failed to set up geometry filters\n"; return EXIT_FAILURE; @@ -1277,9 +1278,9 @@ bool init_input_file(const std::string& filename, IfcParse::IfcFile*& ifc_file, bool requires_init = false; #ifdef WITH_IFCXML - if (boost::ends_with(boost::to_lower_copy(filename), ".ifcxml")) { - ifc_file = IfcParse::parse_ifcxml(filename); - } else + // if (boost::ends_with(boost::to_lower_copy(filename), ".ifcxml")) { + // ifc_file = IfcParse::parse_ifcxml(filename); + // } else #endif { ifc_file = new IfcParse::IfcFile(IfcParse::uninitialized_tag{}); @@ -1451,9 +1452,9 @@ void validate(boost::any& v, const std::vector& values, exclusion_t /// @todo Clean up this filter initialization code further. /// @return References to the used filter functors, if none an error occurred. -std::vector setup_filters(const std::vector& filters, const std::string& output_extension) +std::vector setup_filters(const std::vector& filters, const std::string& output_extension) { - std::vector filter_funcs; + std::vector filter_funcs; for(auto& f: filters) { if (f.type == geom_filter::ENTITY_TYPE) { entity_filter.include = f.include; @@ -1493,13 +1494,13 @@ std::vector setup_filters(const std::vector& fil namespace latebound_access { template - void set(IfcUtil::IfcBaseClass* inst, const std::string& attr, T t); + void set(express::Base inst, const std::string& attr, T t); template - void set_enumeration(IfcUtil::IfcBaseClass*, const std::string&, const IfcParse::enumeration_type*, T) {} + void set_enumeration(express::Base, const std::string&, const IfcParse::enumeration_type*, T) {} template <> - void set_enumeration(IfcUtil::IfcBaseClass* inst, const std::string& attr, const IfcParse::enumeration_type* enum_type, std::string t) { + void set_enumeration(express::Base inst, const std::string& attr, const IfcParse::enumeration_type* enum_type, std::string t) { std::vector::const_iterator it = std::find( enum_type->enumeration_items().begin(), enum_type->enumeration_items().end(), @@ -1509,50 +1510,41 @@ namespace latebound_access { } template - void set(IfcUtil::IfcBaseClass* inst, const std::string& attr, T t) { - auto decl = inst->declaration().as_entity(); + void set(express::Base inst, const std::string& attr, T t) { + auto decl = inst.declaration().as_entity(); auto i = decl->attribute_index(attr); auto attr_type = decl->attribute_by_index(i)->type_of_attribute(); if (attr_type->as_named_type() && attr_type->as_named_type()->declared_type()->as_enumeration_type() && !std::is_same::value) { set_enumeration(inst, attr, attr_type->as_named_type()->declared_type()->as_enumeration_type(), t); } else { - inst->set_attribute_value(i, t); + inst.set_attribute_value(i, t); } } - IfcUtil::IfcBaseClass* create(IfcParse::IfcFile& f, const std::string& entity) { + express::Base create(IfcParse::IfcFile& f, const std::string& entity) { auto decl = f.schema()->declaration_by_name(entity); - auto data = IfcEntityInstanceData(in_memory_attribute_storage(decl->as_entity()->attribute_count())); - auto inst = f.schema()->instantiate(decl, std::move(data)); - if (decl->is("IfcRoot")) { - IfcParse::IfcGlobalId guid; - latebound_access::set(inst, "GlobalId", (std::string) guid); - } - return f.addEntity(inst); + return f.create(decl); } } void fix_quantities(IfcParse::IfcFile& f, bool no_progress, bool quiet, bool stderr_progress) { { - auto delete_reversed = [&f](const aggregate_of_instance::ptr& insts) { - if (!insts) { - return; - } + auto delete_reversed = [&f](const std::vector& insts) { // Lists are traversed back to front as the list may be mutated when // instances are removed from the grouping by type. - for (auto it = insts->end() - 1; it >= insts->begin(); --it) { - IfcUtil::IfcBaseClass* const inst = *it; - f.removeEntity(inst); + for (auto it = insts.end() - 1; it >= insts.begin(); --it) { + f.removeEntity(*it); } }; // Delete quantities auto quantities = f.instances_by_type("IfcPhysicalQuantity"); - if (quantities) { - quantities = quantities->filtered({ f.schema()->declaration_by_name("IfcPhysicalComplexQuantity") }); - delete_reversed(quantities); - } + for (auto it = quantities.end() - 1; it >= quantities.begin(); --it) { + if (!it->declaration().is("IfcPhysicalComplexQuantity")) { + f.removeEntity(*it); + } + } // Delete complexes delete_reversed(f.instances_by_type("IfcPhysicalComplexQuantity")); @@ -1560,20 +1552,19 @@ void fix_quantities(IfcParse::IfcFile& f, bool no_progress, bool quiet, bool std auto element_quantities = f.instances_by_type("IfcElementQuantity"); // Capture relationship nodes - std::vector relationships; + std::vector relationships; auto IfcRelDefinesByProperties = f.schema()->declaration_by_name("IfcRelDefinesByProperties"); - if (element_quantities) { - for (auto& eq : *element_quantities) { - auto rels = eq->file_->getInverse(eq->id(), IfcRelDefinesByProperties, -1); - for (auto& rel : *rels) { - relationships.push_back(rel); - } - } - // Delete element quantities - delete_reversed(element_quantities); + for (auto& eq : element_quantities) { + auto rels = eq.data()->file()->getInverse(eq.id(), IfcRelDefinesByProperties, -1); + for (auto& rel : rels) { + relationships.push_back(rel); + } } + // Delete element quantities + delete_reversed(element_quantities); + // Delete relationship nodes for (auto& rel : relationships) { @@ -1620,8 +1611,8 @@ void fix_quantities(IfcParse::IfcFile& f, bool no_progress, bool quiet, bool std latebound_access::set(ownerhist, "ChangeAction", std::string("MODIFIED")); latebound_access::set(ownerhist, "CreationDate", (int)time(0)); - IfcUtil::IfcBaseClass* quantity = nullptr; - aggregate_of_instance::ptr objects; + express::Base quantity; + std::vector objects; boost::shared_ptr previous_geometry_pointer; for (;; ++num_created) { @@ -1636,7 +1627,7 @@ void fix_quantities(IfcParse::IfcFile& f, bool no_progress, bool quiet, bool std if (geom_object && geom_object->geometry_pointer() == previous_geometry_pointer) { // @todo - objects->push(const_cast(geom_object->product())); + objects.push_back(geom_object->product()); } else { if (quantity) { auto rel = latebound_access::create(f, "IfcRelDefinesByProperties"); @@ -1649,35 +1640,35 @@ void fix_quantities(IfcParse::IfcFile& f, bool no_progress, bool quiet, bool std break; } - aggregate_of_instance::ptr quantities(new aggregate_of_instance); + std::vector quantities; double a, b, c; if (geom_object->geometry().calculate_surface_area(a)) { auto quantity_area = latebound_access::create(f, "IfcQuantityArea"); latebound_access::set(quantity_area, "Name", std::string("Total Surface Area")); latebound_access::set(quantity_area, "AreaValue", a); - quantities->push(quantity_area); + quantities.push_back(quantity_area); } if (geom_object->geometry().calculate_volume(a)) { auto quantity_volume = latebound_access::create(f, "IfcQuantityVolume"); latebound_access::set(quantity_volume, "Name", std::string("Volume")); latebound_access::set(quantity_volume, "VolumeValue", a); - quantities->push(quantity_volume); + quantities.push_back(quantity_volume); } if (geom_object->calculate_projected_surface_area(a, b, c)) { auto quantity_area = latebound_access::create(f, "IfcQuantityArea"); latebound_access::set(quantity_area, "Name", std::string("Footprint Area")); latebound_access::set(quantity_area, "AreaValue", c); - quantities->push(quantity_area); + quantities.push_back(quantity_area); } auto quantity_complex = latebound_access::create(f, "IfcPhysicalComplexQuantity"); latebound_access::set(quantity_complex, "Name", std::string("Shape Validation Properties")); - quantities->push(quantity_complex); + quantities.push_back(quantity_complex); - aggregate_of_instance::ptr quantities_2(new aggregate_of_instance); + std::vector quantities_2; for (auto& part : geom_object->geometry()) { auto quantity_count = latebound_access::create(f, "IfcQuantityCount"); @@ -1685,20 +1676,19 @@ void fix_quantities(IfcParse::IfcFile& f, bool no_progress, bool quiet, bool std latebound_access::set(quantity_count, "Description", '#' + boost::lexical_cast(part.ItemId())); latebound_access::set(quantity_count, "CountValue", part.Shape()->surface_genus()); - quantities_2->push(quantity_count); + quantities_2.push_back(quantity_count); } latebound_access::set(quantity_complex, "HasQuantities", quantities_2); - if (quantities->size()) { + if (!quantities.empty()) { quantity = latebound_access::create(f, "IfcElementQuantity"); latebound_access::set(quantity, "OwnerHistory", ownerhist); latebound_access::set(quantity, "Quantities", quantities); } - objects.reset(new aggregate_of_instance); // @todo - objects->push(const_cast(geom_object->product())); + objects.push_back(geom_object->product()); } previous_geometry_pointer = geom_object->geometry_pointer(); diff --git a/src/ifcgeom/AbstractKernel.cpp b/src/ifcgeom/AbstractKernel.cpp index 17c1138a70..b196fcc209 100644 --- a/src/ifcgeom/AbstractKernel.cpp +++ b/src/ifcgeom/AbstractKernel.cpp @@ -20,8 +20,8 @@ bool ifcopenshell::geometry::kernels::AbstractKernel::convert(const taxonomy::pt auto it = cache_.find(item); if (it != cache_.end()) { results = it->second; - Logger::Notice("Cache hit #" + std::to_string(item->instance->as()->id()) + - " -> #" + std::to_string(it->first->instance->as()->id())); + Logger::Notice("Cache hit #" + std::to_string(item->instance.id()) + + " -> #" + std::to_string(it->first->instance.id())); return true; } } diff --git a/src/ifcgeom/AbstractKernel.h b/src/ifcgeom/AbstractKernel.h index cd29246710..fb143769fb 100644 --- a/src/ifcgeom/AbstractKernel.h +++ b/src/ifcgeom/AbstractKernel.h @@ -121,8 +121,8 @@ namespace ifcopenshell { */ virtual bool apply_layerset(IfcGeom::ConversionResults&, const ifcopenshell::geometry::layerset_information&) { throw not_implemented_error(); } - virtual bool apply_folded_layerset(IfcGeom::ConversionResults&, const ifcopenshell::geometry::layerset_information&, const std::map&) { throw not_implemented_error(); } - virtual bool convert_openings(const IfcUtil::IfcBaseEntity* entity, const std::vector>& openings, + virtual bool apply_folded_layerset(IfcGeom::ConversionResults&, const ifcopenshell::geometry::layerset_information&, const std::map&) { throw not_implemented_error(); } + virtual bool convert_openings(const express::Base& entity, const std::vector>& openings, const IfcGeom::ConversionResults& entity_shapes, const ifcopenshell::geometry::taxonomy::matrix4& entity_trsf, IfcGeom::ConversionResults& cut_shapes) = 0; virtual bool unify_shapes(const IfcGeom::ConversionResults&, IfcGeom::ConversionResults&) { throw not_implemented_error(); } diff --git a/src/ifcgeom/ConversionSettings.h b/src/ifcgeom/ConversionSettings.h index eb405a9e7c..cf29eb3e4f 100644 --- a/src/ifcgeom/ConversionSettings.h +++ b/src/ifcgeom/ConversionSettings.h @@ -5,16 +5,15 @@ #include #include #include -#include #include #include #include +#include +#include #include #include -#include #include -#include #include "ifc_geom_api.h" @@ -48,7 +47,8 @@ namespace ifcopenshell { // of vector settings we need to strip away the optional and detect argument presence // with !vector::empty() // tfk: we no longer do this because negative values can not be passed like this as boost confuses them with options - // std::conditional_t>, T, boost::optional> value; + // std::conditional_t>, T, std::optional> value; + // tfk: note that we use boost::optional to avoid a lack of deserialization support with std::optional and boost program options boost::optional value; SettingBase() {} @@ -80,7 +80,7 @@ namespace ifcopenshell { return value; } else { if (value) { - return value.get(); + return value.value(); } if constexpr (HasDefault()) { return Derived::defaultvalue; @@ -539,7 +539,7 @@ namespace ifcopenshell { template class SettingsContainer { public: - typedef boost::variant, std::set, std::vector, IteratorOutputOptions, FunctionStepMethod, OutputDimensionalityTypes, TriangulationMethod> value_variant_t; + typedef std::variant, std::set, std::vector, IteratorOutputOptions, FunctionStepMethod, OutputDimensionalityTypes, TriangulationMethod> value_variant_t; private: settings_t settings; @@ -579,15 +579,15 @@ namespace ifcopenshell { void set_option_(const std::string& name, const value_variant_t& val) { if (std::tuple_element_t::name == name) { if constexpr (std::is_enum_v::base_type>) { - if (auto* val_ptr = boost::get(&val)) { + if (auto* val_ptr = std::get_if(&val)) { auto val_as_enum = (typename std::tuple_element_t::base_type) *val_ptr; std::get(settings).value = val_as_enum; return; } } try { - std::get(settings).value = boost::get::base_type>(val); - } catch (const boost::bad_get&) { + std::get(settings).value = std::get::base_type>(val); + } catch (const std::bad_variant_access&) { std::string ty = impl::readable_name::base_type>::name; throw std::runtime_error("Expected a value of type <" + ty + "> for setting '" + name + "'"); } diff --git a/src/ifcgeom/Converter.cpp b/src/ifcgeom/Converter.cpp index 6b70ac7f51..fdf128f3ca 100644 --- a/src/ifcgeom/Converter.cpp +++ b/src/ifcgeom/Converter.cpp @@ -37,12 +37,14 @@ namespace { } } -IfcGeom::BRepElement* ifcopenshell::geometry::Converter::create_brep_for_representation_and_product(taxonomy::ptr representation_node, const IfcUtil::IfcBaseEntity* product, const taxonomy::matrix4::ptr& place_) { +IfcGeom::BRepElement* ifcopenshell::geometry::Converter::create_brep_for_representation_and_product(taxonomy::ptr representation_node, const express::Base product_, const taxonomy::matrix4::ptr& place_) { + auto product = product_.as(); + std::stringstream representation_id_builder; auto place = place_; - representation_id_builder << representation_node->instance->as()->id(); + representation_id_builder << representation_node->instance.id(); IfcGeom::Representation::BRep* shape; IfcGeom::ConversionResults shapes; @@ -50,11 +52,11 @@ IfcGeom::BRepElement* ifcopenshell::geometry::Converter::create_brep_for_represe if (!kernel_->convert(representation_node, shapes)) { return 0; } - + if (settings_.get().get()) { ifcopenshell::geometry::layerset_information layerinfo; std::vector neighbours; - std::map neigbour_layers; + std::map neigbour_layers; int layerset_id, lid; if (mapping_->get_layerset_information(product, layerinfo, layerset_id)) { @@ -146,10 +148,10 @@ IfcGeom::BRepElement* ifcopenshell::geometry::Converter::create_brep_for_represe } if (material_style_applied) { - representation_id_builder << "-material-" << single_material->id(); + representation_id_builder << "-material-" << single_material.id(); } - if (settings_.get().has() && product->declaration().is("IfcSpace")) { + if (settings_.get().has() && product.declaration().is("IfcSpace")) { for (auto& s : shapes) { if (s.hasStyle()) { // @todo the uglyness @@ -160,27 +162,27 @@ IfcGeom::BRepElement* ifcopenshell::geometry::Converter::create_brep_for_represe int parent_id = -1; try { - IfcUtil::IfcBaseEntity* parent_object = mapping_->get_decomposing_entity(product); + express::Base parent_object = mapping_->get_decomposing_entity(product); if (parent_object) { - parent_id = parent_object->id(); + parent_id = parent_object.id(); } } catch (const std::exception& e) { Logger::Error(e); } - const std::string name = product->get_value("Name", ""); - const std::string guid = product->get_value("GlobalId", ""); + const std::string name = product.get_value("Name", ""); + const std::string guid = product.get_value("GlobalId", ""); - const std::string product_type = product->declaration().name(); + const std::string product_type = product.declaration().name(); // Does the IfcElement have any IfcOpenings? // Note that openings for IfcOpeningElements are not processed auto openings = mapping_->find_openings(product); - if (!settings_.get().get() && openings && openings->size()) { + if (!settings_.get().get() && !openings.empty()) { representation_id_builder << "-openings"; - for (auto it = openings->begin(); it != openings->end(); ++it) { - representation_id_builder << "-" << (*it)->id(); + for (auto& op : openings) { + representation_id_builder << "-" << op.id(); } IfcGeom::ConversionResults opened_shapes; @@ -188,9 +190,9 @@ IfcGeom::BRepElement* ifcopenshell::geometry::Converter::create_brep_for_represe try { std::vector> opening_items; - std::transform(openings->begin(), openings->end(), std::back_inserter(opening_items), [this](IfcUtil::IfcBaseClass* opening) { + std::transform(openings.begin(), openings.end(), std::back_inserter(opening_items), [this](express::Base opening) { auto prod_item = mapping()->map(opening); - auto repr = mapping()->representation_of(opening->as()); + auto repr = mapping()->representation_of(opening); if (repr) { return std::make_pair(mapping()->map(repr), *taxonomy::cast(prod_item)->matrix); } else { @@ -251,21 +253,21 @@ IfcGeom::BRepElement* ifcopenshell::geometry::Converter::create_brep_for_represe std::string context_string = ""; // IfcShapeRepresentation. - const IfcUtil::IfcBaseEntity *representation = representation_node->instance->as(); - auto representation_identifier = representation->get("RepresentationIdentifier"); + auto representation = representation_node->instance.as(); + auto representation_identifier = representation.get("RepresentationIdentifier"); if (!representation_identifier.isNull()) { context_string = (std::string) representation_identifier; } else { - IfcUtil::IfcBaseClass *context = (IfcUtil::IfcBaseClass*)representation->get("ContextOfItems"); - auto context_type = context->as()->get("ContextType"); + auto context = (express::Base)representation.get("ContextOfItems"); + auto context_type = context.as().get("ContextType"); if (!context_type.isNull()) { context_string = (std::string)context_type; } } auto elem = new IfcGeom::BRepElement( - product->id(), + product.id(), parent_id, name, product_type, @@ -351,25 +353,26 @@ IfcGeom::BRepElement* ifcopenshell::geometry::Converter::create_brep_for_represe return elem; } -IfcGeom::BRepElement* ifcopenshell::geometry::Converter::create_brep_for_processed_representation(const IfcUtil::IfcBaseEntity* product, const taxonomy::matrix4::ptr& place, IfcGeom::BRepElement* brep) { +IfcGeom::BRepElement* ifcopenshell::geometry::Converter::create_brep_for_processed_representation(const express::Base product_, const taxonomy::matrix4::ptr& place, IfcGeom::BRepElement* brep) { + auto product = product_.as(); int parent_id = -1; try { - IfcUtil::IfcBaseEntity* parent_object = mapping_->get_decomposing_entity(product); + express::Base parent_object = mapping_->get_decomposing_entity(product); if (parent_object) { - parent_id = parent_object->id(); + parent_id = parent_object.id(); } } catch (const std::exception& e) { Logger::Error(e); } - const std::string guid = product->get_value("GlobalId"); - const std::string name = product->get_value("Name", ""); - const std::string product_type = product->declaration().name(); + const std::string guid = product.get_value("GlobalId"); + const std::string name = product.get_value("Name", ""); + const std::string product_type = product.declaration().name(); const std::string context_string = brep->context(); return new IfcGeom::BRepElement( - product->id(), + product.id(), parent_id, name, product_type, @@ -381,7 +384,7 @@ IfcGeom::BRepElement* ifcopenshell::geometry::Converter::create_brep_for_process ); } -IfcGeom::BRepElement* ifcopenshell::geometry::Converter::create_brep_for_representation_and_product(const IfcUtil::IfcBaseEntity* representation, const IfcUtil::IfcBaseEntity* product) { +IfcGeom::BRepElement* ifcopenshell::geometry::Converter::create_brep_for_representation_and_product(const express::Base representation, const express::Base product) { auto interpreted_representation = mapping_->map(representation); if (!interpreted_representation) { interpreted_representation = taxonomy::make(); @@ -394,7 +397,7 @@ IfcGeom::BRepElement* ifcopenshell::geometry::Converter::create_brep_for_represe ); } -IfcGeom::ConversionResults ifcopenshell::geometry::Converter::convert(IfcUtil::IfcBaseClass * item) +IfcGeom::ConversionResults ifcopenshell::geometry::Converter::convert(express::Base item) { std::clock_t map_start = std::clock(); auto geom_item = mapping_->map(item); diff --git a/src/ifcgeom/Converter.h b/src/ifcgeom/Converter.h index 9fff13df04..8bc6d70480 100644 --- a/src/ifcgeom/Converter.h +++ b/src/ifcgeom/Converter.h @@ -33,8 +33,8 @@ namespace ifcopenshell { namespace geometry { /* virtual NativeElement* convert( - const IteratorSettings& settings, IfcUtil::IfcBaseClass* representation, - IfcUtil::IfcBaseClass* product) + const IteratorSettings& settings, express::Base representation, + express::Base product) { return implementation_->convert(settings, representation, product); } @@ -43,13 +43,13 @@ namespace ifcopenshell { namespace geometry { double total_map_time = 0.; double total_geom_time = 0.; - IfcGeom::ConversionResults convert(IfcUtil::IfcBaseClass* item); + IfcGeom::ConversionResults convert(express::Base item); - IfcGeom::BRepElement* create_brep_for_representation_and_product(const IfcUtil::IfcBaseEntity* representation, const IfcUtil::IfcBaseEntity* product); - // IfcGeom::BRepElement* create_brep_for_processed_representation(const IfcUtil::IfcBaseEntity* representation, const IfcUtil::IfcBaseEntity* product, IfcGeom::BRepElement* brep); + IfcGeom::BRepElement* create_brep_for_representation_and_product(const express::Base representation, const express::Base product); + // IfcGeom::BRepElement* create_brep_for_processed_representation(const express::Base representation, const express::Base product, IfcGeom::BRepElement* brep); - IfcGeom::BRepElement* create_brep_for_representation_and_product(ifcopenshell::geometry::taxonomy::ptr, const IfcUtil::IfcBaseEntity* product, const ifcopenshell::geometry::taxonomy::matrix4::ptr& place); - IfcGeom::BRepElement* create_brep_for_processed_representation(const IfcUtil::IfcBaseEntity* product, const ifcopenshell::geometry::taxonomy::matrix4::ptr& place, IfcGeom::BRepElement*); + IfcGeom::BRepElement* create_brep_for_representation_and_product(ifcopenshell::geometry::taxonomy::ptr, const express::Base product, const ifcopenshell::geometry::taxonomy::matrix4::ptr& place); + IfcGeom::BRepElement* create_brep_for_processed_representation(const express::Base product, const ifcopenshell::geometry::taxonomy::matrix4::ptr& place, IfcGeom::BRepElement*); const ifcopenshell::geometry::Settings& settings() { return settings_; } }; diff --git a/src/ifcgeom/GeometrySerializer.h b/src/ifcgeom/GeometrySerializer.h index d8d4605de5..c89f14f030 100644 --- a/src/ifcgeom/GeometrySerializer.h +++ b/src/ifcgeom/GeometrySerializer.h @@ -107,7 +107,7 @@ class stream_or_filename { private: std::shared_ptr ofs_; std::shared_ptr oss_; - boost::optional filename_; + std::optional filename_; public: std::ostream& stream; @@ -126,7 +126,7 @@ public: return oss_->str(); } - boost::optional filename() const { + std::optional filename() const { return filename_; } diff --git a/src/ifcgeom/IfcGeomElement.h b/src/ifcgeom/IfcGeomElement.h index 0d7e179d7b..10c5836ff7 100644 --- a/src/ifcgeom/IfcGeomElement.h +++ b/src/ifcgeom/IfcGeomElement.h @@ -26,6 +26,7 @@ #include "../ifcparse/Argument.h" #include "../ifcparse/IfcGlobalId.h" #include "../ifcparse/IfcLogger.h" +#include "../ifcparse/InstanceData.h" #include "../ifcgeom/IfcGeomRepresentation.h" #include "../ifcgeom/ifc_geom_api.h" @@ -60,7 +61,7 @@ namespace IfcGeom { std::string _context; std::string _unique_id; Transformation _transformation; - const IfcUtil::IfcBaseEntity* product_; + const express::Entity product_; std::vector _parents; public: @@ -71,9 +72,9 @@ namespace IfcGeom { // Use the id to compare, or the elevation is the elements are IfcBuildingStoreys and the elevation is set friend bool operator < (const Element& element1, const Element& element2) { if (element1.type() == "IfcBuildingStorey" && element2.type() == "IfcBuildingStorey") { - size_t attr_index = element1.product()->declaration().as_entity()->attribute_index("Elevation"); - auto elev_attr1 = element1.product()->get_attribute_value(attr_index); - auto elev_attr2 = element2.product()->get_attribute_value(attr_index); + size_t attr_index = element1.product().declaration().as_entity()->attribute_index("Elevation"); + auto elev_attr1 = element1.product().get_attribute_value(attr_index); + auto elev_attr2 = element2.product().get_attribute_value(attr_index); if (!elev_attr1.isNull() && !elev_attr2.isNull()) { double elev1 = elev_attr1; @@ -95,12 +96,12 @@ namespace IfcGeom { const std::string& context() const { return _context; } const std::string& unique_id() const { return _unique_id; } const Transformation& transformation() const { return _transformation; } - const IfcUtil::IfcBaseEntity* product() const { return product_; } + const express::Entity& product() const { return product_; } const std::vector& parents() const { return _parents; } void SetParents(std::vector& newparents) { _parents = newparents; } Element(const ifcopenshell::geometry::Settings& settings, int id, int parent_id, const std::string& name, const std::string& type, - const std::string& guid, const std::string& context, const ifcopenshell::geometry::taxonomy::matrix4::ptr& trsf, const IfcUtil::IfcBaseEntity* product) + const std::string& guid, const std::string& context, const ifcopenshell::geometry::taxonomy::matrix4::ptr& trsf, const express::Entity& product) : _id(id), _parent_id(parent_id), _name(name), _type(type), _guid(guid), _context(context), _transformation(settings, trsf) , product_(product) { @@ -137,7 +138,7 @@ namespace IfcGeom { const IfcGeom::Representation::BRep& geometry() const { return *_geometry; } BRepElement(int id, int parent_id, const std::string& name, const std::string& type, const std::string& guid, const std::string& context, const ifcopenshell::geometry::taxonomy::matrix4::ptr& trsf, const boost::shared_ptr& geometry, - const IfcUtil::IfcBaseEntity* product) + const express::Entity& product) : Element(geometry->settings(), id, parent_id, name, type, guid, context, trsf, product) , _geometry(geometry) {} diff --git a/src/ifcgeom/IfcGeomFilter.h b/src/ifcgeom/IfcGeomFilter.h index eb4eb7cd8a..67510c1f4d 100644 --- a/src/ifcgeom/IfcGeomFilter.h +++ b/src/ifcgeom/IfcGeomFilter.h @@ -41,10 +41,6 @@ #include namespace IfcGeom { - /// The filter function (free or member function) or function object (use boost::ref() to reference to it) - /// should return true if the geometry for the product is wanted to be included in the output. - /// http://www.boost.org/doc/libs/1_62_0/doc/html/function/tutorial.html - typedef boost::function filter_t; struct filter { @@ -60,7 +56,7 @@ namespace IfcGeom { /// Optional description for the filtering criteria of this filter. std::string description; - bool match(IfcUtil::IfcBaseEntity* prod, const filter_t& pred) const { + bool match(const express::Base& prod, const ifcopenshell::geometry::filter_t& pred) const { bool is_match = pred(prod); if (!is_match && traverse) { is_match = traverse_match(prod, pred); @@ -68,16 +64,16 @@ namespace IfcGeom { return is_match == include; } - bool traverse_match(IfcUtil::IfcBaseEntity* prod, const filter_t& pred) const + bool traverse_match(const express::Base& prod, const ifcopenshell::geometry::filter_t& pred) const { - IfcUtil::IfcBaseEntity* parent, *current = prod; + express::Base parent, current = prod; // @todo examine if this can indeed be static. For now usage is only // in IfcConvert so invocation is bound to a single file with a single // schema. // @todo pass settings ifcopenshell::geometry::Settings s; - static auto mapping = ifcopenshell::geometry::impl::mapping_implementations().construct(prod->file_, s); - while ((parent = mapping->get_decomposing_entity(current, traverse_openings)) != nullptr) { + static auto mapping = ifcopenshell::geometry::impl::mapping_implementations().construct(prod.data()->file(), s); + while ((parent = mapping->get_decomposing_entity(current, traverse_openings))) { if (pred(parent)) { return true; } @@ -136,9 +132,9 @@ namespace IfcGeom { attribute_filter(const std::string& attribute_name) : attribute_name(attribute_name) {} - std::string value(IfcUtil::IfcBaseEntity* prod) const { + std::string value(const express::Base& prod) const { try { - return (std::string) prod->get(attribute_name); + return (std::string) prod.as().get(attribute_name); } catch (...) { // Either // (a) not an attribute name for this entity instance @@ -150,11 +146,11 @@ namespace IfcGeom { } } - bool match(IfcUtil::IfcBaseEntity* prod) const { + bool match(express::Base prod) const { return wildcard_filter::match(value(prod)); } - bool operator()(IfcUtil::IfcBaseEntity* prod) const { + bool operator()(express::Base prod) const { return filter::match(prod, std::bind(&attribute_filter::match, this, std::placeholders::_1)); } @@ -175,21 +171,21 @@ namespace IfcGeom { }; struct layer_filter : public wildcard_filter { - typedef std::map layer_map_t; + typedef std::map layer_map_t; layer_filter() {} layer_filter(bool include, bool traverse, const std::set& patterns) : wildcard_filter(include, traverse, patterns) {} - bool match(IfcUtil::IfcBaseEntity* prod) const { + bool match(express::Base prod) const { // @todo ifcopenshell::geometry::Settings s; - static auto mapping = ifcopenshell::geometry::impl::mapping_implementations().construct(prod->file_, s); + static auto mapping = ifcopenshell::geometry::impl::mapping_implementations().construct(prod.data()->file(), s); layer_map_t layers = mapping->get_layers(prod); return std::find_if(layers.begin(), layers.end(), wildcards_match(values)) != layers.end(); } - bool operator()(IfcUtil::IfcBaseEntity* prod) const { + bool operator()(express::Base prod) const { return filter::match(prod, std::bind(&layer_filter::match, this, std::placeholders::_1)); } @@ -222,17 +218,17 @@ namespace IfcGeom { : filter(include, traverse) , entity_names(entity_names) {} - bool match(IfcUtil::IfcBaseEntity* prod) const { + bool match(express::Base prod) const { // The set is iterated over to able to filter on subtypes. for (auto& name : entity_names) { - if (prod->declaration().is(name)) { + if (prod.declaration().is(name)) { return true; } } return false; } - bool operator()(IfcUtil::IfcBaseEntity* prod) const { + bool operator()(express::Base prod) const { return filter::match(prod, std::bind(&entity_filter::match, this, std::placeholders::_1)); } @@ -254,11 +250,11 @@ namespace IfcGeom { : filter(include, traverse) , instance_ids_(instance_ids) {} - bool match(IfcUtil::IfcBaseEntity* prod) const { - return instance_ids_.find(prod->id()) != instance_ids_.end(); + bool match(express::Base prod) const { + return instance_ids_.find(prod.id()) != instance_ids_.end(); } - bool operator()(IfcUtil::IfcBaseEntity* prod) const { + bool operator()(express::Base prod) const { return filter::match(prod, std::bind(&instance_id_filter::match, this, std::placeholders::_1)); } diff --git a/src/ifcgeom/IfcGeomRepresentation.cpp b/src/ifcgeom/IfcGeomRepresentation.cpp index 48346b2831..cce64186cf 100644 --- a/src/ifcgeom/IfcGeomRepresentation.cpp +++ b/src/ifcgeom/IfcGeomRepresentation.cpp @@ -31,7 +31,7 @@ IfcGeom::Representation::Serialization::Serialization(const BRep& brep) surface_styles_.push_back(clr(1)); surface_styles_.push_back(clr(2)); - sid = it->Style().instance ? it->Style().instance->as()->id() : -1; + sid = it->Style().instance ? it->Style().instance.id() : -1; } else { surface_styles_.push_back(-1.); surface_styles_.push_back(-1.); diff --git a/src/ifcgeom/Iterator.cpp b/src/ifcgeom/Iterator.cpp index a7f700f4de..31f7427ce1 100644 --- a/src/ifcgeom/Iterator.cpp +++ b/src/ifcgeom/Iterator.cpp @@ -46,9 +46,9 @@ bool IfcGeom::Iterator::initialize() { if (!res.item) { continue; } - std::transform(task.products->begin(), task.products->end(), std::back_inserter(res.products), [this, &res](IfcUtil::IfcBaseClass* prod) { + std::transform(task.products.begin(), task.products.end(), std::back_inserter(res.products), [this, &res](const express::Base& prod) { auto prod_item = converter_->mapping()->map(prod); - return std::make_pair(prod->as(), ifcopenshell::geometry::taxonomy::cast(prod_item)->matrix); + return std::make_pair(prod, ifcopenshell::geometry::taxonomy::cast(prod_item)->matrix); }); } tasks_.push_back(res); @@ -57,7 +57,7 @@ bool IfcGeom::Iterator::initialize() { if (settings_.get().get() && settings_.get().get()) { std::unordered_map< ifcopenshell::geometry::taxonomy::item::ptr, - std::vector>> folded; + std::vector>> folded; for (auto& r : tasks_) { auto i = r.item; @@ -104,7 +104,7 @@ bool IfcGeom::Iterator::initialize() { size_t num_products = 0; for (auto& r : tasks_) { - num_products += !settings_.get().get() ? r.products_2->size() : r.products.size(); + num_products += !settings_.get().get() ? r.products_2.size() : r.products.size(); } time_points[2] = high_resolution_clock::now(); @@ -116,7 +116,7 @@ bool IfcGeom::Iterator::initialize() { std::vector items; std::map placements; - std::transform(products.begin(), products.end(), std::back_inserter(items), [this, &placements](IfcUtil::IfcBaseClass* p) { + std::transform(products.begin(), products.end(), std::back_inserter(items), [this, &placements](express::Base p) { auto item = converter_->mapping()->map(p); // Product placements do not affect item reuse and should temporarily be swapped to identity if (item) { @@ -132,7 +132,7 @@ bool IfcGeom::Iterator::initialize() { geometry_conversion_result r; r.item = *it; std::transform(it, jt, std::back_inserter(r.products), [&r, &placements](taxonomy::ptr product_node) { - return std::make_pair((IfcUtil::IfcBaseEntity*) product_node->instance, placements[product_node]); + return std::make_pair((express::Base) product_node->instance, placements[product_node]); }); tasks_.push_back(r); it = jt; @@ -143,7 +143,7 @@ bool IfcGeom::Iterator::initialize() { if (tasks_.size() == 0) { Logger::Warning("No representations encountered, aborting"); - initialization_outcome_.reset(false); + initialization_outcome_.emplace(false); } else if (!settings_.get().get()) { task_iterator_ = tasks_.begin(); @@ -161,7 +161,7 @@ bool IfcGeom::Iterator::initialize() { initialization_outcome_ = create(); } } else { - initialization_outcome_.reset(true); + initialization_outcome_.emplace(true); } return *initialization_outcome_; @@ -263,7 +263,7 @@ void IfcGeom::Iterator::process_concurrently() { finished_ = true; - Logger::SetProduct(boost::none); + Logger::SetProduct(std::nullopt); if (!terminating_) { Logger::Status("\rDone creating geometry (" + boost::lexical_cast(all_processed_elements_.size()) + @@ -306,9 +306,9 @@ void IfcGeom::Iterator::compute_bounds(bool with_geometry) std::vector reps; converter_->mapping()->get_representations(reps, filters_); - std::vector products; + std::vector products; for (auto& r : reps) { - std::copy(r.products->begin(), r.products->end(), std::back_inserter(products)); + std::copy(r.products.begin(), r.products.end(), std::back_inserter(products)); } for (auto& product : products) { @@ -323,7 +323,7 @@ void IfcGeom::Iterator::compute_bounds(bool with_geometry) } } -const IfcUtil::IfcBaseClass* IfcGeom::Iterator::create_shape_model_for_next_entity() { +express::Base IfcGeom::Iterator::create_shape_model_for_next_entity() { geometry_conversion_result* task = nullptr; for (; task_iterator_ < tasks_.end();) { task = &*task_iterator_++; @@ -336,9 +336,9 @@ const IfcUtil::IfcBaseClass* IfcGeom::Iterator::create_shape_model_for_next_enti } if (task) { process_finished_rep(task); - return task->item->instance->as(); + return task->item->instance; } else { - return nullptr; + return express::Base{}; } } @@ -349,31 +349,31 @@ void IfcGeom::Iterator::create_element_(ifcopenshell::geometry::Converter* kerne if (!rep->item) { return; } - std::transform(rep->products_2->begin(), rep->products_2->end(), std::back_inserter(rep->products), [this, &rep, kernel](IfcUtil::IfcBaseClass* prod) { + std::transform(rep->products_2.begin(), rep->products_2.end(), std::back_inserter(rep->products), [this, &rep, kernel](const express::Base& prod) { auto prod_item = kernel->mapping()->map(prod); - return std::make_pair(prod->as(), ifcopenshell::geometry::taxonomy::cast(prod_item)->matrix); + return std::make_pair(prod, ifcopenshell::geometry::taxonomy::cast(prod_item)->matrix); }); } else { } auto product_node = rep->products.front(); - const IfcUtil::IfcBaseEntity* product = product_node.first; + const express::Base product = product_node.first; const auto& place = product_node.second; Logger::SetProduct(product); - IfcGeom::BRepElement* brep = static_cast(decorate_with_cache_(GeometrySerializer::READ_BREP, (std::string)product->get("GlobalId"), std::to_string(rep->item->instance->as()->id()), [kernel, settings, product, place, rep]() { + IfcGeom::BRepElement* brep = static_cast(decorate_with_cache_(GeometrySerializer::READ_BREP, (std::string)product.as().get("GlobalId"), std::to_string(rep->item->instance.id()), [kernel, settings, product, place, rep]() { return kernel->create_brep_for_representation_and_product(rep->item, product, place); })); if (!brep) { - Logger::SetProduct(boost::none); + Logger::SetProduct(std::nullopt); return; } auto elem = process_based_on_settings(settings, brep); if (!elem) { - Logger::SetProduct(boost::none); + Logger::SetProduct(std::nullopt); return; } @@ -382,10 +382,10 @@ void IfcGeom::Iterator::create_element_(ifcopenshell::geometry::Converter* kerne for (auto it = rep->products.begin() + 1; it != rep->products.end(); ++it) { const auto& p = *it; - const IfcUtil::IfcBaseEntity* product2 = p.first; + const express::Base product2 = p.first; const auto& place2 = p.second; - IfcGeom::BRepElement* brep2 = static_cast(decorate_with_cache_(GeometrySerializer::READ_BREP, (std::string)product2->get("GlobalId"), std::to_string(rep->item->instance->as()->id()), [kernel, settings, product2, place2, brep]() { + IfcGeom::BRepElement* brep2 = static_cast(decorate_with_cache_(GeometrySerializer::READ_BREP, (std::string)product2.as().get("GlobalId"), std::to_string(rep->item->instance.id()), [kernel, settings, product2, place2, brep]() { return kernel->create_brep_for_processed_representation(product2, place2, brep); })); if (brep2) { @@ -397,7 +397,7 @@ void IfcGeom::Iterator::create_element_(ifcopenshell::geometry::Converter* kerne } } - Logger::SetProduct(boost::none); + Logger::SetProduct(std::nullopt); } IfcGeom::Element* IfcGeom::Iterator::process_based_on_settings(ifcopenshell::geometry::Settings settings, IfcGeom::BRepElement* elem, IfcGeom::TriangulationElement* previous) @@ -490,7 +490,7 @@ void IfcGeom::Iterator::validate_iterator_state() const { /// Moves to the next shape representation, create its geometry, and returns the associated product. /// Use get() to retrieve the created geometry. -const IfcUtil::IfcBaseClass* IfcGeom::Iterator::next() { +express::Base IfcGeom::Iterator::next() { using std::chrono::high_resolution_clock; validate_iterator_state(); @@ -501,11 +501,11 @@ const IfcUtil::IfcBaseClass* IfcGeom::Iterator::next() { if (num_threads_ != 1) { if (!wait_for_element()) { - Logger::SetProduct(boost::none); + Logger::SetProduct(std::nullopt); time_points[3] = high_resolution_clock::now(); log_timepoints(); task_result_ptr_exhausted = true; - return nullptr; + return express::Base{}; } task_result_iterator_++; @@ -517,11 +517,11 @@ const IfcUtil::IfcBaseClass* IfcGeom::Iterator::next() { // shape representation if (task_result_iterator_ == --all_processed_elements_.end()) { if (!create()) { - Logger::SetProduct(boost::none); + Logger::SetProduct(std::nullopt); time_points[3] = high_resolution_clock::now(); log_timepoints(); task_result_ptr_exhausted = true; - return nullptr; + return express::Base{}; } } @@ -565,8 +565,8 @@ IfcGeom::Element* IfcGeom::Iterator::get() while (parent_object != NULL && hasParent && parent_object->parent_id() != -1) { // Find the next parent auto pid = parent_object->parent_id(); - auto ifc_product = ifc_file->instance_by_id(pid)->as(); - if (ifc_product->declaration().name() == "IfcProject") { + auto ifc_product = ifc_file->instance_by_id(pid); + if (ifc_product.declaration().name() == "IfcProject") { hasParent = false; } else { try { @@ -595,20 +595,20 @@ const IfcGeom::Element* IfcGeom::Iterator::get_object(int id) { ifcopenshell::geometry::taxonomy::matrix4::ptr m4; int parent_id = -1; std::string instance_type, product_name, product_guid; - IfcUtil::IfcBaseEntity* ifc_product = 0; + express::Base ifc_product; try { - ifc_product = ifc_file->instance_by_id(id)->as(); - instance_type = ifc_product->declaration().name(); + ifc_product = ifc_file->instance_by_id(id); + instance_type = ifc_product.declaration().name(); - if (ifc_product->declaration().is("IfcRoot")) { - product_guid = (std::string)ifc_product->get("GlobalId"); - product_name = ifc_product->get_value("Name", ""); + if (ifc_product.declaration().is("IfcRoot")) { + product_guid = ifc_product.as().get_value("GlobalId"); + product_name = ifc_product.as().get_value("Name", ""); } auto parent_object = converter_->mapping()->get_decomposing_entity(ifc_product); if (parent_object) { - parent_id = parent_object->id(); + parent_id = parent_object.id(); } // fails in case of IfcProject @@ -634,12 +634,12 @@ const IfcGeom::Element* IfcGeom::Iterator::get_object(int id) { Logger::Error("Unknown error returning product"); } - Element* ifc_object = new Element(settings_, id, parent_id, product_name, instance_type, product_guid, "", m4, ifc_product); + Element* ifc_object = new Element(settings_, id, parent_id, product_name, instance_type, product_guid, "", m4, ifc_product.as()); return ifc_object; } -const IfcUtil::IfcBaseClass* IfcGeom::Iterator::create() { - const IfcUtil::IfcBaseClass* product = nullptr; +express::Base IfcGeom::Iterator::create() { + express::Base product; try { product = create_shape_model_for_next_entity(); } catch (const std::exception& e) { @@ -676,7 +676,7 @@ ifcopenshell::geometry::taxonomy::direction3::ptr IfcGeom::Iterator::remove_offs throw std::runtime_error("remove_offset() can only be called with defer-processing-first-element and no-parallel-mapping settings"); } - auto collect_offset = [&](const item::ptr& itm, const std::vector>& pr) -> std::pair { + auto collect_offset = [&](const item::ptr& itm, const std::vector>& pr) -> std::pair { std::function(const item::ptr&, Eigen::Matrix4d)> traverse; traverse = [&](const item::ptr& node, Eigen::Matrix4d m4) -> std::pair { if (auto shl = std::dynamic_pointer_cast(node)) { @@ -756,7 +756,7 @@ ifcopenshell::geometry::taxonomy::direction3::ptr IfcGeom::Iterator::remove_offs Eigen::Matrix4d translation_matrix = Eigen::Matrix4d::Identity(); translation_matrix.block<3, 1>(0, 3) = vec; - auto remove_offset = [&](const item::ptr& itm, const std::vector>& pr) -> bool { + auto remove_offset = [&](const item::ptr& itm, const std::vector>& pr) -> bool { std::function traverse; traverse = [&](const item::ptr& node, Eigen::Matrix4d m4) -> bool { if (auto shl = std::dynamic_pointer_cast(node)) { diff --git a/src/ifcgeom/Iterator.h b/src/ifcgeom/Iterator.h index 3f5f90a350..a31b547597 100644 --- a/src/ifcgeom/Iterator.h +++ b/src/ifcgeom/Iterator.h @@ -91,14 +91,18 @@ namespace IfcGeom { // For NoParallelMapping==true ifcopenshell::geometry::taxonomy::ptr item; - std::vector> products; + std::vector> products; // For NoParallelMapping==false - IfcUtil::IfcBaseEntity* representation; - aggregate_of_instance::ptr products_2; + express::Base representation; + std::vector products_2; std::vector breps; std::vector elements; + + bool is_parallel() const { + return !!representation; + } }; @@ -127,7 +131,7 @@ namespace IfcGeom { ifcopenshell::geometry::Settings settings_; IfcParse::IfcFile* ifc_file; - std::vector filters_; + std::vector filters_; int num_threads_; std::string geometry_library_; @@ -193,7 +197,7 @@ namespace IfcGeom { return element; } - const IfcUtil::IfcBaseClass* create_shape_model_for_next_entity(); + express::Base create_shape_model_for_next_entity(); void create_element_( ifcopenshell::geometry::Converter* kernel, @@ -213,7 +217,7 @@ namespace IfcGeom { ifcopenshell::geometry::taxonomy::direction3::ptr remove_offset_(); public: - Iterator(std::unique_ptr&& geometry_library, const ifcopenshell::geometry::Settings& settings, IfcParse::IfcFile* file, const std::vector& filters, int num_threads) + Iterator(std::unique_ptr&& geometry_library, const ifcopenshell::geometry::Settings& settings, IfcParse::IfcFile* file, const std::vector& filters, int num_threads) : settings_(settings) , ifc_file(file) , filters_(filters) @@ -255,16 +259,16 @@ namespace IfcGeom { return items; } - aggregate_of_aggregate_of_instance::ptr get_task_products() const { - aggregate_of_aggregate_of_instance::ptr products = aggregate_of_aggregate_of_instance::ptr(new aggregate_of_aggregate_of_instance); + std::vector> get_task_products() const { + std::vector> products; for (const auto& task : tasks_) { - if (task.products_2) { - products->push(task.products_2); + if (task.is_parallel()) { + products.push_back(task.products_2); } else { for (auto& product : task.products) { - aggregate_of_instance::ptr p(new aggregate_of_instance); - p->push(product.first); - products->push(p); + std::vector p; + p.push_back(product.first); + products.push_back(p); } } } @@ -276,7 +280,7 @@ namespace IfcGeom { // Check if error occurred during iterator initialization or iteration over elements. bool had_error_processing_elements() const { return had_error_processing_elements_; } - boost::optional initialization_outcome_; + std::optional initialization_outcome_; /** * @return Returns true if the iterator is initialized with any elements, false otherwise. @@ -309,15 +313,15 @@ namespace IfcGeom { IfcParse::IfcFile* file() const { return ifc_file; } - const std::vector& filters() const { return filters_; } - std::vector& filters() { return filters_; } + const std::vector& filters() const { return filters_; } + std::vector& filters() { return filters_; } const ifcopenshell::geometry::taxonomy::point3& bounds_min() const { return bounds_min_; } const ifcopenshell::geometry::taxonomy::point3& bounds_max() const { return bounds_max_; } /// Moves to the next shape representation, create its geometry, and returns the associated product. /// Use get() to retrieve the created geometry. - const IfcUtil::IfcBaseClass* next(); + express::Base next(); /// Gets the representation of the current geometrical entity. Element* get(); @@ -330,7 +334,7 @@ namespace IfcGeom { const Element* get_object(int id); - const IfcUtil::IfcBaseClass* create(); + express::Base create(); }; } diff --git a/src/ifcgeom/Serialization/Serialization.cpp b/src/ifcgeom/Serialization/Serialization.cpp index f9f5a7abd0..4276a97331 100644 --- a/src/ifcgeom/Serialization/Serialization.cpp +++ b/src/ifcgeom/Serialization/Serialization.cpp @@ -6,15 +6,17 @@ #include #include +#include "../../ifcparse/IfcFile.h" + #define EXTERNAL_DEFS_1(r, data, elem) \ - IfcUtil::IfcBaseClass* BOOST_PP_CAT(tesselate_Ifc, elem)(const TopoDS_Shape& shape, double deflection); + express::Base BOOST_PP_CAT(tesselate_Ifc, elem)(IfcParse::IfcFile&, const TopoDS_Shape& shape, double deflection); #define EXTERNAL_DEFS_2(r, data, elem) \ - IfcUtil::IfcBaseClass* BOOST_PP_CAT(serialise_Ifc, elem)(const TopoDS_Shape& shape, bool advanced); + express::Base BOOST_PP_CAT(serialise_Ifc, elem)(IfcParse::IfcFile&, const TopoDS_Shape& shape, bool advanced); #define CONDITIONAL_CALL(r, data, elem) \ if (schema_name_lower == BOOST_PP_STRINGIZE(BOOST_PP_CAT(elem,))) { \ - return BOOST_PP_CAT(METHOD_NAME, elem)(shape, arg_2); \ + return BOOST_PP_CAT(METHOD_NAME, elem)(f, shape, arg_2); \ } BOOST_PP_SEQ_FOR_EACH(EXTERNAL_DEFS_1, , SCHEMA_SEQ); @@ -22,8 +24,11 @@ BOOST_PP_SEQ_FOR_EACH(EXTERNAL_DEFS_2, , SCHEMA_SEQ); #define METHOD_NAME tesselate_Ifc -IfcUtil::IfcBaseClass* IfcGeom::tesselate(const std::string& schema_name, const TopoDS_Shape& shape, double arg_2) { +express::Base IfcGeom::tesselate(IfcParse::IfcFile& f, const TopoDS_Shape& shape, double arg_2) { + auto schema_name = f.schema()->name(); + // @todo an ugly hack to guarantee schemas are initialised. + // @todo is this still needed? parsing a file should have initialized the schemas already. try { IfcParse::schema_by_name("IFC2X3"); } catch (IfcParse::IfcException&) {} @@ -38,7 +43,9 @@ IfcUtil::IfcBaseClass* IfcGeom::tesselate(const std::string& schema_name, const #undef METHOD_NAME #define METHOD_NAME serialise_Ifc -IfcUtil::IfcBaseClass* IfcGeom::serialise(const std::string& schema_name, const TopoDS_Shape& shape, bool arg_2) { +express::Base IfcGeom::serialise(IfcParse::IfcFile& f, const TopoDS_Shape& shape, bool arg_2) { + auto schema_name = f.schema()->name(); + // @todo an ugly hack to guarantee schemas are initialised. try { IfcParse::schema_by_name("IFC2X3"); diff --git a/src/ifcgeom/Serialization/Serialization.h b/src/ifcgeom/Serialization/Serialization.h index 464d2e8561..2679f2b6f1 100644 --- a/src/ifcgeom/Serialization/Serialization.h +++ b/src/ifcgeom/Serialization/Serialization.h @@ -1,4 +1,4 @@ -#include "../../ifcparse/IfcBaseClass.h" +#include "../../ifcparse/express.h" #include "ifc_geomserialization_api.h" @@ -7,6 +7,6 @@ #include namespace IfcGeom { - IFC_GEOMSERIALIZATION_API IfcUtil::IfcBaseClass* tesselate(const std::string& schema_name, const TopoDS_Shape& shape, double deflection); - IFC_GEOMSERIALIZATION_API IfcUtil::IfcBaseClass* serialise(const std::string& schema_name, const TopoDS_Shape& shape, bool advanced); -} +IFC_GEOMSERIALIZATION_API express::Base tesselate(IfcParse::IfcFile& f, const TopoDS_Shape& shape, double deflection); +IFC_GEOMSERIALIZATION_API express::Base serialise(IfcParse::IfcFile& f, const TopoDS_Shape& shape, bool advanced); +} // namespace IfcGeom diff --git a/src/ifcgeom/Serialization/schema/Serialization.cpp b/src/ifcgeom/Serialization/schema/Serialization.cpp index 96ff0c86b5..30836d05cc 100644 --- a/src/ifcgeom/Serialization/schema/Serialization.cpp +++ b/src/ifcgeom/Serialization/schema/Serialization.cpp @@ -24,6 +24,7 @@ #include "../../../ifcparse/macros.h" #include "../../../ifcparse/IfcParse.h" +#include "../../../ifcparse/IfcFile.h" #define INCLUDE_PARENT_PARENT_DIR(x) STRINGIFY(../../../ifcparse/x.h) #include INCLUDE_PARENT_PARENT_DIR(IfcSchema) @@ -33,27 +34,25 @@ #include -#include - template -int convert_to_ifc(const T& t, U*& u, bool /*advanced*/) { - std::vector coords(3); - coords[0] = t.X(); coords[1] = t.Y(); coords[2] = t.Z(); - u = new U(coords); +int convert_to_ifc(IfcParse::IfcFile& f, const T& t, U& u, bool /*advanced*/) { + u = f.create(); + u.set_attribute_value(0, std::vector{t.X(), t.Y(), t.Z()}); return 1; } template <> -int convert_to_ifc(const TopoDS_Vertex& v, IfcSchema::IfcCartesianPoint*& p, bool advanced) { +int convert_to_ifc(IfcParse::IfcFile& f, const TopoDS_Vertex& v, IfcSchema::IfcCartesianPoint& p, bool advanced) { gp_Pnt pnt = BRep_Tool::Pnt(v); - return convert_to_ifc(pnt, p, advanced); + return convert_to_ifc(f, pnt, p, advanced); } template <> -int convert_to_ifc(const TopoDS_Vertex& v, IfcSchema::IfcVertex*& vertex, bool advanced) { - IfcSchema::IfcCartesianPoint* p; - if (convert_to_ifc(v, p, advanced)) { - vertex = new IfcSchema::IfcVertexPoint(p); +int convert_to_ifc(IfcParse::IfcFile& f, const TopoDS_Vertex& v, IfcSchema::IfcVertexPoint& vertex, bool advanced) { + IfcSchema::IfcCartesianPoint p; + if (convert_to_ifc(f, v, p, advanced)) { + vertex = f.create(); + vertex.setVertexGeometry(p); return 1; } else { return 0; @@ -61,14 +60,17 @@ int convert_to_ifc(const TopoDS_Vertex& v, IfcSchema::IfcVertex*& vertex, bool a } template <> -int convert_to_ifc(const gp_Ax2& a, IfcSchema::IfcAxis2Placement3D*& ax, bool advanced) { - IfcSchema::IfcCartesianPoint* p; - IfcSchema::IfcDirection *x, *z; - if (!(convert_to_ifc(a.Location(), p, advanced) && convert_to_ifc(a.Direction(), z, advanced) && convert_to_ifc(a.XDirection(), x, advanced))) { - ax = 0; +int convert_to_ifc(IfcParse::IfcFile& f, const gp_Ax2& a, IfcSchema::IfcAxis2Placement3D& ax, bool advanced) { + IfcSchema::IfcCartesianPoint p; + IfcSchema::IfcDirection x, z; + if (!(convert_to_ifc(f, a.Location(), p, advanced) && convert_to_ifc(f, a.Direction(), z, advanced) && convert_to_ifc(f, a.XDirection(), x, advanced))) { + ax = IfcSchema::IfcAxis2Placement3D{}; return 0; } - ax = new IfcSchema::IfcAxis2Placement3D(p, z, x); + ax = f.create(); + ax.setLocation(p); + ax.setAxis(z); + ax.setRefDirection(x); return 1; } @@ -110,44 +112,55 @@ namespace { #endif template <> -int convert_to_ifc(const Handle_Geom_Curve& c, IfcSchema::IfcCurve*& curve, bool advanced) { +int convert_to_ifc(IfcParse::IfcFile& f, const Handle_Geom_Curve& c, IfcSchema::IfcCurve& curve, bool advanced) { if (c->DynamicType() == STANDARD_TYPE(Geom_TrimmedCurve)) { Handle_Geom_TrimmedCurve trim = Handle_Geom_TrimmedCurve::DownCast(c); const Handle_Geom_Curve basis = trim->BasisCurve(); - return convert_to_ifc(basis, curve, advanced); + return convert_to_ifc(f, basis, curve, advanced); } else if (c->DynamicType() == STANDARD_TYPE(Geom_Line)) { - IfcSchema::IfcDirection* d; - IfcSchema::IfcCartesianPoint* p; + IfcSchema::IfcDirection d; + IfcSchema::IfcCartesianPoint p; Handle_Geom_Line line = Handle_Geom_Line::DownCast(c); - if (!convert_to_ifc(line->Position().Location(), p, advanced)) { + if (!convert_to_ifc(f, line->Position().Location(), p, advanced)) { return 0; } - if (!convert_to_ifc(line->Position().Direction(), d, advanced)) { + if (!convert_to_ifc(f, line->Position().Direction(), d, advanced)) { return 0; } - IfcSchema::IfcVector* v = new IfcSchema::IfcVector(d, 1.); - curve = new IfcSchema::IfcLine(p, v); + IfcSchema::IfcVector v = f.create(); + v.setOrientation(d); + v.setMagnitude(1.); + IfcSchema::IfcLine l = f.create(); + l.setPnt(p); + l.setDir(v); + curve = l; return 1; } else if (c->DynamicType() == STANDARD_TYPE(Geom_Circle)) { - IfcSchema::IfcAxis2Placement3D* ax; + IfcSchema::IfcAxis2Placement3D ax; Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(c); - convert_to_ifc(circle->Position(), ax, advanced); - curve = new IfcSchema::IfcCircle(ax, circle->Radius()); + convert_to_ifc(f, circle->Position(), ax, advanced); + auto circ = f.create(); + circ.setPosition(ax); + circ.setRadius(circle->Radius()); + curve = circ; return 1; } else if (c->DynamicType() == STANDARD_TYPE(Geom_Ellipse)) { - IfcSchema::IfcAxis2Placement3D* ax; + IfcSchema::IfcAxis2Placement3D ax; Handle_Geom_Ellipse ellipse = Handle_Geom_Ellipse::DownCast(c); - convert_to_ifc(ellipse->Position(), ax, advanced); - curve = new IfcSchema::IfcEllipse(ax, ellipse->MajorRadius(), ellipse->MinorRadius()); + auto el = f.create(); + el.setPosition(ax); + el.setSemiAxis1(ellipse->MajorRadius()); + el.setSemiAxis2(ellipse->MinorRadius()); + curve = el; return 1; } @@ -161,15 +174,15 @@ int convert_to_ifc(const Handle_Geom_Curve& c, IfcSchema::IfcCurve*& curve, bool IfcSchema::IfcKnotType::Value knot_spec = IfcSchema::IfcKnotType::IfcKnotType_QUASI_UNIFORM_KNOTS; - IfcSchema::IfcCartesianPoint::list::ptr points(new IfcSchema::IfcCartesianPoint::list); + std::vector points; TColgp_Array1OfPnt poles(1, bezier->NbPoles()); bezier->Poles(poles); for (int i = 1; i <= bezier->NbPoles(); ++i) { - IfcSchema::IfcCartesianPoint* p; - if (!convert_to_ifc(poles.Value(i), p, advanced)) { + IfcSchema::IfcCartesianPoint p; + if (!convert_to_ifc(f, poles.Value(i), p, advanced)) { return 0; } - points->push(p); + points.push_back(p); if (i == 1 || i == bezier->NbPoles()) { mults.push_back(bezier->Degree() + 1); @@ -184,32 +197,31 @@ int convert_to_ifc(const Handle_Geom_Curve& c, IfcSchema::IfcCurve*& curve, bool bezier->Weights(bspline_weights); opencascade_array_to_vector(bspline_weights, weights); - curve = new IfcSchema::IfcRationalBSplineCurveWithKnots( - bezier->Degree(), - points, - IfcSchema::IfcBSplineCurveForm::IfcBSplineCurveForm_UNSPECIFIED, - bezier->IsClosed() != 0, - false, - mults, - knots, - knot_spec, - weights - ); + auto bspl = f.create(); + bspl.setDegree(bezier->Degree()); + bspl.setControlPointsList(points); + bspl.setCurveForm(IfcSchema::IfcBSplineCurveForm::IfcBSplineCurveForm_UNSPECIFIED); + bspl.setClosedCurve(bezier->IsClosed() != 0); + bspl.setSelfIntersect(false); + bspl.setKnotMultiplicities(mults); + bspl.setKnots(knots); + bspl.setKnotSpec(knot_spec); + bspl.setWeightsData(weights); return 1; } else if (c->DynamicType() == STANDARD_TYPE(Geom_BSplineCurve)) { Handle_Geom_BSplineCurve bspline = Handle_Geom_BSplineCurve::DownCast(c); - IfcSchema::IfcCartesianPoint::list::ptr points(new IfcSchema::IfcCartesianPoint::list); + std::vector points; TColgp_Array1OfPnt poles(1, bspline->NbPoles()); bspline->Poles(poles); for (int i = 1; i <= bspline->NbPoles(); ++i) { - IfcSchema::IfcCartesianPoint* p; - if (!convert_to_ifc(poles.Value(i), p, advanced)) { + IfcSchema::IfcCartesianPoint p; + if (!convert_to_ifc(f, poles.Value(i), p, advanced)) { return 0; } - points->push(p); + points.push_back(p); } IfcSchema::IfcKnotType::Value knot_spec = opencascade_knotspec_to_ifc(bspline->KnotDistribution()); @@ -237,39 +249,33 @@ int convert_to_ifc(const Handle_Geom_Curve& c, IfcSchema::IfcCurve*& curve, bool } } - if (bspline->IsPeriodic() && points->size()) { - points->push(*points->begin()); + if (bspline->IsPeriodic() && points.size()) { + points.push_back(points.front()); weights.push_back(weights[0]); auto sum = std::accumulate(mults.begin(), mults.end(), 0); - auto d = sum - (bspline->Degree() + (int)points->size() + 1); + auto d = sum - (bspline->Degree() + (int) points.size() + 1); (*mults.begin()) -= d / 2; (*mults.rbegin()) -= d / 2; } + IfcSchema::IfcBSplineCurveWithKnots bspl; + if (rational) { - curve = new IfcSchema::IfcRationalBSplineCurveWithKnots( - bspline->Degree(), - points, - IfcSchema::IfcBSplineCurveForm::IfcBSplineCurveForm_UNSPECIFIED, - bspline->IsClosed() != 0, - false, - mults, - knots, - knot_spec, - weights - ); - } else { - curve = new IfcSchema::IfcBSplineCurveWithKnots( - bspline->Degree(), - points, - IfcSchema::IfcBSplineCurveForm::IfcBSplineCurveForm_UNSPECIFIED, - bspline->IsClosed() != 0, - false, - mults, - knots, - knot_spec - ); - } + auto rbspl = f.create(); + rbspl.setWeightsData(weights); + bspl = rbspl; + } else { + bspl = f.create(); + } + + bspl.setDegree(bspline->Degree()); + bspl.setControlPointsList(points); + bspl.setCurveForm(IfcSchema::IfcBSplineCurveForm::IfcBSplineCurveForm_UNSPECIFIED); + bspl.setClosedCurve(bspline->IsClosed() != 0); + bspl.setSelfIntersect(false); + bspl.setKnotMultiplicities(mults); + bspl.setKnots(knots); + bspl.setKnotSpec(knot_spec); return 1; } @@ -278,46 +284,50 @@ int convert_to_ifc(const Handle_Geom_Curve& c, IfcSchema::IfcCurve*& curve, bool } template <> -int convert_to_ifc(const Handle_Geom_Surface& s, IfcSchema::IfcSurface*& surface, bool advanced) { +int convert_to_ifc(IfcParse::IfcFile& f, const Handle_Geom_Surface& s, IfcSchema::IfcSurface& surface, bool advanced) { if (s->DynamicType() == STANDARD_TYPE(Geom_Plane)) { Handle_Geom_Plane plane = Handle_Geom_Plane::DownCast(s); - IfcSchema::IfcAxis2Placement3D* place; + IfcSchema::IfcAxis2Placement3D place; /// @todo: Note that the Ax3 is converted to an Ax2 here - if (!convert_to_ifc(plane->Position().Ax2(), place, advanced)) { + if (!convert_to_ifc(f, plane->Position().Ax2(), place, advanced)) { return 0; } - surface = new IfcSchema::IfcPlane(place); + auto pln = f.create(); + pln.setPosition(place); + surface = pln; return 1; } #ifdef SCHEMA_HAS_IfcRationalBSplineSurfaceWithKnots else if (s->DynamicType() == STANDARD_TYPE(Geom_CylindricalSurface)) { Handle_Geom_CylindricalSurface cyl = Handle_Geom_CylindricalSurface::DownCast(s); - IfcSchema::IfcAxis2Placement3D* place; + IfcSchema::IfcAxis2Placement3D place; /// @todo: Note that the Ax3 is converted to an Ax2 here - if (!convert_to_ifc(cyl->Position().Ax2(), place, advanced)) { + if (!convert_to_ifc(f, cyl->Position().Ax2(), place, advanced)) { return 0; } - surface = new IfcSchema::IfcCylindricalSurface(place, cyl->Radius()); + + auto surf = f.create(); + surf.setPosition(place); + surf.setRadius(cyl->Radius()); + surface = surf; + return 1; } else if (s->DynamicType() == STANDARD_TYPE(Geom_BSplineSurface)) { - typedef aggregate_of_aggregate_of points_t; - + std::vector> points; Handle_Geom_BSplineSurface bspline = Handle_Geom_BSplineSurface::DownCast(s); - points_t::ptr points(new points_t); TColgp_Array2OfPnt poles(1, bspline->NbUPoles(), 1, bspline->NbVPoles()); bspline->Poles(poles); for (int i = 1; i <= bspline->NbUPoles(); ++i) { - std::vector ps; + auto& ps = points.emplace_back(); ps.reserve(bspline->NbVPoles()); for (int j = 1; j <= bspline->NbVPoles(); ++j) { - IfcSchema::IfcCartesianPoint* p; - if (!convert_to_ifc(poles.Value(i, j), p, advanced)) { + IfcSchema::IfcCartesianPoint p; + if (!convert_to_ifc(f, poles.Value(i, j), p, advanced)) { return 0; } ps.push_back(p); } - points->push(ps); } IfcSchema::IfcKnotType::Value knot_spec_u = opencascade_knotspec_to_ifc(bspline->UKnotDistribution()); @@ -361,38 +371,30 @@ int convert_to_ifc(const Handle_Geom_Surface& s, IfcSchema::IfcSurface*& surface } } + IfcSchema::IfcBSplineSurfaceWithKnots bspl; + if (rational) { - surface = new IfcSchema::IfcRationalBSplineSurfaceWithKnots( - bspline->UDegree(), - bspline->VDegree(), - points, - IfcSchema::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_UNSPECIFIED, - bspline->IsUClosed() != 0, - bspline->IsVClosed() != 0, - false, - umults, - vmults, - uknots, - vknots, - knot_spec_u, - weights - ); + auto rbspl = f.create(); + rbspl.setWeightsData(weights); + bspl = rbspl; } else { - surface = new IfcSchema::IfcBSplineSurfaceWithKnots( - bspline->UDegree(), - bspline->VDegree(), - points, - IfcSchema::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_UNSPECIFIED, - bspline->IsUClosed() != 0, - bspline->IsVClosed() != 0, - false, - umults, - vmults, - uknots, - vknots, - knot_spec_u - ); - } + bspl = f.create(); + } + + bspl.setUDegree(bspline->UDegree()); + bspl.setVDegree(bspline->VDegree()); + bspl.setControlPointsList(points); + bspl.setSurfaceForm(IfcSchema::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_UNSPECIFIED); + bspl.setUClosed(bspline->IsUClosed() != 0); + bspl.setVClosed(bspline->IsVClosed() != 0); + bspl.setSelfIntersect(false); + bspl.setUMultiplicities(umults); + bspl.setVMultiplicities(vmults); + bspl.setUKnots(uknots); + bspl.setVKnots(vknots); + bspl.setKnotSpec(knot_spec_u); + + surface = bspl; return 1; } @@ -401,27 +403,37 @@ int convert_to_ifc(const Handle_Geom_Surface& s, IfcSchema::IfcSurface*& surface } template <> -int convert_to_ifc(const TopoDS_Edge& e, IfcSchema::IfcCurve*& c, bool advanced) { +int convert_to_ifc(IfcParse::IfcFile& f, const TopoDS_Edge& e, IfcSchema::IfcCurve& c, bool advanced) { double a, b; - IfcSchema::IfcCurve* base; + IfcSchema::IfcCurve base; Handle_Geom_Curve crv = BRep_Tool::Curve(e, a, b); - if (!convert_to_ifc(crv, base, advanced)) { + if (!convert_to_ifc(f, crv, base, advanced)) { return 0; } - IfcSchema::IfcTrimmingSelect::list::ptr trim1(new IfcSchema::IfcTrimmingSelect::list); - IfcSchema::IfcTrimmingSelect::list::ptr trim2(new IfcSchema::IfcTrimmingSelect::list); - trim1->push(new IfcSchema::IfcParameterValue(a)); - trim2->push(new IfcSchema::IfcParameterValue(b)); + auto ta = f.create(); + ta.set_attribute_value(0, a); + auto tb = f.create(); + tb.set_attribute_value(0, b); - c = new IfcSchema::IfcTrimmedCurve(base, trim1, trim2, true, IfcSchema::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER); + std::vector trim1{ta}; + std::vector trim2{tb}; + + auto tc = f.create(); + tc.setBasisCurve(base); + tc.setTrim1(trim1); + tc.setTrim2(trim2); + tc.setSenseAgreement(true); + tc.setMasterRepresentation(IfcSchema::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER); + + c = tc; return 1; } template <> -int convert_to_ifc(const TopoDS_Edge& e, IfcSchema::IfcEdge*& edge, bool advanced) { +int convert_to_ifc(IfcParse::IfcFile& f, const TopoDS_Edge& e, IfcSchema::IfcEdge& edge, bool advanced) { double a, b; TopExp_Explorer exp(e, TopAbs_VERTEX); @@ -431,8 +443,8 @@ int convert_to_ifc(const TopoDS_Edge& e, IfcSchema::IfcEdge*& edge, bool advance if (!exp.More()) return 0; TopoDS_Vertex v2 = TopoDS::Vertex(exp.Current()); - IfcSchema::IfcVertex *vertex1, *vertex2; - if (!(convert_to_ifc(v1, vertex1, advanced) && convert_to_ifc(v2, vertex2, advanced))) { + IfcSchema::IfcVertexPoint vertex1, vertex2; + if (!(convert_to_ifc(f, v1, vertex1, advanced) && convert_to_ifc(f, v2, vertex2, advanced))) { return 0; } @@ -443,18 +455,36 @@ int convert_to_ifc(const TopoDS_Edge& e, IfcSchema::IfcEdge*& edge, bool advance } if (crv->DynamicType() == STANDARD_TYPE(Geom_Line) && !advanced) { - IfcSchema::IfcEdge* edge2 = new IfcSchema::IfcEdge(vertex1, vertex2); - edge = new IfcSchema::IfcOrientedEdge(edge2, true); + IfcSchema::IfcEdge edge2 = f.create(); + edge2.setEdgeStart(vertex1); + edge2.setEdgeEnd(vertex2); + + auto ori = f.create(); + ori.setEdgeElement(edge2); + ori.setOrientation(true); + + edge = ori; return 1; } else { - IfcSchema::IfcCurve* curve; - if (!convert_to_ifc(crv, curve, advanced)) { + IfcSchema::IfcCurve curve; + if (!convert_to_ifc(f, crv, curve, advanced)) { return 0; } + /// @todo probably not correct const bool sense = e.Orientation() == TopAbs_FORWARD; - IfcSchema::IfcEdge* edge2 = new IfcSchema::IfcEdgeCurve(vertex1, vertex2, curve, true); - edge = new IfcSchema::IfcOrientedEdge(edge2, sense); + + auto ec = f.create(); + ec.setEdgeStart(vertex1); + ec.setEdgeEnd(vertex2); + ec.setEdgeGeometry(curve); + ec.setSameSense(true); + + auto ori = f.create(); + ori.setEdgeElement(ec); + ori.setOrientation(sense); + + edge = ori; return 1; } } @@ -475,7 +505,7 @@ namespace { } template <> -int convert_to_ifc(const TopoDS_Wire& wire, IfcSchema::IfcLoop*& loop, bool advanced) { +int convert_to_ifc(IfcParse::IfcFile& f, const TopoDS_Wire& wire, IfcSchema::IfcLoop& loop, bool advanced) { bool polygonal = true; for (TopExp_Explorer exp(wire, TopAbs_EDGE); exp.More(); exp.Next()) { double a, b; @@ -491,25 +521,27 @@ int convert_to_ifc(const TopoDS_Wire& wire, IfcSchema::IfcLoop*& loop, bool adva if (!polygonal && !advanced) { return 0; } else if (polygonal && !advanced) { - IfcSchema::IfcCartesianPoint::list::ptr points(new IfcSchema::IfcCartesianPoint::list); + std::vector points; BRepTools_WireExplorer exp(wire); - IfcSchema::IfcCartesianPoint* p; + IfcSchema::IfcCartesianPoint p; for (; exp.More(); exp.Next()) { - if (convert_to_ifc(exp.CurrentVertex(), p, advanced)) { - points->push(p); + if (convert_to_ifc(f, exp.CurrentVertex(), p, advanced)) { + points.push_back(p); } else { return 0; } } - loop = new IfcSchema::IfcPolyLoop(points); + auto pl = f.create(); + pl.setPolygon(points); + loop = pl; return 1; } else { - IfcSchema::IfcOrientedEdge::list::ptr edges(new IfcSchema::IfcOrientedEdge::list); + std::vector edges; BRepTools_WireExplorer exp(wire); for (; exp.More(); exp.Next()) { - IfcSchema::IfcEdge* edge; - // With advanced set to true convert_to_ifc(TopoDS_Edge&) will always create an IfcOrientedEdge - if (!convert_to_ifc(exp.Current(), edge, true)) { + IfcSchema::IfcEdge edge; + // With advanced set to true convert_to_ifc(IfcParse::IfcFile& f, TopoDS_Edge&) will always create an IfcOrientedEdge + if (!convert_to_ifc(f, exp.Current(), edge, true)) { double a, b; if (BRep_Tool::Curve(TopoDS::Edge(exp.Current()), a, b).IsNull()) { continue; @@ -517,32 +549,37 @@ int convert_to_ifc(const TopoDS_Wire& wire, IfcSchema::IfcLoop*& loop, bool adva return 0; } } - edges->push(edge->as()); + edges.push_back(edge.as()); } - loop = new IfcSchema::IfcEdgeLoop(edges); + auto el = f.create(); + el.setEdgeList(edges); + loop = el; return 1; } } template <> -int convert_to_ifc(const TopoDS_Face& f, IfcSchema::IfcFace*& face, bool advanced) { - Handle_Geom_Surface surf = BRep_Tool::Surface(f); - TopExp_Explorer exp(f, TopAbs_WIRE); - IfcSchema::IfcFaceBound::list::ptr bounds(new IfcSchema::IfcFaceBound::list); +int convert_to_ifc(IfcParse::IfcFile& f, const TopoDS_Face& fa, IfcSchema::IfcFace& face, bool advanced) { + Handle_Geom_Surface surf = BRep_Tool::Surface(fa); + TopExp_Explorer exp(fa, TopAbs_WIRE); + std::vector bounds; int index = 0; - auto outer = BRepTools::OuterWire(f); + auto outer = BRepTools::OuterWire(fa); for (; exp.More(); exp.Next(), ++index) { - IfcSchema::IfcLoop* loop; - if (!convert_to_ifc(TopoDS::Wire(exp.Current()), loop, advanced)) { + IfcSchema::IfcLoop loop; + if (!convert_to_ifc(f, TopoDS::Wire(exp.Current()), loop, advanced)) { return 0; } - IfcSchema::IfcFaceBound* bnd; + IfcSchema::IfcFaceBound bnd; if (outer == exp.Current()) { - bnd = new IfcSchema::IfcFaceOuterBound(loop, true); + bnd = f.create(); } else { - bnd = new IfcSchema::IfcFaceBound(loop, true); + bnd = f.create(); } - bounds->push(bnd); + bnd.setBound(loop); + bnd.setOrientation(true); + + bounds.push_back(bnd); } const bool is_planar = surf->DynamicType() == STANDARD_TYPE(Geom_Plane); @@ -551,15 +588,20 @@ int convert_to_ifc(const TopoDS_Face& f, IfcSchema::IfcFace*& face, bool advance return 0; } if (is_planar && !advanced) { - face = new IfcSchema::IfcFace(bounds); + face = f.create(); + face.setBounds(bounds); return 1; } else { #ifdef SCHEMA_HAS_IfcAdvancedFace - IfcSchema::IfcSurface* surface; - if (!convert_to_ifc(surf, surface, advanced)) { + IfcSchema::IfcSurface surface; + if (!convert_to_ifc(f, surf, surface, advanced)) { return 0; } - face = new IfcSchema::IfcAdvancedFace(bounds, surface, f.Orientation() == TopAbs_FORWARD); + auto adv = f.create(); + adv.setBounds(bounds); + adv.setFaceSurface(surface); + adv.setSameSense(fa.Orientation() == TopAbs_FORWARD); + face = adv; return 1; #else // No IfcAdvancedFace in Ifc2x3 @@ -569,30 +611,33 @@ int convert_to_ifc(const TopoDS_Face& f, IfcSchema::IfcFace*& face, bool advance } template -int convert_to_ifc(const TopoDS_Shape& s, U*& item, bool advanced) { - IfcSchema::IfcFace::list::ptr faces(new IfcSchema::IfcFace::list); - IfcSchema::IfcFace* f; +int convert_to_ifc(IfcParse::IfcFile& f, const TopoDS_Shape& s, U& item, bool advanced) { + std::vector faces; + IfcSchema::IfcFace fa; for (TopExp_Explorer exp(s, TopAbs_FACE); exp.More(); exp.Next()) { - if (convert_to_ifc(TopoDS::Face(exp.Current()), f, advanced)) { - faces->push(f); + if (convert_to_ifc(f, TopoDS::Face(exp.Current()), fa, advanced)) { + faces.push_back(fa); } else { - /// Cleanup: - for (IfcSchema::IfcFace::list::it it = faces->begin(); it != faces->end(); ++it) { - aggregate_of_instance::ptr data = IfcParse::traverse(*it)->unique(); - for (aggregate_of_instance::it jt = data->begin(); jt != data->end(); ++jt) { - delete *jt; - } + std::set created; + for (auto& face : faces) { + auto resources = f.traverse(face); + created.insert(resources.begin(), resources.end()); } + for (auto& c : created) { + f.removeEntity(c); + } return 0; } } - item = new U(faces); - return faces->size(); + item = f.create(); + item.setCfsFaces(faces); + + return faces.size(); } -IfcUtil::IfcBaseClass* POSTFIX_SCHEMA(serialise)(const TopoDS_Shape& shape, bool advanced) { +express::Base POSTFIX_SCHEMA(serialise)(IfcParse::IfcFile& f, const TopoDS_Shape& shape, bool advanced) { #ifndef SCHEMA_HAS_IfcAdvancedBrep advanced = false; @@ -600,25 +645,25 @@ IfcUtil::IfcBaseClass* POSTFIX_SCHEMA(serialise)(const TopoDS_Shape& shape, bool for (TopExp_Explorer exp(shape, TopAbs_COMPSOLID); exp.More();) { /// @todo CompSolids are not supported - return 0; + return express::Base{}; } - IfcSchema::IfcRepresentation* rep = 0; - IfcSchema::IfcRepresentationItem::list::ptr items(new IfcSchema::IfcRepresentationItem::list); + IfcSchema::IfcRepresentation rep; + std::vector items; // First check if there is a solid with one or more shells for (TopExp_Explorer exp(shape, TopAbs_SOLID); exp.More(); exp.Next()) { - IfcSchema::IfcClosedShell* outer = 0; - IfcSchema::IfcClosedShell::list::ptr inner(new IfcSchema::IfcClosedShell::list); + IfcSchema::IfcClosedShell outer; + std::vector inner; for (TopExp_Explorer exp2(exp.Current(), TopAbs_SHELL); exp2.More(); exp2.Next()) { - IfcSchema::IfcClosedShell* shell; - if (!convert_to_ifc(exp2.Current(), shell, advanced)) { - return 0; + IfcSchema::IfcClosedShell shell; + if (!convert_to_ifc(f, exp2.Current(), shell, advanced)) { + return express::Base{}; } /// @todo Are shells always in this order or does Orientation() needs to be checked? /// > #4216, no, consider using BRepClass3d::OuterShell() if (outer) { - inner->push(shell); + inner.push_back(shell); } else { outer = shell; } @@ -626,89 +671,129 @@ IfcUtil::IfcBaseClass* POSTFIX_SCHEMA(serialise)(const TopoDS_Shape& shape, bool #ifdef SCHEMA_HAS_IfcAdvancedBrep if (advanced) { - if (inner->size()) { - items->push(new IfcSchema::IfcAdvancedBrepWithVoids(outer, inner)); + if (inner.size()) { + auto inst = f.create(); + inst.setOuter(outer); + inst.setVoids(inner); + items.push_back(inst); } else { - items->push(new IfcSchema::IfcAdvancedBrep(outer)); + auto inst = f.create(); + inst.setOuter(outer); + items.push_back(inst); } } else #endif /// @todo this is not necessarily correct as the shell is not necessarily facetted. - if (inner->size()) { - items->push(new IfcSchema::IfcFacetedBrepWithVoids(outer, inner)); + if (inner.size()) { + auto inst = f.create(); + inst.setOuter(outer); + inst.setVoids(inner); + items.push_back(inst); } else { - items->push(new IfcSchema::IfcFacetedBrep(outer)); + auto inst = f.create(); + inst.setOuter(outer); + items.push_back(inst); } } - if (items->size() > 0) { - rep = new IfcSchema::IfcShapeRepresentation(0, std::string("Body"), advanced ? std::string("AdvancedBrep") : std::string("Brep"), items); + if (items.size() > 0) { + auto srep = f.create(); + srep.setRepresentationIdentifier("Body"); + srep.setRepresentationType(advanced ? "AdvancedBrep" : "Brep"); + srep.setItems(items); + rep = srep; } else { // If not, see if there is a shell - IfcSchema::IfcShell::list::ptr shells(new IfcSchema::IfcShell::list); + std::vector shells; for (TopExp_Explorer exp(shape, TopAbs_SHELL); exp.More(); exp.Next()) { - IfcSchema::IfcOpenShell* shell; - if (!convert_to_ifc(exp.Current(), shell, advanced)) { - return 0; + IfcSchema::IfcOpenShell shell; + if (!convert_to_ifc(f, exp.Current(), shell, advanced)) { + return express::Base{}; } - shells->push(shell); + shells.push_back(shell); } - if (shells->size() > 0) { - items->push(new IfcSchema::IfcShellBasedSurfaceModel(shells)); - rep = new IfcSchema::IfcShapeRepresentation(0, std::string("Body"), advanced ? std::string("AdvancedBrep") : std::string("Brep"), items); + if (shells.size() > 0) { + auto inst = f.create(); + inst.setSbsmBoundary(shells); + items.push_back(inst); + + auto srep = f.create(); + srep.setRepresentationIdentifier("Body"); + srep.setRepresentationType(advanced ? "AdvancedBrep" : "Brep"); + srep.setItems(items); + + rep = srep; } else { // If not, see if there is are one of more faces. Note that they will be grouped into a shell. - IfcSchema::IfcOpenShell* shell; - int face_count = convert_to_ifc(shape, shell, advanced); + IfcSchema::IfcOpenShell shell; + int face_count = convert_to_ifc(f, shape, shell, advanced); if (face_count > 0) { - items->push(shell); - rep = new IfcSchema::IfcShapeRepresentation(0, std::string("Body"), advanced ? std::string("AdvancedBrep") : std::string("Brep"), items); + items.push_back(shell); + auto srep = f.create(); + srep.setRepresentationIdentifier("Body"); + srep.setRepresentationType(advanced ? "AdvancedBrep" : "Brep"); + srep.setItems(items); + + rep = srep; } else { // If not, see if there are any edges. Note that wires are skipped as // they are not commonly top-level geometrical descriptions in IFC. // Also note that edges are written as trimmed curves rather than edges. - aggregate_of_instance::ptr edges(new aggregate_of_instance); + std::vector edges; for (TopExp_Explorer exp(shape, TopAbs_EDGE); exp.More(); exp.Next()) { - IfcSchema::IfcCurve* c; - if (!convert_to_ifc(TopoDS::Edge(exp.Current()), c, advanced)) { - return 0; + IfcSchema::IfcCurve c; + if (!convert_to_ifc(f, TopoDS::Edge(exp.Current()), c, advanced)) { + return express::Base{}; } - edges->push(c); + edges.push_back(c); } - if (edges->size() == 0) { - return 0; - } else if (edges->size() == 1) { - rep = new IfcSchema::IfcShapeRepresentation(0, std::string("Axis"), std::string("Curve2D"), edges->as()); + if (edges.size() == 0) { + return express::Base{}; + } else if (edges.size() == 1) { + auto srep = f.create(); + srep.setRepresentationIdentifier("Axis"); + srep.setRepresentationType("Curve2D"); + srep.setItems(cast_vector(edges)); + rep = srep; } else { // A geometric set is created as that probably (?) makes more sense in IFC - IfcSchema::IfcGeometricCurveSet* curves = new IfcSchema::IfcGeometricCurveSet(edges->as()); - items->push(curves); - rep = new IfcSchema::IfcShapeRepresentation(0, std::string("Axis"), std::string("GeometricCurveSet"), items->as()); + auto curves = f.create(); + curves.setElements(cast_vector(edges)); + items.push_back(curves); + + auto srep = f.create(); + srep.setRepresentationIdentifier("Axis"); + srep.setRepresentationType("GeometricCurveSet"); + srep.setItems(items); + rep = srep; } } } } - IfcSchema::IfcRepresentation::list::ptr reps(new IfcSchema::IfcRepresentation::list); - reps->push(rep); - return new IfcSchema::IfcProductDefinitionShape(boost::none, boost::none, reps); + auto pds = f.create(); + pds.setRepresentations({rep}); + + return pds; } -IfcUtil::IfcBaseClass* POSTFIX_SCHEMA(tesselate)(const TopoDS_Shape& shape, double deflection) { +express::Base POSTFIX_SCHEMA(tesselate)(IfcParse::IfcFile& f, const TopoDS_Shape& shape, double deflection) { + // @todo use triangulated face set in ifc4+ schema + BRepMesh_IncrementalMesh(shape, deflection); - IfcSchema::IfcFace::list::ptr faces(new IfcSchema::IfcFace::list); + std::vector faces; for (TopExp_Explorer exp(shape, TopAbs_FACE); exp.More(); exp.Next()) { const TopoDS_Face& face = TopoDS::Face(exp.Current()); @@ -716,45 +801,45 @@ IfcUtil::IfcBaseClass* POSTFIX_SCHEMA(tesselate)(const TopoDS_Shape& shape, doub Handle(Poly_Triangulation) tri = BRep_Tool::Triangulation(face, loc); if (!tri.IsNull()) { - std::vector vertices; + std::vector vertices; for (int i = 1; i <= tri->NbNodes(); ++i) { gp_Pnt pnt = tri->Node(i).Transformed(loc); std::vector xyz; xyz.push_back(pnt.X()); xyz.push_back(pnt.Y()); xyz.push_back(pnt.Z()); - IfcSchema::IfcCartesianPoint* cpnt = new IfcSchema::IfcCartesianPoint(xyz); + IfcSchema::IfcCartesianPoint cpnt = f.create(); + cpnt.setCoordinates(xyz); vertices.push_back(cpnt); } const Poly_Array1OfTriangle& triangles = tri->Triangles(); for (int i = 1; i <= triangles.Length(); ++i) { int n1, n2, n3; triangles(i).Get(n1, n2, n3); - IfcSchema::IfcCartesianPoint::list::ptr points(new IfcSchema::IfcCartesianPoint::list); - points->push(vertices[n1 - 1]); - points->push(vertices[n2 - 1]); - points->push(vertices[n3 - 1]); - IfcSchema::IfcPolyLoop* loop = new IfcSchema::IfcPolyLoop(points); - IfcSchema::IfcFaceOuterBound* bound = new IfcSchema::IfcFaceOuterBound(loop, face.Orientation() != TopAbs_REVERSED); - IfcSchema::IfcFaceBound::list::ptr bounds(new IfcSchema::IfcFaceBound::list); - bounds->push(bound); - IfcSchema::IfcFace* face2 = new IfcSchema::IfcFace(bounds); - faces->push(face2); + std::vector points { + vertices[n1 - 1], vertices[n2 - 1], vertices[n3 - 1] + }; + IfcSchema::IfcPolyLoop loop = f.create(); + loop.setPolygon(points); + IfcSchema::IfcFaceOuterBound bound = f.create(); + bound.setBound(loop); + bound.setOrientation(face.Orientation() != TopAbs_REVERSED); + IfcSchema::IfcFace face2 = f.create(); + face2.setBounds({bound}); + faces.push_back(face2); } } } - IfcSchema::IfcOpenShell* shell = new IfcSchema::IfcOpenShell(faces); - IfcSchema::IfcConnectedFaceSet::list::ptr shells(new IfcSchema::IfcConnectedFaceSet::list); - shells->push(shell); - IfcSchema::IfcFaceBasedSurfaceModel* surface_model = new IfcSchema::IfcFaceBasedSurfaceModel(shells); + auto shell = f.create(); + shell.setCfsFaces(faces); - IfcSchema::IfcRepresentation::list::ptr reps(new IfcSchema::IfcRepresentation::list); - IfcSchema::IfcRepresentationItem::list::ptr items(new IfcSchema::IfcRepresentationItem::list); + auto surface_model = f.create(); + surface_model.setFbsmFaces({shell}); - items->push(surface_model); + auto rep = f.create(); + rep.setRepresentationIdentifier("Tessellation"); + rep.setRepresentationType("SurfaceModel"); + rep.setItems({surface_model}); - IfcSchema::IfcShapeRepresentation* rep = new IfcSchema::IfcShapeRepresentation( - 0, std::string("Facetation"), std::string("SurfaceModel"), items); - - reps->push(rep); - IfcSchema::IfcProductDefinitionShape* shapedef = new IfcSchema::IfcProductDefinitionShape(boost::none, boost::none, reps); + auto shapedef = f.create(); + shapedef.setRepresentations({rep}); return shapedef; } diff --git a/src/ifcgeom/SurfaceStyle.cpp b/src/ifcgeom/SurfaceStyle.cpp index 69310f3929..bb7496d191 100644 --- a/src/ifcgeom/SurfaceStyle.cpp +++ b/src/ifcgeom/SurfaceStyle.cpp @@ -86,14 +86,14 @@ void IfcGeom::set_default_style_file(const std::string& json_file) { default_materials.insert(std::make_pair(name, std::make_shared(name))); pt::ptree material = material_pair.second; - boost::optional diffuse = material.get_child_optional("diffuse"); + auto diffuse = material.get_child_optional("diffuse"); default_materials[name]->diffuse = read_colour_component(diffuse); // @todo Is it necessary to get the surface too? - // boost::optional surface = material.get_child_optional("surface"); + // std::optional surface = material.get_child_optional("surface"); // default_materials[name]->surface = read_colour_component(surface); - boost::optional specular = material.get_child_optional("specular"); + auto specular = material.get_child_optional("specular"); default_materials[name]->specular = read_colour_component(specular); if (material.get_child_optional("specular-roughness")) { diff --git a/src/ifcgeom/abstract_mapping.h b/src/ifcgeom/abstract_mapping.h index 6d47b32829..6dea7b8e11 100644 --- a/src/ifcgeom/abstract_mapping.h +++ b/src/ifcgeom/abstract_mapping.h @@ -20,8 +20,7 @@ #ifndef ABSTRACT_MAPPING_H #define ABSTRACT_MAPPING_H -#include "../ifcparse/IfcBaseClass.h" -#include "../ifcparse/aggregate_of_instance.h" +#include "../ifcparse/express.h" #include "../ifcgeom/taxonomy.h" #include "../ifcgeom/ConversionSettings.h" @@ -37,11 +36,14 @@ namespace geometry { struct IFC_GEOM_API geometry_conversion_task { int index; - IfcUtil::IfcBaseEntity* representation; - aggregate_of_instance::ptr products; + express::Base representation; + std::vector products; }; - typedef boost::function filter_t; + /// The filter function (free or member function) or function object (use boost::ref() to reference to it) + /// should return true if the geometry for the product is wanted to be included in the output. + /// http://www.boost.org/doc/libs/1_62_0/doc/html/function/tutorial.html + typedef boost::function filter_t; class IFC_GEOM_API abstract_mapping { protected: @@ -53,19 +55,19 @@ namespace geometry { abstract_mapping(Settings& s) : settings_(s) {} virtual ~abstract_mapping() {} - virtual ifcopenshell::geometry::taxonomy::ptr map(const IfcUtil::IfcBaseInterface*) = 0; - virtual void get_representations(std::vector& tasks, std::vector& filters) = 0; - virtual IfcUtil::IfcBaseEntity* get_decomposing_entity(const IfcUtil::IfcBaseEntity* product, bool include_openings = true) = 0; - virtual std::map get_layers(IfcUtil::IfcBaseEntity*) = 0; - virtual aggregate_of_instance::ptr find_openings(const IfcUtil::IfcBaseEntity*) = 0; + virtual ifcopenshell::geometry::taxonomy::ptr map(const express::Base&) = 0; + virtual void get_representations(std::vector& tasks, std::vector& filters) = 0; + virtual express::Base get_decomposing_entity(const express::Base& product, bool include_openings = true) = 0; + virtual std::map get_layers(const express::Base&) = 0; + virtual std::vector find_openings(const express::Base&) = 0; virtual void initialize_settings() = 0; - virtual bool get_layerset_information(const IfcUtil::IfcBaseInterface*, layerset_information&, int&) = 0; - virtual bool get_wall_neighbours(const IfcUtil::IfcBaseInterface*, std::vector&) = 0; - virtual const IfcUtil::IfcBaseEntity* get_product_type(const IfcUtil::IfcBaseEntity*) = 0; - virtual const IfcUtil::IfcBaseEntity* get_single_material_association(const IfcUtil::IfcBaseEntity*) = 0; + virtual bool get_layerset_information(const express::Base&, layerset_information&, int&) = 0; + virtual bool get_wall_neighbours(const express::Base&, std::vector&) = 0; + virtual const express::Base get_product_type(const express::Base&) = 0; + virtual const express::Base get_single_material_association(const express::Base&) = 0; virtual double get_length_unit() const = 0; virtual const std::string& get_length_unit_name() const = 0; - virtual IfcUtil::IfcBaseEntity* representation_of(const IfcUtil::IfcBaseEntity* product) = 0; + virtual express::Base representation_of(const express::Base& product) = 0; const Settings& settings() const { return settings_; } Settings& settings() { return settings_; } diff --git a/src/ifcgeom/function_item_evaluator.h b/src/ifcgeom/function_item_evaluator.h index 9773c8731c..191521d666 100644 --- a/src/ifcgeom/function_item_evaluator.h +++ b/src/ifcgeom/function_item_evaluator.h @@ -76,7 +76,7 @@ class IFC_GEOM_API function_item_evaluator { taxonomy::item::ptr evaluate(const std::vector& dist) const; fn_evaluator* fn_evaluator_ = nullptr; - mutable boost::optional> eval_points_; // cache evaluation points + mutable std::optional> eval_points_; // cache evaluation points }; }} diff --git a/src/ifcgeom/hybrid_kernel.h b/src/ifcgeom/hybrid_kernel.h index dfe7cd200d..c2c4840146 100644 --- a/src/ifcgeom/hybrid_kernel.h +++ b/src/ifcgeom/hybrid_kernel.h @@ -82,8 +82,8 @@ namespace ifcopenshell { } virtual bool convert(const taxonomy::ptr item, IfcGeom::ConversionResults& rs) { - auto ops = mapping_->find_openings(item->instance->as()); - bool has_openings = ops && ops->size(); + auto ops = mapping_->find_openings(item->instance); + bool has_openings = ops.size(); for (auto& k : kernels_) { #ifdef IFOPSH_WITH_CGAL if (has_openings && !k->supports_boolean_operations()) { @@ -119,7 +119,7 @@ namespace ifcopenshell { } return false; } - virtual bool apply_folded_layerset(IfcGeom::ConversionResults& items, const ifcopenshell::geometry::layerset_information& layers, const std::map& folds) + virtual bool apply_folded_layerset(IfcGeom::ConversionResults& items, const ifcopenshell::geometry::layerset_information& layers, const std::map& folds) { for (auto& k : kernels_) { bool success = false; @@ -132,7 +132,7 @@ namespace ifcopenshell { } return false; } - virtual bool convert_openings(const IfcUtil::IfcBaseEntity* entity, const std::vector>& openings, + virtual bool convert_openings(const express::Base& entity, const std::vector>& openings, const IfcGeom::ConversionResults& entity_shapes, const ifcopenshell::geometry::taxonomy::matrix4& entity_trsf, IfcGeom::ConversionResults& cut_shapes) { for (auto& k : kernels_) { diff --git a/src/ifcgeom/infra_sweep_helper.cpp b/src/ifcgeom/infra_sweep_helper.cpp index 2c681e87c6..5b7de5e6ed 100644 --- a/src/ifcgeom/infra_sweep_helper.cpp +++ b/src/ifcgeom/infra_sweep_helper.cpp @@ -1,4 +1,4 @@ -#include "profile_helper.h" +#include "profile_helper.h" #include "infra_sweep_helper.h" #include "function_item_evaluator.h" @@ -35,7 +35,7 @@ bool has_intersection(const std::set& A, } -taxonomy::loft::ptr ifcopenshell::geometry::make_loft(const Settings& settings_, const IfcUtil::IfcBaseClass* inst, const taxonomy::function_item::ptr& fn, std::vector& cross_sections) +taxonomy::loft::ptr ifcopenshell::geometry::make_loft(const Settings& settings_, const express::Base inst, const taxonomy::function_item::ptr& fn, std::vector& cross_sections) { std::sort(cross_sections.begin(), cross_sections.end()); @@ -98,12 +98,12 @@ taxonomy::loft::ptr ifcopenshell::geometry::make_loft(const Settings& settings_, (profile_index + 1 < longitudes.end()) && (relative_dist_along >= 1.e-9 || offset_a.cwiseAbs().maxCoeff() > 0. || rotation_a); - boost::optional interpolated_rotation; + std::optional interpolated_rotation; if (should_interpolate) { taxonomy::geom_item::ptr profile_b; Eigen::Vector3d offset_b; - boost::optional rotation_b; + std::optional rotation_b; if ((profile_index + 1 < longitudes.end())) { profile_b = cross_sections[std::distance(longitudes.begin(), profile_index) + 1].section_geometry; offset_b = cross_sections[std::distance(longitudes.begin(), profile_index) + 1].offset; @@ -180,7 +180,7 @@ taxonomy::loft::ptr ifcopenshell::geometry::make_loft(const Settings& settings_, return nullptr; } - if (w1->tags.is_initialized() != w2->tags.is_initialized()) { + if (w1->tags.has_value() != w2->tags.has_value()) { Logger::Warning("Mismatching availability tags on loops", inst); return nullptr; } @@ -211,21 +211,21 @@ taxonomy::loft::ptr ifcopenshell::geometry::make_loft(const Settings& settings_, std::map tag_to_point_on_w1, tag_to_point_on_w2; - auto loop_to_points = [](const taxonomy::loop::ptr& loop, const boost::optional>& input_tags) -> std::pair, std::vector>> { + auto loop_to_points = [](const taxonomy::loop::ptr& loop, const std::optional>& input_tags) -> std::pair, std::vector>> { std::vector points; std::vector> tags; std::vector::const_iterator tag_it; - if (!loop->closed.get_value_or(false)) { - points = {boost::get(loop->children[0]->start)}; + if (!loop->closed.value_or(false)) { + points = {std::get(loop->children[0]->start)}; if (input_tags) { tags = {{input_tags->front()}}; tag_it = ++input_tags->begin(); } } for (auto& e : loop->children) { - const auto& p1 = boost::get(e->start); - const auto& p2 = boost::get(e->end); + const auto& p1 = std::get(e->start); + const auto& p2 = std::get(e->end); if (input_tags && p1->ccomponents() == p2->ccomponents()) { tags.back().insert(*tag_it); ++tag_it; @@ -239,7 +239,7 @@ taxonomy::loft::ptr ifcopenshell::geometry::make_loft(const Settings& settings_, } } if (!input_tags) { - if (loop->closed.get_value_or(false)) { + if (loop->closed.value_or(false)) { // close polygon by referencing first point points.push_back(points.front()); } @@ -365,13 +365,13 @@ taxonomy::loft::ptr ifcopenshell::geometry::make_loft(const Settings& settings_, /* // This is handled in the loop_to_points() function above if (!points.empty()) { - if (!w1->closed.get_value_or(true) && !w2->closed.get_value_or(true)) { + if (!w1->closed.value_or(true) && !w2->closed.value_or(true)) { // open polygon, add last point - auto& p1 = boost::get(w1->children.back()->end); - auto& p2 = boost::get(w2->children.back()->end); + auto& p1 = std::get(w1->children.back()->end); + auto& p2 = std::get(w2->children.back()->end); auto p3 = (lerp(p1->ccomponents(), p2->ccomponents(), relative_dist_along) + interpolated_offset).eval(); points.push_back(taxonomy::make(p3)); - } else if (w1->closed.get_value_or(true) && w2->closed.get_value_or(true)) { + } else if (w1->closed.value_or(true) && w2->closed.value_or(true)) { // close polygon by referencing first point // @todo add a closed=true|false to polygon_from_points()? points.push_back(points.front()); diff --git a/src/ifcgeom/infra_sweep_helper.h b/src/ifcgeom/infra_sweep_helper.h index a14d655094..e6288ce803 100644 --- a/src/ifcgeom/infra_sweep_helper.h +++ b/src/ifcgeom/infra_sweep_helper.h @@ -14,14 +14,14 @@ namespace ifcopenshell { double dist_along; taxonomy::geom_item::ptr section_geometry; Eigen::Vector3d offset; - boost::optional rotation; + std::optional rotation; bool operator <(const cross_section& other) const { return dist_along < other.dist_along; } }; - IFC_GEOM_API taxonomy::loft::ptr make_loft(const Settings& settings_, const IfcUtil::IfcBaseClass* inst, const taxonomy::function_item::ptr& directrix, std::vector& cross_sections); + IFC_GEOM_API taxonomy::loft::ptr make_loft(const Settings& settings_, const express::Base inst, const taxonomy::function_item::ptr& directrix, std::vector& cross_sections); } } diff --git a/src/ifcgeom/kernels/cgal/CgalConversionResult.cpp b/src/ifcgeom/kernels/cgal/CgalConversionResult.cpp index 3119ad9b5d..5a34af6f9c 100644 --- a/src/ifcgeom/kernels/cgal/CgalConversionResult.cpp +++ b/src/ifcgeom/kernels/cgal/CgalConversionResult.cpp @@ -223,7 +223,7 @@ void ifcopenshell::geometry::CgalShape::Triangulate(ifcopenshell::geometry::Sett } } - boost::optional smooth_treshold; + std::optional smooth_treshold; { auto setting_value = settings.get().get(); if (setting_value > 0.) { diff --git a/src/ifcgeom/kernels/cgal/CgalConversionResult.h b/src/ifcgeom/kernels/cgal/CgalConversionResult.h index f0fb6c224c..fa66119957 100644 --- a/src/ifcgeom/kernels/cgal/CgalConversionResult.h +++ b/src/ifcgeom/kernels/cgal/CgalConversionResult.h @@ -180,9 +180,9 @@ namespace ifcopenshell { namespace geometry { class IFC_GEOMLIBRARY_API CgalShape : public IfcGeom::ConversionResultShape { private: bool convex_tag_ = false; - mutable boost::optional shape_; + mutable std::optional shape_; #ifndef IFOPSH_SIMPLE_KERNEL - mutable boost::optional> nef_; + mutable std::optional> nef_; #endif public: CgalShape(const cgal_shape_t& shape, bool convex = false); diff --git a/src/ifcgeom/kernels/cgal/CgalKernel.cpp b/src/ifcgeom/kernels/cgal/CgalKernel.cpp index a2d4d01ebc..418e6182d1 100644 --- a/src/ifcgeom/kernels/cgal/CgalKernel.cpp +++ b/src/ifcgeom/kernels/cgal/CgalKernel.cpp @@ -47,7 +47,7 @@ namespace { private: std::list *face_list; public: - boost::optional from_soup; + std::optional from_soup; PolyhedronBuilder(std::list *face_list); void operator()(CGAL::Polyhedron_3::HalfedgeDS &hds); }; @@ -232,7 +232,7 @@ bool CgalKernel::convert(const taxonomy::face::ptr face, std::list& int num_outer_bounds = 0; for (auto& bound : face->children) { - if (bound->external.get_value_or(false)) num_outer_bounds++; + if (bound->external.value_or(false)) num_outer_bounds++; } if (face->children.size() > 1 && num_outer_bounds > 1 && face->children.size() != num_outer_bounds) { @@ -244,7 +244,7 @@ bool CgalKernel::convert(const taxonomy::face::ptr face, std::list& for (auto& bound : face->children) { - const bool is_interior = !(bound->external.get_value_or(false) || face->children.size() == 1); + const bool is_interior = !(bound->external.value_or(false) || face->children.size() == 1); // single face bound is always external... even if not marked as such cgal_wire_t wire; @@ -284,11 +284,11 @@ namespace { if (auto e = taxonomy::dcast(curve)) { if (true || e->basis == nullptr) { if (builder.empty()) { - const auto& p = boost::get(e->start); + const auto& p = std::get(e->start); cgal_point_t pnt(p->ccomponents()(0), p->ccomponents()(1), p->ccomponents()(2)); builder.push_back(pnt); } - const auto& p = boost::get(e->end); + const auto& p = std::get(e->end); cgal_point_t pnt(p->ccomponents()(0), p->ccomponents()(1), p->ccomponents()(2)); builder.push_back(pnt); } else if (e->basis->kind() == taxonomy::CIRCLE) { @@ -450,17 +450,17 @@ namespace { void operator()(const taxonomy::trimmed_curve::ptr& e) { auto e_basis = e->basis; - while (e_basis->kind() == taxonomy::EDGE && e_basis->instance && e_basis->instance->declaration().name() == "IfcTrimmedCurve") { + while (e_basis->kind() == taxonomy::EDGE && e_basis->instance && e_basis->instance.declaration().name() == "IfcTrimmedCurve") { // @todo we still might have something to wrt orientation on periodic curves // to make sure we select the correct arc later on. e_basis = taxonomy::cast(e_basis)->basis; } point_projection_visitor v1{ e->basis }, v2{ e->basis }; - boost::apply_visitor(v1, e->start); - boost::apply_visitor(v2, e->end); + std::visit(v1, e->start); + std::visit(v2, e->end); - if (!e->curve_sense.get_value_or(true)) { + if (!e->curve_sense.value_or(true)) { std::swap(v1.u, v2.u); } @@ -469,7 +469,7 @@ namespace { dispatch_curve_creation::dispatch(e->basis, v); this->points = v.points; - if (!e->curve_sense.get_value_or(true)) { + if (!e->curve_sense.value_or(true)) { std::reverse(this->points.begin(), this->points.end()); } } @@ -581,7 +581,7 @@ namespace { CGAL::Polygon_2 loop_to_polygon_2(taxonomy::loop::ptr loop) { CGAL::Polygon_2 polygon; for (auto& e : loop->children) { - auto& p = *boost::get(e->start); + auto& p = *std::get(e->start); CGAL::Point_2 pnt(p.ccomponents()(0), p.ccomponents()(1)); polygon.push_back(pnt); } @@ -685,12 +685,12 @@ bool CgalKernel::convert(const taxonomy::loop::ptr loop, cgal_wire_t& result) { convert_curve(settings_, e, edge); } else { edge = { - *boost::get(e->start), - *boost::get(e->end) + *std::get(e->start), + *std::get(e->end) }; } - if (!e->orientation.get_value_or(true)) { + if (!e->orientation.value_or(true)) { std::reverse(edge.begin(), edge.end()); } @@ -809,7 +809,7 @@ bool CgalKernel::convert_impl(const taxonomy::shell::ptr shell, ConversionResult return false; } results.emplace_back(ConversionResult( - shell->instance->as()->id(), + shell->instance.id(), shell->matrix, new CgalShape(shape), shell->surface_style @@ -834,7 +834,7 @@ bool CgalKernel::convert_impl(const taxonomy::solid::ptr solid, ConversionResult return false; } results.emplace_back(ConversionResult( - solid->instance->as()->id(), + solid->instance.id(), solid->matrix, new CgalShape(shape), solid->surface_style @@ -857,7 +857,7 @@ namespace { } } -bool ifcopenshell::geometry::kernels::CgalKernel::convert_openings(const IfcUtil::IfcBaseEntity * entity, const std::vector>& openings, const IfcGeom::ConversionResults & entity_shapes, const ifcopenshell::geometry::taxonomy::matrix4 & entity_trsf, IfcGeom::ConversionResults & cut_shapes) +bool ifcopenshell::geometry::kernels::CgalKernel::convert_openings(const express::Base& entity, const std::vector>& openings, const IfcGeom::ConversionResults & entity_shapes, const ifcopenshell::geometry::taxonomy::matrix4 & entity_trsf, IfcGeom::ConversionResults & cut_shapes) { #ifdef IFOPSH_SIMPLE_KERNEL return false; @@ -865,9 +865,9 @@ bool ifcopenshell::geometry::kernels::CgalKernel::convert_openings(const IfcUtil CGAL::Nef_nary_union_3> second_operand_collector; size_t second_operand_collector_size = 0; - std::list>> operands; + std::list>> operands; - std::list second_operand_instances; + std::list second_operand_instances; std::list first_operands, second_operands; std::list> first_operands_nef, second_operands_nef; @@ -916,13 +916,13 @@ bool ifcopenshell::geometry::kernels::CgalKernel::convert_openings(const IfcUtil } } CGAL::Nef_polyhedron_3 nef; - if (!preprocess_boolean_operand(op.first->instance->as(), {}, {}, {}, entity_shape, nef, PP_NONE)) { + if (!preprocess_boolean_operand(op.first->instance, {}, {}, {}, entity_shape, nef, PP_NONE)) { continue; } // auto tree = build_halfspace_tree_decomposed(nef, all_operand_planes); - second_operand_instances.push_back(op.first->instance->as()); + second_operand_instances.push_back(op.first->instance); second_operands.push_back(entity_shape); second_operands_nef.push_back(nef); } @@ -984,7 +984,7 @@ bool CgalKernel::convert_impl(const taxonomy::extrusion::ptr extrusion, Conversi return false; } results.emplace_back(ConversionResult( - extrusion->instance->as()->id(), + extrusion->instance.id(), extrusion->matrix, new CgalShape(shape), extrusion->surface_style @@ -1321,7 +1321,7 @@ bool CgalKernel::thin_solid(const CGAL::Nef_polyhedron_3& a, CGAL::Nef_ return true; } -bool CgalKernel::preprocess_boolean_operand(const IfcUtil::IfcBaseClass* log_reference, const std::list& first_operands, const std::list>& first_operands_nef, const std::list& all_operand_planes, const cgal_shape_t& shape_const, CGAL::Nef_polyhedron_3& result, boolean_operand_preprocess proc) { +bool CgalKernel::preprocess_boolean_operand(const express::Base& log_reference, const std::list& first_operands, const std::list>& first_operands_nef, const std::list& all_operand_planes, const cgal_shape_t& shape_const, CGAL::Nef_polyhedron_3& result, boolean_operand_preprocess proc) { cgal_shape_t shape = shape_const; if (!shape.is_valid()) { @@ -1727,7 +1727,7 @@ namespace { } } -bool CgalKernel::process_as_2d_polygon(const std::list>>& operands, std::list>& loops, double& z0, double& z1) { +bool CgalKernel::process_as_2d_polygon(const std::list>>& operands, std::list>& loops, double& z0, double& z1) { if (operands.front().size() != 1) { return false; } @@ -1887,7 +1887,7 @@ bool CgalKernel::convert_impl(const taxonomy::boolean_result::ptr br, Conversion } return ConversionResult( - br->instance->as()->id(), + br->instance.id(), br->matrix, new CgalShape(shp), br->surface_style ? br->surface_style : first_item_style @@ -1912,7 +1912,7 @@ bool CgalKernel::convert_impl(const taxonomy::boolean_result::ptr br, Conversion taxonomy::style::ptr first_item_style = nullptr; - std::list>> operands; + std::list>> operands; for (auto& c : br->children) { // AbstractKernel::convert(c, results); @@ -1921,9 +1921,9 @@ bool CgalKernel::convert_impl(const taxonomy::boolean_result::ptr br, Conversion ConversionResults cr; operands.emplace_back(); - operands.back().first = c->instance->as(); + operands.back().first = c->instance; - if (c->kind() == taxonomy::SOLID && c->instance->declaration().is("IfcHalfSpaceSolid") && !first) { + if (c->kind() == taxonomy::SOLID && c->instance.declaration().is("IfcHalfSpaceSolid") && !first) { auto face = taxonomy::cast(c)->children[0]->children[0]; if (face->basis == nullptr || face->basis->kind() != taxonomy::PLANE) { @@ -1951,7 +1951,7 @@ bool CgalKernel::convert_impl(const taxonomy::boolean_result::ptr br, Conversion }); double wmin, wmax; - if (face->orientation.get_value_or(false)) { + if (face->orientation.value_or(false)) { wmin = 0.; wmax = uvw_max[2] + eps; } else { @@ -2043,7 +2043,7 @@ bool CgalKernel::convert_impl(const taxonomy::boolean_result::ptr br, Conversion for (auto& li : operands) { for (auto& s : li.second) { results.emplace_back(ConversionResult( - br->instance->data().id(), + br->instance.data().id(), br->matrix, new CgalShape(s), br->surface_style ? br->surface_style : first_item_style @@ -2065,7 +2065,7 @@ bool CgalKernel::convert_impl(const taxonomy::boolean_result::ptr br, Conversion for (auto& p : operands) { for (auto& s : p.second) { results.emplace_back(ConversionResult( - br->instance->data().id(), + br->instance.data().id(), br->matrix, new CgalShape(s), br->surface_style ? br->surface_style : first_item_style @@ -2131,7 +2131,7 @@ bool CgalKernel::convert_impl(const taxonomy::boolean_result::ptr br, Conversion } results.emplace_back(ConversionResult( - br->instance->as()->id(), + br->instance.id(), br->matrix, new CgalShape(a_poly), br->surface_style ? br->surface_style : first_item_style diff --git a/src/ifcgeom/kernels/cgal/CgalKernel.h b/src/ifcgeom/kernels/cgal/CgalKernel.h index ce6efbb2aa..bc0d2dea10 100644 --- a/src/ifcgeom/kernels/cgal/CgalKernel.h +++ b/src/ifcgeom/kernels/cgal/CgalKernel.h @@ -80,7 +80,7 @@ namespace ifcopenshell { PP_NONE }; - bool preprocess_boolean_operand(const IfcUtil::IfcBaseClass* log_reference, const std::list& first_operands, const std::list>& first_operands_nef, const std::list& all_operand_planes, const cgal_shape_t& shape_const, CGAL::Nef_polyhedron_3& result, boolean_operand_preprocess proc); + bool preprocess_boolean_operand(const express::Base& log_reference, const std::list& first_operands, const std::list>& first_operands_nef, const std::list& all_operand_planes, const cgal_shape_t& shape_const, CGAL::Nef_polyhedron_3& result, boolean_operand_preprocess proc); bool thin_solid(const CGAL::Nef_polyhedron_3& a, CGAL::Nef_polyhedron_3& result); @@ -115,14 +115,14 @@ namespace ifcopenshell { bool process_extrusion(const cgal_face_t& bottom_face, taxonomy::direction3::ptr direction, double height, cgal_shape_t& shape); bool process_as_2d_polygon(const taxonomy::boolean_result::ptr br, std::list>& loops, double& z0, double& z1); - bool process_as_2d_polygon(const std::list>>& operands, std::list>& loops, double& z0, double& z1); + bool process_as_2d_polygon(const std::list>>& operands, std::list>& loops, double& z0, double& z1); virtual bool convert_impl(const taxonomy::shell::ptr, IfcGeom::ConversionResults&); virtual bool convert_impl(const taxonomy::extrusion::ptr, IfcGeom::ConversionResults&); virtual bool convert_impl(const taxonomy::boolean_result::ptr, IfcGeom::ConversionResults&); virtual bool convert_impl(const taxonomy::solid::ptr, IfcGeom::ConversionResults&); - virtual bool convert_openings(const IfcUtil::IfcBaseEntity* entity, const std::vector>& openings, + virtual bool convert_openings(const express::Base& entity, const std::vector>& openings, const IfcGeom::ConversionResults& entity_shapes, const ifcopenshell::geometry::taxonomy::matrix4& entity_trsf, IfcGeom::ConversionResults& cut_shapes); #ifndef IFOPSH_SIMPLE_KERNEL diff --git a/src/ifcgeom/kernels/cgal/nef_to_halfspace_tree.h b/src/ifcgeom/kernels/cgal/nef_to_halfspace_tree.h index fa410a84f9..0644ab75f4 100644 --- a/src/ifcgeom/kernels/cgal/nef_to_halfspace_tree.h +++ b/src/ifcgeom/kernels/cgal/nef_to_halfspace_tree.h @@ -621,7 +621,7 @@ struct Intersection_visitor { template struct Segment_collector { typedef void result_type; - boost::optional> segment; + std::optional> segment; void operator()(const CGAL::Point_3&) { @@ -648,7 +648,7 @@ public: template bool tree_edge(Edge e, const Graph& g) { - if (boost::get(boost::edge_weight, g, e) == edgetype_) { + if (std::get(boost::edge_weight, g, e) == edgetype_) { auto srcid = boost::source(e, g); auto tgtid = boost::target(e, g); @@ -667,7 +667,7 @@ public: typename boost::graph_traits::out_edge_iterator ei, ei_end; for (boost::tie(ei, ei_end) = boost::out_edges(tgtid, g); ei != ei_end; ++ei) { - if (boost::get(boost::edge_weight, g, *ei) != edgetype_) { + if (std::get(boost::edge_weight, g, *ei) != edgetype_) { tgt_has_any_reflex_edge = true; // std::cout << " reflex: " << boost::source(*ei, g) << " -- " << boost::target(*ei, g) << std::endl; break; @@ -712,9 +712,9 @@ public: if (x) { // std::cout << " triangle: " << t << std::endl; // Intersection_visitor v; - // boost::apply_visitor([](auto x) {std::cout << " intersects: " << x << std::endl; })(*x); + // std::visit([](auto x) {std::cout << " intersects: " << x << std::endl; })(*x); Segment_collector sc; - boost::apply_visitor(sc)(*x); + std::visit(sc)(*x); if (sc.segment) { if (!std::any_of(edges_i.begin(), edges_i.end(), [&sc](CGAL::Segment_3& s) { // When intersecting with the boundary of a facet we likely multiple co-planar facets. Exclude intersection. @@ -723,7 +723,7 @@ public: return false; } Segment_collector scy; - boost::apply_visitor(scy)(*xy); + std::visit(scy)(*xy); return (bool)scy.segment; })) { return true; @@ -807,7 +807,7 @@ std::unique_ptr> build_halfspace_tree(Graph& bool all_convex = true; typename boost::graph_traits>::edge_iterator ei, ei_end; for (boost::tie(ei, ei_end) = boost::edges(G); ei != ei_end; ++ei) { - if (boost::get(boost::edge_weight, G, *ei) != edge_trait) { + if (std::get(boost::edge_weight, G, *ei) != edge_trait) { // all_convex = false; break; } @@ -1030,7 +1030,7 @@ public: auto verts_backup = verts; auto facets_backup = facets; - boost::optional> pwh; + std::optional> pwh; auto nf = std::distance(h->facet_cycles_begin(), h->facet_cycles_end()); for (auto fc = h->facet_cycles_begin(); fc != h->facet_cycles_end(); ++fc) { // std::cout << "h_plane.point() " << h_plane.point() << std::endl; diff --git a/src/ifcgeom/kernels/opencascade/IfcGeomTree.h b/src/ifcgeom/kernels/opencascade/IfcGeomTree.h index 997391fcd6..f39adf381a 100644 --- a/src/ifcgeom/kernels/opencascade/IfcGeomTree.h +++ b/src/ifcgeom/kernels/opencascade/IfcGeomTree.h @@ -73,7 +73,7 @@ namespace IfcGeom { struct ray_intersection_result { double distance; int style_index; - const IfcUtil::IfcBaseEntity* instance; + express::Entity instance; std::array position; std::array normal; double ray_distance; @@ -82,8 +82,8 @@ namespace IfcGeom { struct clash { int clash_type; // 0 = protrusion, 1 = pierce, 2 = collision, 3 = clearance - const IfcUtil::IfcBaseClass* a; - const IfcUtil::IfcBaseClass* b; + express::Base a; + express::Base b; double distance; std::array p1; std::array p2; @@ -1442,9 +1442,9 @@ namespace IfcGeom { // Temporary structures for H5 std::vector triangulation_elements_; - std::map global_ids_; - std::map names_; - std::map placements_; + std::map global_ids_; + std::map names_; + std::map placements_; std::map> local_verts_; std::map> local_faces_; std::map> local_materials_; @@ -1481,7 +1481,7 @@ namespace IfcGeom { }; } - class tree : public impl::tree { + class tree : public impl::tree { public: tree() {}; diff --git a/src/ifcgeom/kernels/opencascade/OpenCascadeConversionResult.cpp b/src/ifcgeom/kernels/opencascade/OpenCascadeConversionResult.cpp index 560c1a29fa..3299eaacb2 100644 --- a/src/ifcgeom/kernels/opencascade/OpenCascadeConversionResult.cpp +++ b/src/ifcgeom/kernels/opencascade/OpenCascadeConversionResult.cpp @@ -53,7 +53,7 @@ void ifcopenshell::geometry::OpenCascadeShape::Triangulate(ifcopenshell::geometr // above can be static? // A 3x3 matrix to rotate the vertex normals - boost::optional rotation_matrix; + std::optional rotation_matrix; if (place.components_) { const auto& m = *place.components_; diff --git a/src/ifcgeom/kernels/opencascade/OpenCascadeKernel.cpp b/src/ifcgeom/kernels/opencascade/OpenCascadeKernel.cpp index fcb390b6cc..f0174675f7 100644 --- a/src/ifcgeom/kernels/opencascade/OpenCascadeKernel.cpp +++ b/src/ifcgeom/kernels/opencascade/OpenCascadeKernel.cpp @@ -40,7 +40,7 @@ namespace { using namespace ifcopenshell::geometry; -bool IfcGeom::OpenCascadeKernel::convert_openings(const IfcUtil::IfcBaseEntity* entity, const std::vector>& openings, +bool IfcGeom::OpenCascadeKernel::convert_openings(const express::Base& entity, const std::vector>& openings, const IfcGeom::ConversionResults& entity_shapes, const ifcopenshell::geometry::taxonomy::matrix4& entity_trsf, IfcGeom::ConversionResults& cut_shapes) { util::boolean_settings bst; @@ -260,7 +260,7 @@ bool IfcGeom::OpenCascadeKernel::convert_impl(const taxonomy::revolve::ptr r, If } results.emplace_back(ConversionResult( - r->instance->as()->id(), + r->instance.id(), r->matrix, new OpenCascadeShape(shape), r->surface_style @@ -297,7 +297,7 @@ bool IfcGeom::OpenCascadeKernel::convert_impl(const taxonomy::revolve::ptr r, If // std::for_each(rs.begin(), rs.end(), [&openings](IfcSchema::IfcRelVoidsElement* rel) { // if (rel->RelatedOpeningElement()->ObjectPlacement() && rel->RelatedOpeningElement()->Representation()) { // auto reps = rel->RelatedOpeningElement()->Representation()->Representations(); -// if (!(reps->size() == 1 && (*reps->begin())->RepresentationIdentifier().get_value_or("") == "Reference")) { +// if (!(reps->size() == 1 && (*reps->begin())->RepresentationIdentifier().value_or("") == "Reference")) { // openings->push(rel); // } // } @@ -428,7 +428,7 @@ bool IfcGeom::OpenCascadeKernel::convert_impl(const taxonomy::revolve::ptr r, If // // int parent_id = -1; // try { -// IfcUtil::IfcBaseEntity* parent_object = get_decomposing_entity(product); +// express::Entity* parent_object = get_decomposing_entity(product); // if (parent_object && parent_object->as()) { // parent_id = parent_object->data().id(); // } @@ -436,7 +436,7 @@ bool IfcGeom::OpenCascadeKernel::convert_impl(const taxonomy::revolve::ptr r, If // Logger::Error(e); // } // -// const std::string name = product->Name().get_value_or(""); +// const std::string name = product->Name().value_or(""); // const std::string guid = product->GlobalId(); // // gp_Trsf trsf; @@ -677,7 +677,7 @@ bool IfcGeom::OpenCascadeKernel::convert_impl(const taxonomy::revolve::ptr r, If // { // int parent_id = -1; // try { -// IfcUtil::IfcBaseEntity* parent_object = get_decomposing_entity(product); +// express::Entity* parent_object = get_decomposing_entity(product); // if (parent_object && parent_object->as()) { // parent_id = parent_object->data().id(); // } @@ -685,7 +685,7 @@ bool IfcGeom::OpenCascadeKernel::convert_impl(const taxonomy::revolve::ptr r, If // Logger::Error(e); // } // -// const std::string name = product->Name().get_value_or(""); +// const std::string name = product->Name().value_or(""); // const std::string guid = product->GlobalId(); // // gp_Trsf trsf; @@ -998,7 +998,7 @@ bool IfcGeom::OpenCascadeKernel::convert_impl(const taxonomy::revolve::ptr r, If // layer_offset += *thickness++; // // bool found_intersection = false, parallel = false; -// boost::optional point_outside_param_range; +// std::optional point_outside_param_range; // // const Handle_Geom_Surface& surface = *jt; // @@ -1209,7 +1209,7 @@ bool IfcGeom::OpenCascadeKernel::convert_impl(const taxonomy::revolve::ptr r, If // placement_rel_to_type_ = type; // } // -// void IfcGeom::Kernel::set_conversion_placement_rel_to_instance(const IfcUtil::IfcBaseEntity* instance) { +// void IfcGeom::Kernel::set_conversion_placement_rel_to_instance(const express::Entity* instance) { // placement_rel_to_instance_ = instance; // } // @@ -1281,7 +1281,7 @@ bool IfcGeom::OpenCascadeKernel::convert_impl(const taxonomy::revolve::ptr r, If // if (shading_styles.second->declaration().is(IfcSchema::IfcSurfaceStyleRendering::Class())) { // IfcSchema::IfcSurfaceStyleRendering* rendering_style = static_cast(shading_styles.second); // if (rendering_style->DiffuseColour() && process_colour(rendering_style->DiffuseColour(), rgb)) { -// SurfaceStyle::ColorComponent diffuse = surface_style.Diffuse().get_value_or(SurfaceStyle::ColorComponent(1, 1, 1)); +// SurfaceStyle::ColorComponent diffuse = surface_style.Diffuse().value_or(SurfaceStyle::ColorComponent(1, 1, 1)); // surface_style.Diffuse().reset(SurfaceStyle::ColorComponent(diffuse.R() * rgb[0], diffuse.G() * rgb[1], diffuse.B() * rgb[2])); // } // if (rendering_style->DiffuseTransmissionColour()) { diff --git a/src/ifcgeom/kernels/opencascade/OpenCascadeKernel.h b/src/ifcgeom/kernels/opencascade/OpenCascadeKernel.h index 61b1a2c548..4fe55277a1 100644 --- a/src/ifcgeom/kernels/opencascade/OpenCascadeKernel.h +++ b/src/ifcgeom/kernels/opencascade/OpenCascadeKernel.h @@ -130,11 +130,11 @@ public: virtual bool convert_impl(const ifcopenshell::geometry::taxonomy::loft::ptr, IfcGeom::ConversionResults&); virtual bool convert_impl(const ifcopenshell::geometry::taxonomy::sweep_along_curve::ptr, IfcGeom::ConversionResults&); - virtual bool convert_openings(const IfcUtil::IfcBaseEntity* entity, const std::vector>& openings, + virtual bool convert_openings(const express::Base& entity, const std::vector>& openings, const IfcGeom::ConversionResults& entity_shapes, const ifcopenshell::geometry::taxonomy::matrix4& entity_trsf, IfcGeom::ConversionResults& cut_shapes); virtual bool unify_shapes(const IfcGeom::ConversionResults& input, IfcGeom::ConversionResults& output); - typedef boost::variant curve_creation_visitor_result_type; + typedef std::variant curve_creation_visitor_result_type; curve_creation_visitor_result_type convert_curve(const ifcopenshell::geometry::taxonomy::ptr); Handle(Geom_Surface) convert_surface(const ifcopenshell::geometry::taxonomy::ptr); @@ -151,8 +151,8 @@ public: } }; -IfcUtil::IfcBaseClass* POSTFIX_SCHEMA(tesselate_)(const TopoDS_Shape& shape, double deflection); -IfcUtil::IfcBaseClass* POSTFIX_SCHEMA(serialise_)(const TopoDS_Shape& shape, bool advanced); +express::Base POSTFIX_SCHEMA(tesselate_)(const TopoDS_Shape& shape, double deflection); +express::Base POSTFIX_SCHEMA(serialise_)(const TopoDS_Shape& shape, bool advanced); } #endif diff --git a/src/ifcgeom/kernels/opencascade/boolean_result.cpp b/src/ifcgeom/kernels/opencascade/boolean_result.cpp index 6750108a90..b6301a4b19 100644 --- a/src/ifcgeom/kernels/opencascade/boolean_result.cpp +++ b/src/ifcgeom/kernels/opencascade/boolean_result.cpp @@ -107,7 +107,7 @@ bool OpenCascadeKernel::convert_impl(const taxonomy::boolean_result::ptr br, Con if (settings_.get().get()) { results.emplace_back(IfcGeom::ConversionResult( - br->instance->as()->id(), + br->instance.id(), br->matrix, new OpenCascadeShape(a), br->surface_style ? br->surface_style : first_item_style @@ -189,7 +189,7 @@ bool OpenCascadeKernel::convert_impl(const taxonomy::boolean_result::ptr br, Con } results.emplace_back(IfcGeom::ConversionResult( - br->instance->as()->id(), + br->instance.id(), br->matrix, new OpenCascadeShape(a), br->surface_style ? br->surface_style : first_item_style diff --git a/src/ifcgeom/kernels/opencascade/extrusion.cpp b/src/ifcgeom/kernels/opencascade/extrusion.cpp index b1152a4158..2ef66b0a1b 100644 --- a/src/ifcgeom/kernels/opencascade/extrusion.cpp +++ b/src/ifcgeom/kernels/opencascade/extrusion.cpp @@ -78,7 +78,7 @@ bool OpenCascadeKernel::convert_impl(const taxonomy::extrusion::ptr extrusion, I } results.emplace_back(ConversionResult( - extrusion->instance->as()->id(), + extrusion->instance.id(), extrusion->matrix, new OpenCascadeShape(shape), extrusion->surface_style diff --git a/src/ifcgeom/kernels/opencascade/face.cpp b/src/ifcgeom/kernels/opencascade/face.cpp index b2313487c1..b5541a206e 100644 --- a/src/ifcgeom/kernels/opencascade/face.cpp +++ b/src/ifcgeom/kernels/opencascade/face.cpp @@ -151,8 +151,8 @@ namespace { // It's a bit more convenient to use high level BRepPrimAPI calls that operate on // topology. On a single edge that will create a Geom_TrimmedCurve for us. auto crv_or_wire = kernel->convert_curve(i); - if (crv_or_wire.which() == 2) { - const auto& w = boost::get(crv_or_wire); + if (crv_or_wire.index() == 2) { + const auto& w = std::get(crv_or_wire); return w; } else { throw std::runtime_error("Unexpected curve evaluation"); @@ -162,15 +162,15 @@ namespace { Handle(Geom_Curve) get_curve(const taxonomy::item::ptr& i) { // @todo unify with trimmed curve handling auto crv_or_wire = kernel->convert_curve(i); - if (crv_or_wire.which() == 0) { + if (crv_or_wire.index() == 0) { throw std::runtime_error("Failed to obtain curve"); - } else if (crv_or_wire.which() == 1) { - return boost::get(crv_or_wire); - } else if (crv_or_wire.which() == 2) { + } else if (crv_or_wire.index() == 1) { + return std::get(crv_or_wire); + } else if (crv_or_wire.index() == 2) { // @todo const double precision_ = 1.e-5; Logger::Warning("Approximating BasisCurve due to possible discontinuities", i->instance); - const auto& w = boost::get(crv_or_wire); + const auto& w = std::get(crv_or_wire); #if OCC_VERSION_HEX < 0x70600 BRepAdaptor_CompCurve cc(w, true); Handle(Adaptor3d_HCurve) hcc = Handle(Adaptor3d_HCurve)(new BRepAdaptor_HCompCurve(cc)); @@ -279,7 +279,7 @@ bool OpenCascadeKernel::convert(const taxonomy::face::ptr face, TopoDS_Shape& re int num_outer_bounds = 0; for (auto& bound : face->children) { - if (bound->external.get_value_or(false)) { + if (bound->external.value_or(false)) { num_outer_bounds++; } } @@ -305,7 +305,7 @@ bool OpenCascadeKernel::convert(const taxonomy::face::ptr face, TopoDS_Shape& re bool same_sense = true; /* todo bound->Orientation(); */ const bool is_interior = - !bound->external.get_value_or(false) && + !bound->external.value_or(false) && (num_bounds > 1) && (num_outer_bounds < num_bounds); @@ -604,7 +604,7 @@ bool OpenCascadeKernel::convert_impl(const taxonomy::face::ptr face, IfcGeom::Co return false; } results.emplace_back(ConversionResult( - face->instance->as()->id(), + face->instance.id(), new OpenCascadeShape(shape), face->surface_style )); diff --git a/src/ifcgeom/kernels/opencascade/faceset_helper.cpp b/src/ifcgeom/kernels/opencascade/faceset_helper.cpp index 2fd74cdf2d..1c74580554 100644 --- a/src/ifcgeom/kernels/opencascade/faceset_helper.cpp +++ b/src/ifcgeom/kernels/opencascade/faceset_helper.cpp @@ -43,7 +43,7 @@ IfcGeom::OpenCascadeKernel::faceset_helper::faceset_helper( for (auto& e : l->children) { for (size_t i = 0; i < 2; ++i) { // @todo make sure only cartesian points are provided here - auto& p = boost::get(i == 0 ? e->start : e->end); + auto& p = std::get(i == 0 ? e->start : e->end); if (point_identities_visited.find(p->identity()) == point_identities_visited.end()) { point_identities_visited.insert(p->identity()); points.push_back(p); @@ -198,7 +198,7 @@ IfcGeom::OpenCascadeKernel::faceset_helper::faceset_helper( } } - if (duplicates_.size() || loops_removed || (non_manifold && shell->closed.get_value_or(false))) { + if (duplicates_.size() || loops_removed || (non_manifold && shell->closed.value_or(false))) { Logger::Warning(boost::lexical_cast(duplicate_faces) + " duplicate faces removed, " + boost::lexical_cast(loops_removed) + " degenerate loops eliminated and " + boost::lexical_cast(non_manifold) + " non-manifold edges"); } } @@ -209,14 +209,14 @@ void IfcGeom::OpenCascadeKernel::faceset_helper::loop_(const ifcopenshell::geome } for (auto& edge : ps->children) { - auto A = boost::get(edge->start)->identity(); - auto B = boost::get(edge->end)->identity(); + auto A = std::get(edge->start)->identity(); + auto B = std::get(edge->end)->identity(); auto C = vertex_mapping_[A], D = vertex_mapping_[B]; bool fwd = C < D; if (!fwd) { std::swap(C, D); } - if (!edge->orientation.get_value_or(true)) { + if (!edge->orientation.value_or(true)) { fwd = !fwd; } if (C != D) { diff --git a/src/ifcgeom/kernels/opencascade/loft.cpp b/src/ifcgeom/kernels/opencascade/loft.cpp index 60997d24ad..f548fa3ee0 100644 --- a/src/ifcgeom/kernels/opencascade/loft.cpp +++ b/src/ifcgeom/kernels/opencascade/loft.cpp @@ -156,21 +156,21 @@ bool OpenCascadeKernel::convert(const taxonomy::loft::ptr loft, TopoDS_Shape& re // I think make_loft() where should just return a shell instead, because // this faceted lofting does not depend on any functionality in the geometry library // and the branching with tags needs to be solved twice otherwise - auto loop_to_points = [](const taxonomy::loop::ptr& loop, const boost::optional>& input_tags) -> std::pair, std::vector>> { + auto loop_to_points = [](const taxonomy::loop::ptr& loop, const std::optional>& input_tags) -> std::pair, std::vector>> { std::vector points; std::vector> tags; std::vector::const_iterator tag_it; - if (!loop->closed.get_value_or(false)) { - points = {boost::get(loop->children[0]->start)}; + if (!loop->closed.value_or(false)) { + points = {std::get(loop->children[0]->start)}; if (input_tags) { tags = {{input_tags->front()}}; tag_it = ++input_tags->begin(); } } for (auto& e : loop->children) { - const auto& p1 = boost::get(e->start); - const auto& p2 = boost::get(e->end); + const auto& p1 = std::get(e->start); + const auto& p2 = std::get(e->end); if (input_tags && p1->ccomponents() == p2->ccomponents()) { tags.back().insert(*tag_it); ++tag_it; @@ -184,7 +184,7 @@ bool OpenCascadeKernel::convert(const taxonomy::loft::ptr loft, TopoDS_Shape& re } } if (!input_tags) { - if (loop->closed.get_value_or(false)) { + if (loop->closed.value_or(false)) { // close polygon by referencing first point points.push_back(points.front()); } @@ -409,7 +409,7 @@ bool OpenCascadeKernel::convert_impl(const taxonomy::loft::ptr loft, IfcGeom::Co return false; } results.emplace_back(ConversionResult( - loft->instance->as()->id(), + loft->instance.id(), loft->matrix, new OpenCascadeShape(shape), loft->surface_style diff --git a/src/ifcgeom/kernels/opencascade/loop.cpp b/src/ifcgeom/kernels/opencascade/loop.cpp index 581cbf8567..f1baae5db6 100644 --- a/src/ifcgeom/kernels/opencascade/loop.cpp +++ b/src/ifcgeom/kernels/opencascade/loop.cpp @@ -105,32 +105,32 @@ namespace { OpenCascadeKernel::curve_creation_visitor_result_type operator()(const taxonomy::edge::ptr& e) { // @todo for polyloops/-lines we should probably construct edges based on correct oriented TopoDS_Vertex instead. - if (e->start.which() != e->end.which()) { + if (e->start.index() != e->end.index()) { throw std::runtime_error("Different trim types not supported"); } - const bool reversed = !e->orientation.get_value_or(true); + const bool reversed = !e->orientation.value_or(true); TopoDS_Edge E; auto e_basis = e->basis; if (e_basis) { - while (e_basis->kind() == taxonomy::EDGE && e_basis->instance && e_basis->instance->declaration().name() == "IfcTrimmedCurve") { + while (e_basis->kind() == taxonomy::EDGE && e_basis->instance && e_basis->instance.declaration().name() == "IfcTrimmedCurve") { // @todo we still might have something to wrt orientation on periodic curves // to make sure we select the correct arc later on. e_basis = taxonomy::cast(e_basis)->basis; } auto crv_or_wire = kernel->convert_curve(e_basis); Handle(Geom_Curve) curve; - if (crv_or_wire.which() == 0) { + if (crv_or_wire.index() == 0) { // raise exception return result; - } else if (crv_or_wire.which() == 1) { - curve = boost::get(crv_or_wire); + } else if (crv_or_wire.index() == 1) { + curve = std::get(crv_or_wire); } else { // @todo const double precision_ = 1.e-5; Logger::Warning("Approximating BasisCurve due to possible discontinuities", e->instance); - const auto& w = boost::get(crv_or_wire); + const auto& w = std::get(crv_or_wire); #if OCC_VERSION_HEX < 0x70600 BRepAdaptor_CompCurve cc(w, true); Handle(Adaptor3d_HCurve) hcc = Handle(Adaptor3d_HCurve)(new BRepAdaptor_HCompCurve(cc)); @@ -147,25 +147,25 @@ namespace { auto e_start = e->start; auto e_end = e->end; - if (!e->curve_sense.get_value_or(true)) { + if (!e->curve_sense.value_or(true)) { std::swap(e_start, e_end); } // @todo, copy over logic from previous IfcTrimmedCurve handling - if (e_start.which() == 0) { + if (e_start.index() == 0) { E = BRepBuilderAPI_MakeEdge(curve).Edge(); - } else if (e_start.which() == 1) { - auto p1 = OpenCascadeKernel::convert_xyz(*boost::get(e_start)); - auto p2 = OpenCascadeKernel::convert_xyz(*boost::get(e_end)); + } else if (e_start.index() == 1) { + auto p1 = OpenCascadeKernel::convert_xyz(*std::get(e_start)); + auto p2 = OpenCascadeKernel::convert_xyz(*std::get(e_end)); if (curve->IsClosed() && p1.Distance(p2) <= kernel->settings().get().get()) { E = BRepBuilderAPI_MakeEdge(curve).Edge(); } else { E = BRepBuilderAPI_MakeEdge(curve, p1, p2).Edge(); } - } else if (e_start.which() == 2) { - auto v1 = boost::get(e_start); - auto v2 = boost::get(e_end); + } else if (e_start.index() == 2) { + auto v1 = std::get(e_start); + auto v2 = std::get(e_end); if (is_conic && ALMOST_THE_SAME(fmod(v2 - v1, M_PI * 2.), 0.)) { E = BRepBuilderAPI_MakeEdge(curve).Edge(); @@ -178,15 +178,15 @@ namespace { // comply with the direction of conical curves. The ordering of the // vertices then still needs to be reversed in order to have begin and // end vertex consistent with IFC. - if (!e->curve_sense.get_value_or(true)) { + if (!e->curve_sense.value_or(true)) { E.Reverse(); } } else { - if (e->start.which() != 1) { + if (e->start.index() != 1) { throw std::runtime_error("Non-cartesian trim on edge without curve"); } - auto p1 = OpenCascadeKernel::convert_xyz(*boost::get(e->start)); - auto p2 = OpenCascadeKernel::convert_xyz(*boost::get(e->end)); + auto p1 = OpenCascadeKernel::convert_xyz(*std::get(e->start)); + auto p2 = OpenCascadeKernel::convert_xyz(*std::get(e->end)); E = BRepBuilderAPI_MakeEdge(p1, p2).Edge(); } @@ -235,10 +235,27 @@ OpenCascadeKernel::curve_creation_visitor_result_type OpenCascadeKernel::convert bool OpenCascadeKernel::convert(const taxonomy::loop::ptr loop, TopoDS_Wire& wire) { TopTools_ListOfShape converted_segments; + /* + if (loop->tags) { + std::wcout << "Tags:"; + for (const auto& t : *loop->tags) { + std::wcout << " \"" << t.c_str() << "\""; + } + std::wcout << std::endl; + }*/ + for (auto& segment : loop->children) { + + /*{ + std::ostringstream oss; + segment->print(oss); + auto s = oss.str(); + std::wcout << s.c_str() << std::endl; + }*/ + TopoDS_Wire segment_wire; try { - segment_wire = boost::get(convert_curve(segment)); + segment_wire = std::get(convert_curve(segment)); } catch (...) { // @todo we should do some better logging here and catch specific exceptions // but most notably we just want to continue processing when there are @@ -276,14 +293,14 @@ bool OpenCascadeKernel::convert(const taxonomy::loop::ptr loop, TopoDS_Wire& wir TopTools_ListIteratorOfListOfShape it(converted_segments); bool force_close = false; - if (loop->instance && loop->instance->as() && loop->instance->as()->file_) { - auto* inst = loop->instance->as(); - auto* file = loop->instance->as()->file_; - auto profile = file->getInverse(inst->id(), file->schema()->declaration_by_name("IfcProfileDef"), -1); - force_close = profile && profile->size() > 0; + if (loop->instance && loop->instance.as()) { + auto inst = loop->instance.as(); + auto file = loop->instance.as().data()->file(); + auto profile = file->getInverse(inst.id(), file->schema()->declaration_by_name("IfcProfileDef"), -1); + force_close = profile.size() > 0; } - wire_builder bld(precision_, loop->instance ? loop->instance->as() : nullptr); + wire_builder bld(precision_, loop->instance ? loop->instance.as() : express::Base{}); shape_pair_enumerate(it, bld, force_close); wire = bld.wire(); @@ -384,7 +401,7 @@ bool OpenCascadeKernel::convert_impl(const taxonomy::loop::ptr loop, IfcGeom::Co } results.emplace_back(ConversionResult( - loop->instance->as()->id(), + loop->instance.id(), new OpenCascadeShape(shape), loop->surface_style )); @@ -392,10 +409,10 @@ bool OpenCascadeKernel::convert_impl(const taxonomy::loop::ptr loop, IfcGeom::Co } bool OpenCascadeKernel::convert_impl(const taxonomy::edge::ptr edge, IfcGeom::ConversionResults& results) { - TopoDS_Wire shape = boost::get(convert_curve(edge)); + TopoDS_Wire shape = std::get(convert_curve(edge)); results.emplace_back(ConversionResult( - edge->instance->as()->id(), + edge->instance.id(), new OpenCascadeShape(shape), edge->surface_style )); diff --git a/src/ifcgeom/kernels/opencascade/matrix4.cpp b/src/ifcgeom/kernels/opencascade/matrix4.cpp index f7eed3065a..40ac0305ab 100644 --- a/src/ifcgeom/kernels/opencascade/matrix4.cpp +++ b/src/ifcgeom/kernels/opencascade/matrix4.cpp @@ -14,7 +14,7 @@ bool OpenCascadeKernel::convert(const taxonomy::matrix4::ptr matrix, gp_GTrsf& t m(2, 0), m(2, 1), m(2, 2) ); - if (matrix->instance && matrix->instance->declaration().name() == "IfcCartesianTransformationOperator3DnonUniform") { + if (matrix->instance && matrix->instance.declaration().name() == "IfcCartesianTransformationOperator3DnonUniform") { // std::wcout << "non uniform" << std::endl; } diff --git a/src/ifcgeom/kernels/opencascade/shell.cpp b/src/ifcgeom/kernels/opencascade/shell.cpp index eacc87e12b..517bb9763f 100644 --- a/src/ifcgeom/kernels/opencascade/shell.cpp +++ b/src/ifcgeom/kernels/opencascade/shell.cpp @@ -112,7 +112,7 @@ bool OpenCascadeKernel::convert_impl(const taxonomy::shell::ptr shell, IfcGeom:: return false; } results.emplace_back(ConversionResult( - shell->instance->as()->id(), + shell->instance.id(), shell->matrix, new OpenCascadeShape(shape), shell->surface_style diff --git a/src/ifcgeom/kernels/opencascade/solid.cpp b/src/ifcgeom/kernels/opencascade/solid.cpp index 4f308b0b06..92fd7b454e 100644 --- a/src/ifcgeom/kernels/opencascade/solid.cpp +++ b/src/ifcgeom/kernels/opencascade/solid.cpp @@ -34,7 +34,7 @@ using namespace IfcGeom::util; bool OpenCascadeKernel::convert(const taxonomy::solid::ptr solid, TopoDS_Shape& result) { TopoDS_Shape S; - if (solid->instance->declaration().is("IfcHalfSpaceSolid")) { + if (solid->instance.declaration().is("IfcHalfSpaceSolid")) { // halfspace if (solid->children.size() != 1) { throw std::runtime_error("Unexpected number of children on solid"); @@ -44,7 +44,7 @@ bool OpenCascadeKernel::convert(const taxonomy::solid::ptr solid, TopoDS_Shape& const auto& m = taxonomy::cast(face->basis)->matrix->ccomponents(); gp_Pln pln(convert_xyz2(m.col(3)), convert_xyz2(m.col(2))); - const gp_Pnt pnt = pln.Location().Translated(face->orientation.get_value_or(false) ? pln.Axis().Direction() : -pln.Axis().Direction()); + const gp_Pnt pnt = pln.Location().Translated(face->orientation.value_or(false) ? pln.Axis().Direction() : -pln.Axis().Direction()); TopoDS_Shape halfspace = BRepPrimAPI_MakeHalfSpace(BRepBuilderAPI_MakeFace(pln), pnt).Solid(); if (!face->children.empty()) { @@ -107,7 +107,7 @@ bool OpenCascadeKernel::convert_impl(const taxonomy::solid::ptr solid, IfcGeom:: return false; } results.emplace_back(ConversionResult( - solid->instance->as()->id(), + solid->instance.id(), solid->matrix, new OpenCascadeShape(shape), solid->surface_style diff --git a/src/ifcgeom/kernels/opencascade/sweep_along_curve.cpp b/src/ifcgeom/kernels/opencascade/sweep_along_curve.cpp index c971291868..ab462319f9 100644 --- a/src/ifcgeom/kernels/opencascade/sweep_along_curve.cpp +++ b/src/ifcgeom/kernels/opencascade/sweep_along_curve.cpp @@ -113,8 +113,8 @@ bool OpenCascadeKernel::convert(const taxonomy::sweep_along_curve::ptr scs, Topo applied_temporary_offset = true; std::set unique_points; for (auto& e : std::dynamic_pointer_cast(curve)->children) { - auto* a = boost::get(&e->start); - auto* b = boost::get(&e->end); + auto* a = std::get_if(&e->start); + auto* b = std::get_if(&e->end); if (a) { unique_points.insert(*a); } @@ -129,7 +129,7 @@ bool OpenCascadeKernel::convert(const taxonomy::sweep_along_curve::ptr scs, Topo } auto w = convert_curve(scs->curve); - if (w.which() != 2) { + if (w.index() != 2) { Logger::Error("Unsupported directrix"); return false; } @@ -158,7 +158,7 @@ bool OpenCascadeKernel::convert(const taxonomy::sweep_along_curve::ptr scs, Topo } gp_Trsf directrix; - TopoDS_Wire wire = boost::get(w); + TopoDS_Wire wire = std::get(w); const bool is_plane = surface && surface->DynamicType() == STANDARD_TYPE(Geom_Plane); @@ -346,7 +346,7 @@ bool OpenCascadeKernel::convert_impl(const taxonomy::sweep_along_curve::ptr scs, m = scs->matrix; } results.emplace_back(ConversionResult( - scs->instance->as()->id(), + scs->instance.id(), m, new OpenCascadeShape(shape), scs->surface_style diff --git a/src/ifcgeom/kernels/opencascade/wire_builder.h b/src/ifcgeom/kernels/opencascade/wire_builder.h index 34178b815d..c94d64df88 100644 --- a/src/ifcgeom/kernels/opencascade/wire_builder.h +++ b/src/ifcgeom/kernels/opencascade/wire_builder.h @@ -20,7 +20,7 @@ #ifndef WIRE_BUILDER_H #define WIRE_BUILDER_H -#include "../../../ifcparse/IfcBaseClass.h" +#include "../../../ifcparse/express.h" #include @@ -46,10 +46,10 @@ namespace IfcGeom { double p_; bool override_next_; gp_Pnt next_override_; - const IfcUtil::IfcBaseClass* inst_; + express::Base inst_; public: - wire_builder(double p, const IfcUtil::IfcBaseClass* inst = 0) : p_(p), override_next_(false), inst_(inst) {} + wire_builder(double p, const express::Base& inst = express::Base()) : p_(p), override_next_(false), inst_(inst) {} void operator()(const TopoDS_Shape& a); diff --git a/src/ifcgeom/mapping/IfcAnnotationFillArea.cpp b/src/ifcgeom/mapping/IfcAnnotationFillArea.cpp index c091635342..878ec23b60 100644 --- a/src/ifcgeom/mapping/IfcAnnotationFillArea.cpp +++ b/src/ifcgeom/mapping/IfcAnnotationFillArea.cpp @@ -23,16 +23,16 @@ using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcAnnotationFillArea* inst) { - auto loop = taxonomy::cast(map(inst->OuterBoundary())); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcAnnotationFillArea& inst) { + auto loop = taxonomy::cast(map(inst.OuterBoundary())); if (loop) { auto face = taxonomy::make(); loop->external = true; face->children = { loop }; - if (inst->InnerBoundaries()) { - IfcSchema::IfcCurve::list::ptr inner_boundaries = *inst->InnerBoundaries(); - for (auto& v : *inner_boundaries) { + if (inst.InnerBoundaries()) { + std::vector inner_boundaries = *inst.InnerBoundaries(); + for (auto& v : inner_boundaries) { auto inner_loop = taxonomy::cast(map(v)); if (inner_loop) { inner_loop->external = false; diff --git a/src/ifcgeom/mapping/IfcArbitraryClosedProfileDef.cpp b/src/ifcgeom/mapping/IfcArbitraryClosedProfileDef.cpp index 3cce6f31dc..5f2e77847d 100644 --- a/src/ifcgeom/mapping/IfcArbitraryClosedProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcArbitraryClosedProfileDef.cpp @@ -23,10 +23,10 @@ using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcArbitraryClosedProfileDef* inst) { - auto loop = taxonomy::cast(map(inst->OuterCurve())); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcArbitraryClosedProfileDef& inst) { + auto loop = taxonomy::cast(map(inst.OuterCurve())); if (loop) { - if (inst->ProfileType() == IfcSchema::IfcProfileTypeEnum::IfcProfileType_CURVE) { + if (inst.ProfileType() == IfcSchema::IfcProfileTypeEnum::IfcProfileType_CURVE) { return loop; } @@ -34,10 +34,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcArbitraryClosedProfileDef* i loop->external = true; face->children = { loop }; - if (inst->as()) { - auto with_voids = inst->as(); - auto voids = with_voids->InnerCurves(); - for (auto& v : *voids) { + if (inst.as()) { + auto with_voids = inst.as(); + auto voids = with_voids.InnerCurves(); + for (auto& v : voids) { auto inner_loop = taxonomy::cast(map(v)); if (inner_loop) { inner_loop->external = false; diff --git a/src/ifcgeom/mapping/IfcArbitraryOpenProfileDef.cpp b/src/ifcgeom/mapping/IfcArbitraryOpenProfileDef.cpp index e65152cb7f..a7e683cf58 100644 --- a/src/ifcgeom/mapping/IfcArbitraryOpenProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcArbitraryOpenProfileDef.cpp @@ -23,8 +23,8 @@ using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcArbitraryOpenProfileDef* inst) { - auto mapped = map(inst->Curve()); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcArbitraryOpenProfileDef& inst) { + auto mapped = map(inst.Curve()); if (mapped->kind() == taxonomy::LOOP) { auto r = taxonomy::loop::ptr((taxonomy::loop*)mapped->clone_()); r->closed = false; diff --git a/src/ifcgeom/mapping/IfcAxis1Placement.cpp b/src/ifcgeom/mapping/IfcAxis1Placement.cpp index 6e9632133e..87b7a7c2a7 100644 --- a/src/ifcgeom/mapping/IfcAxis1Placement.cpp +++ b/src/ifcgeom/mapping/IfcAxis1Placement.cpp @@ -22,17 +22,17 @@ using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcAxis1Placement* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcAxis1Placement& inst) { Eigen::Vector3d P(0, 0, 0), axis(0, 0, 1), ref; try { - taxonomy::point3::ptr v = taxonomy::cast(map(inst->Location())); + taxonomy::point3::ptr v = taxonomy::cast(map(inst.Location())); P = *v->components_; } catch (const std::exception&) { Logger::Warning("Placement with invalid Location:", inst); } - const bool hasAxis = inst->Axis(); + const bool hasAxis = inst.Axis(); if (hasAxis) { - taxonomy::direction3::ptr v = taxonomy::cast(map(inst->Axis())); + taxonomy::direction3::ptr v = taxonomy::cast(map(inst.Axis())); axis = *v->components_; } diff --git a/src/ifcgeom/mapping/IfcAxis2Placement2D.cpp b/src/ifcgeom/mapping/IfcAxis2Placement2D.cpp index 4738266e14..1d24e902bc 100644 --- a/src/ifcgeom/mapping/IfcAxis2Placement2D.cpp +++ b/src/ifcgeom/mapping/IfcAxis2Placement2D.cpp @@ -23,17 +23,17 @@ using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcAxis2Placement2D* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcAxis2Placement2D& inst) { Eigen::Vector3d P(0, 0, 0), axis(0, 0, 1), V(1, 0, 0); try { - taxonomy::point3::ptr v = taxonomy::cast(map(inst->Location())); + taxonomy::point3::ptr v = taxonomy::cast(map(inst.Location())); P = *v->components_; } catch (const std::exception&) { Logger::Warning("Placement with invalid Location:", inst); } - const bool hasRef = !!inst->RefDirection(); + const bool hasRef = !!inst.RefDirection(); if (hasRef) { - taxonomy::direction3::ptr v = taxonomy::cast(map(inst->RefDirection())); + taxonomy::direction3::ptr v = taxonomy::cast(map(inst.RefDirection())); V = *v->components_; } return taxonomy::make(P, axis, V); diff --git a/src/ifcgeom/mapping/IfcAxis2Placement3D.cpp b/src/ifcgeom/mapping/IfcAxis2Placement3D.cpp index 83477601c7..19c6e0661b 100644 --- a/src/ifcgeom/mapping/IfcAxis2Placement3D.cpp +++ b/src/ifcgeom/mapping/IfcAxis2Placement3D.cpp @@ -23,28 +23,28 @@ using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcAxis2Placement3D* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcAxis2Placement3D& inst) { Eigen::Vector3d o(0, 0, 0), axis(0, 0, 1), refDirection, X(1, 0, 0); try { - taxonomy::point3::ptr v = taxonomy::cast(map(inst->Location())); + taxonomy::point3::ptr v = taxonomy::cast(map(inst.Location())); o = *v->components_; } catch (const std::exception&) { Logger::Warning("Placement with invalid Location:", inst); } - const bool hasAxis = !!inst->Axis(); - const bool hasRef = !!inst->RefDirection(); + const bool hasAxis = !!inst.Axis(); + const bool hasRef = !!inst.RefDirection(); if (hasAxis != hasRef) { Logger::Warning("Axis and RefDirection should be specified together", inst); } if (hasAxis) { - taxonomy::direction3::ptr v = taxonomy::cast(map(inst->Axis())); + taxonomy::direction3::ptr v = taxonomy::cast(map(inst.Axis())); axis = *v->components_; } if (hasRef) { - taxonomy::direction3::ptr v = taxonomy::cast(map(inst->RefDirection())); + taxonomy::direction3::ptr v = taxonomy::cast(map(inst.RefDirection())); refDirection = *v->components_; } else { if (acos(axis.dot(X)) > 1.e-5) { diff --git a/src/ifcgeom/mapping/IfcAxis2PlacementLinear.cpp b/src/ifcgeom/mapping/IfcAxis2PlacementLinear.cpp index b11b61b46b..e2467ebff4 100644 --- a/src/ifcgeom/mapping/IfcAxis2PlacementLinear.cpp +++ b/src/ifcgeom/mapping/IfcAxis2PlacementLinear.cpp @@ -23,15 +23,15 @@ using namespace ifcopenshell::geometry; #if defined SCHEMA_HAS_IfcAxis2PlacementLinear -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcAxis2PlacementLinear* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcAxis2PlacementLinear& inst) { - if (!inst->Location()->as()) { + if (!inst.Location().as()) { Logger::Error(std::runtime_error("Location must be IfcPointByDistanceExpression for IfcAxis2PlacementLinear")); } Eigen::Vector3d o, axis(0, 0, 1), refDirection; - taxonomy::matrix4::ptr m = taxonomy::cast(map(inst->Location())); + taxonomy::matrix4::ptr m = taxonomy::cast(map(inst.Location())); o = m->components().col(3).head<3>(); // From 8.9.3.4 IfcAxis2PlacementLinear there are 4 cases that need to be considered @@ -40,8 +40,8 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcAxis2PlacementLinear* inst) // 3) Neither Axis or RefDirection are provided // 4) Both Axis and RefDirection are provided - const bool hasAxis = inst->Axis() != nullptr; - const bool hasRef = inst->RefDirection() != nullptr; + const bool hasAxis = !!inst.Axis(); + const bool hasRef = !!inst.RefDirection(); /* if (hasAxis != hasRef) { @@ -50,7 +50,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcAxis2PlacementLinear* inst) */ if (hasAxis && !hasRef) { - taxonomy::direction3::ptr a = taxonomy::cast(map(inst->Axis())); + taxonomy::direction3::ptr a = taxonomy::cast(map(inst.Axis())); axis = *a->components_; refDirection = m->components().col(0).head<3>(); // RefDirection is the curve tangent when omitted @@ -58,7 +58,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcAxis2PlacementLinear* inst) // axis.cross(refDirection) gives y. y.cross(axis) gives x=refDirection refDirection = axis.cross(refDirection).cross(axis); } else if (!hasAxis && hasRef) { - taxonomy::direction3::ptr r = taxonomy::cast(map(inst->RefDirection())); + taxonomy::direction3::ptr r = taxonomy::cast(map(inst.RefDirection())); refDirection = *r->components_; Eigen::Vector3d up(0, 0, 1); axis = refDirection.cross(up.cross(refDirection)); @@ -67,10 +67,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcAxis2PlacementLinear* inst) Eigen::Vector3d up(0, 0, 1); axis = refDirection.cross(up.cross(refDirection)); } else { - taxonomy::direction3::ptr a = taxonomy::cast(map(inst->Axis())); + taxonomy::direction3::ptr a = taxonomy::cast(map(inst.Axis())); axis = *a->components_; - taxonomy::direction3::ptr r = taxonomy::cast(map(inst->RefDirection())); + taxonomy::direction3::ptr r = taxonomy::cast(map(inst.RefDirection())); refDirection = *r->components_; refDirection = axis.cross(refDirection).cross(axis); // refDirection needs to be orthogonal to axis } diff --git a/src/ifcgeom/mapping/IfcBSplineCurveWithKnots.cpp b/src/ifcgeom/mapping/IfcBSplineCurveWithKnots.cpp index 304741cb21..199e1cafee 100644 --- a/src/ifcgeom/mapping/IfcBSplineCurveWithKnots.cpp +++ b/src/ifcgeom/mapping/IfcBSplineCurveWithKnots.cpp @@ -25,20 +25,20 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcBSplineCurveWithKnots -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcBSplineCurveWithKnots* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcBSplineCurveWithKnots& inst) { auto bc = taxonomy::make(); - const IfcSchema::IfcCartesianPoint::list::ptr cps = inst->ControlPointsList(); + const std::vector cps = inst.ControlPointsList(); std::vector points; - std::transform(cps->begin(), cps->end(), std::back_inserter(points), [this](IfcSchema::IfcCartesianPoint* cp) { return taxonomy::cast(map(cp)); }); + std::transform(cps.begin(), cps.end(), std::back_inserter(points), [this](const IfcSchema::IfcCartesianPoint& cp) { return taxonomy::cast(map(cp)); }); bc->control_points = points; - bc->multiplicities = inst->KnotMultiplicities(); - bc->knots = inst->Knots(); - if (inst->as()) { - bc->weights = inst->as()->WeightsData(); + bc->multiplicities = inst.KnotMultiplicities(); + bc->knots = inst.Knots(); + if (inst.as()) { + bc->weights = inst.as().WeightsData(); } - bc->degree = inst->Degree(); + bc->degree = inst.Degree(); return bc; } diff --git a/src/ifcgeom/mapping/IfcBSplineSurfaceWithKnots.cpp b/src/ifcgeom/mapping/IfcBSplineSurfaceWithKnots.cpp index 3f11dcb44c..e09f948b58 100644 --- a/src/ifcgeom/mapping/IfcBSplineSurfaceWithKnots.cpp +++ b/src/ifcgeom/mapping/IfcBSplineSurfaceWithKnots.cpp @@ -25,22 +25,22 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcBSplineSurfaceWithKnots -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcBSplineSurfaceWithKnots* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcBSplineSurfaceWithKnots& inst) { auto bs = taxonomy::make(); - auto cps = inst->ControlPointsList(); - std::transform(cps->begin(), cps->end(), std::back_inserter(bs->control_points), [this](const std::vector& inner) { + auto cps = inst.ControlPointsList(); + std::transform(cps.begin(), cps.end(), std::back_inserter(bs->control_points), [this](const std::vector& inner) { std::vector ps; - std::transform(inner.begin(), inner.end(), std::back_inserter(ps), [this](IfcSchema::IfcCartesianPoint* cp) { return taxonomy::cast(map(cp)); }); + std::transform(inner.begin(), inner.end(), std::back_inserter(ps), [this](const IfcSchema::IfcCartesianPoint& cp) { return taxonomy::cast(map(cp)); }); return ps; }); - bs->multiplicities = { inst->UMultiplicities(), inst->VMultiplicities() }; - bs->knots = { inst->UKnots(), inst->VKnots() }; - if (inst->as()) { - bs->weights = inst->as()->WeightsData(); + bs->multiplicities = { inst.UMultiplicities(), inst.VMultiplicities() }; + bs->knots = { inst.UKnots(), inst.VKnots() }; + if (inst.as()) { + bs->weights = inst.as().WeightsData(); } - bs->degree = { inst->UDegree(), inst->VDegree() }; + bs->degree = { inst.UDegree(), inst.VDegree() }; return bs; } diff --git a/src/ifcgeom/mapping/IfcBlock.cpp b/src/ifcgeom/mapping/IfcBlock.cpp index 9087efa14c..98d6407960 100644 --- a/src/ifcgeom/mapping/IfcBlock.cpp +++ b/src/ifcgeom/mapping/IfcBlock.cpp @@ -22,13 +22,13 @@ using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcBlock* inst) { - const double dx = inst->XLength() * length_unit_; - const double dy = inst->YLength() * length_unit_; - const double dz = inst->ZLength() * length_unit_; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcBlock& inst) { + const double dx = inst.XLength() * length_unit_; + const double dy = inst.YLength() * length_unit_; + const double dz = inst.ZLength() * length_unit_; auto solid = create_box(dx, dy, dz); - solid->matrix = taxonomy::cast(map(inst->Position())); + solid->matrix = taxonomy::cast(map(inst.Position())); return solid; } diff --git a/src/ifcgeom/mapping/IfcBooleanResult.cpp b/src/ifcgeom/mapping/IfcBooleanResult.cpp index d02104b0ac..3cad401bcb 100644 --- a/src/ifcgeom/mapping/IfcBooleanResult.cpp +++ b/src/ifcgeom/mapping/IfcBooleanResult.cpp @@ -37,22 +37,22 @@ namespace { } } -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcBooleanResult* inst) { - IfcSchema::IfcBooleanOperand* operand1 = inst->FirstOperand(); - IfcSchema::IfcBooleanOperand* operand2 = inst->SecondOperand(); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcBooleanResult& inst) { + IfcSchema::IfcBooleanOperand operand1 = inst.FirstOperand(); + IfcSchema::IfcBooleanOperand operand2 = inst.SecondOperand(); bool has_halfspace_operand = false; - std::vector operands; + std::vector operands; operands.push_back(operand2); - auto op = boolean_op_type(inst->Operator()); + auto op = boolean_op_type(inst.Operator()); if (op == taxonomy::boolean_result::SUBTRACTION) { int n_half_space_operands = 0; bool process_as_list = true; while (true) { - auto res1 = operand1->as(); - if (res1 && res1->SecondOperand()->as() && ++n_half_space_operands > 8) { + auto res1 = operand1.as(); + if (res1 && res1.SecondOperand().as() && ++n_half_space_operands > 8) { // There is something peculiar about many half space subtraction operands that OCCT does not like. // Often these are used to create a semi-curved arch, as is the case in 693. Supplying all these // operands at once apparently leads to too many edge-edge interference checks. @@ -62,9 +62,9 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcBooleanResult* inst) { break; } if (res1) { - if (boolean_op_type(res1->Operator()) == op) { - operand1 = res1->FirstOperand(); - operands.push_back(res1->SecondOperand()); + if (boolean_op_type(res1.Operator()) == op) { + operand1 = res1.FirstOperand(); + operands.push_back(res1.SecondOperand()); } else { process_as_list = false; break; @@ -75,14 +75,14 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcBooleanResult* inst) { } if (!process_as_list) { - operand1 = inst->FirstOperand(); + operand1 = inst.FirstOperand(); operands = { operand2 }; } } operands.insert(operands.begin(), operand1); - auto br = map_to_collection(this, &operands); + auto br = map_to_collection(this, operands); if (br) { br->operation = op; } diff --git a/src/ifcgeom/mapping/IfcBoundingBox.cpp b/src/ifcgeom/mapping/IfcBoundingBox.cpp index 0de182a648..993f4215ac 100644 --- a/src/ifcgeom/mapping/IfcBoundingBox.cpp +++ b/src/ifcgeom/mapping/IfcBoundingBox.cpp @@ -22,17 +22,17 @@ using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcBoundingBox* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcBoundingBox& inst) { if (!settings_.get().get()) { failed_on_purpose_.insert(inst); return nullptr; } - const double dx = inst->XDim() * length_unit_; - const double dy = inst->YDim() * length_unit_; - const double dz = inst->ZDim() * length_unit_; + const double dx = inst.XDim() * length_unit_; + const double dy = inst.YDim() * length_unit_; + const double dz = inst.ZDim() * length_unit_; - taxonomy::point3::ptr corner = taxonomy::cast(map(inst->Corner())); + taxonomy::point3::ptr corner = taxonomy::cast(map(inst.Corner())); auto solid = create_box(corner->ccomponents().x(), corner->ccomponents().y(), corner->ccomponents().z(), dx, dy, dz); return solid; diff --git a/src/ifcgeom/mapping/IfcCShapeProfileDef.cpp b/src/ifcgeom/mapping/IfcCShapeProfileDef.cpp index 3e69e5f096..089e9bb3b9 100644 --- a/src/ifcgeom/mapping/IfcCShapeProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcCShapeProfileDef.cpp @@ -27,16 +27,16 @@ using namespace ifcopenshell::geometry; #include #include -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCShapeProfileDef* inst) { - const double y = inst->Depth() / 2.0f * length_unit_; - const double x = inst->Width() / 2.0f * length_unit_; - const double d1 = inst->WallThickness() * length_unit_; - const double d2 = inst->Girth() * length_unit_; - bool doFillet = !!inst->InternalFilletRadius(); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCShapeProfileDef& inst) { + const double y = inst.Depth() / 2.0f * length_unit_; + const double x = inst.Width() / 2.0f * length_unit_; + const double d1 = inst.WallThickness() * length_unit_; + const double d2 = inst.Girth() * length_unit_; + bool doFillet = !!inst.InternalFilletRadius(); double f1 = 0; double f2 = 0; if ( doFillet ) { - f1 = *inst->InternalFilletRadius() * length_unit_; + f1 = *inst.InternalFilletRadius() * length_unit_; f2 = f1 + d1; } @@ -50,10 +50,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCShapeProfileDef* inst) { taxonomy::matrix4::ptr m4; bool has_position = true; #ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = !!inst->Position(); + has_position = !!inst.Position(); #endif if (has_position) { - m4 = taxonomy::cast(map(inst->Position())); + m4 = taxonomy::cast(map(inst.Position())); } return profile_helper(m4, { diff --git a/src/ifcgeom/mapping/IfcCartesianPoint.cpp b/src/ifcgeom/mapping/IfcCartesianPoint.cpp index d959f26174..005510fe7e 100644 --- a/src/ifcgeom/mapping/IfcCartesianPoint.cpp +++ b/src/ifcgeom/mapping/IfcCartesianPoint.cpp @@ -21,8 +21,8 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCartesianPoint* inst) { - std::vector xyz = inst->Coordinates(); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCartesianPoint& inst) { + std::vector xyz = inst.Coordinates(); return taxonomy::make( xyz.size() >= 1 ? xyz[0] * length_unit_ : 0., xyz.size() >= 2 ? xyz[1] * length_unit_ : 0., diff --git a/src/ifcgeom/mapping/IfcCartesianTransformationOperator2D.cpp b/src/ifcgeom/mapping/IfcCartesianTransformationOperator2D.cpp index 7271d9c5a0..43bcbb8925 100644 --- a/src/ifcgeom/mapping/IfcCartesianTransformationOperator2D.cpp +++ b/src/ifcgeom/mapping/IfcCartesianTransformationOperator2D.cpp @@ -21,26 +21,26 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCartesianTransformationOperator2D* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCartesianTransformationOperator2D& inst) { auto m = taxonomy::make(); Eigen::Vector4d origin, axis1(1.0, 0.0, 0.0, 0.0), axis2(0.0, 1.0, 0.0, 0.0), axis3(0.0, 0.0, 1.0, 0.0); - taxonomy::point3::ptr O = taxonomy::cast(map(inst->LocalOrigin())); + taxonomy::point3::ptr O = taxonomy::cast(map(inst.LocalOrigin())); origin << *O->components_, 1.0; - if (inst->Axis1()) { - taxonomy::direction3::ptr ax1 = taxonomy::cast(map(inst->Axis1())); + if (inst.Axis1()) { + taxonomy::direction3::ptr ax1 = taxonomy::cast(map(inst.Axis1())); axis1 << *ax1->components_, 0.0; - if (!inst->Axis2()) { + if (!inst.Axis2()) { // orthogonal complement axis2 << -axis1(1), axis1(0), 0., 0.; } } - if (inst->Axis2()) { - taxonomy::direction3::ptr ax2 = taxonomy::cast(map(inst->Axis2())); + if (inst.Axis2()) { + taxonomy::direction3::ptr ax2 = taxonomy::cast(map(inst.Axis2())); axis2 << *ax2->components_, 0.0; - if (!inst->Axis2()) { + if (!inst.Axis2()) { // orthogonal complement axis1 << -axis2(1), axis2(0), 0., 0.; } @@ -49,12 +49,12 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCartesianTransformationOpera double scale1, scale2; scale1 = 1.0; - if (inst->Scale()) { - scale1 = *inst->Scale(); + if (inst.Scale()) { + scale1 = *inst.Scale(); } - if (inst->as()) { - auto nu = inst->as(); - scale2 = nu->Scale2() ? *nu->Scale2() : scale1; + if (inst.as()) { + auto nu = inst.as(); + scale2 = nu.Scale2() ? *nu.Scale2() : scale1; } else { scale2 = scale1; } diff --git a/src/ifcgeom/mapping/IfcCartesianTransformationOperator3D.cpp b/src/ifcgeom/mapping/IfcCartesianTransformationOperator3D.cpp index 7db32b6083..799047cdd1 100644 --- a/src/ifcgeom/mapping/IfcCartesianTransformationOperator3D.cpp +++ b/src/ifcgeom/mapping/IfcCartesianTransformationOperator3D.cpp @@ -21,26 +21,26 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCartesianTransformationOperator3D* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCartesianTransformationOperator3D& inst) { Eigen::Vector4d origin; Eigen::Vector4d axis1(1., 0., 0., 0.); Eigen::Vector4d axis2(0., 1., 0., 0.); Eigen::Vector4d axis3(0., 0., 1., 0.); - taxonomy::point3::ptr O = taxonomy::cast(map(inst->LocalOrigin())); + taxonomy::point3::ptr O = taxonomy::cast(map(inst.LocalOrigin())); origin << *O->components_, 1.0; - if (inst->Axis1()) { - taxonomy::direction3::ptr ax1 = taxonomy::cast(map(inst->Axis1())); + if (inst.Axis1()) { + taxonomy::direction3::ptr ax1 = taxonomy::cast(map(inst.Axis1())); axis1 << *ax1->components_, 0.0; } - if (inst->Axis2()) { - taxonomy::direction3::ptr ax2 = taxonomy::cast(map(inst->Axis2())); + if (inst.Axis2()) { + taxonomy::direction3::ptr ax2 = taxonomy::cast(map(inst.Axis2())); axis2 << *ax2->components_, 0.0; } - if (inst->Axis3()) { - taxonomy::direction3::ptr ax3 = taxonomy::cast(map(inst->Axis3())); + if (inst.Axis3()) { + taxonomy::direction3::ptr ax3 = taxonomy::cast(map(inst.Axis3())); axis3 << *ax3->components_, 0.0; } @@ -52,13 +52,13 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCartesianTransformationOpera double scale1, scale2, scale3; scale1 = 1.; - if (inst->Scale()) { - scale1 = *inst->Scale(); + if (inst.Scale()) { + scale1 = *inst.Scale(); } - if (inst->as()) { - auto nu = inst->as(); - scale2 = nu->Scale2() ? *nu->Scale2() : scale1; - scale3 = nu->Scale3() ? *nu->Scale3() : scale1; + if (inst.as()) { + auto nu = inst.as(); + scale2 = nu.Scale2() ? *nu.Scale2() : scale1; + scale3 = nu.Scale3() ? *nu.Scale3() : scale1; } else { scale2 = scale3 = scale1; } diff --git a/src/ifcgeom/mapping/IfcCenterLineProfileDef.cpp b/src/ifcgeom/mapping/IfcCenterLineProfileDef.cpp index 64409e4263..6ada1f4a29 100644 --- a/src/ifcgeom/mapping/IfcCenterLineProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcCenterLineProfileDef.cpp @@ -21,14 +21,14 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCenterLineProfileDef* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCenterLineProfileDef& inst) { return nullptr; /* - const double d = inst->Thickness() * length_unit_ / 2.; + const double d = inst.Thickness() * length_unit_ / 2.; auto f = taxonomy::make(); auto ofc = taxonomy::make(); - ofc->basis = map(inst->Curve()); + ofc->basis = map(inst.Curve()); ofc->offset = d; // @todo // f->children.push_back(ofc); @@ -39,7 +39,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCenterLineProfileDef* inst) /* TopoDS_Wire wire; - if (!convert_wire(inst->Curve(), wire)) return false; + if (!convert_wire(inst.Curve(), wire)) return false; // BRepOffsetAPI_MakeOffset insists on creating circular arc // segments for joining the curves that constitute the center diff --git a/src/ifcgeom/mapping/IfcCircle.cpp b/src/ifcgeom/mapping/IfcCircle.cpp index 754c62df62..0cea8b588c 100644 --- a/src/ifcgeom/mapping/IfcCircle.cpp +++ b/src/ifcgeom/mapping/IfcCircle.cpp @@ -21,16 +21,14 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -#define ALMOST_ZERO 1.e-7; - -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCircle* inst) { - const double r = inst->Radius() * length_unit_; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCircle& inst) { + const double r = inst.Radius() * length_unit_; if (r < settings_.get().get()) { Logger::Message(Logger::LOG_ERROR, "Radius not greater than zero for:", inst); return nullptr; } - IfcSchema::IfcAxis2Placement* placement = inst->Position(); + auto placement = inst.Position(); auto c = taxonomy::make(); c->radius = r; c->matrix = taxonomy::cast(map(placement)); diff --git a/src/ifcgeom/mapping/IfcCircleProfileDef.cpp b/src/ifcgeom/mapping/IfcCircleProfileDef.cpp index f762fca18c..654ecd9934 100644 --- a/src/ifcgeom/mapping/IfcCircleProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcCircleProfileDef.cpp @@ -23,11 +23,11 @@ using namespace ifcopenshell::geometry; #include -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCircleProfileDef* inst) { - std::vector radii = { inst->Radius() * length_unit_ }; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCircleProfileDef& inst) { + std::vector radii = { inst.Radius() * length_unit_ }; - if (inst->as()) { - double t = inst->as()->WallThickness() * length_unit_; + if (inst.as()) { + double t = inst.as().WallThickness() * length_unit_; radii.push_back(radii.front() - t); } @@ -42,10 +42,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCircleProfileDef* inst) { bool has_position = true; #ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = !!inst->Position(); + has_position = !!inst.Position(); #endif if (has_position) { - c->matrix = taxonomy::cast(map(inst->Position())); + c->matrix = taxonomy::cast(map(inst.Position())); } else { // matrix needs to be set on elementary curves c->matrix = taxonomy::make(); diff --git a/src/ifcgeom/mapping/IfcCompositeCurve.cpp b/src/ifcgeom/mapping/IfcCompositeCurve.cpp index 0bc5294aff..a63fb655cb 100644 --- a/src/ifcgeom/mapping/IfcCompositeCurve.cpp +++ b/src/ifcgeom/mapping/IfcCompositeCurve.cpp @@ -21,38 +21,38 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCompositeCurve* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCompositeCurve& inst) { auto loop = taxonomy::make(); taxonomy::piecewise_function::spans_t spans; #ifdef SCHEMA_HAS_IfcSegment // 4x3 - IfcSchema::IfcSegment::list::ptr segments = inst->Segments(); + std::vector segments = inst.Segments(); #else - IfcSchema::IfcCompositeCurveSegment::list::ptr segments = inst->Segments(); + std::vector segments = inst.Segments(); #endif - for (auto& segment : *segments) { - if (segment->as() && segment->as()->ParentCurve()->as()) { + for (auto& segment : segments) { + if (segment.as() && segment.as().ParentCurve().as()) { Logger::Notice("Infinite IfcLine used as ParentCurve of segment, treating as a segment", segment); double u0 = 0.0; - double u1 = segment->as()->ParentCurve()->as()->Dir()->Magnitude() * length_unit_; + double u1 = segment.as().ParentCurve().as().Dir().Magnitude() * length_unit_; if (u1 < settings_.get().get()) { Logger::Warning("Segment length below tolerance", segment); } auto e = taxonomy::make(); - e->basis = map(segment->as()->ParentCurve()); + e->basis = map(segment.as().ParentCurve()); e->start = u0; e->end = u1; - e->curve_sense.reset(segment->as()->SameSense()); + e->curve_sense.emplace(segment.as().SameSense()); loop->children.push_back(e); } - else if (segment->as()) { - auto crv = map(segment->as()->ParentCurve()); + else if (segment.as()) { + auto crv = map(segment.as().ParentCurve()); if (crv) { - if (!segment->as()->SameSense()) { + if (!segment.as().SameSense()) { crv->reverse(); } if (crv->kind() == taxonomy::EDGE) { @@ -62,7 +62,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCompositeCurve* inst) { for (auto& s : taxonomy::cast(crv)->children) { loop->children.push_back(s); } - } else if ((crv->kind() == taxonomy::CIRCLE || crv->kind() == taxonomy::ELLIPSE) && segments->size() == 1) { + } else if ((crv->kind() == taxonomy::CIRCLE || crv->kind() == taxonomy::ELLIPSE) && segments.size() == 1) { // A circle or ellipse segment is a full circle/ellipse, only possible when it is the only segment std::shared_ptr e = std::make_shared(); e->basis = crv; @@ -76,9 +76,9 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCompositeCurve* inst) { } } #ifdef SCHEMA_HAS_IfcCurveSegment - else if (segment->as()) { + else if (segment.as()) { // @todo check that we don't get a mixture of implicit and explicit definitions - auto crv = map(segment->as()); + auto crv = map(segment.as()); if (crv && crv->kind() == taxonomy::LOOP) { for (auto& s : taxonomy::cast(crv)->children) { loop->children.push_back(s); @@ -95,8 +95,8 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCompositeCurve* inst) { } if (spans.empty()) { - aggregate_of_instance::ptr profile = inst->file_->getInverse(inst->id(), &IfcSchema::IfcProfileDef::Class(), -1); - const bool force_close = profile && profile->size() > 0; + std::vector profile = inst.data()->file()->getInverse(inst.id(), &IfcSchema::IfcProfileDef::Class(), -1); + const bool force_close = !profile.empty(); loop->closed = force_close; loop->instance = inst; return loop; @@ -182,7 +182,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCompositeCurve* l, TopoDS_Wi TopTools_ListIteratorOfListOfShape it(converted_segments); - aggregate_of_instance::ptr profile = inst->data().getInverse(&IfcSchema::IfcProfileDef::Class(), -1); + std::vector profile = inst.data().getInverse(&IfcSchema::IfcProfileDef::Class(), -1); const bool force_close = profile && profile->size() > 0; util::wire_builder bld(getValue(GV_PRECISION), l); diff --git a/src/ifcgeom/mapping/IfcCompositeProfileDef.cpp b/src/ifcgeom/mapping/IfcCompositeProfileDef.cpp index d1bad7fd8f..caef09837e 100644 --- a/src/ifcgeom/mapping/IfcCompositeProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcCompositeProfileDef.cpp @@ -21,8 +21,8 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCompositeProfileDef* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCompositeProfileDef& inst) { // @todo double check that this is actually supported - IfcSchema::IfcProfileDef::list::ptr profiles = inst->Profiles(); + std::vector profiles = inst.Profiles(); return map_to_collection<>(this, profiles); } diff --git a/src/ifcgeom/mapping/IfcConnectedFaceSet.cpp b/src/ifcgeom/mapping/IfcConnectedFaceSet.cpp index 04904e4be4..14d20acf60 100644 --- a/src/ifcgeom/mapping/IfcConnectedFaceSet.cpp +++ b/src/ifcgeom/mapping/IfcConnectedFaceSet.cpp @@ -21,11 +21,11 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcConnectedFaceSet* inst) { - auto shell = map_to_collection(this, inst->CfsFaces()); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcConnectedFaceSet& inst) { + auto shell = map_to_collection(this, inst.CfsFaces()); if (!shell) { return nullptr; } - shell->closed = inst->declaration().is(IfcSchema::IfcClosedShell::Class()); + shell->closed = inst.declaration().is(IfcSchema::IfcClosedShell::Class()); return shell; } diff --git a/src/ifcgeom/mapping/IfcCraneRailAShapeProfileDef.cpp b/src/ifcgeom/mapping/IfcCraneRailAShapeProfileDef.cpp index 491c61f1e3..d1e97a264b 100644 --- a/src/ifcgeom/mapping/IfcCraneRailAShapeProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcCraneRailAShapeProfileDef.cpp @@ -25,25 +25,25 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcCraneRailAShapeProfileDef -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCraneRailAShapeProfileDef* inst) { - double oh = inst->OverallHeight() * length_unit_; - double bw2 = inst->BaseWidth2() * length_unit_; - double hw = inst->HeadWidth() * length_unit_; - double hd2 = inst->HeadDepth2() * length_unit_; - double hd3 = inst->HeadDepth3() * length_unit_; - double wt = inst->WebThickness() * length_unit_; - double bw4 = inst->BaseWidth4() * length_unit_; - double bd1 = inst->BaseDepth1() * length_unit_; - double bd2 = inst->BaseDepth2() * length_unit_; - double bd3 = inst->BaseDepth3() * length_unit_; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCraneRailAShapeProfileDef& inst) { + double oh = inst.OverallHeight() * length_unit_; + double bw2 = inst.BaseWidth2() * length_unit_; + double hw = inst.HeadWidth() * length_unit_; + double hd2 = inst.HeadDepth2() * length_unit_; + double hd3 = inst.HeadDepth3() * length_unit_; + double wt = inst.WebThickness() * length_unit_; + double bw4 = inst.BaseWidth4() * length_unit_; + double bd1 = inst.BaseDepth1() * length_unit_; + double bd2 = inst.BaseDepth2() * length_unit_; + double bd3 = inst.BaseDepth3() * length_unit_; taxonomy::matrix4::ptr m4; bool has_position = true; #ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = !!inst->Position(); + has_position = !!inst.Position(); #endif if (has_position) { - m4 = taxonomy::cast(map(inst->Position())); + m4 = taxonomy::cast(map(inst.Position())); } return profile_helper(m4, { diff --git a/src/ifcgeom/mapping/IfcCsgSolid.cpp b/src/ifcgeom/mapping/IfcCsgSolid.cpp index 8e2b8d4860..03323b51f2 100644 --- a/src/ifcgeom/mapping/IfcCsgSolid.cpp +++ b/src/ifcgeom/mapping/IfcCsgSolid.cpp @@ -21,6 +21,6 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCsgSolid* inst) { - return map(inst->TreeRootExpression()); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCsgSolid& inst) { + return map(inst.TreeRootExpression()); } diff --git a/src/ifcgeom/mapping/IfcCurveBoundedPlane.cpp b/src/ifcgeom/mapping/IfcCurveBoundedPlane.cpp index 55e47855fd..c3d750b2a4 100644 --- a/src/ifcgeom/mapping/IfcCurveBoundedPlane.cpp +++ b/src/ifcgeom/mapping/IfcCurveBoundedPlane.cpp @@ -21,15 +21,15 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCurveBoundedPlane* inst) { - taxonomy::plane::ptr pl = taxonomy::cast(map(inst->BasisSurface())); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCurveBoundedPlane& inst) { + taxonomy::plane::ptr pl = taxonomy::cast(map(inst.BasisSurface())); auto f = taxonomy::make(); - f->children.push_back(taxonomy::cast(map(inst->OuterBoundary()))); + f->children.push_back(taxonomy::cast(map(inst.OuterBoundary()))); - IfcSchema::IfcCurve::list::ptr boundaries = inst->InnerBoundaries(); + std::vector boundaries = inst.InnerBoundaries(); - for (IfcSchema::IfcCurve::list::it it = boundaries->begin(); it != boundaries->end(); ++it) { - f->children.push_back(taxonomy::cast(map(*it))); + for (auto& b : boundaries) { + f->children.push_back(taxonomy::cast(map(b))); } f->matrix = pl->matrix; diff --git a/src/ifcgeom/mapping/IfcCurveSegment.cpp b/src/ifcgeom/mapping/IfcCurveSegment.cpp index 1dd8517352..86c913481d 100644 --- a/src/ifcgeom/mapping/IfcCurveSegment.cpp +++ b/src/ifcgeom/mapping/IfcCurveSegment.cpp @@ -44,19 +44,19 @@ enum segment_type_t { // @todo use std::numbers::pi when upgrading to C++ 20 static const double PI = boost::math::constants::pi(); -double translate_to_length_measure(const IfcSchema::IfcCurve* crv, double param_value) { +double translate_to_length_measure(const IfcSchema::IfcCurve& crv, double param_value) { if (std::abs(param_value) < 1.e-7) { return param_value; - } else if (auto line = crv->as()) { - return line->Dir()->Magnitude() * param_value; - } else if (auto clothoid = crv->as()) { + } else if (auto line = crv.as()) { + return line.Dir().Magnitude() * param_value; + } else if (auto clothoid = crv.as()) { // param_value = 1.0, corresponds to tangent direction = PI/2 // param_value = (arc length)/fabs(A*PI) - return fabs(clothoid->ClothoidConstant()*sqrt(PI))*param_value; - } else if (auto circ = crv->as()) { - return circ->Radius() * param_value; + return fabs(clothoid.ClothoidConstant()*sqrt(PI))*param_value; + } else if (auto circ = crv.as()) { + return circ.Radius() * param_value; #ifdef SCHEMA_HAS_IfcPolynomialCurve - } else if (auto poly = crv->as()) { + } else if (auto poly = crv.as()) { return param_value; #endif } else { @@ -64,12 +64,12 @@ double translate_to_length_measure(const IfcSchema::IfcCurve* crv, double param_ } } -double translate_if_param_value(const IfcSchema::IfcCurve* crv, IfcSchema::IfcCurveMeasureSelect* val) { - if (auto param = val->as()) { +double translate_if_param_value(const IfcSchema::IfcCurve& crv, const IfcSchema::IfcCurveMeasureSelect& val) { + if (auto param = val.as()) { // We don't care whether length- or positive length measure. - return translate_to_length_measure(crv, *param); + return translate_to_length_measure(crv, param); } else { - return val->as()->get_attribute_value(0); + return val.concrete().get_attribute_value(0); } } @@ -181,12 +181,12 @@ struct cant_curve_segment_function { class curve_segment_evaluator { private: mapping* mapping_ = nullptr; - const IfcSchema::IfcCurveSegment* inst_ = nullptr; // this curve segment instance + IfcSchema::IfcCurveSegment inst_; // this curve segment instance double length_unit_; double start_; double length_; // length along the curve, as provided from the IfcCurveSegment segment_type_t segment_type_; - const IfcSchema::IfcCurve* parent_curve_ = nullptr; + IfcSchema::IfcCurve parent_curve_; double projected_length_; // for vertical segments, this is the length of curve projected onto the "Distance Along" axis @@ -197,51 +197,47 @@ class curve_segment_evaluator { std::optional next_segment_placement_; // placement of the next segment public: - curve_segment_evaluator(mapping* mapping, const IfcSchema::IfcCurveSegment* inst, double length_unit) + curve_segment_evaluator(mapping* mapping, const IfcSchema::IfcCurveSegment& inst, double length_unit) : mapping_(mapping), inst_(inst), length_unit_(length_unit), - parent_curve_(inst->ParentCurve()) { + parent_curve_(inst.ParentCurve()) { #ifdef SCHEMA_IfcSegment_HAS_UsingCurves - auto composite_curves = inst->UsingCurves(); + auto composite_curves = inst.UsingCurves(); #else aggregate_of::ptr composite_curves; throw std::runtime_error("Schema not supported"); #endif // Find the next segment after inst - const IfcSchema::IfcCurveSegment* next_inst = nullptr; - if (composite_curves) { - if (composite_curves->size() == 1) { - auto segments = (*composite_curves->begin())->as()->Segments(); - bool emit_next = false; - for (auto& s : *segments) { - if (emit_next) { - next_inst = s->as(); - break; - } - if (s == inst) { - emit_next = true; - } + IfcSchema::IfcCurveSegment next_inst; + if (composite_curves.size() == 1) { + auto segments = composite_curves.front().as().Segments(); + bool emit_next = false; + for (auto& s : segments) { + if (emit_next) { + next_inst = s.as(); + break; + } + if (s == inst) { + emit_next = true; } - } else { - Logger::Warning("IfcCurveSegment belongs to multiple IfcCompositeCurve instances. Cannot determine the next segment."); } + } else { + Logger::Warning("IfcCurveSegment belongs to multiple IfcCompositeCurve instances. Cannot determine the next segment."); } bool is_horizontal = false; bool is_vertical = false; bool is_cant = false; - if (composite_curves) { - for (auto& cc : *composite_curves) { - if (cc->as()) { - is_cant = true; - } else if (cc->as()) { - is_vertical = true; - } else { - is_horizontal = true; - } + for (auto& cc : composite_curves) { + if (cc.as()) { + is_cant = true; + } else if (cc.as()) { + is_vertical = true; + } else { + is_horizontal = true; } } @@ -254,36 +250,36 @@ class curve_segment_evaluator { segment_type_ = is_horizontal ? ST_HORIZONTAL : is_vertical ? ST_VERTICAL : is_cant ? ST_CANT : ST_HORIZONTAL; #ifdef SCHEMA_IfcCurveSegment_HAS_SegmentStart - start_ = translate_if_param_value(inst->ParentCurve(), inst->SegmentStart()) * length_unit; + start_ = translate_if_param_value(inst.ParentCurve(), inst.SegmentStart()) * length_unit; #else throw std::runtime_error("Schema not supported"); #endif - length_ = translate_if_param_value(inst->ParentCurve(), inst->SegmentLength()) * length_unit; + length_ = translate_if_param_value(inst.ParentCurve(), inst.SegmentLength()) * length_unit; projected_length_ = length_; // initialize with something reasonable if (inst) { #ifdef SCHEMA_IfcCurveSegment_HAS_Placement - curve_segment_placement_ = taxonomy::cast(mapping_->map(inst->Placement()))->ccomponents(); + curve_segment_placement_ = taxonomy::cast(mapping_->map(inst.Placement()))->ccomponents(); #endif } if (next_inst) { #ifdef SCHEMA_IfcCurveSegment_HAS_Placement - next_segment_placement_ = taxonomy::cast(mapping_->map(next_inst->Placement()))->ccomponents(); + next_segment_placement_ = taxonomy::cast(mapping_->map(next_inst.Placement()))->ccomponents(); #endif } else { // there is not a next segment, however IfcGradientCurve and IfcSegmentReferenceCurve have an // optional EndPoint which services the same purpose as the zero-length last segment. - IfcSchema::IfcPlacement* end_point = nullptr; - if (composite_curves->size() == 1) { - auto& cc = *(composite_curves)->begin(); + IfcSchema::IfcPlacement end_point; + if (composite_curves.size() == 1) { + auto& cc = composite_curves.front(); if (segment_type_ == ST_VERTICAL) { - auto gradient_curve = cc->as(); + auto gradient_curve = cc.as(); #ifdef SCHEMA_IfcCurveSegment_HAS_Placement - end_point = gradient_curve->EndPoint(); + end_point = gradient_curve.EndPoint(); #endif } else if (segment_type_ == ST_CANT) { - auto segmented_reference_curve = cc->as(); - end_point = segmented_reference_curve->EndPoint(); + auto segmented_reference_curve = cc.as(); + end_point = segmented_reference_curve.EndPoint(); } } else { Logger::Warning("IfcCurveSegment belongs to multiple IfcCompositeCurve instances. Cannot determine the end point."); @@ -297,8 +293,8 @@ class curve_segment_evaluator { // Take the boost::type value from mpl::for_each and test it against our curve instance template void operator()(boost::type) { - if (parent_curve_->as()) { - (*this)(parent_curve_->as()); + if (parent_curve_.as()) { + (*this)(parent_curve_.as()); } } @@ -308,7 +304,7 @@ class curve_segment_evaluator { taxonomy::ptr get_segment_curve_function() { if (!parent_curve_fn_ || !parent_curve_start_point_) { - Logger::Error(std::runtime_error(inst_->ParentCurve()->declaration().name() + " not implemented"), inst_); + Logger::Error(std::runtime_error(inst_.ParentCurve().declaration().name() + " not implemented"), inst_); } auto length = fabs(this->length()); @@ -521,9 +517,9 @@ class curve_segment_evaluator { // returns function for super elevation and the slope of the super elevation curve if the super elevation is constant // over the length of the segment. otherwise, no functions are returned because they are the same as the cant tilt angle // functions. - std::pair>, boost::optional>> get_superelevation_functions() { - boost::optional> superelevation_fn; - boost::optional> superelevation_slope_fn; + std::pair>, std::optional>> get_superelevation_functions() { + std::optional> superelevation_fn; + std::optional> superelevation_slope_fn; if (curve_segment_placement_.has_value() && next_segment_placement_.has_value()) { double y1 = (*curve_segment_placement_)(1, 3); @@ -541,12 +537,12 @@ class curve_segment_evaluator { } #ifdef SCHEMA_HAS_IfcClothoid - void operator()(const IfcSchema::IfcClothoid* c) { - auto A = c->ClothoidConstant() * length_unit_; + void operator()(const IfcSchema::IfcClothoid& c) { + auto A = c.ClothoidConstant() * length_unit_; auto L = length(); // already includes length_unit_ if (segment_type_ == ST_CANT) { - boost::optional> super, slope; + std::optional> super, slope; std::tie(super, slope) = get_superelevation_functions(); auto cant = [A, L](double t) -> double { return A ? L * L * A * t / fabs(pow(A, 3)) : 0.0; }; @@ -570,12 +566,12 @@ class curve_segment_evaluator { #endif #if defined SCHEMA_HAS_IfcCosineSpiral - void operator()(const IfcSchema::IfcCosineSpiral* c) { - auto constant_term = c->ConstantTerm(); + void operator()(const IfcSchema::IfcCosineSpiral& c) { + auto constant_term = c.ConstantTerm(); if (constant_term.has_value()) { constant_term.value() *= length_unit_; } - auto cosine_term = c->CosineTerm() * length_unit_; + auto cosine_term = c.CosineTerm() * length_unit_; auto L = length(); // already converted to internal units by constructor if (segment_type_ == ST_HORIZONTAL) { @@ -594,7 +590,7 @@ class curve_segment_evaluator { double s = 1.0; set_spiral_function(s, fn_x, fn_y, curvature); } else if (segment_type_ == ST_CANT) { - boost::optional> super, slope; + std::optional> super, slope; std::tie(super, slope) = get_superelevation_functions(); auto cant = [constant_term, cosine_term, L](double t) -> double { @@ -632,16 +628,16 @@ class curve_segment_evaluator { #endif #if defined SCHEMA_HAS_IfcSineSpiral - void operator()(const IfcSchema::IfcSineSpiral* c) { - auto constant_term = c->ConstantTerm(); + void operator()(const IfcSchema::IfcSineSpiral& c) { + auto constant_term = c.ConstantTerm(); if (constant_term.has_value()) { constant_term.value() *= length_unit_; } - auto linear_term = c->LinearTerm(); + auto linear_term = c.LinearTerm(); if (linear_term.has_value()) { linear_term.value() *= length_unit_; } - auto sine_term = c->SineTerm() * length_unit_; + auto sine_term = c.SineTerm() * length_unit_; auto L = length(); // already converted to internal units by constructor if (segment_type_ == ST_HORIZONTAL) { auto theta = [constant_term, linear_term, sine_term, L](double t) -> double { @@ -661,7 +657,7 @@ class curve_segment_evaluator { double s = 1.0; set_spiral_function(s, fn_x, fn_y, curvature); } else if (segment_type_ == ST_CANT) { - boost::optional> super, slope; + std::optional> super, slope; std::tie(super, slope) = get_superelevation_functions(); auto cant = [constant_term, linear_term, sine_term, L](double t) -> double { @@ -698,16 +694,16 @@ class curve_segment_evaluator { } #endif - void polynomial_spiral(boost::optional A0, boost::optional A1, boost::optional A2, boost::optional A3, boost::optional A4, boost::optional A5, boost::optional A6, boost::optional A7) { + void polynomial_spiral(std::optional A0, std::optional A1, std::optional A2, std::optional A3, std::optional A4, std::optional A5, std::optional A6, std::optional A7) { auto theta = [A0, A1, A2, A3, A4, A5, A6, A7, start = start_ * length_unit_, lu = length_unit_](double t) -> double { - auto a0 = A0.get_value_or(0.0) != 0.0 ? t / (A0.value() * lu) : 0.0; - auto a1 = A1.get_value_or(0.0) != 0.0 ? A1.value() * lu * std::pow(t, 2) / (2 * fabs(std::pow(A1.value() * lu, 3))) : 0.0; - auto a2 = A2.get_value_or(0.0) != 0.0 ? std::pow(t, 3) / (3 * std::pow(A2.value() * lu, 3)) : 0.0; - auto a3 = A3.get_value_or(0.0) != 0.0 ? A3.value() * lu * std::pow(t, 4) / (4 * fabs(std::pow(A3.value() * lu, 5))) : 0.0; - auto a4 = A4.get_value_or(0.0) != 0.0 ? std::pow(t, 5) / (5 * std::pow(A4.value() * lu, 5)) : 0.0; - auto a5 = A5.get_value_or(0.0) != 0.0 ? A5.value() * lu * std::pow(t, 6) / (6 * fabs(std::pow(A5.value() * lu, 7))) : 0.0; - auto a6 = A6.get_value_or(0.0) != 0.0 ? std::pow(t, 7) / (7 * std::pow(A6.value() * lu, 7)) : 0.0; - auto a7 = A7.get_value_or(0.0) != 0.0 ? A7.value() * lu * std::pow(t, 8) / (8 * fabs(std::pow(A7.value() * lu, 9))) : 0.0; + auto a0 = A0.value_or(0.0) != 0.0 ? t / (A0.value() * lu) : 0.0; + auto a1 = A1.value_or(0.0) != 0.0 ? A1.value() * lu * std::pow(t, 2) / (2 * fabs(std::pow(A1.value() * lu, 3))) : 0.0; + auto a2 = A2.value_or(0.0) != 0.0 ? std::pow(t, 3) / (3 * std::pow(A2.value() * lu, 3)) : 0.0; + auto a3 = A3.value_or(0.0) != 0.0 ? A3.value() * lu * std::pow(t, 4) / (4 * fabs(std::pow(A3.value() * lu, 5))) : 0.0; + auto a4 = A4.value_or(0.0) != 0.0 ? std::pow(t, 5) / (5 * std::pow(A4.value() * lu, 5)) : 0.0; + auto a5 = A5.value_or(0.0) != 0.0 ? A5.value() * lu * std::pow(t, 6) / (6 * fabs(std::pow(A5.value() * lu, 7))) : 0.0; + auto a6 = A6.value_or(0.0) != 0.0 ? std::pow(t, 7) / (7 * std::pow(A6.value() * lu, 7)) : 0.0; + auto a7 = A7.value_or(0.0) != 0.0 ? A7.value() * lu * std::pow(t, 8) / (8 * fabs(std::pow(A7.value() * lu, 9))) : 0.0; return a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7; }; @@ -718,14 +714,14 @@ class curve_segment_evaluator { // this is same as cant function in polynomial_cant_spiral auto curvature = [A0, A1, A2, A3, A4, A5, A6, A7, start = start_, L = length_, lu = length_unit_, length = length_](double t) -> double { t += start; - auto a0 = A0.get_value_or(0.0) != 0.0 ? 1 / (A0.value() * lu) : 0.0; - auto a1 = A1.get_value_or(0.0) != 0.0 ? A1.value() * lu * t / fabs(std::pow(A1.value() * lu, 3)) : 0.0; - auto a2 = A2.get_value_or(0.0) != 0.0 ? std::pow(t, 2) / std::pow(A2.value() * lu, 3) : 0.0; - auto a3 = A3.get_value_or(0.0) != 0.0 ? A3.value() * lu * std::pow(t, 3) / fabs(std::pow(A3.value() * lu, 5)) : 0.0; - auto a4 = A4.get_value_or(0.0) != 0.0 ? std::pow(t, 4) / std::pow(A4.value() * lu, 5) : 0.0; - auto a5 = A5.get_value_or(0.0) != 0.0 ? A5.value() * lu * std::pow(t, 5) / fabs(std::pow(A5.value() * lu, 7)) : 0.0; - auto a6 = A6.get_value_or(0.0) != 0.0 ? std::pow(t, 6) / std::pow(A6.value() * lu, 7) : 0.0; - auto a7 = A7.get_value_or(0.0) != 0.0 ? A7.value() * lu * std::pow(t, 7) / fabs(std::pow(A7.value() * lu, 9)) : 0.0; + auto a0 = A0.value_or(0.0) != 0.0 ? 1 / (A0.value() * lu) : 0.0; + auto a1 = A1.value_or(0.0) != 0.0 ? A1.value() * lu * t / fabs(std::pow(A1.value() * lu, 3)) : 0.0; + auto a2 = A2.value_or(0.0) != 0.0 ? std::pow(t, 2) / std::pow(A2.value() * lu, 3) : 0.0; + auto a3 = A3.value_or(0.0) != 0.0 ? A3.value() * lu * std::pow(t, 3) / fabs(std::pow(A3.value() * lu, 5)) : 0.0; + auto a4 = A4.value_or(0.0) != 0.0 ? std::pow(t, 4) / std::pow(A4.value() * lu, 5) : 0.0; + auto a5 = A5.value_or(0.0) != 0.0 ? A5.value() * lu * std::pow(t, 5) / fabs(std::pow(A5.value() * lu, 7)) : 0.0; + auto a6 = A6.value_or(0.0) != 0.0 ? std::pow(t, 6) / std::pow(A6.value() * lu, 7) : 0.0; + auto a7 = A7.value_or(0.0) != 0.0 ? A7.value() * lu * std::pow(t, 7) / fabs(std::pow(A7.value() * lu, 9)) : 0.0; return L * (a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7); }; @@ -734,20 +730,20 @@ class curve_segment_evaluator { set_spiral_function(s, fn_x, fn_y, curvature); } - void polynomial_cant_spiral(boost::optional A0, boost::optional A1, boost::optional A2, boost::optional A3, boost::optional A4, boost::optional A5, boost::optional A6, boost::optional A7) { - boost::optional> super, slope; + void polynomial_cant_spiral(std::optional A0, std::optional A1, std::optional A2, std::optional A3, std::optional A4, std::optional A5, std::optional A6, std::optional A7) { + std::optional> super, slope; std::tie(super, slope) = get_superelevation_functions(); auto cant = [A0, A1, A2, A3, A4, A5, A6, A7, start = start_, L = length_, lu = length_unit_, length = length_](double t) -> double { t += start; - auto a0 = A0.get_value_or(0.0) != 0.0 ? 1 / (A0.value() * lu) : 0.0; - auto a1 = A1.get_value_or(0.0) != 0.0 ? A1.value() * lu * t / fabs(std::pow(A1.value() * lu, 3)) : 0.0; - auto a2 = A2.get_value_or(0.0) != 0.0 ? std::pow(t, 2) / std::pow(A2.value() * lu, 3) : 0.0; - auto a3 = A3.get_value_or(0.0) != 0.0 ? A3.value() * lu * std::pow(t, 3) / fabs(std::pow(A3.value() * lu, 5)) : 0.0; - auto a4 = A4.get_value_or(0.0) != 0.0 ? std::pow(t, 4) / std::pow(A4.value() * lu, 5) : 0.0; - auto a5 = A5.get_value_or(0.0) != 0.0 ? A5.value() * lu * std::pow(t, 5) / fabs(std::pow(A5.value() * lu, 7)) : 0.0; - auto a6 = A6.get_value_or(0.0) != 0.0 ? std::pow(t, 6) / std::pow(A6.value() * lu, 7) : 0.0; - auto a7 = A7.get_value_or(0.0) != 0.0 ? A7.value() * lu * std::pow(t, 7) / fabs(std::pow(A7.value() * lu, 9)) : 0.0; + auto a0 = A0.value_or(0.0) != 0.0 ? 1 / (A0.value() * lu) : 0.0; + auto a1 = A1.value_or(0.0) != 0.0 ? A1.value() * lu * t / fabs(std::pow(A1.value() * lu, 3)) : 0.0; + auto a2 = A2.value_or(0.0) != 0.0 ? std::pow(t, 2) / std::pow(A2.value() * lu, 3) : 0.0; + auto a3 = A3.value_or(0.0) != 0.0 ? A3.value() * lu * std::pow(t, 3) / fabs(std::pow(A3.value() * lu, 5)) : 0.0; + auto a4 = A4.value_or(0.0) != 0.0 ? std::pow(t, 4) / std::pow(A4.value() * lu, 5) : 0.0; + auto a5 = A5.value_or(0.0) != 0.0 ? A5.value() * lu * std::pow(t, 5) / fabs(std::pow(A5.value() * lu, 7)) : 0.0; + auto a6 = A6.value_or(0.0) != 0.0 ? std::pow(t, 6) / std::pow(A6.value() * lu, 7) : 0.0; + auto a7 = A7.value_or(0.0) != 0.0 ? A7.value() * lu * std::pow(t, 7) / fabs(std::pow(A7.value() * lu, 9)) : 0.0; return L * L * (a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7); }; @@ -758,13 +754,13 @@ class curve_segment_evaluator { if (!slope.has_value()) { slope = [A1, A2, A3, A4, A5, A6, A7, start = start_, L = length_, lu = length_unit_, length = length_](double t) -> double { t += start; - auto a1 = A1.get_value_or(0.0) != 0.0 ? A1.value() * lu / fabs(std::pow(A1.value() * lu, 3)) : 0.0; - auto a2 = A2.get_value_or(0.0) != 0.0 ? 2 * t / std::pow(A2.value() * lu, 3) : 0.0; - auto a3 = A3.get_value_or(0.0) != 0.0 ? 3 * A3.value() * lu * std::pow(t, 2) / fabs(std::pow(A3.value() * lu, 5)) : 0.0; - auto a4 = A4.get_value_or(0.0) != 0.0 ? 4 * std::pow(t, 3) / std::pow(A4.value() * lu, 5) : 0.0; - auto a5 = A5.get_value_or(0.0) != 0.0 ? 5 * A5.value() * lu * std::pow(t, 4) / fabs(std::pow(A5.value() * lu, 7)) : 0.0; - auto a6 = A6.get_value_or(0.0) != 0.0 ? 6 * std::pow(t, 5) / std::pow(A6.value() * lu, 7) : 0.0; - auto a7 = A7.get_value_or(0.0) != 0.0 ? 7 * A7.value() * lu * std::pow(t, 6) / fabs(std::pow(A7.value() * lu, 9)) : 0.0; + auto a1 = A1.value_or(0.0) != 0.0 ? A1.value() * lu / fabs(std::pow(A1.value() * lu, 3)) : 0.0; + auto a2 = A2.value_or(0.0) != 0.0 ? 2 * t / std::pow(A2.value() * lu, 3) : 0.0; + auto a3 = A3.value_or(0.0) != 0.0 ? 3 * A3.value() * lu * std::pow(t, 2) / fabs(std::pow(A3.value() * lu, 5)) : 0.0; + auto a4 = A4.value_or(0.0) != 0.0 ? 4 * std::pow(t, 3) / std::pow(A4.value() * lu, 5) : 0.0; + auto a5 = A5.value_or(0.0) != 0.0 ? 5 * A5.value() * lu * std::pow(t, 4) / fabs(std::pow(A5.value() * lu, 7)) : 0.0; + auto a6 = A6.value_or(0.0) != 0.0 ? 6 * std::pow(t, 5) / std::pow(A6.value() * lu, 7) : 0.0; + auto a7 = A7.value_or(0.0) != 0.0 ? 7 * A7.value() * lu * std::pow(t, 6) / fabs(std::pow(A7.value() * lu, 9)) : 0.0; return L * L * (a1 + a2 + a3 + a4 + a5 + a6 + a7); }; } @@ -773,11 +769,11 @@ class curve_segment_evaluator { } #ifdef SCHEMA_HAS_IfcSecondOrderPolynomialSpiral - void operator()(const IfcSchema::IfcSecondOrderPolynomialSpiral* c) { - auto A0 = c->ConstantTerm(); - auto A1 = c->LinearTerm(); - auto A2 = c->QuadraticTerm(); - boost::optional A3, A4, A5, A6, A7; + void operator()(const IfcSchema::IfcSecondOrderPolynomialSpiral& c) { + auto A0 = c.ConstantTerm(); + auto A1 = c.LinearTerm(); + auto A2 = c.QuadraticTerm(); + std::optional A3, A4, A5, A6, A7; if (segment_type_ == ST_CANT) { polynomial_cant_spiral(A0, A1, A2, A3, A4, A5, A6, A7); @@ -788,15 +784,15 @@ class curve_segment_evaluator { #endif #ifdef SCHEMA_HAS_IfcThirdOrderPolynomialSpiral - void operator()(const IfcSchema::IfcThirdOrderPolynomialSpiral* c) { - auto A0 = c->ConstantTerm(); - auto A1 = c->LinearTerm(); - auto A2 = c->QuadraticTerm(); - boost::optional A3, A4, A5, A6, A7; + void operator()(const IfcSchema::IfcThirdOrderPolynomialSpiral& c) { + auto A0 = c.ConstantTerm(); + auto A1 = c.LinearTerm(); + auto A2 = c.QuadraticTerm(); + std::optional A3, A4, A5, A6, A7; #ifdef SCHEMA_IfcThirdOrderPolynomialSpiral_HAS_CubicTerm - A3 = c->CubicTerm(); + A3 = c.CubicTerm(); #else - A3 = c->QubicTerm(); + A3 = c.QubicTerm(); #endif if (segment_type_ == ST_CANT) { @@ -808,15 +804,15 @@ class curve_segment_evaluator { #endif #ifdef SCHEMA_HAS_IfcSeventhOrderPolynomialSpiral - void operator()(const IfcSchema::IfcSeventhOrderPolynomialSpiral* c) { - auto A0 = c->ConstantTerm(); - auto A1 = c->LinearTerm(); - auto A2 = c->QuadraticTerm(); - auto A3 = c->CubicTerm(); - auto A4 = c->QuarticTerm(); - auto A5 = c->QuinticTerm(); - auto A6 = c->SexticTerm(); - auto A7 = c->SepticTerm(); + void operator()(const IfcSchema::IfcSeventhOrderPolynomialSpiral& c) { + auto A0 = c.ConstantTerm(); + auto A1 = c.LinearTerm(); + auto A2 = c.QuadraticTerm(); + auto A3 = c.CubicTerm(); + auto A4 = c.QuarticTerm(); + auto A5 = c.QuinticTerm(); + auto A6 = c.SexticTerm(); + auto A7 = c.SepticTerm(); if (segment_type_ == ST_CANT) { polynomial_cant_spiral(A0, A1, A2, A3, A4, A5, A6, A7); @@ -826,10 +822,10 @@ class curve_segment_evaluator { } #endif - void operator()(const IfcSchema::IfcCircle* c) { + void operator()(const IfcSchema::IfcCircle& c) { if (segment_type_ == ST_HORIZONTAL || segment_type_ == ST_VERTICAL) { - auto R = c->Radius() * length_unit_; - auto parent_curve_position = taxonomy::cast(mapping_->map(c->Position()))->ccomponents(); + auto R = c.Radius() * length_unit_; + auto parent_curve_position = taxonomy::cast(mapping_->map(c.Position()))->ccomponents(); // center point of the parent curve auto pcCenterX = parent_curve_position(0, 3); @@ -854,7 +850,7 @@ class curve_segment_evaluator { } else { Eigen::Matrix4d curve_segment_placement; #ifdef SCHEMA_IfcCurveSegment_HAS_Placement - curve_segment_placement = taxonomy::cast(mapping_->map(inst_->Placement()))->ccomponents(); + curve_segment_placement = taxonomy::cast(mapping_->map(inst_.Placement()))->ccomponents(); #endif auto csStartX = curve_segment_placement(0, 3); auto csStartY = curve_segment_placement(1, 3); @@ -965,10 +961,10 @@ class curve_segment_evaluator { } } - void operator()(const IfcSchema::IfcLine* l) { + void operator()(const IfcSchema::IfcLine& l) { projected_length_ = length_; - auto c = l->Pnt()->Coordinates(); + auto c = l.Pnt().Coordinates(); auto pcX = c[0] * length_unit_; auto pcY = c[1] * length_unit_; @@ -980,7 +976,7 @@ class curve_segment_evaluator { // // Magnitude is not used because it relates to the parameterization of the line, which isn't currently done for IfcCurveSegment // @todo - parameterization was recently added so Magnitude needs to be taking into consideration - auto dr = l->Dir()->Orientation()->DirectionRatios(); + auto dr = l.Dir().Orientation().DirectionRatios(); // normalize the direction ratios double m_squared = std::inner_product(dr.begin(), dr.end(), dr.begin(), 0.0); @@ -1039,11 +1035,11 @@ class curve_segment_evaluator { } #ifdef SCHEMA_HAS_IfcPolynomialCurve - void operator()(const IfcSchema::IfcPolynomialCurve* pc) { + void operator()(const IfcSchema::IfcPolynomialCurve& pc) { // see https://forums.buildingsmart.org/t/ifcpolynomialcurve-clarification/4716 for discussion on IfcPolynomialCurve - auto coeffX = pc->CoefficientsX().get_value_or(std::vector()); - auto coeffY = pc->CoefficientsY().get_value_or(std::vector()); - auto coeffZ = pc->CoefficientsZ().get_value_or(std::vector()); + auto coeffX = pc.CoefficientsX().value_or(std::vector()); + auto coeffY = pc.CoefficientsY().value_or(std::vector()); + auto coeffZ = pc.CoefficientsZ().value_or(std::vector()); if (!coeffZ.empty()) { Logger::Warning("Expected IfcPolynomialCurve.CoefficientsZ to be undefined for alignment geometry. Coefficients ignored.", pc); } @@ -1187,7 +1183,7 @@ class curve_segment_evaluator { }; } // namespace -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCurveSegment* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCurveSegment& inst) { curve_segment_evaluator cse(this, inst, length_unit_); boost::mpl::for_each>(std::ref(cse)); return cse.get_segment_curve_function(); diff --git a/src/ifcgeom/mapping/IfcCylindricalSurface.cpp b/src/ifcgeom/mapping/IfcCylindricalSurface.cpp index a60def0163..2456adcd22 100644 --- a/src/ifcgeom/mapping/IfcCylindricalSurface.cpp +++ b/src/ifcgeom/mapping/IfcCylindricalSurface.cpp @@ -23,10 +23,10 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcCylindricalSurface -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCylindricalSurface* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcCylindricalSurface& inst) { auto c = taxonomy::make(); - c->radius = inst->Radius() * length_unit_; - c->matrix = taxonomy::cast(map(inst->Position())); + c->radius = inst.Radius() * length_unit_; + c->matrix = taxonomy::cast(map(inst.Position())); return c; } diff --git a/src/ifcgeom/mapping/IfcDerivedProfileDef.cpp b/src/ifcgeom/mapping/IfcDerivedProfileDef.cpp index 663680e29d..42d08b667e 100644 --- a/src/ifcgeom/mapping/IfcDerivedProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcDerivedProfileDef.cpp @@ -21,8 +21,8 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcDerivedProfileDef* inst) { - auto it = map(inst->ParentProfile()); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcDerivedProfileDef& inst) { + auto it = map(inst.ParentProfile()); if (it == nullptr) { return nullptr; } @@ -32,7 +32,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcDerivedProfileDef* inst) { taxonomy::matrix4::ptr m; bool is_mirror = false; #ifdef SCHEMA_HAS_IfcMirroredProfileDef - if (inst->as()) { + if (inst.as()) { m = taxonomy::make(); // @todo test m->components().col(0) *= -1.; @@ -40,7 +40,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcDerivedProfileDef* inst) { } #endif if (!is_mirror) { - m = taxonomy::cast(map(inst->Operator())); + m = taxonomy::cast(map(inst.Operator())); if (!m) { return nullptr; } diff --git a/src/ifcgeom/mapping/IfcDirection.cpp b/src/ifcgeom/mapping/IfcDirection.cpp index 2058307018..d02e56b99f 100644 --- a/src/ifcgeom/mapping/IfcDirection.cpp +++ b/src/ifcgeom/mapping/IfcDirection.cpp @@ -21,8 +21,8 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcDirection* inst) { - auto coords = inst->DirectionRatios(); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcDirection& inst) { + auto coords = inst.DirectionRatios(); return taxonomy::make( coords.size() >= 1 ? coords[0] : 0., coords.size() >= 2 ? coords[1] : 0., diff --git a/src/ifcgeom/mapping/IfcEdge.cpp b/src/ifcgeom/mapping/IfcEdge.cpp index 8fb2feebe6..83e5f929bf 100644 --- a/src/ifcgeom/mapping/IfcEdge.cpp +++ b/src/ifcgeom/mapping/IfcEdge.cpp @@ -21,15 +21,17 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcEdge* inst) { - if (!inst->EdgeStart()->declaration().is(IfcSchema::IfcVertexPoint::Class()) || !inst->EdgeEnd()->declaration().is(IfcSchema::IfcVertexPoint::Class())) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcEdge& inst) { + auto v1 = inst.EdgeStart().as(); + auto v2 = inst.EdgeStart().as(); + if (!v1 || !v2) { Logger::Message(Logger::LOG_ERROR, "Only IfcVertexPoints are supported for EdgeStart and -End", inst); return nullptr; } - IfcSchema::IfcPoint* pnt1 = ((IfcSchema::IfcVertexPoint*) inst->EdgeStart())->VertexGeometry(); - IfcSchema::IfcPoint* pnt2 = ((IfcSchema::IfcVertexPoint*) inst->EdgeEnd())->VertexGeometry(); - if (!pnt1->declaration().is(IfcSchema::IfcCartesianPoint::Class()) || !pnt2->declaration().is(IfcSchema::IfcCartesianPoint::Class())) { + auto pnt1 = v1.VertexGeometry(); + auto pnt2 = v2.VertexGeometry(); + if (!pnt1.declaration().is(IfcSchema::IfcCartesianPoint::Class()) || !pnt2.declaration().is(IfcSchema::IfcCartesianPoint::Class())) { Logger::Message(Logger::LOG_ERROR, "Only IfcCartesianPoints are supported for VertexGeometry", inst); return nullptr; } @@ -39,15 +41,15 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcEdge* inst) { e->start = taxonomy::cast(map(pnt1)); e->end = taxonomy::cast(map(pnt2)); - if (inst->as()) { - auto basis = map(inst->as()->EdgeGeometry()); + if (auto ec = inst.as()) { + auto basis = map(ec.EdgeGeometry()); auto loop = taxonomy::dcast(basis); if (loop && loop->children.size() == 1) { loop->calculate_linear_edge_curves(); basis = loop->children[0]->basis; } e->basis = basis; - e->curve_sense = inst->as()->SameSense(); + e->curve_sense = ec.SameSense(); } return e; diff --git a/src/ifcgeom/mapping/IfcEdgeLoop.cpp b/src/ifcgeom/mapping/IfcEdgeLoop.cpp index f4c77ab4a4..6f47d7244f 100644 --- a/src/ifcgeom/mapping/IfcEdgeLoop.cpp +++ b/src/ifcgeom/mapping/IfcEdgeLoop.cpp @@ -21,6 +21,6 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcEdgeLoop* inst) { - return map_to_collection(this, inst->EdgeList()); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcEdgeLoop& inst) { + return map_to_collection(this, inst.EdgeList()); } diff --git a/src/ifcgeom/mapping/IfcEllipse.cpp b/src/ifcgeom/mapping/IfcEllipse.cpp index 8d79068aa4..2eaabd3222 100644 --- a/src/ifcgeom/mapping/IfcEllipse.cpp +++ b/src/ifcgeom/mapping/IfcEllipse.cpp @@ -21,9 +21,9 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcEllipse* inst) { - double x = inst->SemiAxis1() * length_unit_; - double y = inst->SemiAxis2() * length_unit_; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcEllipse& inst) { + double x = inst.SemiAxis1() * length_unit_; + double y = inst.SemiAxis2() * length_unit_; const double tol = settings_.get().get(); if (x < tol || y < tol) { Logger::Message(Logger::LOG_ERROR, "Radius not greater than zero for:", inst); @@ -31,7 +31,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcEllipse* inst) { } auto el = taxonomy::make(); - el->matrix = taxonomy::cast(map(inst->Position())); + el->matrix = taxonomy::cast(map(inst.Position())); // Open Cascade does not allow ellipses of which the minor radius // is greater than the major radius. Hence, in this case, the diff --git a/src/ifcgeom/mapping/IfcEllipseProfileDef.cpp b/src/ifcgeom/mapping/IfcEllipseProfileDef.cpp index 1c1824c978..75e4f6f3f9 100644 --- a/src/ifcgeom/mapping/IfcEllipseProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcEllipseProfileDef.cpp @@ -21,9 +21,9 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcEllipseProfileDef* inst) { - double rx = inst->SemiAxis1() * length_unit_; - double ry = inst->SemiAxis2() * length_unit_; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcEllipseProfileDef& inst) { + double rx = inst.SemiAxis1() * length_unit_; + double ry = inst.SemiAxis2() * length_unit_; const double tol = settings_.get().get(); if (rx < tol || ry < tol) { Logger::Message(Logger::LOG_ERROR, "Radius not greater than zero for:", inst); @@ -35,10 +35,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcEllipseProfileDef* inst) { taxonomy::matrix4::ptr m4; bool has_position = true; #ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = !!inst->Position(); + has_position = !!inst.Position(); #endif if (has_position) { - m4 = taxonomy::cast(map(inst->Position())); + m4 = taxonomy::cast(map(inst.Position())); } else { // matrix needs to be set on elementary curves. m4 = taxonomy::make(); diff --git a/src/ifcgeom/mapping/IfcExtrudedAreaSolid.cpp b/src/ifcgeom/mapping/IfcExtrudedAreaSolid.cpp index 77fbe846d4..afe2c8ed4e 100644 --- a/src/ifcgeom/mapping/IfcExtrudedAreaSolid.cpp +++ b/src/ifcgeom/mapping/IfcExtrudedAreaSolid.cpp @@ -24,8 +24,8 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcExtrudedAreaSolid* inst) { - const double height = inst->Depth() * length_unit_; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcExtrudedAreaSolid& inst) { + const double height = inst.Depth() * length_unit_; if (height < settings_.get().get()) { Logger::Message(Logger::LOG_ERROR, "Non-positive extrusion height encountered for:", inst); #ifndef PERMISSIVE_EXTRUSION @@ -36,10 +36,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcExtrudedAreaSolid* inst) { taxonomy::matrix4::ptr matrix; bool has_position = true; #ifdef SCHEMA_IfcSweptAreaSolid_Position_IS_OPTIONAL - has_position = inst->Position() != nullptr; + has_position = !!inst.Position(); #endif if (has_position) { - matrix = taxonomy::cast(map(inst->Position())); + matrix = taxonomy::cast(map(inst.Position())); } #ifdef PERMISSIVE_EXTRUSION @@ -49,7 +49,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcExtrudedAreaSolid* inst) { } #endif - auto basis = map(inst->SweptArea()); + auto basis = map(inst.SweptArea()); if (auto bases = taxonomy::dcast(basis)) { // @todo this requires a unified approach for all sweeps auto c = taxonomy::make(); @@ -58,7 +58,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcExtrudedAreaSolid* inst) { taxonomy::make( matrix, taxonomy::cast(f), - taxonomy::cast(map(inst->ExtrudedDirection())), + taxonomy::cast(map(inst.ExtrudedDirection())), height ) ); @@ -69,7 +69,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcExtrudedAreaSolid* inst) { return taxonomy::make( matrix, taxonomy::cast(basis), - taxonomy::cast(map(inst->ExtrudedDirection())), + taxonomy::cast(map(inst.ExtrudedDirection())), height ); } diff --git a/src/ifcgeom/mapping/IfcExtrudedAreaSolidTapered.cpp b/src/ifcgeom/mapping/IfcExtrudedAreaSolidTapered.cpp index 60318f1b95..5631393eee 100644 --- a/src/ifcgeom/mapping/IfcExtrudedAreaSolidTapered.cpp +++ b/src/ifcgeom/mapping/IfcExtrudedAreaSolidTapered.cpp @@ -24,22 +24,22 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcExtrudedAreaSolidTapered #define mapping POSTFIX_SCHEMA(mapping) -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcExtrudedAreaSolidTapered* inst) { - const double height = inst->Depth() * length_unit_; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcExtrudedAreaSolidTapered& inst) { + const double height = inst.Depth() * length_unit_; if (height < settings_.get().get()) { Logger::Message(Logger::LOG_ERROR, "Non-positive extrusion height encountered for:", inst); return nullptr; } - taxonomy::direction3::ptr dir = taxonomy::cast(map(inst->ExtrudedDirection())); + taxonomy::direction3::ptr dir = taxonomy::cast(map(inst.ExtrudedDirection())); Eigen::Affine3d af3d(Eigen::Translation3d(height * dir->ccomponents())); Eigen::Matrix4d end_profile = af3d.matrix(); auto loft = taxonomy::make(); loft->axis = nullptr; loft->children = { - taxonomy::cast(map(inst->SweptArea())), - taxonomy::cast(map(inst->EndSweptArea())) + taxonomy::cast(map(inst.SweptArea())), + taxonomy::cast(map(inst.EndSweptArea())) }; if (!loft->children.back()->matrix) { @@ -51,10 +51,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcExtrudedAreaSolidTapered* in taxonomy::matrix4::ptr matrix; bool has_position = true; #ifdef SCHEMA_IfcSweptAreaSolid_Position_IS_OPTIONAL - has_position = inst->Position() != nullptr; + has_position = !!inst.Position(); #endif if (has_position) { - matrix = taxonomy::cast(map(inst->Position())); + matrix = taxonomy::cast(map(inst.Position())); } loft->matrix = matrix; diff --git a/src/ifcgeom/mapping/IfcFace.cpp b/src/ifcgeom/mapping/IfcFace.cpp index 60f08b3c88..6b8a5c2d09 100644 --- a/src/ifcgeom/mapping/IfcFace.cpp +++ b/src/ifcgeom/mapping/IfcFace.cpp @@ -21,16 +21,16 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFace* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFace& inst) { auto face = taxonomy::make(); - auto bounds = inst->Bounds(); - for (auto& bound : *bounds) { - if (auto r = taxonomy::cast(map(bound->Bound()))) { - if (!bound->Orientation()) { + auto bounds = inst.Bounds(); + for (auto& bound : bounds) { + if (auto r = taxonomy::cast(map(bound.Bound()))) { + if (!bound.Orientation()) { r->reverse(); } // @todo check why loop sets external to true initially - r->external = bound->declaration().is(IfcSchema::IfcFaceOuterBound::Class()); + r->external = bound.declaration().is(IfcSchema::IfcFaceOuterBound::Class()); /* // Make a copy in case we need immutability later for e.g. caching auto s = r->clone(); @@ -42,10 +42,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFace* inst) { } } - auto face_surface = inst->as(); + auto face_surface = inst.as(); if (face_surface) { - face->basis = map(face_surface->FaceSurface()); + face->basis = map(face_surface.FaceSurface()); } if (face->children.empty()) { @@ -56,326 +56,3 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFace* inst) { } return face; } - -/* - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "mapping.h" - -#include "../ifcgeom_schema_agnostic/face_definition.h" -#include "../ifcgeom_schema_agnostic/wire_utils.h" - -#define mapping POSTFIX_SCHEMA(mapping) - -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFace* l, TopoDS_Shape& result) { - IfcSchema::IfcFaceBound::list::ptr bounds = inst->Bounds(); - - util::face_definition fd; - - const bool is_face_surface = inst->declaration().is(IfcSchema::IfcFaceSurface::Class()); - - if (is_face_surface) { - IfcSchema::IfcFaceSurface* fs = (IfcSchema::IfcFaceSurface*) l; - fs->FaceSurface(); - // FIXME: Surfaces are interpreted as a TopoDS_Shape - TopoDS_Shape surface_shape; - if (!convert_shape(fs->FaceSurface(), surface_shape)) return false; - - // FIXME: Assert this obtains the only face - TopExp_Explorer exp(surface_shape, TopAbs_FACE); - if (!exp.More()) return false; - - TopoDS_Face surface = TopoDS::Face(exp.Current()); - fd.surface() = BRep_Tool::Surface(surface); - } - - const int num_bounds = bounds->size(); - int num_outer_bounds = 0; - - for (IfcSchema::IfcFaceBound::list::it it = bounds->begin(); it != bounds->end(); ++it) { - IfcSchema::IfcFaceBound* bound = *it; - if (bound->declaration().is(IfcSchema::IfcFaceOuterBound::Class())) num_outer_bounds ++; - } - - // The number of outer bounds should be one according to the schema. Also Open Cascade - // expects this, but it is not strictly checked. Regardless, if the number is greater, - // the face will still be processed as long as there are no holes. A compound of faces - // is returned in that case. - if (num_bounds > 1 && num_outer_bounds > 1 && num_bounds != num_outer_bounds) { - Logger::Message(Logger::LOG_ERROR, "Invalid configuration of boundaries for:", l); - return false; - } - - if (num_outer_bounds > 1) { - Logger::Message(Logger::LOG_WARNING, "Multiple outer boundaries for:", l); - fd.all_outer() = true; - } - - TopTools_DataMapOfShapeInteger wire_senses; - - for (int process_interior = 0; process_interior <= 1; ++process_interior) { - for (IfcSchema::IfcFaceBound::list::it it = bounds->begin(); it != bounds->end(); ++it) { - IfcSchema::IfcFaceBound* bound = *it; - IfcSchema::IfcLoop* loop = bound->Bound(); - - bool same_sense = bound->Orientation(); - const bool is_interior = - !bound->declaration().is(IfcSchema::IfcFaceOuterBound::Class()) && - (num_bounds > 1) && - (num_outer_bounds < num_bounds); - - // The exterior face boundary is processed first - if (is_interior == !process_interior) continue; - - TopTools_ListOfShape wires; - TopoDS_Wire wire; - if (faceset_helper_ && loop->as()) { - if (!faceset_helper_->wires(loop->as(), wires)) { - Logger::Message(Logger::LOG_WARNING, "Face boundary loop not included", loop); - continue; - } - } else { - if (convert_wire(loop, wire)) { - wires.Append(wire); - } else { - Logger::Message(Logger::LOG_ERROR, "Failed to process face boundary loop", loop); - return false; - } - } - - if (wires.Size() > 1) { - Logger::Message(Logger::LOG_WARNING, "Face loop definition results in " + std::to_string(wires.Size()) + " loops", loop); - if (!is_interior) { - fd.all_outer() = true; - } - } - - for (auto& w : wires) { - if (!same_sense) { - w.Reverse(); - } - - wire_senses.Bind(w.Oriented(TopAbs_FORWARD), same_sense ? TopAbs_FORWARD : TopAbs_REVERSED); - - fd.wires().emplace_back(TopoDS::Wire(w)); - } - } - } - - if (fd.wires().empty()) { - Logger::Warning("Face with no boundaries", l); - return false; - } - - if (fd.surface().IsNull()) { - // Use the first wire to find a plane manually for polygonal wires - const TopoDS_Wire& wire = fd.wires().front(); - if (util::is_polyhedron(wire)) { - TopExp_Explorer exp(wire, TopAbs_EDGE); - int count = 0; - TopoDS_Edge edges[2]; - for (; exp.More(); exp.Next(), count++) { - if (count < 2) { - edges[count] = TopoDS::Edge(exp.Current()); - } - } - - if (count == 3) { - // Help Open Cascade by finding the plane more efficiently - double _, __; - Handle(Geom_Line) c1 = Handle(Geom_Line)::DownCast(BRep_Tool::Curve(edges[0], _, __)); - Handle(Geom_Line) c2 = Handle(Geom_Line)::DownCast(BRep_Tool::Curve(edges[1], _, __)); - - const gp_Vec ab = c1->Position().Direction(); - const gp_Vec ac = c2->Position().Direction(); - const gp_Vec cross = ab.Crossed(ac); - - if (cross.SquareMagnitude() > ALMOST_ZERO) { - const gp_Dir n = cross; - fd.surface() = new Geom_Plane(c1->Position().Location(), n); - } - } else { - gp_Pln pln; - if (util::approximate_plane_through_wire(wire, pln, getValue(GV_PRECISION))) { - fd.surface() = new Geom_Plane(pln); - } - } - } - } - - if (fd.surface().IsNull()) { - // BRepLib_FindSurface is used in case no surface is found or provided - - const TopoDS_Wire& wire = fd.wires().front(); - - BRepLib_FindSurface fs(wire, getValue(GV_PRECISION), true, true); - if (fs.Found()) { - fd.surface() = fs.Surface(); - ShapeFix_ShapeTolerance ftol; - ftol.SetTolerance(wire, fs.ToleranceReached(), TopAbs_WIRE); - } - } - - TopTools_ListOfShape face_list; - - if (fd.surface().IsNull()) { - // The set of wires is triangulated in case no surface can be found - Logger::Message(Logger::LOG_WARNING, "Triangulating face boundaries for face", l); - - if (fd.all_outer()) { - for (const auto& w : fd.wires()) { - TopTools_ListOfShape fl; - auto r = util::triangulate_wire({ w }, fl); - if (r == util::TRIANGULATE_WIRE_FAIL) { - continue; - } - face_list.Append(fl); - if (faceset_helper_ && r == util::TRIANGULATE_WIRE_NON_MANIFOLD) { - faceset_helper_->non_manifold() = true; - } - } - } else { - auto r = util::triangulate_wire(fd.wires(), face_list); - if (r != util::TRIANGULATE_WIRE_FAIL) { - if (faceset_helper_ && r == util::TRIANGULATE_WIRE_NON_MANIFOLD) { - faceset_helper_->non_manifold() = true; - } - } - } - } else if (!fd.all_outer()) { - BRepBuilderAPI_MakeFace mf(fd.surface(), fd.outer_wire()); - TopoDS_Face f = mf.Face(); - - if (mf.IsDone()) { - if (std::distance(fd.inner_wires().first, fd.inner_wires().second)) { - mf.Init(f); - - for (auto it = fd.inner_wires().first; it != fd.inner_wires().second; ++it) { - mf.Add(*it); - } - - face_list.Append(mf.Face()); - } else { - face_list.Append(f); - } - } - } else { - for (const auto& w : fd.wires()) { - BRepBuilderAPI_MakeFace mf(fd.surface(), w); - if (mf.IsDone()) { - face_list.Append(mf.Face()); - } - } - } - - if (!fd.surface().IsNull()) { - // Some fixes for orientation and p-curves. If we have no surface, it - // means the face has been triangulated in which case none of these - // fixes are necessary. - - if (fd.surface()->DynamicType() != STANDARD_TYPE(Geom_Plane)) { - // In case of (non-planar) face surface, p-curves need to be computed. - // For planar faces, Open Cascade generates p-curves on the fly. - - for (TopTools_ListIteratorOfListOfShape it(face_list); it.More(); it.Next()) { - ShapeFix_Shape sfs(it.Value()); - - Handle(ShapeExtend_MsgRegistrator) msg; - msg = new ShapeExtend_MsgRegistrator; - sfs.SetMsgRegistrator(msg); - - sfs.Perform(); - it.Value() = sfs.Shape(); - - ShapeExtend_DataMapIteratorOfDataMapOfShapeListOfMsg jt(msg->MapShape()); - for (; jt.More(); jt.Next()) { - Message_ListIteratorOfListOfMsg kt(jt.Value()); - for (; kt.More(); kt.Next()) { - char* c = new char[kt.Value().Value().LengthOfCString() + 1]; - kt.Value().Value().ToUTF8CString(c); - Logger::Notice(c, l); - delete[] c; - } - } - } - } - - for (TopTools_ListIteratorOfListOfShape it(face_list); it.More(); it.Next()) { - const TopoDS_Face& face = TopoDS::Face(it.Value()); - - ShapeFix_Face sfs(TopoDS::Face(face)); - TopTools_DataMapOfShapeListOfShape wire_map; - sfs.FixOrientation(wire_map); - - TopoDS_Iterator jt(face, false); - for (; jt.More(); jt.Next()) { - const TopoDS_Wire& w = TopoDS::Wire(jt.Value()); - // tfk: @todo if wire_map contains w, I would assume wire_senses also contains w, - // this is not the case in github issue #405. - if (wire_map.IsBound(w) && wire_senses.IsBound(w)) { - const TopTools_ListOfShape& shapes = wire_map.Find(w); - TopTools_ListIteratorOfListOfShape kt(shapes); - for (; kt.More(); kt.Next()) { - // Apparently the wire got reversed, so register it with opposite orientation in the map - wire_senses.Bind(kt.Value(), wire_senses.Find(w) == TopAbs_FORWARD ? TopAbs_REVERSED : TopAbs_FORWARD); - } - } - } - - it.Value() = sfs.Face(); - } - - for (TopTools_ListIteratorOfListOfShape it(face_list); it.More(); it.Next()) { - TopoDS_Face& face = TopoDS::Face(it.Value()); - - bool all_reversed = true; - TopoDS_Iterator jt(face, false); - for (; jt.More(); jt.Next()) { - const TopoDS_Wire& w = TopoDS::Wire(jt.Value()); - if (!wire_senses.IsBound(w.Oriented(TopAbs_FORWARD)) || (w.Orientation() == wire_senses.Find(w.Oriented(TopAbs_FORWARD)))) { - all_reversed = false; - } - } - - if (all_reversed) { - face.Reverse(); - } - } - } - - if (face_list.Extent() == 0) { - return false; - } else if (face_list.Extent() > 1) { - TopoDS_Compound compound; - BRep_Builder builder; - builder.MakeCompound(compound); - for (TopTools_ListIteratorOfListOfShape it(face_list); it.More(); it.Next()) { - TopoDS_Face& face = TopoDS::Face(it.Value()); - builder.Add(compound, face); - } - result = compound; - } else { - result = face_list.First(); - } - - return true; -} - -*/ \ No newline at end of file diff --git a/src/ifcgeom/mapping/IfcFaceBasedSurfaceModel.cpp b/src/ifcgeom/mapping/IfcFaceBasedSurfaceModel.cpp index eb64ff5e90..200f5b9f7d 100644 --- a/src/ifcgeom/mapping/IfcFaceBasedSurfaceModel.cpp +++ b/src/ifcgeom/mapping/IfcFaceBasedSurfaceModel.cpp @@ -21,7 +21,7 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFaceBasedSurfaceModel* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFaceBasedSurfaceModel& inst) { // @todo check styles? - return map_to_collection(this, inst->FbsmFaces()); + return map_to_collection(this, inst.FbsmFaces()); } diff --git a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp index e462fc75e0..9c7b551237 100644 --- a/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp +++ b/src/ifcgeom/mapping/IfcFixedReferenceSweptAreaSolid.cpp @@ -24,10 +24,10 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcFixedReferenceSweptAreaSolid -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid* inst) { - auto dir = map(inst->Directrix()); - auto ref = taxonomy::cast(map(inst->FixedReference())); - auto profile = taxonomy::cast(map(inst->SweptArea())); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid& inst) { + auto dir = map(inst.Directrix()); + auto ref = taxonomy::cast(map(inst.FixedReference())); + auto profile = taxonomy::cast(map(inst.SweptArea())); auto loft = taxonomy::make(); // @todo intialize as default @@ -42,14 +42,14 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid // IfcDirectrixCurveSweptAreaSolid introduced in 4.3 changed attribute type // from optional IfcParamValue to optional IfcCurveMeasureSelect. // Invocation of mapping on pre-4.3 models can never result in a piecewise_function. - if (inst->StartParam() && inst->StartParam()->as()) { - double s = *inst->StartParam()->as(); + if (inst.StartParam() && inst.StartParam().as()) { + double s = inst.StartParam().as(); if (s > start) { start = s; } } - if (inst->EndParam() && inst->EndParam()->as()) { - double e = *inst->EndParam()->as(); + if (inst.EndParam() && inst.EndParam().as()) { + double e = inst.EndParam().as(); if (e < end) { end = e; } @@ -71,7 +71,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid bool is_directrix_derived = false; #ifdef SCHEMA_HAS_IfcDirectrixDerivedReferenceSweptAreaSolid - if (inst->as()) { + if (inst.as()) { is_directrix_derived = true; } #endif @@ -116,8 +116,8 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcFixedReferenceSweptAreaSolid } } else { taxonomy::matrix4::ptr matrix; - if (inst->Position() != nullptr) { - matrix = taxonomy::cast(map(inst->Position())); + if (inst.Position()) { + matrix = taxonomy::cast(map(inst.Position())); } // TODO: Implement handling for non-alignment curves using sweep_along_curve auto sweep = taxonomy::make( diff --git a/src/ifcgeom/mapping/IfcGeometricSet.cpp b/src/ifcgeom/mapping/IfcGeometricSet.cpp index 2865c6a3e0..5b7590033b 100644 --- a/src/ifcgeom/mapping/IfcGeometricSet.cpp +++ b/src/ifcgeom/mapping/IfcGeometricSet.cpp @@ -21,6 +21,6 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcGeometricSet* inst) { - return map_to_collection(this, inst->Elements()); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcGeometricSet& inst) { + return map_to_collection(this, inst.Elements()); } diff --git a/src/ifcgeom/mapping/IfcGradientCurve.cpp b/src/ifcgeom/mapping/IfcGradientCurve.cpp index db016df0ca..f3eb501775 100644 --- a/src/ifcgeom/mapping/IfcGradientCurve.cpp +++ b/src/ifcgeom/mapping/IfcGradientCurve.cpp @@ -24,18 +24,18 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcGradientCurve -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcGradientCurve* inst) { - if (!inst->BaseCurve()->as()) +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcGradientCurve& inst) { + if (!inst.BaseCurve().as()) Logger::Warning("Expected IfcGradientCurve.BaseCurve to be IfcCompositeCurve", inst); // CT 4.1.7.1.1.2 - auto segments = inst->Segments(); + auto segments = inst.Segments(); taxonomy::piecewise_function::spans_t spans; - for (auto& segment : *segments) { - if (segment->as()) { + for (auto& segment : segments) { + if (segment.as()) { // @todo check that we don't get a mixture of implicit and explicit definitions - auto crv = map(segment->as()); + auto crv = map(segment.as()); if (auto fi = taxonomy::dcast(crv); crv && fi /*crv->kind() == taxonomy::FUNCTION_ITEM*/) { // crv->kind() is polymorphic and the kind of the actual function_item is returned. PWF can have spans of any FUNCTION_ITEM // for this reason, a dynamic cast is used and if crv is a function_item it is added to the span @@ -52,10 +52,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcGradientCurve* inst) { // Get starting position of gradient curve, which is relative to the base curve // The gradient curve can start before or after the start of the base curve - auto first_segment = *(segments->begin()); + auto& first_segment = segments.front(); taxonomy::matrix4::ptr p; #ifdef SCHEMA_IfcCurveSegment_HAS_Placement - p = taxonomy::cast(map(first_segment->as()->Placement())); + p = taxonomy::cast(map(first_segment.as().Placement())); #else throw std::runtime_error("Unsupported schema"); #endif @@ -66,7 +66,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcGradientCurve* inst) { auto vertical = taxonomy::make(gradient_start, spans); // create the horizontal pwf - auto horizontal = taxonomy::cast(map(inst->BaseCurve())); + auto horizontal = taxonomy::cast(map(inst.BaseCurve())); // create the composite gradient curve function auto gradient_function = taxonomy::make(horizontal, vertical, inst); diff --git a/src/ifcgeom/mapping/IfcHalfSpaceSolid.cpp b/src/ifcgeom/mapping/IfcHalfSpaceSolid.cpp index cb407c4508..ede18b9821 100644 --- a/src/ifcgeom/mapping/IfcHalfSpaceSolid.cpp +++ b/src/ifcgeom/mapping/IfcHalfSpaceSolid.cpp @@ -21,16 +21,17 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcHalfSpaceSolid* inst) { - IfcSchema::IfcSurface* surface = inst->BaseSurface(); - if (!surface->declaration().is(IfcSchema::IfcPlane::Class())) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcHalfSpaceSolid& inst) { + auto surface = inst.BaseSurface(); + auto plane = surface.as(); + if (!plane) { Logger::Message(Logger::LOG_ERROR, "Unsupported BaseSurface:", surface); return nullptr; } auto p = taxonomy::make(); - p->matrix = taxonomy::cast(map(((IfcSchema::IfcPlane*)surface)->Position())); + p->matrix = taxonomy::cast(map(plane.Position())); auto f = taxonomy::make(); - f->orientation.reset(!inst->AgreementFlag()); + f->orientation.emplace(!inst.AgreementFlag()); f->basis = p; auto sh = taxonomy::make(); sh->children.push_back(f); diff --git a/src/ifcgeom/mapping/IfcIShapeProfileDef.cpp b/src/ifcgeom/mapping/IfcIShapeProfileDef.cpp index 1b653a6857..3cc05e7f9a 100644 --- a/src/ifcgeom/mapping/IfcIShapeProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcIShapeProfileDef.cpp @@ -23,21 +23,21 @@ using namespace ifcopenshell::geometry; #include "../profile_helper.h" -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcIShapeProfileDef* inst) { - const bool doFillet1 = !!inst->FilletRadius(); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcIShapeProfileDef& inst) { + const bool doFillet1 = !!inst.FilletRadius(); #ifdef SCHEMA_IfcIShapeProfileDef_HAS_FlangeEdgeRadius - const bool doFlangeEdgeRadius = !!inst->FlangeEdgeRadius(); - const bool hasSlope = !!inst->FlangeSlope(); + const bool doFlangeEdgeRadius = !!inst.FlangeEdgeRadius(); + const bool hasSlope = !!inst.FlangeSlope(); #else const bool doFlangeEdgeRadius = false; #endif - const double x1 = inst->OverallWidth() / 2.0f * length_unit_; - const double y = inst->OverallDepth() / 2.0f * length_unit_; - const double d1 = inst->WebThickness() / 2.0f * length_unit_; - const double ft1 = inst->FlangeThickness() * length_unit_; + const double x1 = inst.OverallWidth() / 2.0f * length_unit_; + const double y = inst.OverallDepth() / 2.0f * length_unit_; + const double d1 = inst.WebThickness() / 2.0f * length_unit_; + const double ft1 = inst.FlangeThickness() * length_unit_; #ifdef SCHEMA_IfcIShapeProfileDef_HAS_FlangeEdgeRadius - const double slope = inst->FlangeSlope().get_value_or(0.) * angle_unit_; + const double slope = inst.FlangeSlope().value_or(0.) * angle_unit_; #endif double dy = 0.; @@ -49,11 +49,11 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcIShapeProfileDef* inst) { double ft2 = ft1; if (doFillet1) { - f1 = *inst->FilletRadius() * length_unit_; + f1 = *inst.FilletRadius() * length_unit_; } #ifdef SCHEMA_IfcIShapeProfileDef_HAS_FlangeEdgeRadius if (doFlangeEdgeRadius) { - fe1 = *inst->FlangeEdgeRadius() * length_unit_; + fe1 = *inst.FlangeEdgeRadius() * length_unit_; } if (hasSlope) { dy = (x1 - d1) * tan(slope); @@ -63,15 +63,14 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcIShapeProfileDef* inst) { bool doFillet2 = doFillet1; // @todo in IFC4 a IfcAsymmetricIShapeProfileDef is not a subtype anymore of IfcIShapeProfileDef! - if (inst->declaration().is(IfcSchema::IfcAsymmetricIShapeProfileDef::Class())) { - IfcSchema::IfcAsymmetricIShapeProfileDef* assym = (IfcSchema::IfcAsymmetricIShapeProfileDef*) inst; - x2 = assym->TopFlangeWidth() / 2. * length_unit_; - doFillet2 = !!assym->TopFlangeFilletRadius(); + if (auto assym = inst.as()) { + x2 = assym.TopFlangeWidth() / 2. * length_unit_; + doFillet2 = !!assym.TopFlangeFilletRadius(); if (doFillet2) { - f2 = *assym->TopFlangeFilletRadius() * length_unit_; + f2 = *assym.TopFlangeFilletRadius() * length_unit_; } - if (assym->TopFlangeThickness()) { - ft2 = *assym->TopFlangeThickness() * length_unit_; + if (assym.TopFlangeThickness()) { + ft2 = *assym.TopFlangeThickness() * length_unit_; } } else { f2 = f1; @@ -88,10 +87,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcIShapeProfileDef* inst) { taxonomy::matrix4::ptr m4; bool has_position = true; #ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = !!inst->Position(); + has_position = !!inst.Position(); #endif if (has_position) { - m4 = taxonomy::cast(map(inst->Position())); + m4 = taxonomy::cast(map(inst.Position())); } return profile_helper(m4, { diff --git a/src/ifcgeom/mapping/IfcIndexedPolyCurve.cpp b/src/ifcgeom/mapping/IfcIndexedPolyCurve.cpp index 24f574c80f..95095bde26 100644 --- a/src/ifcgeom/mapping/IfcIndexedPolyCurve.cpp +++ b/src/ifcgeom/mapping/IfcIndexedPolyCurve.cpp @@ -23,14 +23,14 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcIndexedPolyCurve -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcIndexedPolyCurve* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcIndexedPolyCurve& inst) { - IfcSchema::IfcCartesianPointList* point_list = inst->Points(); + auto point_list = inst.Points(); std::vector< std::vector > coordinates; - if (point_list->as()) { - coordinates = point_list->as()->CoordList(); - } else if (point_list->as()) { - coordinates = point_list->as()->CoordList(); + if (point_list.as()) { + coordinates = point_list.as().CoordList(); + } else if (point_list.as()) { + coordinates = point_list.as().CoordList(); } std::vector points; @@ -50,13 +50,11 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcIndexedPolyCurve* inst) { auto loop = taxonomy::make(); - if(inst->Segments()) { - auto segments = *inst->Segments(); - for (auto it = segments->begin(); it != segments->end(); ++it) { - auto segment = *it; - if (segment->as()) { - IfcSchema::IfcLineIndex* line = segment->as(); - std::vector indices = *line; + if(inst.Segments()) { + auto segments = inst.Segments(); + for (auto& segment : *segments) { + if (auto line = segment.as()) { + std::vector indices = line; taxonomy::point3::ptr previous; for (std::vector::const_iterator jt = indices.begin(); jt != indices.end(); ++jt) { if (*jt < 1 || *jt > max_index) { @@ -68,9 +66,8 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcIndexedPolyCurve* inst) { } previous = current; } - } else if (segment->as()) { - IfcSchema::IfcArcIndex* arc = segment->as(); - std::vector indices = *arc; + } else if (auto arc = segment.as()) { + std::vector indices = arc; if (indices.size() != 3) { throw IfcParse::IfcException("Invalid IfcArcIndex encountered"); } @@ -93,7 +90,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcIndexedPolyCurve* inst) { Logger::Warning("Ignoring segment on", inst); } } else { - throw IfcParse::IfcException("Unexpected IfcIndexedPolyCurve segment of type " + segment->as()->declaration().name()); + throw IfcParse::IfcException("Unexpected IfcIndexedPolyCurve segment of type " + segment.concrete().declaration().name()); } } } else if (points.begin() < points.end()) { diff --git a/src/ifcgeom/mapping/IfcLShapeProfileDef.cpp b/src/ifcgeom/mapping/IfcLShapeProfileDef.cpp index 4136fa0d4b..e3106661cb 100644 --- a/src/ifcgeom/mapping/IfcLShapeProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcLShapeProfileDef.cpp @@ -23,23 +23,23 @@ using namespace ifcopenshell::geometry; #include "../profile_helper.h" -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcLShapeProfileDef* inst) { - const bool hasSlope = !!inst->LegSlope(); - const bool doEdgeFillet = !!inst->EdgeRadius(); - const bool doFillet = !!inst->FilletRadius(); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcLShapeProfileDef& inst) { + const bool hasSlope = !!inst.LegSlope(); + const bool doEdgeFillet = !!inst.EdgeRadius(); + const bool doFillet = !!inst.FilletRadius(); - const double y = inst->Depth() / 2.0f * length_unit_; - const double x = inst->Width().get_value_or(inst->Depth()) / 2.0f * length_unit_; - const double d = inst->Thickness() * length_unit_; - const double slope = inst->LegSlope().get_value_or(0.) * angle_unit_; + const double y = inst.Depth() / 2.0f * length_unit_; + const double x = inst.Width().value_or(inst.Depth()) / 2.0f * length_unit_; + const double d = inst.Thickness() * length_unit_; + const double slope = inst.LegSlope().value_or(0.) * angle_unit_; double f1 = 0.0f; double f2 = 0.0f; if (doFillet) { - f1 = *inst->FilletRadius() * length_unit_; + f1 = *inst.FilletRadius() * length_unit_; } if ( doEdgeFillet) { - f2 = *inst->EdgeRadius() * length_unit_; + f2 = *inst.EdgeRadius() * length_unit_; } const double tol = settings_.get().get(); @@ -88,10 +88,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcLShapeProfileDef* inst) { taxonomy::matrix4::ptr m4; bool has_position = true; #ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = !!inst->Position(); + has_position = !!inst.Position(); #endif if (has_position) { - m4 = taxonomy::cast(map(inst->Position())); + m4 = taxonomy::cast(map(inst.Position())); } return profile_helper(m4, { diff --git a/src/ifcgeom/mapping/IfcLine.cpp b/src/ifcgeom/mapping/IfcLine.cpp index 5f0e556a1d..7f4b50dbe3 100644 --- a/src/ifcgeom/mapping/IfcLine.cpp +++ b/src/ifcgeom/mapping/IfcLine.cpp @@ -21,11 +21,11 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcLine* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcLine& inst) { // @todo test with trimmed curve on non-normalized direction auto l = taxonomy::make(); - auto pnt = taxonomy::cast(map(inst->Pnt())); - auto dir = taxonomy::cast(map(inst->Dir())); + auto pnt = taxonomy::cast(map(inst.Pnt())); + auto dir = taxonomy::cast(map(inst.Dir())); l->matrix = taxonomy::make(pnt->ccomponents(), dir->ccomponents()); return l; } diff --git a/src/ifcgeom/mapping/IfcManifoldSolidBrep.cpp b/src/ifcgeom/mapping/IfcManifoldSolidBrep.cpp index 4d6f23fd46..a72b5b939c 100644 --- a/src/ifcgeom/mapping/IfcManifoldSolidBrep.cpp +++ b/src/ifcgeom/mapping/IfcManifoldSolidBrep.cpp @@ -21,24 +21,24 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcManifoldSolidBrep* inst) { - IfcSchema::IfcClosedShell::list::ptr voids(new IfcSchema::IfcClosedShell::list); - if (inst->declaration().is(IfcSchema::IfcFacetedBrepWithVoids::Class())) { - voids = inst->as()->Voids(); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcManifoldSolidBrep& inst) { + std::vector voids; + if (inst.declaration().is(IfcSchema::IfcFacetedBrepWithVoids::Class())) { + voids = inst.as().Voids(); } #ifdef SCHEMA_HAS_IfcAdvancedBrepWithVoids - if (inst->declaration().is(IfcSchema::IfcAdvancedBrepWithVoids::Class())) { - voids = inst->as()->Voids(); + if (inst.declaration().is(IfcSchema::IfcAdvancedBrepWithVoids::Class())) { + voids = inst.as().Voids(); } #endif taxonomy::solid::ptr solid; - if (voids->size()) { + if (!voids.empty()) { solid = map_to_collection(this, voids); } else { solid = taxonomy::make(); } - solid->children.insert(solid->children.begin(), taxonomy::cast(map(inst->Outer()))); + solid->children.insert(solid->children.begin(), taxonomy::cast(map(inst.Outer()))); return solid; } diff --git a/src/ifcgeom/mapping/IfcMappedItem.cpp b/src/ifcgeom/mapping/IfcMappedItem.cpp index 8c9bbf631d..2565233472 100644 --- a/src/ifcgeom/mapping/IfcMappedItem.cpp +++ b/src/ifcgeom/mapping/IfcMappedItem.cpp @@ -21,19 +21,19 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcMappedItem* inst) { - IfcSchema::IfcCartesianTransformationOperator* transform = inst->MappingTarget(); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcMappedItem& inst) { + auto transform = inst.MappingTarget(); taxonomy::matrix4::ptr gtrsf = taxonomy::cast(map(transform)); - IfcSchema::IfcRepresentationMap* rmap = inst->MappingSource(); - IfcSchema::IfcAxis2Placement* placement = rmap->MappingOrigin(); + auto rmap = inst.MappingSource(); + auto placement = rmap.MappingOrigin(); taxonomy::matrix4::ptr trsf2 = taxonomy::cast(map(placement)); Eigen::Matrix4d res = gtrsf->ccomponents() * trsf2->ccomponents(); // @todo immutable for caching? // @todo allow for multiple levels of matrix? - auto shapes = taxonomy::dcast(map(rmap->MappedRepresentation())); + auto shapes = taxonomy::dcast(map(rmap.MappedRepresentation())); if (shapes == nullptr) { - if (failed_on_purpose_.find(rmap->MappedRepresentation()) != failed_on_purpose_.end()) { + if (failed_on_purpose_.find(rmap.MappedRepresentation()) != failed_on_purpose_.end()) { // propagate failed_on_purpose_.insert(inst); } diff --git a/src/ifcgeom/mapping/IfcObjectPlacement.cpp b/src/ifcgeom/mapping/IfcObjectPlacement.cpp index be0c222e08..9f5b07bee6 100644 --- a/src/ifcgeom/mapping/IfcObjectPlacement.cpp +++ b/src/ifcgeom/mapping/IfcObjectPlacement.cpp @@ -21,45 +21,45 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcObjectPlacement* inst) { - const IfcSchema::IfcObjectPlacement* relative_to = nullptr; - const IfcUtil::IfcBaseInterface* transform; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcObjectPlacement& inst) { + IfcSchema::IfcObjectPlacement relative_to; + express::Base transform; - const IfcSchema::IfcAxis2Placement3D* fallback = nullptr; + IfcSchema::IfcAxis2Placement3D fallback; - if (inst->as()) { - transform = inst->as()->RelativePlacement(); + if (inst.as()) { + transform = inst.as().RelativePlacement(); } #ifdef SCHEMA_HAS_IfcLinearPlacement - else if (inst->as()) { + else if (inst.as()) { #ifdef SCHEMA_IfcLinearPlacement_HAS_RelativePlacement - transform = inst->as()->RelativePlacement(); - fallback = inst->as()->CartesianPosition(); + transform = inst.as().RelativePlacement(); + fallback = inst.as().CartesianPosition(); #else // @todo Ifc4x1 and Ifc4x2 don't have RelativePlacement return nullptr; #endif } #endif - else if (inst->as()) { + else if (inst.as()) { // @todo a bit harder to map without kernel return nullptr; } #ifdef SCHEMA_IfcObjectPlacement_HAS_PlacementRelTo - relative_to = inst->PlacementRelTo(); + relative_to = inst.PlacementRelTo(); #else - if (inst->as()) { - relative_to = inst->as()->PlacementRelTo(); + if (inst.as()) { + relative_to = inst.as()->PlacementRelTo(); } #endif bool parent_placement_ignored = false; if (relative_to && (placement_rel_to_type_ || placement_rel_to_instance_)) { - IfcSchema::IfcProduct::list::ptr parent_places = relative_to->PlacesObject(); - for (auto iter = parent_places->begin(); iter != parent_places->end(); ++iter) { - if ((placement_rel_to_type_ && (*iter)->declaration().is(*placement_rel_to_type_)) || - (placement_rel_to_instance_ && (*iter)->as() == placement_rel_to_instance_)) { + std::vector parent_places = relative_to.PlacesObject(); + for (auto& pp : parent_places) { + if ((placement_rel_to_type_ && pp.declaration().is(*placement_rel_to_type_)) || + (placement_rel_to_instance_ && pp == placement_rel_to_instance_)) { parent_placement_ignored = true; } } @@ -108,7 +108,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcObjectPlacement* inst) { /* // @todo -if (gridp = inst->as()) { +if (gridp = inst.as()) { gp_Trsf grid_position; auto axes = gridp->PlacementLocation()->IntersectingAxes(); diff --git a/src/ifcgeom/mapping/IfcOffsetCurveByDistance.cpp b/src/ifcgeom/mapping/IfcOffsetCurveByDistance.cpp index 92fc2bee7b..fe3385fcf1 100644 --- a/src/ifcgeom/mapping/IfcOffsetCurveByDistance.cpp +++ b/src/ifcgeom/mapping/IfcOffsetCurveByDistance.cpp @@ -30,15 +30,15 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcOffsetCurveByDistances -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcOffsetCurveByDistances* inst) { - auto offset_values = inst->OffsetValues(); - if (offset_values->size() == 0) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcOffsetCurveByDistances& inst) { + auto offset_values = inst.OffsetValues(); + if (offset_values.empty()) { Logger::Error("IfcOffsetCurveByDistances must have at least one offset value"); } - auto first_offset_value = *(offset_values->begin()); + auto& first_offset_value = offset_values.front(); - auto basis_curve = inst->BasisCurve(); + auto basis_curve = inst.BasisCurve(); // // IfcOffsetCurveByDistances can be based on another IfcOffsetCurveByDistances, an IfcGradientCurve, or an IfcCompositeCurve // // When based on IfcOffsetCurveByDistances, it creates a chain of curves that we must navigate down to the base curve. @@ -66,9 +66,9 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcOffsetCurveByDistances* inst taxonomy::piecewise_function::spans_t offset_spans; #if defined SCHEMA_HAS_IfcDistanceExpression - double first_distance = first_offset_value->DistanceAlong(); + double first_distance = first_offset_value.DistanceAlong(); #else - double first_distance = *first_offset_value->DistanceAlong()->as(); + double first_distance = first_offset_value.DistanceAlong().as(); #endif first_distance *= length_unit_; @@ -80,8 +80,8 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcOffsetCurveByDistances* inst { // First offset is defined after the start of the curve so the lateral and vertical offsets // implicitly continue with the same value towards the start of the basis curve - double py = first_offset_value->OffsetLateral().get_value_or(0.0); - double pz = first_offset_value->OffsetVertical().get_value_or(0.0); + double py = first_offset_value.OffsetLateral().value_or(0.0); + double pz = first_offset_value.OffsetVertical().value_or(0.0); py *= length_unit_; pz *= length_unit_; @@ -93,17 +93,17 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcOffsetCurveByDistances* inst offset_spans.emplace_back(taxonomy::make(first_distance, fn)); } - auto iter = offset_values->begin(); + auto iter = offset_values.begin(); auto next = std::next(iter); auto prev = std::prev(next); - auto end = offset_values->end(); + auto end = offset_values.end(); for (; next != end; prev++, next++) { #if defined SCHEMA_HAS_IfcDistanceExpression - double dp = (*prev)->DistanceAlong(); - double dn = (*next)->DistanceAlong(); + double dp = (*prev).DistanceAlong(); + double dn = (*next).DistanceAlong(); #else - double dp = *(*prev)->DistanceAlong()->as(); - double dn = *(*next)->DistanceAlong()->as(); + double dp = prev->DistanceAlong().as(); + double dn = next->DistanceAlong().as(); #endif dp *= length_unit_; dn *= length_unit_; @@ -115,10 +115,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcOffsetCurveByDistances* inst } double l = (dn - dp); - double yn = (*next)->OffsetLateral().get_value_or(0.0) * length_unit_; - double yp = (*prev)->OffsetLateral().get_value_or(0.0) * length_unit_; - double zn = (*next)->OffsetVertical().get_value_or(0.0) * length_unit_; - double zp = (*prev)->OffsetVertical().get_value_or(0.0) * length_unit_; + double yn = next->OffsetLateral().value_or(0.0) * length_unit_; + double yp = prev->OffsetLateral().value_or(0.0) * length_unit_; + double zn = next->OffsetVertical().value_or(0.0) * length_unit_; + double zp = prev->OffsetVertical().value_or(0.0) * length_unit_; if ( (dp < 0.0 && dn < 0.0) || (basis_curve_length < dp && basis_curve_length < dn) ) { // both points are either before the start of the curve or after the end of the curve. ignore them. @@ -160,14 +160,14 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcOffsetCurveByDistances* inst #if defined SCHEMA_HAS_IfcDistanceExpression double last_distance = (*prev)->DistanceAlong() * length_unit_; #else - double last_distance = *(*prev)->DistanceAlong()->as() * length_unit_; + double last_distance = (double) prev->DistanceAlong().as() * length_unit_; #endif if (last_distance < basis_curve_length) { // Last offset is defined before the end of the curve so the lateral and vertical offsets // implicitly continue with the same value towards the end of the basis curve - double py = (*prev)->OffsetLateral().get_value_or(0.0); - double pz = (*prev)->OffsetVertical().get_value_or(0.0); + double py = prev->OffsetLateral().value_or(0.0); + double pz = prev->OffsetVertical().value_or(0.0); py *= length_unit_; pz *= length_unit_; double l = basis_curve_length - last_distance; diff --git a/src/ifcgeom/mapping/IfcOpenCrossProfileDef.cpp b/src/ifcgeom/mapping/IfcOpenCrossProfileDef.cpp index 81c47dbcac..7c5a1f2902 100644 --- a/src/ifcgeom/mapping/IfcOpenCrossProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcOpenCrossProfileDef.cpp @@ -30,37 +30,37 @@ const double PI = boost::math::constants::pi(); #ifdef SCHEMA_HAS_IfcOpenCrossProfileDef -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcOpenCrossProfileDef* inst) { - if (inst->ProfileType() != IfcSchema::IfcProfileTypeEnum::IfcProfileType_CURVE) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcOpenCrossProfileDef& inst) { + if (inst.ProfileType() != IfcSchema::IfcProfileTypeEnum::IfcProfileType_CURVE) { Logger::Warning("Expected IfcOpenCrossProfileDef.ProfileType to be CURVE", inst); return nullptr; } std::vector points; taxonomy::point3::ptr start; - if (inst->OffsetPoint()) { - start = taxonomy::cast(map(inst->OffsetPoint())); + if (inst.OffsetPoint()) { + start = taxonomy::cast(map(inst.OffsetPoint())); } else { start = taxonomy::make(0., 0., 0.); } points.push_back(start); - boost::optional> tags = inst->Tags(); - boost::optional tag = boost::none; - if (tags.has_value() && !tags.get().empty()) { - tag = tags.get()[0]; + std::optional> tags = inst.Tags(); + std::optional tag; + if (tags.has_value() && !tags.value().empty()) { + tag = tags.value()[0]; } // start->tag = tag; - auto widths = inst->Widths(); - auto angles = inst->Slopes(); // these are actually angles, but the attribute is called Slopes + auto widths = inst.Widths(); + auto angles = inst.Slopes(); // these are actually angles, but the attribute is called Slopes if (widths.size() != angles.size()) { Logger::Warning("Expected Widths and Slopes to be equal length, but got " + std::to_string(widths.size()) + " and " + std::to_string(angles.size()) + " respectively", inst); return nullptr; } - auto horizontal_widths = inst->HorizontalWidths(); + auto horizontal_widths = inst.HorizontalWidths(); double x = start->ccomponents().x(); double y = start->ccomponents().y(); @@ -75,8 +75,8 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcOpenCrossProfileDef* inst) { y += dy; z += dz; - if (tags.has_value() && !tags.get().empty()) { - tag = tags.get()[i+1]; + if (tags.has_value() && !tags.value().empty()) { + tag = tags.value()[i+1]; } points.push_back(taxonomy::make(x, y, z)); diff --git a/src/ifcgeom/mapping/IfcOrientedEdge.cpp b/src/ifcgeom/mapping/IfcOrientedEdge.cpp index 769a8870ee..7f719dbfc4 100644 --- a/src/ifcgeom/mapping/IfcOrientedEdge.cpp +++ b/src/ifcgeom/mapping/IfcOrientedEdge.cpp @@ -21,10 +21,10 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcOrientedEdge* inst) { - auto e = taxonomy::cast(map(inst->EdgeElement())); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcOrientedEdge& inst) { + auto e = taxonomy::cast(map(inst.EdgeElement())); e.reset(e->clone_()); - if (!inst->Orientation()) { + if (!inst.Orientation()) { e->reverse(); } return e; diff --git a/src/ifcgeom/mapping/IfcPlane.cpp b/src/ifcgeom/mapping/IfcPlane.cpp index cd2326bb31..30be44a793 100644 --- a/src/ifcgeom/mapping/IfcPlane.cpp +++ b/src/ifcgeom/mapping/IfcPlane.cpp @@ -21,8 +21,8 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPlane* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPlane& inst) { auto p = taxonomy::make(); - p->matrix = taxonomy::cast(map(inst->Position())); + p->matrix = taxonomy::cast(map(inst.Position())); return p; } diff --git a/src/ifcgeom/mapping/IfcPointByDistanceExpression.cpp b/src/ifcgeom/mapping/IfcPointByDistanceExpression.cpp index 180226fb82..e9f5dc6f23 100644 --- a/src/ifcgeom/mapping/IfcPointByDistanceExpression.cpp +++ b/src/ifcgeom/mapping/IfcPointByDistanceExpression.cpp @@ -26,9 +26,9 @@ using namespace ifcopenshell::geometry; #if defined SCHEMA_HAS_IfcPointByDistanceExpression -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPointByDistanceExpression* inst) { - auto u = (*inst->DistanceAlong()->as()) * length_unit_; - auto basis_curve = map(inst->BasisCurve()); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPointByDistanceExpression& inst) { + auto u = (double) inst.DistanceAlong().as() * length_unit_; + auto basis_curve = map(inst.BasisCurve()); taxonomy::function_item::ptr curve = taxonomy::dcast(basis_curve); if (!curve) { // if the basis curve is not a function_item, the cast it to piecewise_function. the casting operator @@ -43,19 +43,19 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPointByDistanceExpression* i auto z = m.col(2).head<3>(); auto x = m.col(0).head<3>(); - if (inst->OffsetLateral().has_value()) { - auto offset_lateral = inst->OffsetLateral().get() * length_unit_; + if (inst.OffsetLateral().has_value()) { + auto offset_lateral = inst.OffsetLateral().value() * length_unit_; auto y = Eigen::Vector3d(m.col(1)(0), m.col(1)(1), m.col(1)(2)); o += offset_lateral * y; } - if (inst->OffsetVertical().has_value()) { - auto offset_vertical = inst->OffsetVertical().get() * length_unit_; + if (inst.OffsetVertical().has_value()) { + auto offset_vertical = inst.OffsetVertical().value() * length_unit_; o += offset_vertical * z; } - if (inst->OffsetLongitudinal().has_value()) { - auto offset_longitudinal = inst->OffsetLongitudinal().get() * length_unit_; + if (inst.OffsetLongitudinal().has_value()) { + auto offset_longitudinal = inst.OffsetLongitudinal().value() * length_unit_; o += offset_longitudinal* x; } diff --git a/src/ifcgeom/mapping/IfcPolyLoop.cpp b/src/ifcgeom/mapping/IfcPolyLoop.cpp index 1149bd64bd..5eee9834c8 100644 --- a/src/ifcgeom/mapping/IfcPolyLoop.cpp +++ b/src/ifcgeom/mapping/IfcPolyLoop.cpp @@ -23,13 +23,13 @@ using namespace ifcopenshell::geometry; #include "../profile_helper.h" -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPolyLoop* inst) { - IfcSchema::IfcCartesianPoint::list::ptr points = inst->Polygon(); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPolyLoop& inst) { + std::vector points = inst.Polygon(); // Parse and store the points in a sequence std::vector polygon; - polygon.reserve(points->size()); - std::transform(points->begin(), points->end(), std::back_inserter(polygon), [this](const IfcSchema::IfcCartesianPoint* p) { + polygon.reserve(points.size()); + std::transform(points.begin(), points.end(), std::back_inserter(polygon), [this](const IfcSchema::IfcCartesianPoint& p) { return taxonomy::cast(map(p)); }); diff --git a/src/ifcgeom/mapping/IfcPolygonalBoundedHalfSpace.cpp b/src/ifcgeom/mapping/IfcPolygonalBoundedHalfSpace.cpp index 950d19c625..77acf88824 100644 --- a/src/ifcgeom/mapping/IfcPolygonalBoundedHalfSpace.cpp +++ b/src/ifcgeom/mapping/IfcPolygonalBoundedHalfSpace.cpp @@ -21,10 +21,10 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPolygonalBoundedHalfSpace* inst) { - auto s = taxonomy::cast(map_impl((IfcSchema::IfcHalfSpaceSolid*) inst)); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPolygonalBoundedHalfSpace& inst) { + auto s = taxonomy::cast(map_impl((IfcSchema::IfcHalfSpaceSolid&) inst)); auto f = s->children[0]->children[0]; - f->children = { taxonomy::cast(map(inst->PolygonalBoundary())) }; - f->matrix = taxonomy::cast(map(inst->Position())); + f->children = { taxonomy::cast(map(inst.PolygonalBoundary())) }; + f->matrix = taxonomy::cast(map(inst.Position())); return s; } diff --git a/src/ifcgeom/mapping/IfcPolygonalFaceSet.cpp b/src/ifcgeom/mapping/IfcPolygonalFaceSet.cpp index c3f7ff7219..2b3613b7cb 100644 --- a/src/ifcgeom/mapping/IfcPolygonalFaceSet.cpp +++ b/src/ifcgeom/mapping/IfcPolygonalFaceSet.cpp @@ -23,10 +23,10 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcPolygonalFaceSet -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPolygonalFaceSet* inst) { - IfcSchema::IfcCartesianPointList3D* point_list = inst->Coordinates(); - auto coordinates = point_list->CoordList(); - auto polygonal_faces = inst->Faces(); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPolygonalFaceSet& inst) { + auto point_list = inst.Coordinates(); + auto coordinates = point_list.CoordList(); + auto polygonal_faces = inst.Faces(); std::vector points; points.reserve(coordinates.size()); @@ -41,7 +41,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPolygonalFaceSet* inst) { auto shell = taxonomy::make(); - for (auto& f : *polygonal_faces) { + for (auto& f : polygonal_faces) { auto fa = taxonomy::make(); shell->children.push_back(fa); @@ -49,7 +49,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPolygonalFaceSet* inst) { auto loop = taxonomy::make(); fa->children = { loop }; loop->external = true; - auto indices = f->CoordIndex(); + auto indices = f.CoordIndex(); taxonomy::point3::ptr previous; for (std::vector::const_iterator jt = indices.begin(); jt != indices.end(); ++jt) { if (*jt < 1 || *jt > max_index) { @@ -67,8 +67,8 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPolygonalFaceSet* inst) { } } - if (f->as()) { - auto indices = f->as()->InnerCoordIndices(); + if (auto withvoids = f.as()) { + auto indices = withvoids.InnerCoordIndices(); { taxonomy::point3::ptr previous; for (auto& li : indices) { diff --git a/src/ifcgeom/mapping/IfcPolyline.cpp b/src/ifcgeom/mapping/IfcPolyline.cpp index a55a6d3d7d..6beea38fb8 100644 --- a/src/ifcgeom/mapping/IfcPolyline.cpp +++ b/src/ifcgeom/mapping/IfcPolyline.cpp @@ -23,13 +23,13 @@ using namespace ifcopenshell::geometry; #include "../profile_helper.h" -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPolyline* inst) { - IfcSchema::IfcCartesianPoint::list::ptr points = inst->Points(); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcPolyline& inst) { + std::vector points = inst.Points(); // Parse and store the points in a sequence std::vector polygon; - polygon.reserve(points->size()); - std::transform(points->begin(), points->end(), std::back_inserter(polygon), [this](const IfcSchema::IfcCartesianPoint* p) { + polygon.reserve(points.size()); + std::transform(points.begin(), points.end(), std::back_inserter(polygon), [this](const IfcSchema::IfcCartesianPoint& p) { return taxonomy::cast(map(p)); }); diff --git a/src/ifcgeom/mapping/IfcProduct.cpp b/src/ifcgeom/mapping/IfcProduct.cpp index 03cf3555ed..d1c51310d5 100644 --- a/src/ifcgeom/mapping/IfcProduct.cpp +++ b/src/ifcgeom/mapping/IfcProduct.cpp @@ -4,12 +4,12 @@ using namespace ifcopenshell::geometry; using namespace IfcGeom; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcProduct* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcProduct& inst) { // @todo decide on this, what happens in the product mapping? // currently things like openings, layers and materials are processed in the converter auto c = taxonomy::make(); - if (inst->ObjectPlacement()) { - c->matrix = taxonomy::cast(map(inst->ObjectPlacement())); + if (inst.ObjectPlacement()) { + c->matrix = taxonomy::cast(map(inst.ObjectPlacement())); } else { // @todo Otherwise we get crashes in the serializer, but maybe fix them there..? c->matrix = taxonomy::make(); @@ -21,7 +21,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcProduct* inst) { auto openings = find_openings(inst); // @todo const cast - auto reps = inst->data().file->traverse((IfcSchema::IfcProduct*) inst, 2)->as(); + auto reps = inst.data().file->traverse((IfcSchema::IfcProduct*) inst, 2)->as(); IfcSchema::IfcRepresentation* body = nullptr; for (auto& rep : *reps) { if (rep->RepresentationIdentifier()) { @@ -35,7 +35,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcProduct* inst) { } auto c = new taxonomy::collection; - c->matrix = taxonomy::cast(map(inst->ObjectPlacement())); + c->matrix = taxonomy::cast(map(inst.ObjectPlacement())); const auto single_material = get_single_material_association(inst); if (single_material) { @@ -54,7 +54,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcProduct* inst) { ci.setIdentity(); } - aggregate_of_instance::ptr operands(new aggregate_of_instance); + std::vector operands(new aggregate_of_instance); operands->push(body); operands->push(openings); auto n = map_to_collection(this, operands); diff --git a/src/ifcgeom/mapping/IfcRectangleHollowProfileDef.cpp b/src/ifcgeom/mapping/IfcRectangleHollowProfileDef.cpp index 6b5b77c9ba..2dfab89351 100644 --- a/src/ifcgeom/mapping/IfcRectangleHollowProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcRectangleHollowProfileDef.cpp @@ -23,16 +23,16 @@ using namespace ifcopenshell::geometry; #include "../profile_helper.h" -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRectangleHollowProfileDef* inst) { - const double x = inst->XDim() / 2.0f * length_unit_; - const double y = inst->YDim() / 2.0f * length_unit_; - const double d = inst->WallThickness() * length_unit_; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRectangleHollowProfileDef& inst) { + const double x = inst.XDim() / 2.0f * length_unit_; + const double y = inst.YDim() / 2.0f * length_unit_; + const double d = inst.WallThickness() * length_unit_; - const bool fr1 = !!inst->OuterFilletRadius(); - const bool fr2 = !!inst->InnerFilletRadius(); + const bool fr1 = !!inst.OuterFilletRadius(); + const bool fr2 = !!inst.InnerFilletRadius(); - const double r1 = fr1 ? (*inst->OuterFilletRadius()) * length_unit_ : 0.; - const double r2 = fr2 ? (*inst->InnerFilletRadius()) * length_unit_ : 0.; + const double r1 = fr1 ? (*inst.OuterFilletRadius()) * length_unit_ : 0.; + const double r2 = fr2 ? (*inst.InnerFilletRadius()) * length_unit_ : 0.; const double tol = settings_.get().get(); @@ -44,10 +44,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRectangleHollowProfileDef* i taxonomy::matrix4::ptr m4; bool has_position = true; #ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = !!inst->Position(); + has_position = !!inst.Position(); #endif if (has_position) { - m4 = taxonomy::cast(map(inst->Position())); + m4 = taxonomy::cast(map(inst.Position())); } auto s1 = profile_helper(m4, { diff --git a/src/ifcgeom/mapping/IfcRectangleProfileDef.cpp b/src/ifcgeom/mapping/IfcRectangleProfileDef.cpp index 2006596ce9..2858f99312 100644 --- a/src/ifcgeom/mapping/IfcRectangleProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcRectangleProfileDef.cpp @@ -23,9 +23,9 @@ using namespace ifcopenshell::geometry; #include "../profile_helper.h" -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRectangleProfileDef* inst) { - const double x = inst->XDim() / 2.0f * length_unit_; - const double y = inst->YDim() / 2.0f * length_unit_; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRectangleProfileDef& inst) { + const double x = inst.XDim() / 2.0f * length_unit_; + const double y = inst.YDim() / 2.0f * length_unit_; const double tol = settings_.get().get(); @@ -37,10 +37,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRectangleProfileDef* inst) { taxonomy::matrix4::ptr m4; bool has_position = true; #ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = !!inst->Position(); + has_position = !!inst.Position(); #endif if (has_position) { - m4 = taxonomy::cast(map(inst->Position())); + m4 = taxonomy::cast(map(inst.Position())); } return profile_helper(m4, { diff --git a/src/ifcgeom/mapping/IfcRectangularPyramid.cpp b/src/ifcgeom/mapping/IfcRectangularPyramid.cpp index ab22069991..2c9b12dfcf 100644 --- a/src/ifcgeom/mapping/IfcRectangularPyramid.cpp +++ b/src/ifcgeom/mapping/IfcRectangularPyramid.cpp @@ -23,10 +23,10 @@ using namespace ifcopenshell::geometry; #include "../profile_helper.h" -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRectangularPyramid* inst) { - const double dx = inst->XLength() * length_unit_; - const double dy = inst->YLength() * length_unit_; - const double dz = inst->Height() * length_unit_; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRectangularPyramid& inst) { + const double dx = inst.XLength() * length_unit_; + const double dy = inst.YLength() * length_unit_; + const double dz = inst.Height() * length_unit_; auto solid = taxonomy::make(); auto shell = taxonomy::make(); @@ -105,7 +105,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRectangularPyramid* inst) { face->children.push_back(polygon_from_points(points)); } - solid->matrix = taxonomy::cast(map(inst->Position())); + solid->matrix = taxonomy::cast(map(inst.Position())); return solid; } diff --git a/src/ifcgeom/mapping/IfcRectangularTrimmedSurface.cpp b/src/ifcgeom/mapping/IfcRectangularTrimmedSurface.cpp index ae910c1354..7dd71926e6 100644 --- a/src/ifcgeom/mapping/IfcRectangularTrimmedSurface.cpp +++ b/src/ifcgeom/mapping/IfcRectangularTrimmedSurface.cpp @@ -21,19 +21,19 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRectangularTrimmedSurface* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRectangularTrimmedSurface& inst) { // @todo we'll need to add support for p-curves at some point, but not now. return nullptr; /* - if (!inst->BasisSurface()->declaration().is(IfcSchema::IfcPlane::Class())) { - Logger::Message(Logger::LOG_ERROR, "Unsupported BasisSurface:", inst->BasisSurface()); + if (!inst.BasisSurface()->declaration().is(IfcSchema::IfcPlane::Class())) { + Logger::Message(Logger::LOG_ERROR, "Unsupported BasisSurface:", inst.BasisSurface()); return false; } gp_Pln pln; - IfcGeom::Kernel::convert((IfcSchema::IfcPlane*) inst->BasisSurface(), pln); + IfcGeom::Kernel::convert((IfcSchema::IfcPlane*) inst.BasisSurface(), pln); - BRepBuilderAPI_MakeFace mf(pln, inst->U1(), inst->U2(), inst->V1(), inst->V2()); + BRepBuilderAPI_MakeFace mf(pln, inst.U1(), inst.U2(), inst.V1(), inst.V2()); face = mf.Face(); diff --git a/src/ifcgeom/mapping/IfcRepresentation.cpp b/src/ifcgeom/mapping/IfcRepresentation.cpp index e1f51d10d2..3ea437afca 100644 --- a/src/ifcgeom/mapping/IfcRepresentation.cpp +++ b/src/ifcgeom/mapping/IfcRepresentation.cpp @@ -21,14 +21,14 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRepresentation* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRepresentation& inst) { auto items_to_include = this->settings_.get().get(); - auto items = map_to_collection(this, inst->Items()); + auto items = map_to_collection(this, inst.Items()); if (!items) { - auto its = inst->Items(); + auto its = inst.Items(); bool empty_on_purpose = true; - for (auto& itm : *its) { + for (auto& itm : its) { if (failed_on_purpose_.find(itm) == failed_on_purpose_.end()) { empty_on_purpose = false; } diff --git a/src/ifcgeom/mapping/IfcRevolvedAreaSolid.cpp b/src/ifcgeom/mapping/IfcRevolvedAreaSolid.cpp index 8b2fe01272..3da2f46ce4 100644 --- a/src/ifcgeom/mapping/IfcRevolvedAreaSolid.cpp +++ b/src/ifcgeom/mapping/IfcRevolvedAreaSolid.cpp @@ -23,20 +23,20 @@ using namespace ifcopenshell::geometry; #include -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRevolvedAreaSolid* inst) { - const double ang = inst->Angle() * angle_unit_; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRevolvedAreaSolid& inst) { + const double ang = inst.Angle() * angle_unit_; - taxonomy::cast(map(inst->SweptArea())); + taxonomy::cast(map(inst.SweptArea())); - boost::optional angle; + std::optional angle; taxonomy::matrix4::ptr matrix; bool has_position = true; #ifdef SCHEMA_IfcSweptAreaSolid_Position_IS_OPTIONAL - has_position = inst->Position() != nullptr; + has_position = !!inst.Position(); #endif if (has_position) { - matrix = taxonomy::cast(map(inst->Position())); + matrix = taxonomy::cast(map(inst.Position())); } if (ang < boost::math::constants::pi() * 2. - 1.e-5) { @@ -45,9 +45,9 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRevolvedAreaSolid* inst) { return taxonomy::make( matrix, - taxonomy::cast(map(inst->SweptArea())), - taxonomy::cast(map(inst->Axis()->Location())), - taxonomy::cast(map(inst->Axis()->Axis())), + taxonomy::cast(map(inst.SweptArea())), + taxonomy::cast(map(inst.Axis().Location())), + taxonomy::cast(map(inst.Axis().Axis())), angle ); diff --git a/src/ifcgeom/mapping/IfcRightCircularCone.cpp b/src/ifcgeom/mapping/IfcRightCircularCone.cpp index 309e138151..42f4cc5a70 100644 --- a/src/ifcgeom/mapping/IfcRightCircularCone.cpp +++ b/src/ifcgeom/mapping/IfcRightCircularCone.cpp @@ -21,16 +21,16 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRightCircularCone* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRightCircularCone& inst) { // @todo return nullptr; /* - const double r = inst->BottomRadius() * length_unit_; - const double h = inst->Height() * length_unit_; + const double r = inst.BottomRadius() * length_unit_; + const double h = inst.Height() * length_unit_; BRepPrimAPI_MakeCone builder(r, 0., h); gp_Trsf trsf; - IfcGeom::Kernel::convert(inst->Position(),trsf); + IfcGeom::Kernel::convert(inst.Position(),trsf); // IfcCsgPrimitive3D.Position has unit scale factor shape = builder.Solid().Moved(trsf); diff --git a/src/ifcgeom/mapping/IfcRightCircularCylinder.cpp b/src/ifcgeom/mapping/IfcRightCircularCylinder.cpp index 618e2f8869..1de3a76848 100644 --- a/src/ifcgeom/mapping/IfcRightCircularCylinder.cpp +++ b/src/ifcgeom/mapping/IfcRightCircularCylinder.cpp @@ -21,17 +21,17 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRightCircularCylinder* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRightCircularCylinder& inst) { // @todo return nullptr; /* - const double r = inst->Radius() * length_unit_; - const double h = inst->Height() * length_unit_; + const double r = inst.Radius() * length_unit_; + const double h = inst.Height() * length_unit_; BRepPrimAPI_MakeCylinder builder(r, h); gp_Trsf trsf; - IfcGeom::Kernel::convert(inst->Position(),trsf); + IfcGeom::Kernel::convert(inst.Position(),trsf); // IfcCsgPrimitive3D.Position has unit scale factor shape = builder.Solid().Moved(trsf); diff --git a/src/ifcgeom/mapping/IfcRoundedRectangleProfileDef.cpp b/src/ifcgeom/mapping/IfcRoundedRectangleProfileDef.cpp index 3203c8c751..e4877cc53e 100644 --- a/src/ifcgeom/mapping/IfcRoundedRectangleProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcRoundedRectangleProfileDef.cpp @@ -23,10 +23,10 @@ using namespace ifcopenshell::geometry; #include "../profile_helper.h" -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRoundedRectangleProfileDef* inst) { - const double x = inst->XDim() / 2.0f * length_unit_; - const double y = inst->YDim() / 2.0f * length_unit_; - const double r = inst->RoundingRadius() * length_unit_; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRoundedRectangleProfileDef& inst) { + const double x = inst.XDim() / 2.0f * length_unit_; + const double y = inst.YDim() / 2.0f * length_unit_; + const double r = inst.RoundingRadius() * length_unit_; const double tol = settings_.get().get(); @@ -38,10 +38,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcRoundedRectangleProfileDef* taxonomy::matrix4::ptr m4; bool has_position = true; #ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = !!inst->Position(); + has_position = !!inst.Position(); #endif if (has_position) { - m4 = taxonomy::cast(map(inst->Position())); + m4 = taxonomy::cast(map(inst.Position())); } return profile_helper(m4, { diff --git a/src/ifcgeom/mapping/IfcSectionedSolidHorizontal.cpp b/src/ifcgeom/mapping/IfcSectionedSolidHorizontal.cpp index a2bc648f08..9c55579fe8 100644 --- a/src/ifcgeom/mapping/IfcSectionedSolidHorizontal.cpp +++ b/src/ifcgeom/mapping/IfcSectionedSolidHorizontal.cpp @@ -27,10 +27,10 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcSectionedSolidHorizontal -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSectionedSolidHorizontal* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSectionedSolidHorizontal& inst) { std::vector cross_sections; - auto dir = map(inst->Directrix()); + auto dir = map(inst.Directrix()); auto fn = taxonomy::dcast(dir); if (!fn) { // Only implement on alignment curves @@ -39,8 +39,8 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSectionedSolidHorizontal* in } { - auto css = inst->CrossSections(); - auto csps = inst->CrossSectionPositions(); + auto css = inst.CrossSections(); + auto csps = inst.CrossSectionPositions(); std::vector faces; // The PointByDistanceExpressions are factored out into (a) a cartesian offset relative to the @@ -49,43 +49,43 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSectionedSolidHorizontal* in // The longitudes determine the range of the sweep and the offsets are interpolated in between // sweep segments. std::vector profile_offsets; - std::vector> profile_rotations; + std::vector> profile_rotations; std::vector longitudes; - for (auto& cs : *css) { + for (auto& cs : css) { faces.push_back(std::move(taxonomy::cast(map(cs)))); } #if defined(SCHEMA_HAS_IfcPointByDistanceExpression) && !defined(SCHEMA_IfcSectionedSurface_HAS_FixedAxisVertical) - for (auto& csp : *csps) { - auto pbde = csp->Location()->as(true); + for (auto& csp : csps) { + auto pbde = csp.Location().as(); - longitudes.push_back(*pbde->DistanceAlong()->as(true) * length_unit_); + longitudes.push_back((double) pbde.DistanceAlong().as() * length_unit_); // Corresponds to the profile X, Y directions (hopefully). Eigen::Vector3d po( - pbde->OffsetLateral().get_value_or(0.), + pbde.OffsetLateral().value_or(0.), // @todo I don't understand whether vertical is an offset relative to the tangent plane or to the global XY plane - pbde->OffsetVertical().get_value_or(0.), + pbde.OffsetVertical().value_or(0.), 0. ); profile_offsets.push_back(po); - boost::optional rot; - if (csp->Axis() && csp->RefDirection()) { + std::optional rot; + if (csp.Axis() && csp.RefDirection()) { rot = taxonomy::matrix4( Eigen::Vector3d(0, 0, 0), - taxonomy::cast(map(csp->Axis()))->ccomponents(), - taxonomy::cast(map(csp->RefDirection()))->ccomponents()).ccomponents().block<3,3>(0,0); - } else if (csp->Axis()) { + taxonomy::cast(map(csp.Axis()))->ccomponents(), + taxonomy::cast(map(csp.RefDirection()))->ccomponents()).ccomponents().block<3,3>(0,0); + } else if (csp.Axis()) { rot = taxonomy::matrix4( Eigen::Vector3d(0, 0, 0), - taxonomy::cast(map(csp->Axis()))->ccomponents()).ccomponents().block<3, 3>(0, 0); - } else if (csp->RefDirection()) { + taxonomy::cast(map(csp.Axis()))->ccomponents()).ccomponents().block<3, 3>(0, 0); + } else if (csp.RefDirection()) { rot = taxonomy::matrix4( Eigen::Vector3d(0, 0, 0), Eigen::Vector3d(0, 0, 1), - taxonomy::cast(map(csp->RefDirection()))->ccomponents() + taxonomy::cast(map(csp.RefDirection()))->ccomponents() ).ccomponents().block<3, 3>(0, 0); } profile_rotations.push_back(rot); diff --git a/src/ifcgeom/mapping/IfcSectionedSurface.cpp b/src/ifcgeom/mapping/IfcSectionedSurface.cpp index 49fde15759..1dca768100 100644 --- a/src/ifcgeom/mapping/IfcSectionedSurface.cpp +++ b/src/ifcgeom/mapping/IfcSectionedSurface.cpp @@ -27,10 +27,10 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcSectionedSurface -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSectionedSurface* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSectionedSurface& inst) { std::vector cross_sections; - auto dir = map(inst->Directrix()); + auto dir = map(inst.Directrix()); auto fn = taxonomy::dcast(dir); if (!fn) { // Only implement on alignment curves @@ -40,8 +40,8 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSectionedSurface* inst) { { - auto css = inst->CrossSections(); - auto csps = inst->CrossSectionPositions(); + auto css = inst.CrossSections(); + auto csps = inst.CrossSectionPositions(); std::vector faces; // The PointByDistanceExpressions are factored out into (a) a cartesian offset relative to the @@ -50,44 +50,44 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSectionedSurface* inst) { // The longitudes determine the range of the sweep and the offsets are interpolated in between // sweep segments. std::vector profile_offsets; - std::vector> profile_rotations; + std::vector> profile_rotations; std::vector longitudes; - for (auto& cs : *css) { + for (auto& cs : css) { faces.push_back(std::move(taxonomy::cast(map(cs)))); } // IfcSectionedSurface::FixedAxisVertical removed in rc4, where CrossSectionPositions was IfcPointByDistanceExpression instead of IfcAxis2PlacementLinear #if defined(SCHEMA_HAS_IfcPointByDistanceExpression) && !defined(SCHEMA_IfcSectionedSurface_HAS_FixedAxisVertical) - for (auto& csp : *csps) { - auto pbde = csp->Location()->as(true); + for (auto& csp : csps) { + auto pbde = csp.Location().as(); - longitudes.push_back(*pbde->DistanceAlong()->as(true) * length_unit_); + longitudes.push_back((double) pbde.DistanceAlong().as() * length_unit_); // Corresponds to the profile X, Y directions (hopefully). Eigen::Vector3d po( - pbde->OffsetLateral().get_value_or(0.), + pbde.OffsetLateral().value_or(0.), // @todo I don't understand whether vertical is an offset relative to the tangent plane or to the global XY plane - pbde->OffsetVertical().get_value_or(0.), + pbde.OffsetVertical().value_or(0.), 0. ); profile_offsets.push_back(po); - boost::optional rot; - if (csp->Axis() && csp->RefDirection()) { + std::optional rot; + if (csp.Axis() && csp.RefDirection()) { rot = taxonomy::matrix4( Eigen::Vector3d(0, 0, 0), - taxonomy::cast(map(csp->Axis()))->ccomponents(), - taxonomy::cast(map(csp->RefDirection()))->ccomponents()).ccomponents().block<3, 3>(0, 0); - } else if (csp->Axis()) { + taxonomy::cast(map(csp.Axis()))->ccomponents(), + taxonomy::cast(map(csp.RefDirection()))->ccomponents()).ccomponents().block<3, 3>(0, 0); + } else if (csp.Axis()) { rot = taxonomy::matrix4( Eigen::Vector3d(0, 0, 0), - taxonomy::cast(map(csp->Axis()))->ccomponents()).ccomponents().block<3, 3>(0, 0); - } else if (csp->RefDirection()) { + taxonomy::cast(map(csp.Axis()))->ccomponents()).ccomponents().block<3, 3>(0, 0); + } else if (csp.RefDirection()) { rot = taxonomy::matrix4( Eigen::Vector3d(0, 0, 0), Eigen::Vector3d(0, 0, 1), - taxonomy::cast(map(csp->RefDirection()))->ccomponents()) + taxonomy::cast(map(csp.RefDirection()))->ccomponents()) .ccomponents() .block<3, 3>(0, 0); } diff --git a/src/ifcgeom/mapping/IfcSegmentedReferenceCurve.cpp b/src/ifcgeom/mapping/IfcSegmentedReferenceCurve.cpp index c8e89a8ccc..f4f3e59200 100644 --- a/src/ifcgeom/mapping/IfcSegmentedReferenceCurve.cpp +++ b/src/ifcgeom/mapping/IfcSegmentedReferenceCurve.cpp @@ -25,17 +25,17 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcSegmentedReferenceCurve -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSegmentedReferenceCurve* inst) { - if (!inst->BaseCurve()->as()) +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSegmentedReferenceCurve& inst) { + if (!inst.BaseCurve().as()) Logger::Warning("Expected IfcSegmentedReferenceCurve.BaseCurve to be IfcGradient", inst); // CT 4.1.7.1.1.3 - auto segments = inst->Segments(); + auto segments = inst.Segments(); taxonomy::piecewise_function::spans_t spans; - for (auto& segment : *segments) { - if (segment->as()) { + for (auto& segment : segments) { + if (auto cseg = segment.as()) { // @todo check that we don't get a mixture of implicit and explicit definitions - auto crv = map(segment->as()); + auto crv = map(cseg); if (auto fi = taxonomy::dcast(crv); crv && fi /*crv->kind() == taxonomy::FUNCTION_ITEM*/) { // crv->kind() is polymorphic and the kind of the actual function_item is returned. PWF can have spans of any FUNCTION_ITEM // for this reason, a dynamic cast is used and if crv is a function_item it is added to the span @@ -52,10 +52,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSegmentedReferenceCurve* ins // Get starting position of cant curve, relative to the gradient curve. // The cant curve can start before or after the start of the gradient curve - auto first_segment = *(segments->begin()); + auto& first_segment = segments.front(); taxonomy::matrix4::ptr p; #ifdef SCHEMA_IfcCurveSegment_HAS_Placement - p = taxonomy::cast(map(first_segment->as()->Placement())); + p = taxonomy::cast(map(first_segment.as().Placement())); #else throw std::runtime_error("Unsupported schema"); #endif @@ -63,7 +63,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSegmentedReferenceCurve* ins double cant_start = m(0, 3); // start of cant curve auto cant = taxonomy::make(cant_start,spans); - auto gradient = taxonomy::cast(map(inst->BaseCurve())); + auto gradient = taxonomy::cast(map(inst.BaseCurve())); auto cant_function = taxonomy::make(gradient, cant, inst); if (!(0 < cant_function->length())) { diff --git a/src/ifcgeom/mapping/IfcShellBasedSurfaceModel.cpp b/src/ifcgeom/mapping/IfcShellBasedSurfaceModel.cpp index f01f471ee7..02a797b2aa 100644 --- a/src/ifcgeom/mapping/IfcShellBasedSurfaceModel.cpp +++ b/src/ifcgeom/mapping/IfcShellBasedSurfaceModel.cpp @@ -21,6 +21,6 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcShellBasedSurfaceModel* inst) { - return map_to_collection(this, inst->SbsmBoundary()); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcShellBasedSurfaceModel& inst) { + return map_to_collection(this, inst.SbsmBoundary()); } diff --git a/src/ifcgeom/mapping/IfcSphere.cpp b/src/ifcgeom/mapping/IfcSphere.cpp index ce56c0d680..0c403c0e87 100644 --- a/src/ifcgeom/mapping/IfcSphere.cpp +++ b/src/ifcgeom/mapping/IfcSphere.cpp @@ -21,13 +21,13 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSphere* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSphere& inst) { auto sol = taxonomy::make(); auto shl = taxonomy::make(); auto fac = taxonomy::make(); auto spr = taxonomy::make(); - spr->matrix = taxonomy::cast(map(inst->Position())); - spr->radius = inst->Radius() * length_unit_; + spr->matrix = taxonomy::cast(map(inst.Position())); + spr->radius = inst.Radius() * length_unit_; fac->basis = spr; shl->children.push_back(fac); sol->children.push_back(shl); diff --git a/src/ifcgeom/mapping/IfcSphericalSurface.cpp b/src/ifcgeom/mapping/IfcSphericalSurface.cpp index 13c2286e03..713fa110b9 100644 --- a/src/ifcgeom/mapping/IfcSphericalSurface.cpp +++ b/src/ifcgeom/mapping/IfcSphericalSurface.cpp @@ -23,15 +23,15 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcSphericalSurface -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSphericalSurface* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSphericalSurface& inst) { return nullptr; /* gp_Trsf trsf; - IfcGeom::Kernel::convert(inst->Position(), trsf); + IfcGeom::Kernel::convert(inst.Position(), trsf); // IfcElementarySurface.Position has unit scale factor - face = BRepBuilderAPI_MakeFace(new Geom_SphericalSurface(gp::XOY(), inst->Radius() * length_unit_), getValue(GV_PRECISION)).Face().Moved(trsf); + face = BRepBuilderAPI_MakeFace(new Geom_SphericalSurface(gp::XOY(), inst.Radius() * length_unit_), getValue(GV_PRECISION)).Face().Moved(trsf); return true; */ } diff --git a/src/ifcgeom/mapping/IfcSubedge.cpp b/src/ifcgeom/mapping/IfcSubedge.cpp index 2e9a037596..c84714c516 100644 --- a/src/ifcgeom/mapping/IfcSubedge.cpp +++ b/src/ifcgeom/mapping/IfcSubedge.cpp @@ -22,7 +22,7 @@ using namespace ifcopenshell::geometry; /* -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSubedge* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSubedge& inst) { // @todo return nullptr; } diff --git a/src/ifcgeom/mapping/IfcSurfaceCurve.cpp b/src/ifcgeom/mapping/IfcSurfaceCurve.cpp index 592c250464..71e595b20a 100644 --- a/src/ifcgeom/mapping/IfcSurfaceCurve.cpp +++ b/src/ifcgeom/mapping/IfcSurfaceCurve.cpp @@ -22,8 +22,8 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcSurfaceCurve -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSurfaceCurve* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSurfaceCurve& inst) { // @todo take into account PCurves. - return map(inst->Curve3D()); + return map(inst.Curve3D()); } #endif diff --git a/src/ifcgeom/mapping/IfcSurfaceCurveSweptAreaSolid.cpp b/src/ifcgeom/mapping/IfcSurfaceCurveSweptAreaSolid.cpp index c379c15eeb..582b9ba916 100644 --- a/src/ifcgeom/mapping/IfcSurfaceCurveSweptAreaSolid.cpp +++ b/src/ifcgeom/mapping/IfcSurfaceCurveSweptAreaSolid.cpp @@ -21,19 +21,19 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSurfaceCurveSweptAreaSolid* inst) { - taxonomy::face::ptr f = taxonomy::cast(map(inst->SweptArea())); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSurfaceCurveSweptAreaSolid& inst) { + taxonomy::face::ptr f = taxonomy::cast(map(inst.SweptArea())); taxonomy::matrix4::ptr matrix; bool has_position = true; #ifdef SCHEMA_IfcSweptAreaSolid_Position_IS_OPTIONAL - has_position = inst->Position() != nullptr; + has_position = !!inst.Position(); #endif if (has_position) { - matrix = taxonomy::cast(map(inst->Position())); + matrix = taxonomy::cast(map(inst.Position())); } - auto scs = taxonomy::make(matrix, f, map(inst->ReferenceSurface()), map(inst->Directrix())); + auto scs = taxonomy::make(matrix, f, map(inst.ReferenceSurface()), map(inst.Directrix())); scs->matrix = matrix; return scs; @@ -44,11 +44,11 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSurfaceCurveSweptAreaSolid* TopoDS_Face surface_face; TopoDS_Wire wire, section; - const bool is_plane = inst->ReferenceSurface()->declaration().is(IfcSchema::IfcPlane::Class()); + const bool is_plane = inst.ReferenceSurface()->declaration().is(IfcSchema::IfcPlane::Class()); if (!is_plane) { TopoDS_Shape surface_shell; - if (!convert_shape(inst->ReferenceSurface(), surface_shell)) { + if (!convert_shape(inst.ReferenceSurface(), surface_shell)) { Logger::Error("Failed to convert reference surface", l); return false; } @@ -65,7 +65,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSurfaceCurveSweptAreaSolid* bool directrix_on_plane = is_plane; if (is_plane) { - IfcGeom::Kernel::convert((IfcSchema::IfcPlane*) inst->ReferenceSurface(), pln); + IfcGeom::Kernel::convert((IfcSchema::IfcPlane*) inst.ReferenceSurface(), pln); // As per Informal propositions 2: The Directrix shall lie on the ReferenceSurface. // This is not always the case with the test files in the repository. I am not sure diff --git a/src/ifcgeom/mapping/IfcSurfaceOfLinearExtrusion.cpp b/src/ifcgeom/mapping/IfcSurfaceOfLinearExtrusion.cpp index f44939a6de..562c6d42b6 100644 --- a/src/ifcgeom/mapping/IfcSurfaceOfLinearExtrusion.cpp +++ b/src/ifcgeom/mapping/IfcSurfaceOfLinearExtrusion.cpp @@ -21,20 +21,20 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSurfaceOfLinearExtrusion* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSurfaceOfLinearExtrusion& inst) { taxonomy::matrix4::ptr matrix; bool has_position = true; #ifdef SCHEMA_IfcSweptAreaSolid_Position_IS_OPTIONAL - has_position = inst->Position() != nullptr; + has_position = !!inst.Position(); #endif if (has_position) { - matrix = taxonomy::cast(map(inst->Position())); + matrix = taxonomy::cast(map(inst.Position())); } return taxonomy::make( matrix, - map(inst->SweptCurve()), - taxonomy::cast(map(inst->ExtrudedDirection())), + map(inst.SweptCurve()), + taxonomy::cast(map(inst.ExtrudedDirection())), std::numeric_limits::infinity() ); } diff --git a/src/ifcgeom/mapping/IfcSurfaceOfRevolution.cpp b/src/ifcgeom/mapping/IfcSurfaceOfRevolution.cpp index f83c4ecf03..9ae0e0e389 100644 --- a/src/ifcgeom/mapping/IfcSurfaceOfRevolution.cpp +++ b/src/ifcgeom/mapping/IfcSurfaceOfRevolution.cpp @@ -21,21 +21,21 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSurfaceOfRevolution* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSurfaceOfRevolution& inst) { taxonomy::matrix4::ptr matrix; bool has_position = true; #ifdef SCHEMA_IfcSweptAreaSolid_Position_IS_OPTIONAL - has_position = inst->Position() != nullptr; + has_position = !!inst.Position(); #endif if (has_position) { - matrix = taxonomy::cast(map(inst->Position())); + matrix = taxonomy::cast(map(inst.Position())); } return taxonomy::make( matrix, - taxonomy::cast(map(inst->SweptCurve())), - taxonomy::cast(map(inst->AxisPosition()->Location())), - taxonomy::cast(map(inst->AxisPosition()->Axis())), - boost::none + taxonomy::cast(map(inst.SweptCurve())), + taxonomy::cast(map(inst.AxisPosition().Location())), + taxonomy::cast(map(inst.AxisPosition().Axis())), + std::nullopt ); } diff --git a/src/ifcgeom/mapping/IfcSweptDiskSolid.cpp b/src/ifcgeom/mapping/IfcSweptDiskSolid.cpp index bd779fd6cd..e826d5b269 100644 --- a/src/ifcgeom/mapping/IfcSweptDiskSolid.cpp +++ b/src/ifcgeom/mapping/IfcSweptDiskSolid.cpp @@ -49,18 +49,18 @@ namespace { } */ -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSweptDiskSolid* inst) { - auto loop = taxonomy::cast(map(inst->Directrix())); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSweptDiskSolid& inst) { + auto loop = taxonomy::cast(map(inst.Directrix())); // Start- EndParam became optional in IFC4 #ifdef SCHEMA_IfcSweptDiskSolid_StartParam_IS_OPTIONAL - auto sp = inst->StartParam(); - auto ep = inst->EndParam(); + auto sp = inst.StartParam(); + auto ep = inst.EndParam(); #else - boost::optional sp, ep; + std::optional sp, ep; try { - sp = inst->StartParam(); - ep = inst->EndParam(); + sp = inst.StartParam(); + ep = inst.EndParam(); } catch (const IfcParse::IfcException& e) { Logger::Warning(e); } @@ -69,19 +69,19 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSweptDiskSolid* inst) { const double tol = settings_.get().get(); #ifdef SCHEMA_HAS_IfcSweptDiskSolidPolygonal - if (inst->as()) { - auto fr = inst->as()->FilletRadius(); + if (inst.as()) { + auto fr = inst.as().FilletRadius(); if (fr && *fr > tol) { fillet_loop(loop, *fr); } } #endif - std::vector radii = { inst->Radius() * length_unit_ }; + std::vector radii = { inst.Radius() * length_unit_ }; - if (inst->InnerRadius()) { + if (inst.InnerRadius()) { // Subtraction of pipes with small radii is unstable. - radii.push_back(*inst->InnerRadius() * length_unit_); + radii.push_back(*inst.InnerRadius() * length_unit_); } auto f = taxonomy::make(); @@ -117,9 +117,9 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSweptDiskSolid* inst) { TopoDS_Wire wire, section1, section2; - bool hasInnerRadius = !!inst->InnerRadius(); + bool hasInnerRadius = !!inst.InnerRadius(); - if (!convert_wire(inst->Directrix(), wire)) { + if (!convert_wire(inst.Directrix(), wire)) { return false; } @@ -151,8 +151,8 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSweptDiskSolid* inst) { double fillet = 0.; #ifdef SCHEMA_HAS_IfcSweptDiskSolidPolygonal - if (inst->as()) { - auto fr = inst->as()->FilletRadius(); + if (inst.as()) { + auto fr = inst.as()->FilletRadius(); if (fr) { fillet = *fr; } @@ -274,7 +274,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSweptDiskSolid* inst) { // made that the parametric range over which to be swept matches the IfcCurve in // its entirety. - util::process_sweep(wire, inst->Radius() * length_unit_, shape); + util::process_sweep(wire, inst.Radius() * length_unit_, shape); if (shape.IsNull()) { return false; @@ -284,7 +284,7 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSweptDiskSolid* inst) { if (hasInnerRadius) { // Subtraction of pipes with small radii is unstable. - r2 = *inst->InnerRadius() * length_unit_; + r2 = *inst.InnerRadius() * length_unit_; } if (r2 > getValue(GV_PRECISION) * 10.) { diff --git a/src/ifcgeom/mapping/IfcTShapeProfileDef.cpp b/src/ifcgeom/mapping/IfcTShapeProfileDef.cpp index a4d44976ad..c7304542c5 100644 --- a/src/ifcgeom/mapping/IfcTShapeProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcTShapeProfileDef.cpp @@ -23,19 +23,19 @@ using namespace ifcopenshell::geometry; #include "../profile_helper.h" -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcTShapeProfileDef* inst) { - const bool doFlangeEdgeFillet = !!inst->FlangeEdgeRadius(); - const bool doWebEdgeFillet = !!inst->WebEdgeRadius(); - const bool doFillet = !!inst->FilletRadius(); - const bool hasFlangeSlope = !!inst->FlangeSlope(); - const bool hasWebSlope = !!inst->WebSlope(); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcTShapeProfileDef& inst) { + const bool doFlangeEdgeFillet = !!inst.FlangeEdgeRadius(); + const bool doWebEdgeFillet = !!inst.WebEdgeRadius(); + const bool doFillet = !!inst.FilletRadius(); + const bool hasFlangeSlope = !!inst.FlangeSlope(); + const bool hasWebSlope = !!inst.WebSlope(); - const double y = inst->Depth() / 2.0f * length_unit_; - const double x = inst->FlangeWidth() / 2.0f * length_unit_; - const double d1 = inst->WebThickness() * length_unit_; - const double d2 = inst->FlangeThickness() * length_unit_; - const double flangeSlope = hasFlangeSlope ? (*inst->FlangeSlope() * angle_unit_) : 0.; - const double webSlope = hasWebSlope ? (*inst->WebSlope() * angle_unit_) : 0.; + const double y = inst.Depth() / 2.0f * length_unit_; + const double x = inst.FlangeWidth() / 2.0f * length_unit_; + const double d1 = inst.WebThickness() * length_unit_; + const double d2 = inst.FlangeThickness() * length_unit_; + const double flangeSlope = hasFlangeSlope ? (*inst.FlangeSlope() * angle_unit_) : 0.; + const double webSlope = hasWebSlope ? (*inst.WebSlope() * angle_unit_) : 0.; const double tol = settings_.get().get(); @@ -53,13 +53,13 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcTShapeProfileDef* inst) { double f3 = 0.0f; if (doFillet) { - f1 = *inst->FilletRadius() * length_unit_; + f1 = *inst.FilletRadius() * length_unit_; } if (doWebEdgeFillet) { - f2 = *inst->WebEdgeRadius() * length_unit_; + f2 = *inst.WebEdgeRadius() * length_unit_; } if (doFlangeEdgeFillet) { - f3 = *inst->FlangeEdgeRadius() * length_unit_; + f3 = *inst.FlangeEdgeRadius() * length_unit_; } double xx, xy; @@ -102,10 +102,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcTShapeProfileDef* inst) { taxonomy::matrix4::ptr m4; bool has_position = true; #ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = !!inst->Position(); + has_position = !!inst.Position(); #endif if (has_position) { - m4 = taxonomy::cast(map(inst->Position())); + m4 = taxonomy::cast(map(inst.Position())); } return profile_helper(m4, { diff --git a/src/ifcgeom/mapping/IfcToroidalSurface.cpp b/src/ifcgeom/mapping/IfcToroidalSurface.cpp index ce17a37dbc..098f05804f 100644 --- a/src/ifcgeom/mapping/IfcToroidalSurface.cpp +++ b/src/ifcgeom/mapping/IfcToroidalSurface.cpp @@ -23,15 +23,15 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcToroidalSurface -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcToroidalSurface* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcToroidalSurface& inst) { return nullptr; /* gp_Trsf trsf; - IfcGeom::Kernel::convert(inst->Position(), trsf); + IfcGeom::Kernel::convert(inst.Position(), trsf); // IfcElementarySurface.Position has unit scale factor - face = BRepBuilderAPI_MakeFace(new Geom_ToroidalSurface(gp::XOY(), inst->MajorRadius() * length_unit_, inst->MinorRadius() * length_unit_), getValue(GV_PRECISION)).Face().Moved(trsf); + face = BRepBuilderAPI_MakeFace(new Geom_ToroidalSurface(gp::XOY(), inst.MajorRadius() * length_unit_, inst.MinorRadius() * length_unit_), getValue(GV_PRECISION)).Face().Moved(trsf); return true; */ } diff --git a/src/ifcgeom/mapping/IfcTrapeziumProfileDef.cpp b/src/ifcgeom/mapping/IfcTrapeziumProfileDef.cpp index b9f9ac0549..60908a69d5 100644 --- a/src/ifcgeom/mapping/IfcTrapeziumProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcTrapeziumProfileDef.cpp @@ -23,11 +23,11 @@ using namespace ifcopenshell::geometry; #include "../profile_helper.h" -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcTrapeziumProfileDef* inst) { - const double x1 = inst->BottomXDim() / 2. * length_unit_; - const double w = inst->TopXDim() * length_unit_; - const double dx = inst->TopXOffset() * length_unit_; - const double y = inst->YDim() / 2. * length_unit_; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcTrapeziumProfileDef& inst) { + const double x1 = inst.BottomXDim() / 2. * length_unit_; + const double w = inst.TopXDim() * length_unit_; + const double dx = inst.TopXOffset() * length_unit_; + const double y = inst.YDim() / 2. * length_unit_; // See: https://forums.buildingsmart.org/t/how-are-the-sides-of-ifctrapeziumprofiledefs-bounding-box-calculated-in-most-implementations/2945/8 // The trapezium x center should not be midway of BottomXDim but rather at the center of the overall bounding box. @@ -43,10 +43,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcTrapeziumProfileDef* inst) { taxonomy::matrix4::ptr m4; bool has_position = true; #ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = !!inst->Position(); + has_position = !!inst.Position(); #endif if (has_position) { - m4 = taxonomy::cast(map(inst->Position())); + m4 = taxonomy::cast(map(inst.Position())); } return profile_helper(m4, { diff --git a/src/ifcgeom/mapping/IfcTriangulatedFaceSet.cpp b/src/ifcgeom/mapping/IfcTriangulatedFaceSet.cpp index 776ea59605..e06bca5e27 100644 --- a/src/ifcgeom/mapping/IfcTriangulatedFaceSet.cpp +++ b/src/ifcgeom/mapping/IfcTriangulatedFaceSet.cpp @@ -23,10 +23,10 @@ using namespace ifcopenshell::geometry; #ifdef SCHEMA_HAS_IfcTriangulatedFaceSet -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcTriangulatedFaceSet* inst) { - IfcSchema::IfcCartesianPointList3D* point_list = inst->Coordinates(); - auto coordinates = point_list->CoordList(); - std::vector> indices_list = inst->CoordIndex(); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcTriangulatedFaceSet& inst) { + auto point_list = inst.Coordinates(); + auto coordinates = point_list.CoordList(); + std::vector> indices_list = inst.CoordIndex(); std::vector points; points.reserve(coordinates.size()); diff --git a/src/ifcgeom/mapping/IfcTrimmedCurve.cpp b/src/ifcgeom/mapping/IfcTrimmedCurve.cpp index e6e27f3832..7b8c708cc7 100644 --- a/src/ifcgeom/mapping/IfcTrimmedCurve.cpp +++ b/src/ifcgeom/mapping/IfcTrimmedCurve.cpp @@ -23,19 +23,19 @@ using namespace ifcopenshell::geometry; #include -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcTrimmedCurve* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcTrimmedCurve& inst) { static const double pi = boost::math::constants::pi(); - IfcSchema::IfcCurve* basis_curve = inst->BasisCurve(); - bool isConic = basis_curve->declaration().is(IfcSchema::IfcConic::Class()); + auto basis_curve = inst.BasisCurve(); + bool isConic = basis_curve.declaration().is(IfcSchema::IfcConic::Class()); double parameterFactor = isConic ? angle_unit_ : length_unit_; auto tc = taxonomy::make(); - tc->basis = map(inst->BasisCurve()); + tc->basis = map(inst.BasisCurve()); - bool trim_cartesian = inst->MasterRepresentation() != IfcSchema::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER; - auto trims1 = inst->Trim1(); - auto trims2 = inst->Trim2(); + bool trim_cartesian = inst.MasterRepresentation() != IfcSchema::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER; + auto trims1 = inst.Trim1(); + auto trims2 = inst.Trim2(); // reversed orientation handling happens in geometry kernel unsigned sense_agreement = 0; @@ -44,27 +44,27 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcTrimmedCurve* inst) { bool has_flts[2] = {false,false}; bool has_pnts[2] = {false,false}; - tc->curve_sense = inst->SenseAgreement(); + tc->curve_sense = inst.SenseAgreement(); - for (auto it = trims1->begin(); it != trims1->end(); it ++) { + for (auto it = trims1.begin(); it != trims1.end(); it ++) { auto i = *it; - if (i->as()) { + if (i.as()) { pnts[sense_agreement] = taxonomy::cast(map(i)); has_pnts[sense_agreement] = true; - } else if (i->as()) { - const double value = *i->as(); + } else if (i.as()) { + const double value = i.as(); flts[sense_agreement] = value * parameterFactor; has_flts[sense_agreement] = true; } } - for (auto it = trims2->begin(); it != trims2->end(); it ++) { + for (auto it = trims2.begin(); it != trims2.end(); it ++) { auto i = *it; - if (i->as()) { + if (i.as()) { pnts[1 - sense_agreement] = taxonomy::cast(map(i)); has_pnts[1-sense_agreement] = true; - } else if (i->as()) { - const double value = *i->as(); + } else if (i.as()) { + const double value = i.as(); flts[1-sense_agreement] = value * parameterFactor; has_flts[1-sense_agreement] = true; } @@ -86,15 +86,13 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcTrimmedCurve* inst) { // is defined by an IfcCartesianPoint and an IfcVector with Magnitude. Because // the vector is normalised when passed to Geom_Line constructor the magnitude // needs to be factored in with the IfcParameterValue here. - if (basis_curve->declaration().is(IfcSchema::IfcLine::Class())) { - IfcSchema::IfcLine* line = static_cast(basis_curve); - const double magnitude = line->Dir()->Magnitude(); + if (auto lin = basis_curve.as()) { + const double magnitude = lin.Dir().Magnitude(); flts[0] *= magnitude; flts[1] *= magnitude; } - if (basis_curve->declaration().is(IfcSchema::IfcEllipse::Class())) { - IfcSchema::IfcEllipse* ellipse = static_cast(basis_curve); - double x = ellipse->SemiAxis1() * length_unit_; - double y = ellipse->SemiAxis2() * length_unit_; + if (auto ellipse = basis_curve.as()) { + double x = ellipse.SemiAxis1() * length_unit_; + double y = ellipse.SemiAxis2() * length_unit_; const bool rotated = y > x; // @todo do we apply this rotation here or in the kernel. if (rotated) { @@ -116,12 +114,12 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcTrimmedCurve* inst) { // A good criterion for determining whether to take full curve // or trimmed segment would be whether there are other curve segments or this // is the only one. - boost::optional num_segments; - auto segment = inst->file_->getInverse(inst->id(), & IfcSchema::IfcCompositeCurveSegment::Class(), -1); - if (segment->size() == 1) { - auto comp = (*segment->begin())->file_->getInverse((*segment->begin())->id(), &IfcSchema::IfcCompositeCurve::Class(), -1); - if (comp->size() == 1) { - num_segments = (*comp->begin())->as()->Segments()->size(); + std::optional num_segments; + auto segment = inst.data()->file()->getInverse(inst.id(), & IfcSchema::IfcCompositeCurveSegment::Class(), -1); + if (segment.size() == 1) { + auto comp = segment.front().data()->file()->getInverse(segment.front().id(), &IfcSchema::IfcCompositeCurve::Class(), -1); + if (comp.size() == 1) { + num_segments = comp.front().as().Segments().size(); } } diff --git a/src/ifcgeom/mapping/IfcUShapeProfileDef.cpp b/src/ifcgeom/mapping/IfcUShapeProfileDef.cpp index 510a1bf71e..4acfc94ce6 100644 --- a/src/ifcgeom/mapping/IfcUShapeProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcUShapeProfileDef.cpp @@ -23,16 +23,16 @@ using namespace ifcopenshell::geometry; #include "../profile_helper.h" -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcUShapeProfileDef* inst) { - const bool doEdgeFillet = !!inst->EdgeRadius(); - const bool doFillet = !!inst->FilletRadius(); - const bool hasSlope = !!inst->FlangeSlope(); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcUShapeProfileDef& inst) { + const bool doEdgeFillet = !!inst.EdgeRadius(); + const bool doFillet = !!inst.FilletRadius(); + const bool hasSlope = !!inst.FlangeSlope(); - const double y = inst->Depth() / 2.0f * length_unit_; - const double x = inst->FlangeWidth() / 2.0f * length_unit_; - const double d1 = inst->WebThickness() * length_unit_; - const double d2 = inst->FlangeThickness() * length_unit_; - const double slope = inst->FlangeSlope().get_value_or(0.) * angle_unit_; + const double y = inst.Depth() / 2.0f * length_unit_; + const double x = inst.FlangeWidth() / 2.0f * length_unit_; + const double d1 = inst.WebThickness() * length_unit_; + const double d2 = inst.FlangeThickness() * length_unit_; + const double slope = inst.FlangeSlope().value_or(0.) * angle_unit_; double dy1 = 0.0f; double dy2 = 0.0f; @@ -40,10 +40,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcUShapeProfileDef* inst) { double f2 = 0.0f; if (doFillet) { - f1 = *inst->FilletRadius() * length_unit_; + f1 = *inst.FilletRadius() * length_unit_; } if (doEdgeFillet) { - f2 = *inst->EdgeRadius() * length_unit_; + f2 = *inst.EdgeRadius() * length_unit_; } if (hasSlope) { @@ -61,10 +61,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcUShapeProfileDef* inst) { taxonomy::matrix4::ptr m4; bool has_position = true; #ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = !!inst->Position(); + has_position = !!inst.Position(); #endif if (has_position) { - m4 = taxonomy::cast(map(inst->Position())); + m4 = taxonomy::cast(map(inst.Position())); } return profile_helper(m4, { diff --git a/src/ifcgeom/mapping/IfcVector.cpp b/src/ifcgeom/mapping/IfcVector.cpp index 04ac6474cc..9b7b23bbad 100644 --- a/src/ifcgeom/mapping/IfcVector.cpp +++ b/src/ifcgeom/mapping/IfcVector.cpp @@ -21,9 +21,9 @@ #define mapping POSTFIX_SCHEMA(mapping) using namespace ifcopenshell::geometry; -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcVector* inst) { - auto d = taxonomy::cast(map(inst->Orientation())); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcVector& inst) { + auto d = taxonomy::cast(map(inst.Orientation())); d = taxonomy::direction3::ptr(d->clone_()); - d->components() *= inst->Magnitude() * length_unit_; + d->components() *= inst.Magnitude() * length_unit_; return d; } diff --git a/src/ifcgeom/mapping/IfcZShapeProfileDef.cpp b/src/ifcgeom/mapping/IfcZShapeProfileDef.cpp index ab1eed254e..2f67b3256b 100644 --- a/src/ifcgeom/mapping/IfcZShapeProfileDef.cpp +++ b/src/ifcgeom/mapping/IfcZShapeProfileDef.cpp @@ -23,23 +23,23 @@ using namespace ifcopenshell::geometry; #include "../profile_helper.h" -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcZShapeProfileDef* inst) { - const double x = inst->FlangeWidth() * length_unit_; - const double y = inst->Depth() / 2.0f * length_unit_; - const double dx = inst->WebThickness() / 2.0f * length_unit_; - const double dy = inst->FlangeThickness() * length_unit_; +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcZShapeProfileDef& inst) { + const double x = inst.FlangeWidth() * length_unit_; + const double y = inst.Depth() / 2.0f * length_unit_; + const double dx = inst.WebThickness() / 2.0f * length_unit_; + const double dy = inst.FlangeThickness() * length_unit_; - bool doFillet = !!inst->FilletRadius(); - bool doEdgeFillet = !!inst->EdgeRadius(); + bool doFillet = !!inst.FilletRadius(); + bool doEdgeFillet = !!inst.EdgeRadius(); double f1 = 0.; double f2 = 0.; if ( doFillet ) { - f1 = *inst->FilletRadius() * length_unit_; + f1 = *inst.FilletRadius() * length_unit_; } if ( doEdgeFillet ) { - f2 = *inst->EdgeRadius() * length_unit_; + f2 = *inst.EdgeRadius() * length_unit_; } const double tol = settings_.get().get(); @@ -52,10 +52,10 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcZShapeProfileDef* inst) { taxonomy::matrix4::ptr m4; bool has_position = true; #ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = !!inst->Position(); + has_position = !!inst.Position(); #endif if (has_position) { - m4 = taxonomy::cast(map(inst->Position())); + m4 = taxonomy::cast(map(inst.Position())); } return profile_helper(m4, { diff --git a/src/ifcgeom/mapping/bind_convert_decl.i b/src/ifcgeom/mapping/bind_convert_decl.i index 64509f4c32..4239f4e112 100644 --- a/src/ifcgeom/mapping/bind_convert_decl.i +++ b/src/ifcgeom/mapping/bind_convert_decl.i @@ -2,6 +2,6 @@ #undef BIND #endif -#define BIND(T) ifcopenshell::geometry::taxonomy::ptr map_impl(const IfcSchema::T*); +#define BIND(T) ifcopenshell::geometry::taxonomy::ptr map_impl(const IfcSchema::T&); #include "mapping.i" diff --git a/src/ifcgeom/mapping/mapping.cpp b/src/ifcgeom/mapping/mapping.cpp index f98bfe232d..034534e037 100644 --- a/src/ifcgeom/mapping/mapping.cpp +++ b/src/ifcgeom/mapping/mapping.cpp @@ -47,41 +47,42 @@ void MAKE_INIT_FN(MappingImplementation)(ifcopenshell::geometry::impl::MappingFa #define mapping POSTFIX_SCHEMA(mapping) -IfcSchema::IfcProduct::list::ptr mapping::products_represented_by(const IfcSchema::IfcRepresentation* representation, IfcSchema::IfcRepresentationMap*& rmap, bool only_direct) { - IfcSchema::IfcProduct::list::ptr products(new IfcSchema::IfcProduct::list); +std::vector mapping::products_represented_by(const IfcSchema::IfcRepresentation& representation, IfcSchema::IfcRepresentationMap& rmap, bool only_direct) { + std::vector products; - IfcSchema::IfcProductRepresentation::list::ptr prodreps = representation->OfProductRepresentation(); - - for (IfcSchema::IfcProductRepresentation::list::it it = prodreps->begin(); it != prodreps->end(); ++it) { + std::vector prodreps = representation.OfProductRepresentation(); + for (auto& prodrep : prodreps) { // http://buildingsmart-tech.org/ifc/IFC2x3/TC1/html/ifcrepresentationresource/lexical/ifcproductrepresentation.htm // IFC2x Edition 3 NOTE Users should not instantiate the entity IfcProductRepresentation from IFC2x Edition 3 onwards. // It will be changed into an ABSTRACT supertype in future releases of IFC. // IfcProductRepresentation also lacks the INVERSE relation to IfcProduct // Let's find the IfcProducts that reference the IfcProductRepresentation anyway - products->push((*it)->file_->getInverse((*it)->id(), &IfcSchema::IfcProduct::Class(), -1)->as()); + auto invs = prodrep.data()->file()->getInverse(prodrep.id(), &IfcSchema::IfcProduct::Class(), -1); + for (auto& inv : invs) { + products.push_back(inv.as()); + } } if (only_direct) { return products; } - IfcSchema::IfcRepresentationMap::list::ptr maps = representation->RepresentationMap(); - if (maps->size() == 1) { - rmap = *maps->begin(); + std::vector maps = representation.RepresentationMap(); + if (maps.size() == 1) { + rmap = maps.front(); if (not_reusable_maps_.find(rmap) != not_reusable_maps_.end()) { return products; } - taxonomy::matrix4::ptr origin = taxonomy::cast(map(rmap->MappingOrigin())); + taxonomy::matrix4::ptr origin = taxonomy::cast(map(rmap.MappingOrigin())); if (origin->is_identity()) { - IfcSchema::IfcMappedItem::list::ptr items = rmap->MapUsage(); - for (IfcSchema::IfcMappedItem::list::it it = items->begin(); it != items->end(); ++it) { - IfcSchema::IfcMappedItem* item = *it; - if (item->StyledByItem()->size() != 0) continue; + std::vector items = rmap.MapUsage(); + for (auto& item : items) { + if (item.StyledByItem().size() != 0) continue; taxonomy::matrix4::ptr target; try { - target = taxonomy::cast(map(item->MappingTarget())); + target = taxonomy::cast(map(item.MappingTarget())); } catch (const std::exception& e) { Logger::Error(e); continue; @@ -90,14 +91,15 @@ IfcSchema::IfcProduct::list::ptr mapping::products_represented_by(const IfcSchem continue; } - IfcSchema::IfcRepresentation::list::ptr reps = item->file_->getInverse(item->id(), (&IfcSchema::IfcRepresentation::Class()), -1)->as(); - for (IfcSchema::IfcRepresentation::list::it jt = reps->begin(); jt != reps->end(); ++jt) { - IfcSchema::IfcRepresentation* rep = *jt; - if (rep->Items()->size() != 1) continue; - IfcSchema::IfcProductRepresentation::list::ptr prodreps_mapped = rep->OfProductRepresentation(); - for (IfcSchema::IfcProductRepresentation::list::it kt = prodreps_mapped->begin(); kt != prodreps_mapped->end(); ++kt) { - IfcSchema::IfcProduct::list::ptr ps = (*kt)->file_->getInverse((*kt)->id(), (&IfcSchema::IfcProduct::Class()), -1)->as(); - products->push(ps); + auto reps = item.data()->file()->getInverse(item.id(), (&IfcSchema::IfcRepresentation::Class()), -1); + for (auto& rep : reps) { + if (rep.as().Items().size() != 1) continue; + std::vector prodreps_mapped = rep.as().OfProductRepresentation(); + for (auto& prm : prodreps_mapped) { + auto ps = prm.data()->file()->getInverse(prm.id(), (&IfcSchema::IfcProduct::Class()), -1); + for (auto& p : ps) { + products.push_back(p.as()); + } } } } @@ -108,44 +110,40 @@ IfcSchema::IfcProduct::list::ptr mapping::products_represented_by(const IfcSchem } namespace { - IfcSchema::IfcProduct::list::ptr filter_products(IfcSchema::IfcProduct::list::ptr unfiltered_products, std::vector& filters) { - auto ifcproducts = IfcSchema::IfcProduct::list::ptr(new IfcSchema::IfcProduct::list); - for (IfcSchema::IfcProduct::list::it jt = unfiltered_products->begin(); jt != unfiltered_products->end(); ++jt) { - IfcSchema::IfcProduct* prod = *jt; - if (boost::all(filters, [prod](const filter_t& f) { return f(prod); })) { - ifcproducts->push(prod); - } +std::vector filter_products(const std::vector& unfiltered_products, const std::vector& filters) { + std::vector ifcproducts; + for (auto& prod : unfiltered_products) { + if (boost::all(filters, [prod](const filter_t& f) { return f(prod); })) { + ifcproducts.push_back(prod); } - return ifcproducts; } + return ifcproducts; +} } -bool mapping::reuse_ok_(const IfcSchema::IfcProduct::list::ptr& products) { +bool mapping::reuse_ok_(const std::vector& products) { // With world coords enabled, object transformations are directly applied to // the BRep. There is no way to re-use the geometry for multiple products. if (settings_.get().get()) { return false; } - if (products->size() == 1) { + if (products.size() == 1) { return true; } - std::set associated_single_materials; + std::set associated_single_materials; - for (IfcSchema::IfcProduct::list::it it = products->begin(); it != products->end(); ++it) { - IfcSchema::IfcProduct* product = *it; - - if (!settings_.get().get() && find_openings(product)->size()) { + for (auto& product : products) { + if (!settings_.get().get() && !find_openings(product).empty()) { return false; } if (settings_.get().get()) { - IfcSchema::IfcRelAssociates::list::ptr associations = product->HasAssociations(); - for (IfcSchema::IfcRelAssociates::list::it jt = associations->begin(); jt != associations->end(); ++jt) { - IfcSchema::IfcRelAssociatesMaterial* assoc = (*jt)->as(); - if (assoc) { - if (assoc->RelatingMaterial()->declaration().is(IfcSchema::IfcMaterialLayerSetUsage::Class())) { + std::vector associations = product.HasAssociations(); + for (auto& assoc : associations) { + if (auto assocm = assoc.as()) { + if (assocm.RelatingMaterial().declaration().is(IfcSchema::IfcMaterialLayerSetUsage::Class())) { // TODO: Check whether single layer? return false; } @@ -161,49 +159,50 @@ bool mapping::reuse_ok_(const IfcSchema::IfcProduct::list::ptr& products) { return associated_single_materials.size() == 1; } -aggregate_of_instance::ptr mapping::find_openings(const IfcUtil::IfcBaseEntity* inst) { - aggregate_of_instance::ptr openings(new aggregate_of_instance); +std::vector mapping::find_openings(const express::Base& inst) { + std::vector openings; - if (auto rep = inst->as()) { + if (auto rep = inst.as()) { // @todo this is essentially only for hybrid kernel trying to guess // when not to use a simple kernel. - IfcSchema::IfcRepresentationMap* rmap; + IfcSchema::IfcRepresentationMap rmap; auto prods = products_represented_by(rep, rmap, true); - for (auto& p : *prods) { - openings->push(find_openings(p)); + for (auto& p : prods) { + auto ops = find_openings(p); + openings.insert(openings.end(), ops.begin(), ops.end()); } return openings; } - if (inst->as() && !inst->as()) { - const IfcSchema::IfcElement* element = inst->as(); - auto rels = element->HasOpenings(); - for (auto& rel : *rels) { - openings->push(rel->RelatedOpeningElement()); + if (inst.as() && !inst.as()) { + auto element = inst.as(); + auto rels = element.HasOpenings(); + for (auto& rel : rels) { + openings.push_back(rel.RelatedOpeningElement()); } } // Is the IfcElement a decomposition of an IfcElement with any IfcOpeningElements? - const IfcSchema::IfcObjectDefinition* obdef = inst->as(); - if (obdef != nullptr) { + auto obdef = inst.as(); + if (obdef) { for (;;) { - auto decomposes = obdef->Decomposes()->generalize(); - if (decomposes->size() != 1) { + auto decomposes = obdef.Decomposes(); + if (decomposes.size() != 1) { // If we have multiple decompositions, not allowed by schema, // openings associated to relating decompositions are not // considered; break; } - if ((*decomposes->begin())->as() == nullptr) { + if (!decomposes.front().as()) { // Only aggregation, not nesting is considered. break; } - IfcSchema::IfcObjectDefinition* rel_obdef = (*decomposes->begin())->as()->RelatingObject(); - if (rel_obdef->as() && !rel_obdef->as()) { - IfcSchema::IfcElement* element = rel_obdef->as(); - auto rels = element->HasOpenings(); - for (auto& rel : *rels) { - openings->push(rel->RelatedOpeningElement()); + auto rel_obdef = decomposes.front().as().RelatingObject(); + if (rel_obdef.as() && !rel_obdef.as()) { + auto element = rel_obdef.as(); + auto rels = element.HasOpenings(); + for (auto& rel : rels) { + openings.push_back(rel.RelatedOpeningElement()); } } @@ -216,7 +215,7 @@ aggregate_of_instance::ptr mapping::find_openings(const IfcUtil::IfcBaseEntity* void mapping::get_representations(std::vector& tasks, std::vector& filters) { - IfcSchema::IfcRepresentation::list::ptr representations(new IfcSchema::IfcRepresentation::list); + std::vector representations; if (!settings_.get().has()) { addRepresentationsFromDefaultContexts(representations); @@ -224,149 +223,156 @@ void mapping::get_representations(std::vector& tasks, addRepresentationsFromContextIds(representations); } - IfcSchema::IfcRepresentation::list::ptr ok_mapped_representations(new IfcSchema::IfcRepresentation::list); + std::vector ok_mapped_representations; int task_index = 0; - for (auto representation : *representations) { - IfcSchema::IfcRepresentationMap* rmap = nullptr; - IfcSchema::IfcProduct::list::ptr ifcproducts = filter_products(products_represented_by(representation, rmap, false), filters); + for (auto representation : representations) { + IfcSchema::IfcRepresentationMap rmap; + std::vector ifcproducts = filter_products(products_represented_by(representation, rmap, false), filters); - if (ifcproducts->size() == 0) { + if (ifcproducts.empty()) { continue; } auto geometry_reuse_ok_for_current_representation_ = reuse_ok_(ifcproducts); - if (!geometry_reuse_ok_for_current_representation_ && rmap != nullptr) { + if (!geometry_reuse_ok_for_current_representation_ && rmap) { not_reusable_maps_.insert(rmap); } - IfcSchema::IfcRepresentationMap::list::ptr maps = representation->RepresentationMap(); + std::vector maps = representation.RepresentationMap(); - if (!geometry_reuse_ok_for_current_representation_ && maps->size() == 1) { + if (!geometry_reuse_ok_for_current_representation_ && maps.size() == 1) { // unfiltered_products contains products represented by this representation by means of mapped items. // For example because of openings applied to products, reuse might not be acceptable and then the // products will be processed by means of their immediate representation and not the mapped representation. // IfcRepresentationMaps are also used for IfcTypeProducts, so an additional check is performed whether the map // is indeed used by IfcMappedItems. - IfcSchema::IfcRepresentationMap* map = *maps->begin(); - if (map->MapUsage()->size() > 0) { + auto& map = maps.front(); + if (map.MapUsage().size() > 0) { continue; } } // Check if this representation has (or will be) processed as part its mapped representation bool representation_processed_as_mapped_item = false; - IfcSchema::IfcRepresentation* representation_mapped_to_result = representation_mapped_to(representation); + auto representation_mapped_to_result = representation_mapped_to(representation); if (representation_mapped_to_result) { representation_processed_as_mapped_item = geometry_reuse_ok_for_current_representation_ && ( - ok_mapped_representations->contains(representation_mapped_to_result) || reuse_ok_(products_represented_by(representation_mapped_to_result, rmap))); + std::find(ok_mapped_representations.begin(), ok_mapped_representations.end(), representation_mapped_to_result) != ok_mapped_representations.end() || + reuse_ok_(products_represented_by(representation_mapped_to_result, rmap))); } if (representation_processed_as_mapped_item) { - ok_mapped_representations->push(representation_mapped_to_result); + ok_mapped_representations.push_back(representation_mapped_to_result); continue; } - if (!geometry_reuse_ok_for_current_representation_ && ifcproducts->size() > 1) { + if (!geometry_reuse_ok_for_current_representation_ && ifcproducts.size() > 1) { // reuse_ok is taken into account in products_represented_by(), but not when // the same IfcRepresentation is directly assigned to multiple products. - for (auto& p : *ifcproducts) { + for (auto& p : ifcproducts) { geometry_conversion_task task; task.index = task_index++; task.representation = representation; - task.products = aggregate_of_instance::ptr(new aggregate_of_instance); - task.products->push(p); + task.products.push_back(p); tasks.emplace_back(task); } } else { geometry_conversion_task task; task.index = task_index++; task.representation = representation; - task.products = ifcproducts->generalize(); + task.products.insert(task.products.end(), ifcproducts.begin(), ifcproducts.end()); tasks.emplace_back(task); } } } -const IfcUtil::IfcBaseEntity* mapping::get_product_type(const IfcUtil::IfcBaseEntity* product_) { - auto product = product_->as(); +const express::Base mapping::get_product_type(const express::Base& product_) { + auto product = product_.as(); #ifdef SCHEMA_IfcObject_HAS_IsTypedBy - auto rels = product->IsTypedBy(); + auto rels = product.IsTypedBy(); #else // IFC2X3. - auto rels = product->IsDefinedBy(); + auto rels = product.IsDefinedBy(); #endif - for (auto it = rels->begin(); it != rels->end(); ++it) { + for (auto it = rels.begin(); it != rels.end(); ++it) { #ifdef SCHEMA_IfcObject_HAS_IsTypedBy auto rel = *it; #else // IFC2X3. - IfcSchema::IfcRelDefinesByType* rel = (*it)->as(); - if (rel == nullptr) { + auto rel = (*it).as(); + if (!rel) { continue; } #endif // Avoid segfault if RelatingType is unset. - if (rel->get("RelatingType").isNull()){ + if (rel.get("RelatingType").isNull()){ break; - return nullptr; } - return rel->RelatingType(); + return rel.RelatingType(); } - return nullptr; + return express::Base{}; } -const IfcUtil::IfcBaseEntity* mapping::get_single_material_association(const IfcUtil::IfcBaseEntity* product_) { - auto product = product_->as(); - IfcSchema::IfcMaterial* single_material = 0; - IfcSchema::IfcRelAssociatesMaterial::list::ptr associated_materials = product->HasAssociations()->as(); - if (associated_materials->size() == 1) { - IfcSchema::IfcMaterialSelect* associated_material = nullptr; +const express::Base mapping::get_single_material_association(const express::Base& product_) { + auto product = product_.as(); + IfcSchema::IfcMaterial single_material; + auto associations = product.HasAssociations(); + std::vector associated_materials; + for (auto& assoc : associations) { + if (auto assocm = assoc.as()) { + associated_materials.push_back(assocm); + } + } + if (associated_materials.size() == 1) { + IfcSchema::IfcMaterialSelect associated_material; try { - associated_material = (*associated_materials->begin())->RelatingMaterial(); + associated_material = associated_materials.front().RelatingMaterial(); } catch(IfcParse::IfcException& e) { Logger::Error(e.what()); } if (associated_material) { - single_material = associated_material->as(); + // @todo make sure that chaining as() works in nullptrs + single_material = associated_material.as().as(); // NB: Single-layer layersets are also considered, regardless of --enable-layerset-slicing, this // in accordance with other viewers. if (!single_material) { - if (associated_material->as() || associated_material->as()) { - IfcSchema::IfcMaterialLayerSet* layerset; - if (auto *m = associated_material->as()) { - if (m->get("ForLayerSet").isNull()) { + if (associated_material.as().as() || associated_material.as().as()) { + IfcSchema::IfcMaterialLayerSet layerset; + if (auto m = associated_material.as().as()) { + if (m.get("ForLayerSet").isNull()) { Logger::Warning("Missing ForLayerSet for:", m); - return nullptr; + return express::Base{}; } - layerset = m->ForLayerSet(); + layerset = m.ForLayerSet(); } else { - layerset = associated_material->as(); + layerset = associated_material.as().as(); } - if (settings_.get().value ? layerset->MaterialLayers()->size() >= 1 : layerset->MaterialLayers()->size() == 1) { - IfcSchema::IfcMaterialLayer* layer = (*layerset->MaterialLayers()->begin()); - if (auto *m_ = layer->Material()) { + if (settings_.get().value ? layerset.MaterialLayers().size() >= 1 : layerset.MaterialLayers().size() == 1) { + IfcSchema::IfcMaterialLayer layer = layerset.MaterialLayers().front(); + if (auto m_ = layer.Material()) { single_material = m_; } } } + #ifdef SCHEMA_HAS_IfcMaterialProfileSet - if (associated_material->as() || associated_material->as()) { - IfcSchema::IfcMaterialProfileSet* profileset; - if (auto* m = associated_material->as()) { - if (m->get("ForProfileSet").isNull()) { + if (associated_material.as().as() || associated_material.as().as()) { + IfcSchema::IfcMaterialProfileSet profileset; + if (auto m = associated_material.as().as()) { + if (m.get("ForProfileSet").isNull()) { Logger::Warning("Missing ForProfileSet for:", m); - return nullptr; + return express::Base{}; } - profileset = m->ForProfileSet(); + profileset = m.ForProfileSet(); } else { - profileset = associated_material->as(); + profileset = associated_material.as().as(); } - if (settings_.get().value ? profileset->MaterialProfiles()->size() >= 1 : profileset->MaterialProfiles()->size() == 1) { - IfcSchema::IfcMaterialProfile* profile = (*profileset->MaterialProfiles()->begin()); - if (auto *m_ = profile->Material()) { + if (settings_.get().value ? profileset.MaterialProfiles().size() >= 1 : profileset.MaterialProfiles().size() == 1) { + IfcSchema::IfcMaterialProfile profile = profileset.MaterialProfiles().front(); + if (auto m_ = profile.Material()) { single_material = m_; } } @@ -374,11 +380,11 @@ const IfcUtil::IfcBaseEntity* mapping::get_single_material_association(const Ifc #endif #ifdef SCHEMA_HAS_IfcMaterialConstituentSet - if (associated_material->as() && associated_material->as()->MaterialConstituents()) { - IfcSchema::IfcMaterialConstituentSet* constituentset = associated_material->as(); - if (settings_.get().value ? constituentset->MaterialConstituents()->get()->size() >= 1 : constituentset->MaterialConstituents()->get()->size() == 1) { - IfcSchema::IfcMaterialConstituent* constituent = (*constituentset->MaterialConstituents()->get()->begin()); - if (auto* m_ = constituent->Material()) { + if (associated_material.as().as() && associated_material.as().as().MaterialConstituents()) { + IfcSchema::IfcMaterialConstituentSet constituentset = associated_material.as().as(); + if (settings_.get().value ? constituentset.MaterialConstituents().value().size() >= 1 : constituentset.MaterialConstituents().value().size() == 1) { + IfcSchema::IfcMaterialConstituent constituent = constituentset.MaterialConstituents().value().front(); + if (auto m_ = constituent.Material()) { single_material = m_; } } @@ -390,25 +396,25 @@ const IfcUtil::IfcBaseEntity* mapping::get_single_material_association(const Ifc return single_material; } -IfcSchema::IfcRepresentation* mapping::representation_mapped_to(const IfcSchema::IfcRepresentation* representation) { - IfcSchema::IfcRepresentation* representation_mapped_to = 0; - IfcSchema::IfcRepresentationItem::list::ptr items = representation->Items(); - if (items->size() == 1) { - IfcSchema::IfcRepresentationItem* item = *items->begin(); - if (item->declaration().is(IfcSchema::IfcMappedItem::Class())) { - if (item->StyledByItem()->size() == 0) { - IfcSchema::IfcMappedItem* mapped_item = item->as(); +IfcSchema::IfcRepresentation mapping::representation_mapped_to(const IfcSchema::IfcRepresentation& representation) { + IfcSchema::IfcRepresentation representation_mapped_to; + std::vector items = representation.Items(); + if (items.size() == 1) { + IfcSchema::IfcRepresentationItem& item = items.front(); + if (item.declaration().is(IfcSchema::IfcMappedItem::Class())) { + if (item.StyledByItem().size() == 0) { + IfcSchema::IfcMappedItem mapped_item = item.as(); taxonomy::matrix4::ptr target; try { - target = taxonomy::cast(map(mapped_item->MappingTarget())); + target = taxonomy::cast(map(mapped_item.MappingTarget())); } catch (const std::exception& e) { Logger::Error(e); } if (target && target->is_identity()) { - IfcSchema::IfcRepresentationMap* rmap = mapped_item->MappingSource(); - taxonomy::matrix4::ptr origin = taxonomy::cast(map(rmap->MappingOrigin())); + IfcSchema::IfcRepresentationMap rmap = mapped_item.MappingSource(); + taxonomy::matrix4::ptr origin = taxonomy::cast(map(rmap.MappingOrigin())); if (origin->is_identity()) { - representation_mapped_to = rmap->MappedRepresentation(); + representation_mapped_to = rmap.MappedRepresentation(); } } } @@ -418,16 +424,17 @@ IfcSchema::IfcRepresentation* mapping::representation_mapped_to(const IfcSchema: } namespace { - const IfcSchema::IfcRepresentationItem* find_item_carrying_style(const IfcSchema::IfcRepresentationItem* item) { - if (item->StyledByItem()->size()) { + const IfcSchema::IfcRepresentationItem find_item_carrying_style(IfcSchema::IfcRepresentationItem item) { + if (!item.StyledByItem().empty()) { return item; } - while (auto booleanresult = item->as()) { + while (auto booleanresult = item.as()) { // All instantiations of IfcBooleanOperand (type of FirstOperand) are subtypes of // IfcGeometricRepresentationItem - item = booleanresult->FirstOperand()->as(); - if (item->StyledByItem()->size()) { + // @nb this is not really how the select hierarchy is structured, not all representation items are selected here + item = booleanresult.FirstOperand().concrete().as(); + if (!item.StyledByItem().empty()) { return item; } } @@ -441,8 +448,8 @@ namespace { } template - std::pair get_surface_style(const IfcSchema::IfcStyledItem* si) { - std::vector prs_styles; + std::pair get_surface_style(const IfcSchema::IfcStyledItem& si) { + std::vector prs_styles; #ifdef SCHEMA_HAS_IfcStyleAssignmentSelect auto style_assignments = si->Styles(); @@ -462,17 +469,17 @@ namespace { // Only in case of 2x3 or old style IfcPresentationStyleAssignment auto styles = style_assignment->Styles(); #elif defined(SCHEMA_HAS_IfcPresentationStyleAssignment) - IfcSchema::IfcPresentationStyleAssignment::list::ptr style_assignments = si->Styles(); + std::vector style_assignments = si->Styles(); for (IfcSchema::IfcPresentationStyleAssignment::list::it kt = style_assignments->begin(); kt != style_assignments->end(); ++kt) { IfcSchema::IfcPresentationStyleAssignment* style_assignment = *kt; // Only in case of 2x3 or old style IfcPresentationStyleAssignment auto styles = style_assignment->Styles(); #else - auto styles = si->Styles(); + auto styles = si.Styles(); #endif - for (auto lt = styles->begin(); lt != styles->end(); ++lt) { - auto style_l = (*lt)->as(); + for (auto lt = styles.begin(); lt != styles.end(); ++lt) { + auto style_l = (*lt).as(); if (style_l) { prs_styles.push_back(style_l); } @@ -481,81 +488,87 @@ namespace { } #endif - IfcSchema::IfcSurfaceStyle *surface_style_ = nullptr; + IfcSchema::IfcSurfaceStyle surface_style_; for (auto& style : prs_styles) { - if (auto surface_style = style->as()) { - if (surface_style->Side() != IfcSchema::IfcSurfaceSide::IfcSurfaceSide_NEGATIVE) { + if (auto surface_style = style.as()) { + if (surface_style.Side() != IfcSchema::IfcSurfaceSide::IfcSurfaceSide_NEGATIVE) { surface_style_ = surface_style; - auto styles_elements = surface_style->Styles(); - for (auto mt = styles_elements->begin(); mt != styles_elements->end(); ++mt) { - if ((*mt)->template as()) { - return std::make_pair(surface_style, (*mt)->as()); + auto styles_elements = surface_style.Styles(); + for (auto mt = styles_elements.begin(); mt != styles_elements.end(); ++mt) { + if (auto mtt = (*mt).template as()) { + return std::make_pair(surface_style, mtt); } } } } } - return std::make_pair(surface_style_, nullptr); + return std::make_pair(surface_style_, T{}); } - bool process_colour(IfcSchema::IfcColourRgb* colour, double* rgb) { - if (colour != 0) { - rgb[0] = colour->Red(); - rgb[1] = colour->Green(); - rgb[2] = colour->Blue(); + bool process_colour(const IfcSchema::IfcColourRgb& colour, std::array& rgb) { + if (colour) { + rgb[0] = colour.Red(); + rgb[1] = colour.Green(); + rgb[2] = colour.Blue(); } - return colour != 0; + return colour; } - bool process_colour(IfcSchema::IfcNormalisedRatioMeasure* factor, double* rgb) { - if (factor != 0) { - const double f = *factor; + bool process_colour(const IfcSchema::IfcNormalisedRatioMeasure& factor, std::array& rgb) { + if (factor) { + const double f = factor; rgb[0] = rgb[1] = rgb[2] = f; } - return factor != 0; + return factor; } - bool process_colour(IfcSchema::IfcColourOrFactor* colour_or_factor, double* rgb) { - if (colour_or_factor == 0) { + bool process_colour(const IfcSchema::IfcColourOrFactor& colour_or_factor, std::array& rgb) { + if (!colour_or_factor) { return false; - } else if (colour_or_factor->declaration().is(IfcSchema::IfcColourRgb::Class())) { - return process_colour(static_cast(colour_or_factor), rgb); - } else if (colour_or_factor->declaration().is(IfcSchema::IfcNormalisedRatioMeasure::Class())) { - return process_colour(static_cast(colour_or_factor), rgb); + } else if (auto crgb = colour_or_factor.as()) { + return process_colour(crgb, rgb); + } else if (auto ratio = colour_or_factor.as()) { + return process_colour(ratio, rgb); } else { return false; } } } -const IfcSchema::IfcStyledItem* mapping::find_style(const IfcSchema::IfcRepresentationItem* representation_item) { +IfcSchema::IfcStyledItem mapping::find_style(const IfcSchema::IfcRepresentationItem& representation_item_) { // For certain representation items, most notably boolean operands, // a style definition might reside on one of its operands. + auto representation_item = representation_item_; representation_item = find_item_carrying_style(representation_item); - if (representation_item->as()) { - return representation_item->as(); + if (auto st = representation_item.as()) { + return st; } - IfcSchema::IfcStyledItem::list::ptr styled_items = representation_item->StyledByItem(); - if (styled_items->size()) { + auto styled_items = representation_item.StyledByItem(); + if (styled_items.size()) { // StyledByItem is a SET [0:1] OF IfcStyledItem, so we return after the first IfcStyledItem: - return *styled_items->begin(); + return styled_items.front(); } - return nullptr; + return IfcSchema::IfcStyledItem{}; } -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcMaterial* material) { - IfcSchema::IfcMaterialDefinitionRepresentation::list::ptr defs = material->HasRepresentation(); - for (IfcSchema::IfcMaterialDefinitionRepresentation::list::it jt = defs->begin(); jt != defs->end(); ++jt) { - IfcSchema::IfcRepresentation::list::ptr reps = (*jt)->Representations(); - IfcSchema::IfcStyledItem::list::ptr styles(new IfcSchema::IfcStyledItem::list); - for (IfcSchema::IfcRepresentation::list::it it = reps->begin(); it != reps->end(); ++it) { - styles->push((**it).Items()->as()); +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcMaterial& material) { + std::vector defs = material.HasRepresentation(); + for (auto jt = defs.begin(); jt != defs.end(); ++jt) { + std::vector reps = (*jt).Representations(); + std::vector styles; + for (auto it = reps.begin(); it != reps.end(); ++it) { + auto itms = it->Items(); + for (auto& itm : itms) { + if (auto si = itm.as()) { + styles.push_back(si); + } + } } - if (styles->size() == 1) { - IfcSchema::IfcStyledItem *styled_item = *styles->begin(); + if (styles.size() == 1) { + IfcSchema::IfcStyledItem& styled_item = styles.front(); auto mapped_item = map(styled_item); if (mapped_item) { return mapped_item; @@ -589,13 +602,12 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcMaterial* material) { // return &(style_cache[material->data().id()] = material_style); } -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcStyledItem* inst) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcStyledItem& inst) { auto style_pair = get_surface_style(inst); - IfcSchema::IfcSurfaceStyle* style = style_pair.first; - IfcSchema::IfcSurfaceStyleShading* shading = style_pair.second; + auto [style, shading] = style_pair; - if (style == nullptr) { + if (!style) { // E.g. IfcCurveStyle is skipped as unsupported. Logger::Warning("Only IfcSurfaceStyle is supported, couldn't find it in IfcStyledItem: ", inst); failed_on_purpose_.insert(inst); @@ -606,29 +618,29 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcStyledItem* inst) { return map(style); } -taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSurfaceStyle* style) { - auto styles = style->Styles(); - IfcSchema::IfcSurfaceStyleShading* shading = nullptr; - for (auto& s : *styles) { - if (shading = s->as()) { +taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSurfaceStyle& style) { + auto styles = style.Styles(); + IfcSchema::IfcSurfaceStyleShading shading; + for (auto& s : styles) { + if (shading = s.as()) { break; } } taxonomy::style::ptr surface_style = taxonomy::make(); surface_style->instance = style; - if (settings_.get().get() && style->Name()) { - surface_style->name = *style->Name(); + if (settings_.get().get() && style.Name()) { + surface_style->name = *style.Name(); } else { std::ostringstream oss; if (shading) { - oss << shading->declaration().name() << "-" << shading->id(); + oss << shading.declaration().name() << "-" << shading.id(); } else { oss << "-"; } surface_style->name = oss.str(); } - if (shading == nullptr) { + if (!shading) { // E.g. IfcSurface style has only IfcExternallyDefinedSurfaceStyle. return surface_style; } @@ -636,44 +648,44 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSurfaceStyle* style) { surface_style->use_surface_color = settings_.get().get(); static taxonomy::colour white = taxonomy::colour(1., 1., 1.); - double rgb[3]; - if (process_colour(shading->SurfaceColour(), rgb)) { + std::array rgb; + if (process_colour(shading.SurfaceColour(), rgb)) { surface_style->surface.components() << rgb[0], rgb[1], rgb[2]; surface_style->diffuse = surface_style->surface; } - if (auto rendering_style = shading->as()) { - if (rendering_style->DiffuseColour() && process_colour(rendering_style->DiffuseColour(), rgb)) { + if (auto rendering_style = shading.as()) { + if (rendering_style.DiffuseColour() && process_colour(rendering_style.DiffuseColour(), rgb)) { const taxonomy::colour& old_diffuse = surface_style->diffuse ? surface_style->diffuse : white; surface_style->diffuse = taxonomy::colour(old_diffuse.r() * rgb[0], old_diffuse.g() * rgb[1], old_diffuse.b() * rgb[2]); } - if (rendering_style->DiffuseTransmissionColour()) { + if (rendering_style.DiffuseTransmissionColour()) { // Not supported } - if (rendering_style->ReflectionColour()) { + if (rendering_style.ReflectionColour()) { // Not supported } - if (rendering_style->SpecularColour() && process_colour(rendering_style->SpecularColour(), rgb)) { + if (rendering_style.SpecularColour() && process_colour(rendering_style.SpecularColour(), rgb)) { surface_style->specular = taxonomy::colour(rgb[0], rgb[1], rgb[2]); } - if (rendering_style->SpecularHighlight()) { - IfcSchema::IfcSpecularHighlightSelect* highlight = rendering_style->SpecularHighlight(); - if (highlight->declaration().is(IfcSchema::IfcSpecularRoughness::Class())) { - double roughness = *((IfcSchema::IfcSpecularRoughness*)highlight); + if (rendering_style.SpecularHighlight()) { + IfcSchema::IfcSpecularHighlightSelect highlight = rendering_style.SpecularHighlight(); + if (auto roughness_ = highlight.as()) { + double roughness = roughness_; if (roughness >= 1e-9) { surface_style->specularity = (1.0 / roughness); } - } else if (highlight->declaration().is(IfcSchema::IfcSpecularExponent::Class())) { - surface_style->specularity = (*((IfcSchema::IfcSpecularExponent*)highlight)); + } else if (auto exponent = highlight.as()) { + surface_style->specularity = exponent; } } - if (rendering_style->TransmissionColour()) { + if (rendering_style.TransmissionColour()) { // Not supported } #ifndef SCHEMA_IfcSurfaceStyleShading_HAS_Transparency // ifc2x3 - if (rendering_style->Transparency()) { - const double d = *rendering_style->Transparency(); + if (rendering_style.Transparency()) { + const double d = *rendering_style.Transparency(); surface_style->transparency = d; } #endif @@ -681,8 +693,8 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSurfaceStyle* style) { #ifdef SCHEMA_IfcSurfaceStyleShading_HAS_Transparency // ifc4 and onwards - if (shading->Transparency()) { - const double d = *shading->Transparency(); + if (shading.Transparency()) { + const double d = *shading.Transparency(); surface_style->transparency = d; } #endif @@ -690,8 +702,8 @@ taxonomy::ptr mapping::map_impl(const IfcSchema::IfcSurfaceStyle* style) { return surface_style; } -taxonomy::ptr mapping::map(const IfcBaseInterface* inst) { - auto iden = inst->as()->identity(); +taxonomy::ptr mapping::map(const express::Base& inst) { + auto iden = inst.identity(); if (use_caching_) { std::lock_guard guard(cache_guard_); auto it = cache_.find(iden); @@ -702,7 +714,7 @@ taxonomy::ptr mapping::map(const IfcBaseInterface* inst) { taxonomy::ptr item = nullptr; // @todo we should check whether there is a notice performance impact on the large sequence - // of if-statements and whether a switch on e.g inst->declaration()->index_in_schema() + // of if-statements and whether a switch on e.g inst.declaration()->index_in_schema() // isn't more efficient (which would disable inheritance though). bool matched = false; @@ -721,84 +733,86 @@ taxonomy::ptr mapping::map(const IfcBaseInterface* inst) { } namespace { - IfcUtil::IfcBaseEntity* get_RelatingObject(IfcSchema::IfcRelDecomposes* decompose) { + express::Base get_RelatingObject(IfcSchema::IfcRelDecomposes& decompose) { #ifdef SCHEMA_IfcRelDecomposes_HAS_RelatingObject return decompose->RelatingObject(); #else - IfcSchema::IfcRelAggregates* aggr = decompose->as(); - if (aggr != nullptr) { - return aggr->RelatingObject(); + IfcSchema::IfcRelAggregates aggr = decompose.as(); + if (aggr) { + return aggr.RelatingObject(); } - return nullptr; + return express::Base{}; #endif } } -IfcUtil::IfcBaseEntity* mapping::get_decomposing_entity(const IfcUtil::IfcBaseEntity* inst, bool include_openings) { - IfcSchema::IfcObjectDefinition* parent = 0; +express::Base mapping::get_decomposing_entity(const express::Base& inst, bool include_openings) { + IfcSchema::IfcObjectDefinition parent; - auto product = inst->as(); + auto product = inst.as(); if (!product) { return parent; } /* In case of an opening element, parent to the RelatingBuildingElement */ - if (include_openings && product->declaration().is(IfcSchema::IfcOpeningElement::Class())) { - IfcSchema::IfcOpeningElement* opening = (IfcSchema::IfcOpeningElement*)product; - IfcSchema::IfcRelVoidsElement::list::ptr voids = opening->VoidsElements(); - if (voids->size()) { - IfcSchema::IfcRelVoidsElement* ifc_void = *voids->begin(); - parent = ifc_void->RelatingBuildingElement(); + if (include_openings && product.declaration().is(IfcSchema::IfcOpeningElement::Class())) { + IfcSchema::IfcOpeningElement opening = product.as(); + std::vector voids = opening.VoidsElements(); + if (voids.size()) { + IfcSchema::IfcRelVoidsElement& ifc_void = voids.front(); + parent = ifc_void.RelatingBuildingElement(); } - } else if (product->declaration().is(IfcSchema::IfcElement::Class())) { - IfcSchema::IfcElement* element = (IfcSchema::IfcElement*)product; - IfcSchema::IfcRelFillsElement::list::ptr fills = element->FillsVoids(); + } else if (product.declaration().is(IfcSchema::IfcElement::Class())) { + IfcSchema::IfcElement element = product.as(); + std::vector fills = element.FillsVoids(); /* In case of a RelatedBuildingElement parent to the opening element */ - if (fills->size() && include_openings) { - for (IfcSchema::IfcRelFillsElement::list::it it = fills->begin(); it != fills->end(); ++it) { - IfcSchema::IfcRelFillsElement* fill = *it; - IfcSchema::IfcObjectDefinition* ifc_objectdef = fill->RelatingOpeningElement(); + if (fills.size() && include_openings) { + for (auto& fill : fills) { + IfcSchema::IfcObjectDefinition ifc_objectdef = fill.RelatingOpeningElement(); if (product == ifc_objectdef) continue; parent = ifc_objectdef; } } /* Else simply parent to the containing structure */ if (!parent) { - IfcSchema::IfcRelContainedInSpatialStructure::list::ptr parents = element->ContainedInStructure(); - if (parents->size()) { - IfcSchema::IfcRelContainedInSpatialStructure* container = *parents->begin(); - parent = container->RelatingStructure(); + std::vector parents = element.ContainedInStructure(); + if (parents.size()) { + IfcSchema::IfcRelContainedInSpatialStructure& container = parents.front(); + parent = container.RelatingStructure(); } } } /* Parent decompositions to the RelatingObject */ if (!parent) { - aggregate_of_instance::ptr parents = product->file_->getInverse(product->id(), (&IfcSchema::IfcRelAggregates::Class()), -1); - parents->push(product->file_->getInverse(product->id(), (&IfcSchema::IfcRelNests::Class()), -1)); - for (aggregate_of_instance::it it = parents->begin(); it != parents->end(); ++it) { - IfcSchema::IfcRelDecomposes* decompose = (*it)->as(); - IfcUtil::IfcBaseEntity* ifc_objectdef; + std::vector parents = product.data()->file()->getInverse(product.id(), (&IfcSchema::IfcRelAggregates::Class()), -1); + auto nests = product.data()->file()->getInverse(product.id(), (&IfcSchema::IfcRelNests::Class()), -1); + parents.insert(parents.end(), nests.begin(), nests.end()); + for (auto it = parents.begin(); it != parents.end(); ++it) { + IfcSchema::IfcRelDecomposes decompose = (*it).as(); + express::Base ifc_objectdef; ifc_objectdef = get_RelatingObject(decompose); if (!ifc_objectdef || product == ifc_objectdef) continue; - parent = ifc_objectdef->as(); + parent = ifc_objectdef.as(); } } return parent; } -std::map mapping::get_layers(IfcUtil::IfcBaseEntity* inst) { - auto prod = inst->as(); - std::map layers; - if (prod->Representation()) { - aggregate_of_instance::ptr r = IfcParse::traverse(prod->Representation()); - IfcSchema::IfcRepresentation::list::ptr representations = r->as(); - for (IfcSchema::IfcRepresentation::list::it it = representations->begin(); it != representations->end(); ++it) { - IfcSchema::IfcPresentationLayerAssignment::list::ptr a = (*it)->LayerAssignments(); - for (IfcSchema::IfcPresentationLayerAssignment::list::it jt = a->begin(); jt != a->end(); ++jt) { - layers[(*jt)->Name()] = *jt; +std::map mapping::get_layers(const express::Base& inst) { + auto prod = inst.as(); + std::map layers; + if (prod.Representation()) { + std::vector representations = IfcParse::traverse(prod.Representation()); + for (auto& inst : representations) { + if (auto repr = inst.as()) { + std::vector a = repr.LayerAssignments(); + for (auto& b : a) { + layers[b.Name()] = b; + } + } } } @@ -816,14 +830,14 @@ void mapping::initialize_units_() { #else auto projects = file_->instances_by_type(); #endif - IfcSchema::IfcUnitAssignment* unit_assignment = nullptr; - if (projects->size() == 1) { - auto* project = *projects->begin(); - unit_assignment = project->UnitsInContext(); + IfcSchema::IfcUnitAssignment unit_assignment; + if (projects.size() == 1) { + auto& project = projects.front(); + unit_assignment = project.UnitsInContext(); } else { Logger::Warning("Not a single project or context in file"); } - if (unit_assignment == nullptr) { + if (!unit_assignment) { Logger::Warning("Unable to detect unit information"); return; } @@ -831,30 +845,26 @@ void mapping::initialize_units_() { bool length_unit_encountered = false, angle_unit_encountered = false; try { - auto units = unit_assignment->Units(); - if (!units || !units->size()) { + auto units = unit_assignment.Units(); + if (units.empty()) { Logger::Warning("No unit information found"); } else { - for (auto it = units->begin(); it != units->end(); ++it) { - IfcSchema::IfcUnit* base = *it; - if (base->declaration().is(IfcSchema::IfcNamedUnit::Class())) { - IfcSchema::IfcNamedUnit* named_unit = base->as(); - if (named_unit->UnitType() == IfcSchema::IfcUnitEnum::IfcUnit_LENGTHUNIT || - named_unit->UnitType() == IfcSchema::IfcUnitEnum::IfcUnit_PLANEANGLEUNIT) { + for (auto& base : units) { + if (auto named_unit = base.as()) { + if (named_unit.UnitType() == IfcSchema::IfcUnitEnum::IfcUnit_LENGTHUNIT || + named_unit.UnitType() == IfcSchema::IfcUnitEnum::IfcUnit_PLANEANGLEUNIT) { std::string current_unit_name; const double current_unit_magnitude = IfcParse::get_SI_equivalent(named_unit); if (current_unit_magnitude != 0.) { - if (named_unit->declaration().is(IfcSchema::IfcConversionBasedUnit::Class())) { - IfcSchema::IfcConversionBasedUnit* u = (IfcSchema::IfcConversionBasedUnit*)base; - current_unit_name = u->Name(); - } else if (named_unit->declaration().is(IfcSchema::IfcSIUnit::Class())) { - IfcSchema::IfcSIUnit* si_unit = named_unit->as(); - if (si_unit->Prefix()) { - current_unit_name = IfcSchema::IfcSIPrefix::ToString(*si_unit->Prefix()); + if (auto u = named_unit.as()) { + current_unit_name = u.Name(); + } else if (auto si_unit = named_unit.as()) { + if (si_unit.Prefix()) { + current_unit_name = IfcSchema::IfcSIPrefix::ToString(*si_unit.Prefix()); } - current_unit_name += IfcSchema::IfcSIUnitName::ToString(si_unit->Name()); + current_unit_name += IfcSchema::IfcSIUnitName::ToString(si_unit.Name()); } - if (named_unit->UnitType() == IfcSchema::IfcUnitEnum::IfcUnit_LENGTHUNIT) { + if (named_unit.UnitType() == IfcSchema::IfcUnitEnum::IfcUnit_LENGTHUNIT) { length_unit_name_ = current_unit_name; length_unit_ = current_unit_magnitude; length_unit_encountered = true; @@ -921,21 +931,18 @@ void mapping::initialize_settings() { double lowest_precision_encountered = std::numeric_limits::infinity(); bool any_precision_encountered = false; - IfcSchema::IfcGeometricRepresentationContext::list::it it; - IfcSchema::IfcGeometricRepresentationContext::list::ptr contexts = + std::vector contexts = file_->instances_by_type_excl_subtypes(); - for (it = contexts->begin(); it != contexts->end(); ++it) { - IfcSchema::IfcGeometricRepresentationContext* context = *it; - + for (auto& context : contexts) { // See if there is a context_id filter and whether the context is selected if (settings_.get().has()) { auto cids = settings_.get().get(); - if (cids.find(context->id()) == cids.end()) { + if (cids.find(context.id()) == cids.end()) { bool selected_sub_context = false; - auto subs = context->HasSubContexts(); - for (auto& sub : *subs) { - if (cids.find(context->id()) != cids.end()) { + auto subs = context.HasSubContexts(); + for (auto& sub : subs) { + if (cids.find(context.id()) != cids.end()) { selected_sub_context = true; break; } @@ -947,9 +954,9 @@ void mapping::initialize_settings() { } auto fp = settings_.get().get(); - if (context->Precision() && (*context->Precision() * length_unit_ * fp) < lowest_precision_encountered) { + if (context.Precision() && (*context.Precision() * length_unit_ * fp) < lowest_precision_encountered) { // Some arbitrary factor that has proven to work better for the models in the set of test files. - lowest_precision_encountered = *context->Precision() * length_unit_ * fp; + lowest_precision_encountered = *context.Precision() * length_unit_ * fp; any_precision_encountered = true; } } @@ -968,22 +975,22 @@ void mapping::initialize_settings() { settings_.get().value = precision_to_set; } -bool mapping::get_layerset_information(const IfcUtil::IfcBaseInterface* p, layerset_information& info, int &) +bool mapping::get_layerset_information(const express::Base& p, layerset_information& info, int &) { - const IfcSchema::IfcProduct* product = p->as(); + auto product = p.as(); if (!product) { return false; } - IfcSchema::IfcMaterialLayerSetUsage* usage = 0; + IfcSchema::IfcMaterialLayerSetUsage usage; // Handle_Geom_Surface reference_surface; - IfcSchema::IfcRelAssociates::list::ptr associations = product->HasAssociations(); - for (IfcSchema::IfcRelAssociates::list::it it = associations->begin(); it != associations->end(); ++it) { - IfcSchema::IfcRelAssociatesMaterial* associates_material = (**it).as(); + std::vector associations = product.HasAssociations(); + for (auto it = associations.begin(); it != associations.end(); ++it) { + IfcSchema::IfcRelAssociatesMaterial associates_material = (*it).as(); if (associates_material) { - usage = associates_material->RelatingMaterial()->as(); + usage = associates_material.RelatingMaterial().as().as(); break; } } @@ -992,21 +999,21 @@ bool mapping::get_layerset_information(const IfcUtil::IfcBaseInterface* p, layer return false; } - IfcSchema::IfcRepresentation* body_representation = find_representation(product, "Body"); + IfcSchema::IfcRepresentation body_representation = find_representation(product, "Body"); if (!body_representation) { Logger::Warning("No body representation for product", product); return false; } - const IfcSchema::IfcMaterialLayerSet* layerset = usage->ForLayerSet(); - const bool positive = usage->DirectionSense() == IfcSchema::IfcDirectionSenseEnum::IfcDirectionSense_POSITIVE; - double offset = usage->OffsetFromReferenceLine() * this->length_unit_; + const IfcSchema::IfcMaterialLayerSet layerset = usage.ForLayerSet(); + const bool positive = usage.DirectionSense() == IfcSchema::IfcDirectionSenseEnum::IfcDirectionSense_POSITIVE; + double offset = usage.OffsetFromReferenceLine() * this->length_unit_; - IfcSchema::IfcMaterialLayer::list::ptr material_layers = layerset->MaterialLayers(); + std::vector material_layers = layerset.MaterialLayers(); - if (product->declaration().is(IfcSchema::IfcWall::Class())) { - IfcSchema::IfcRepresentation* axis_representation = find_representation(product, "Axis"); + if (product.declaration().is(IfcSchema::IfcWall::Class())) { + IfcSchema::IfcRepresentation axis_representation = find_representation(product, "Axis"); if (!axis_representation) { Logger::Message(Logger::LOG_WARNING, "No axis representation for:", product); @@ -1038,10 +1045,10 @@ bool mapping::get_layerset_information(const IfcUtil::IfcBaseInterface* p, layer ofc->matrix = m4; info.layers.push_back(ofc); - for (IfcSchema::IfcMaterialLayer::list::it it = material_layers->begin(); it != material_layers->end(); ++it) { - info.styles.push_back(*taxonomy::cast(map((*it)->Material()))); + for (auto it = material_layers.begin(); it != material_layers.end(); ++it) { + info.styles.push_back(*taxonomy::cast(map((*it).Material()))); - double thickness = (*it)->LayerThickness() * this->length_unit_; + double thickness = (*it).LayerThickness() * this->length_unit_; info.thicknesses.push_back(thickness); @@ -1075,23 +1082,29 @@ bool mapping::get_layerset_information(const IfcUtil::IfcBaseInterface* p, layer std::reverse(info.layers.begin(), info.layers.end()); } } else { - IfcSchema::IfcExtrudedAreaSolid::list::ptr extrusions = IfcParse::traverse(body_representation)->as(); + auto resources = IfcParse::traverse(body_representation); + std::vector extrusions; + for (auto& r : resources) { + if (auto ex = r.as()) { + extrusions.push_back(ex); + } + } - if (extrusions->size() != 1) { + if (extrusions.size() != 1) { Logger::Message(Logger::LOG_WARNING, "No single extrusion found in body representation for:", product); return false; } - IfcSchema::IfcExtrudedAreaSolid* extrusion = *extrusions->begin(); + IfcSchema::IfcExtrudedAreaSolid& extrusion = extrusions.front(); taxonomy::matrix4::ptr extrusion_position; bool has_position = true; #ifdef SCHEMA_IfcSweptAreaSolid_Position_IS_OPTIONAL - has_position = extrusion->Position() != nullptr; + has_position = !!extrusion.Position(); #endif if (has_position) { - auto m4 = taxonomy::cast(map(extrusion->Position())); + auto m4 = taxonomy::cast(map(extrusion.Position())); if (!m4) { Logger::Message(Logger::LOG_ERROR, "Failed to convert placement for extrusion of:", product); return false; @@ -1100,7 +1113,7 @@ bool mapping::get_layerset_information(const IfcUtil::IfcBaseInterface* p, layer } } - taxonomy::direction3::ptr extrusion_direction = taxonomy::cast(map(extrusion->ExtrudedDirection())); + taxonomy::direction3::ptr extrusion_direction = taxonomy::cast(map(extrusion.ExtrudedDirection())); if (!extrusion_direction) { Logger::Message(Logger::LOG_ERROR, "Failed to convert direction for extrusion of:", product); @@ -1117,10 +1130,10 @@ bool mapping::get_layerset_information(const IfcUtil::IfcBaseInterface* p, layer info.layers.push_back(pln); } - for (IfcSchema::IfcMaterialLayer::list::it it = material_layers->begin(); it != material_layers->end(); ++it) { - info.styles.push_back(*taxonomy::cast(map((*it)->Material()))); + for (auto& layer : material_layers) { + info.styles.push_back(*taxonomy::cast(map(layer.Material()))); - double thickness = (*it)->LayerThickness() * this->length_unit_; + double thickness = layer.LayerThickness() * this->length_unit_; info.thicknesses.push_back(thickness); @@ -1154,28 +1167,27 @@ bool mapping::get_layerset_information(const IfcUtil::IfcBaseInterface* p, layer return true; } -bool mapping::get_wall_neighbours(const IfcUtil::IfcBaseInterface *, std::vector&) -{ +bool mapping::get_wall_neighbours(const express::Base&, std::vector&) { return false; } -IfcSchema::IfcRepresentation* mapping::find_representation(const IfcSchema::IfcProduct* product, const std::string& identifier) { - if (!product->Representation()) return 0; - IfcSchema::IfcProductRepresentation* prod_rep = product->Representation(); - IfcSchema::IfcRepresentation::list::ptr reps = prod_rep->Representations(); - for (IfcSchema::IfcRepresentation::list::it it = reps->begin(); it != reps->end(); ++it) { - if ((**it).RepresentationIdentifier() && (*(**it).RepresentationIdentifier()) == identifier) { - return *it; +IfcSchema::IfcRepresentation mapping::find_representation(const IfcSchema::IfcProduct& product, const std::string& identifier) { + if (auto prod_rep = product.Representation()) { + std::vector reps = prod_rep.Representations(); + for (auto& rep : reps) { + if (rep.RepresentationIdentifier() && *rep.RepresentationIdentifier() == identifier) { + return rep; + } } } - return 0; + return IfcSchema::IfcRepresentation{}; } -void mapping::addRepresentationsFromContextIds(IfcSchema::IfcRepresentation::list::ptr& representations) { +void mapping::addRepresentationsFromContextIds(std::vector& representations) { for (auto context_id : settings_.get().get()) { - IfcSchema::IfcGeometricRepresentationContext* context; + IfcSchema::IfcGeometricRepresentationContext context; try { - context = file_->instance_by_id(context_id)->as(); + context = file_->instance_by_id(context_id).as(); } catch (IfcParse::IfcException& e) { Logger::Error(e); continue; @@ -1186,11 +1198,14 @@ void mapping::addRepresentationsFromContextIds(IfcSchema::IfcRepresentation::lis continue; } - representations->push(context->RepresentationsInContext()); + auto reps_in_context = context.RepresentationsInContext(); + for (auto& rep : reps_in_context) { + representations.push_back(rep); + } } } -void mapping::addRepresentationsFromDefaultContexts(IfcSchema::IfcRepresentation::list::ptr& representations) { +void mapping::addRepresentationsFromDefaultContexts(std::vector& representations) { std::set allowed_context_types; allowed_context_types.insert("model"); allowed_context_types.insert("plan"); @@ -1211,30 +1226,27 @@ void mapping::addRepresentationsFromDefaultContexts(IfcSchema::IfcRepresentation context_types.insert("plan"); } - IfcSchema::IfcGeometricRepresentationContext::list::it it; - IfcSchema::IfcGeometricRepresentationSubContext::list::it jt; - IfcSchema::IfcGeometricRepresentationContext::list::ptr contexts = + auto contexts = file_->instances_by_type(); - IfcSchema::IfcGeometricRepresentationContext::list::ptr filtered_contexts(new IfcSchema::IfcGeometricRepresentationContext::list); + std::vector filtered_contexts; - for (it = contexts->begin(); it != contexts->end(); ++it) { - IfcSchema::IfcGeometricRepresentationContext* context = *it; - if (context->declaration().is(IfcSchema::IfcGeometricRepresentationSubContext::Class())) { + for (auto& context : contexts) { + if (context.declaration().is(IfcSchema::IfcGeometricRepresentationSubContext::Class())) { // Continue, as the list of subcontexts will be considered // by the parent's context inverse attributes. continue; } try { - if (context->ContextType()) { - std::string context_type = *context->ContextType(); + if (context.ContextType()) { + std::string context_type = *context.ContextType(); boost::to_lower(context_type); if (allowed_context_types.find(context_type) == allowed_context_types.end()) { - Logger::Warning(std::string("ContextType '") + *context->ContextType() + "' not allowed:", context); + Logger::Warning(std::string("ContextType '") + *context.ContextType() + "' not allowed:", context); } if (context_types.find(context_type) != context_types.end()) { - filtered_contexts->push(context); + filtered_contexts.push_back(context); } } } catch (const std::exception& e) { @@ -1244,41 +1256,41 @@ void mapping::addRepresentationsFromDefaultContexts(IfcSchema::IfcRepresentation // In case no contexts are identified based on their ContextType, all contexts are // considered. Note that sub contexts are excluded as they are considered later on. - if (filtered_contexts->size() == 0) { - for (it = contexts->begin(); it != contexts->end(); ++it) { - IfcSchema::IfcGeometricRepresentationContext* context = *it; - if (!context->declaration().is(IfcSchema::IfcGeometricRepresentationSubContext::Class())) { - filtered_contexts->push(context); + if (filtered_contexts.empty()) { + for (auto& context : contexts) { + if (!context.declaration().is(IfcSchema::IfcGeometricRepresentationSubContext::Class())) { + filtered_contexts.push_back(context); } } } - for (it = filtered_contexts->begin(); it != filtered_contexts->end(); ++it) { - IfcSchema::IfcGeometricRepresentationContext* context = *it; + for (auto& context : filtered_contexts) { + auto reps_in_context = context.RepresentationsInContext(); + representations.insert(representations.end(), reps_in_context.begin(), reps_in_context.end()); - representations->push(context->RepresentationsInContext()); - - IfcSchema::IfcGeometricRepresentationSubContext::list::ptr sub_contexts = context->HasSubContexts(); - for (jt = sub_contexts->begin(); jt != sub_contexts->end(); ++jt) { - representations->push((*jt)->RepresentationsInContext()); + std::vector sub_contexts = context.HasSubContexts(); + for (auto& subcontext : sub_contexts) { + auto reps_in_subcontext = subcontext.RepresentationsInContext(); + representations.insert(representations.end(), reps_in_subcontext.begin(), reps_in_subcontext.end()); } // There is no need for full recursion as the following is governed by the schema: // WR31: The parent context shall not be another geometric representation sub context. } - if (representations->size() == 0) { + if (representations.empty()) { Logger::Warning("No representations encountered in relevant contexts, using all"); - representations->push(file_->instances_by_type()); + auto all_reps = file_->instances_by_type(); + representations = all_reps; } } -IfcUtil::IfcBaseEntity* mapping::representation_of(const IfcUtil::IfcBaseEntity* product) { +express::Base mapping::representation_of(const express::Base& product) { // @todo correct, but very inefficient - IfcSchema::IfcRepresentation::list::ptr representations(new IfcSchema::IfcRepresentation::list); - IfcSchema::IfcRepresentation::list::ptr of_product(new IfcSchema::IfcRepresentation::list); - IfcSchema::IfcRepresentation::list::ptr intersection(new IfcSchema::IfcRepresentation::list); - IfcSchema::IfcRepresentation::list::ptr intersection_no_box(new IfcSchema::IfcRepresentation::list); + std::vector representations; + std::vector of_product; + std::vector intersection; + std::vector intersection_no_box; if (!settings_.get().has()) { addRepresentationsFromDefaultContexts(representations); @@ -1286,40 +1298,42 @@ IfcUtil::IfcBaseEntity* mapping::representation_of(const IfcUtil::IfcBaseEntity* addRepresentationsFromContextIds(representations); } - if (product->as()->Representation()) { - of_product->push(product->as()->Representation()->Representations()); + if (product.as().Representation()) { + of_product = product.as().Representation().Representations(); } - for (auto& r : *of_product) { - if (representations->contains(r)) { - intersection->push(r); + for (auto& r : of_product) { + if (std::find(representations.begin(), representations.end(), r) != representations.end()) { + intersection.push_back(r); } } - if (intersection->size() == 0 && settings_.get().has() && this->settings_.get().get() == settings::CURVES) { - for (auto& r : *of_product) { - if (r->RepresentationIdentifier() && *r->RepresentationIdentifier() == "Axis") { - intersection->push(r); + if (intersection.size() == 0 && settings_.get().has() && this->settings_.get().get() == settings::CURVES) { + for (auto& r : of_product) { + if (r.RepresentationIdentifier() && *r.RepresentationIdentifier() == "Axis") { + intersection.push_back(r); } } } - if (intersection->size() == 0) { - return nullptr; + if (intersection.size() == 0) { + return express::Base{}; } else { - for (auto& r : *intersection) { - if (IfcParse::traverse((r))->as()->size()) { + for (auto& r : intersection) { + auto resources = IfcParse::traverse(r); + auto is_bounding_box = std::any_of(resources.begin(), resources.end(), [](const auto& res) { return res.declaration().is(IfcSchema::IfcBoundingBox::Class()); }); + if (is_bounding_box) { continue; } - intersection_no_box->push(r); + intersection_no_box.push_back(r); } - if (intersection_no_box->size() > 1) { + if (intersection_no_box.size() > 1) { Logger::Warning("Multiple applicable representations found for element, selecting arbitrary"); } - if (intersection_no_box->size()) { - return (*intersection_no_box->begin())->as(); + if (intersection_no_box.size()) { + return intersection_no_box.front(); } else { - return (*intersection->begin())->as(); + return intersection.front(); } } } diff --git a/src/ifcgeom/mapping/mapping.h b/src/ifcgeom/mapping/mapping.h index 054e0a7efc..63df82e422 100644 --- a/src/ifcgeom/mapping/mapping.h +++ b/src/ifcgeom/mapping/mapping.h @@ -29,35 +29,35 @@ namespace geometry { std::mutex cache_guard_; // provides mutually exclusive access to cache_ const IfcParse::declaration* placement_rel_to_type_; - const IfcUtil::IfcBaseEntity* placement_rel_to_instance_; + const express::Base placement_rel_to_instance_; Eigen::Matrix4d offset_and_rotation_ = Eigen::Matrix4d::Identity(); void initialize_units_(); - void addRepresentationsFromContextIds(IfcSchema::IfcRepresentation::list::ptr&); - void addRepresentationsFromDefaultContexts(IfcSchema::IfcRepresentation::list::ptr&); + void addRepresentationsFromContextIds(std::vector&); + void addRepresentationsFromDefaultContexts(std::vector&); // Set of instances to mark failures that are intended, such as representations not // resulting in any items due to dimensionality filters. - std::set failed_on_purpose_; - std::set not_reusable_maps_; + std::set failed_on_purpose_; + std::set not_reusable_maps_; template - void process_mapping(bool& matched, taxonomy::ptr& item, IfcUtil::IfcBaseInterface const * inst) { - if (!item && inst->as()) { + void process_mapping(bool& matched, taxonomy::ptr& item, const express::Base& inst) { + if (!item && inst.as()) { matched = true; try { - item = map_impl(inst->as()); + item = map_impl(inst.as()); if (item != nullptr) { - if (item->instance == nullptr) { + if (!item->instance) { item->instance = inst; } try { - if (inst->as() && !inst->as() && + if (inst.as() && !inst.as() && /* @todo */ (item->kind() == taxonomy::SOLID || item->kind() == taxonomy::SHELL || item->kind() == taxonomy::COLLECTION || item->kind() == taxonomy::EXTRUSION || item->kind() == taxonomy::LOFT || item->kind() == taxonomy::BOOLEAN_RESULT || item->kind() == taxonomy::REVOLVE || item->kind() == taxonomy::SWEEP_ALONG_CURVE || item->kind() == taxonomy::FACE) ) { - auto style = find_style(inst->as()); + auto style = find_style(inst.as()); if (style) { auto mstyle = map(style); if (mstyle) { @@ -76,30 +76,30 @@ namespace geometry { } } } - const IfcSchema::IfcStyledItem* find_style(const IfcSchema::IfcRepresentationItem*); + IfcSchema::IfcStyledItem find_style(const IfcSchema::IfcRepresentationItem&); public: - POSTFIX_SCHEMA(mapping)(IfcParse::IfcFile* file, Settings& settings) : abstract_mapping(settings), file_(file), placement_rel_to_type_(0), placement_rel_to_instance_(0) { + POSTFIX_SCHEMA(mapping)(IfcParse::IfcFile* file, Settings& settings) : abstract_mapping(settings), file_(file), placement_rel_to_type_(nullptr) { initialize_units_(); } - virtual ifcopenshell::geometry::taxonomy::ptr map(const IfcUtil::IfcBaseInterface*); + virtual ifcopenshell::geometry::taxonomy::ptr map(const express::Base&); virtual void get_representations(std::vector& tasks, std::vector& filters); - virtual std::map get_layers(IfcUtil::IfcBaseEntity*); + virtual std::map get_layers(const express::Base&); virtual void initialize_settings(); virtual double get_length_unit() const { return length_unit_; } virtual const std::string& get_length_unit_name() const { return length_unit_name_; } - virtual aggregate_of_instance::ptr find_openings(const IfcUtil::IfcBaseEntity*); - virtual IfcUtil::IfcBaseEntity* representation_of(const IfcUtil::IfcBaseEntity* product); + virtual std::vector find_openings(const express::Base&); + virtual express::Base representation_of(const express::Base& product); - virtual const IfcUtil::IfcBaseEntity* get_product_type(const IfcUtil::IfcBaseEntity* product_); - virtual const IfcUtil::IfcBaseEntity* get_single_material_association(const IfcUtil::IfcBaseEntity* product); - IfcSchema::IfcRepresentation* representation_mapped_to(const IfcSchema::IfcRepresentation* representation); - IfcSchema::IfcProduct::list::ptr products_represented_by(const IfcSchema::IfcRepresentation* representation, IfcSchema::IfcRepresentationMap*& rmap, bool only_direct=false); - bool reuse_ok_(const IfcSchema::IfcProduct::list::ptr& products); - IfcUtil::IfcBaseEntity* get_decomposing_entity(const IfcUtil::IfcBaseEntity* product, bool include_openings); + virtual const express::Base get_product_type(const express::Base& product_); + virtual const express::Base get_single_material_association(const express::Base& product); + IfcSchema::IfcRepresentation representation_mapped_to(const IfcSchema::IfcRepresentation& representation); + std::vector products_represented_by(const IfcSchema::IfcRepresentation& representation, IfcSchema::IfcRepresentationMap& rmap, bool only_direct = false); + bool reuse_ok_(const std::vector& products); + express::Base get_decomposing_entity(const express::Base& product, bool include_openings); - bool get_layerset_information(const IfcUtil::IfcBaseInterface*, layerset_information&, int&); - bool get_wall_neighbours(const IfcUtil::IfcBaseInterface*, std::vector&); - IfcSchema::IfcRepresentation* find_representation(const IfcSchema::IfcProduct*, const std::string&); + bool get_layerset_information(const express::Base&, layerset_information&, int&); + bool get_wall_neighbours(const express::Base&, std::vector&); + IfcSchema::IfcRepresentation find_representation(const IfcSchema::IfcProduct&, const std::string&); #include "bind_convert_decl.i" }; @@ -132,9 +132,9 @@ namespace geometry { template typename U::ptr map_to_collection(POSTFIX_SCHEMA(mapping)* m, const T& ts) { auto c = taxonomy::make(); - if (ts->size()) { - for (auto it = ts->begin(); it != ts->end(); ++it) { - if (auto r = m->map(*it)) { + if (ts.size()) { + for (auto& t : ts) { + if (auto r = m->map(t)) { c->children.push_back(taxonomy::cast::type>(r)); } } diff --git a/src/ifcgeom/profile_helper.cpp b/src/ifcgeom/profile_helper.cpp index eaa04e96e0..6843caaab5 100644 --- a/src/ifcgeom/profile_helper.cpp +++ b/src/ifcgeom/profile_helper.cpp @@ -7,7 +7,7 @@ taxonomy::loop::ptr ifcopenshell::geometry::fillet_loop(taxonomy::loop::ptr loop for (int b = 0; b < loop->children.size(); ++b) { int c = (b - 1) % loop->children.size(); pps[b] = { - boost::get(loop->children[c]->start)->ccomponents(), + std::get(loop->children[c]->start)->ccomponents(), radius, loop->children[c], loop->children[b] }; } @@ -16,10 +16,10 @@ taxonomy::loop::ptr ifcopenshell::geometry::fillet_loop(taxonomy::loop::ptr loop const auto& p = pps[i]; if (p.radius && *p.radius > 0.) { - auto p0 = boost::get(p.previous->start)->ccomponents(); - auto p1a = boost::get(p.previous->end)->ccomponents(); - auto p2 = boost::get(p.next->end)->ccomponents(); - auto p1b = boost::get(p.next->start)->ccomponents(); + auto p0 = std::get(p.previous->start)->ccomponents(); + auto p1a = std::get(p.previous->end)->ccomponents(); + auto p2 = std::get(p.next->end)->ccomponents(); + auto p1b = std::get(p.next->start)->ccomponents(); auto ba_ = p0 - p1a; auto bc_ = p2 - p1b; @@ -30,8 +30,8 @@ taxonomy::loop::ptr ifcopenshell::geometry::fillet_loop(taxonomy::loop::ptr loop const double angle = std::acos(ba.dot(bc)); const double inset = *p.radius / std::tan(angle / 2.); - boost::get(p.previous->end)->components() += ba * inset; - boost::get(p.next->start)->components() += bc * inset; + std::get(p.previous->end)->components() += ba * inset; + std::get(p.next->start)->components() += bc * inset; auto e = taxonomy::make(); e->start = p.previous->end; @@ -41,7 +41,7 @@ taxonomy::loop::ptr ifcopenshell::geometry::fillet_loop(taxonomy::loop::ptr loop auto ab = ba.cross(bc); - auto O = boost::get(p.previous->end)->ccomponents().head<3>() + ab * *p.radius; + auto O = std::get(p.previous->end)->ccomponents().head<3>() + ab * *p.radius; auto c = taxonomy::make(); c->matrix = taxonomy::make(O, ab); @@ -149,7 +149,7 @@ taxonomy::loop::ptr ifcopenshell::geometry::profile_helper(const taxonomy::matri // instances of the points, but when doing fillets we assume we can split and create an intermediate // circular edge. // @todo only deduplicate when there is a fillet radius on that point - e->end = taxonomy::make(*boost::get(e->end)->components_); + e->end = taxonomy::make(*std::get(e->end)->components_); } std::vector pps(points.size()); @@ -163,10 +163,10 @@ taxonomy::loop::ptr ifcopenshell::geometry::profile_helper(const taxonomy::matri const auto& p = pps[i]; if (p.radius && *p.radius > 0.) { // Position is a IfcAxis2Placement2D, so should remain 2d points - auto p0 = boost::get(p.previous->start)->components_->head<2>(); - auto p1a = boost::get(p.previous->end)->components_->head<2>(); - auto p2 = boost::get(p.next->end)->components_->head<2>(); - auto p1b = boost::get(p.next->start)->components_->head<2>(); + auto p0 = std::get(p.previous->start)->components_->head<2>(); + auto p1a = std::get(p.previous->end)->components_->head<2>(); + auto p2 = std::get(p.next->end)->components_->head<2>(); + auto p1b = std::get(p.next->start)->components_->head<2>(); auto ba_ = p0 - p1a; auto bc_ = p2 - p1b; @@ -177,8 +177,8 @@ taxonomy::loop::ptr ifcopenshell::geometry::profile_helper(const taxonomy::matri const double angle = std::acos(ba.dot(bc)); const double inset = *p.radius / std::tan(angle / 2.); - boost::get(p.previous->end)->components_->head<2>() += ba * inset; - boost::get(p.next->start)->components_->head<2>() += bc * inset; + std::get(p.previous->end)->components_->head<2>() += ba * inset; + std::get(p.next->start)->components_->head<2>() += bc * inset; auto e = taxonomy::make(); e->start = p.previous->end; @@ -188,13 +188,13 @@ taxonomy::loop::ptr ifcopenshell::geometry::profile_helper(const taxonomy::matri double sign = ab.head<2>().dot(bc) > 0 ? 1. : -1.; - auto O = boost::get(p.previous->end)->ccomponents().head<3>() + ab * *p.radius * sign; + auto O = std::get(p.previous->end)->ccomponents().head<3>() + ab * *p.radius * sign; auto c = taxonomy::make(); c->matrix = taxonomy::make(Eigen::Matrix4d(Eigen::Affine3d(Eigen::Translation3d(O)).matrix())); c->radius = *p.radius; e->basis = c; - e->curve_sense.reset(sign == -1.); + e->curve_sense.emplace(sign == -1.); loop->children.insert(std::find(loop->children.begin(), loop->children.end(), p.next), e); } @@ -202,3 +202,51 @@ taxonomy::loop::ptr ifcopenshell::geometry::profile_helper(const taxonomy::matri return loop; } + +std::pair, std::vector>> remove_duplicate_points_from_loop(const std::vector& polygon_, const std::vector& tags) { + const bool closed = false; + + auto polygon = polygon_; + std::vector> point_tags; + point_tags.resize(polygon.size()); + for (size_t i = 0; i < tags.size(); ++i) { + point_tags[i % polygon.size()].insert(tags[i]); + } + + for (;;) { + bool removed = false; + int n = polygon.size() - (closed ? 0 : 1); + for (size_t i = 0; i < n; ++i) { + // wrap around to the first point in case of a closed loop + auto j = (i + 1) % polygon.size(); + // double dist = (polygon[i]->ccomponents() - polygon[j]->ccomponents()).squaredNorm(); + // if (dist < tol) { + const bool equal = polygon[i]->ccomponents() == polygon[j]->ccomponents(); + if (equal) { + // do not remove the first or last point to + // maintain connectivity with other wires + + /* + // Only removing direct equality so does not impact connectivity + if ((closed && j == 0) || (!closed && j == (n - 1))) { + polygon.erase(polygon.begin() + i); + } else { + polygon.erase(polygon.begin() + j); + } + */ + + polygon.erase(polygon.begin() + i); + point_tags[i].insert(point_tags[j].begin(), point_tags[j].end()); + point_tags.erase(point_tags.begin() + j); + + removed = true; + break; + } + } + if (!removed) { + break; + } + } + + return {polygon, point_tags}; +} diff --git a/src/ifcgeom/profile_helper.h b/src/ifcgeom/profile_helper.h index 849b43631d..56f7c9b474 100644 --- a/src/ifcgeom/profile_helper.h +++ b/src/ifcgeom/profile_helper.h @@ -8,22 +8,22 @@ namespace ifcopenshell { namespace geometry { struct profile_point { std::array xy; - boost::optional radius; + std::optional radius; - profile_point(const std::array& p, const boost::optional& r = boost::none) + profile_point(const std::array& p, const std::optional& r = std::nullopt) : xy(p), radius(r) { } }; struct profile_point_with_edges { Eigen::Vector2d xy; - boost::optional radius; + std::optional radius; taxonomy::edge::ptr previous, next; }; struct profile_point_with_edges_3d { Eigen::Vector3d xy; - boost::optional radius; + std::optional radius; taxonomy::edge::ptr previous, next; }; @@ -34,6 +34,8 @@ namespace ifcopenshell { taxonomy::loop::ptr fillet_loop(taxonomy::loop::ptr lp, double radius); void remove_duplicate_points_from_loop(std::vector& polygon, bool closed, double tol); + + std::pair, std::vector>> remove_duplicate_points_from_loop(const std::vector& polygon, const std::vector& tags); } } diff --git a/src/ifcgeom/taxonomy.cpp b/src/ifcgeom/taxonomy.cpp index e03c1010a3..50e30cc081 100644 --- a/src/ifcgeom/taxonomy.cpp +++ b/src/ifcgeom/taxonomy.cpp @@ -88,7 +88,7 @@ namespace { } template - int less_to_order_optional(const boost::optional& a, const boost::optional& b) { + int less_to_order_optional(const std::optional& a, const std::optional& b) { if (a && b) { return less_to_order(*a, *b); } @@ -103,16 +103,16 @@ namespace { } } - int compare(const boost::variant& a, const boost::variant& b) { + int compare(const std::variant& a, const std::variant& b) { bool a_lt_b, b_lt_a; - if (a.which() == 0) { + if (a.index() == 0) { return 0; - } else if (a.which() == 1) { - a_lt_b = compare(*boost::get(a), *boost::get(b)); - b_lt_a = compare(*boost::get(b), *boost::get(a)); + } else if (a.index() == 1) { + a_lt_b = compare(*std::get(a), *std::get(b)); + b_lt_a = compare(*std::get(b), *std::get(a)); } else { - a_lt_b = std::less()(boost::get(a), boost::get(b)); - b_lt_a = std::less()(boost::get(b), boost::get(a)); + a_lt_b = std::less()(std::get(a), std::get(b)); + b_lt_a = std::less()(std::get(b), std::get(a)); } return a_lt_b ? -1 : (!b_lt_a ? 0 : 1); @@ -245,10 +245,10 @@ bool ifcopenshell::geometry::taxonomy::less(item::const_ptr a, item::const_ptr b namespace { bool compare(const trimmed_curve& a, const trimmed_curve& b) { - int a_which_start = a.start.which(); - int a_which_end = a.end.which(); - int b_which_start = b.start.which(); - int b_which_end = b.end.which(); + int a_which_start = a.start.index(); + int a_which_end = a.end.index(); + int b_which_start = b.start.index(); + int b_which_end = b.end.index(); if (std::tie(a.orientation, a_which_start, a_which_end) == std::tie(b.orientation, b_which_start, b_which_end)) { @@ -486,10 +486,10 @@ ifcopenshell::geometry::taxonomy::solid::ptr ifcopenshell::geometry::create_box( } /////////////////// -piecewise_function::piecewise_function(double start, const spans_t& s, const IfcUtil::IfcBaseInterface* instance) : function_item(instance), start_(start), spans_(s) { +piecewise_function::piecewise_function(double start, const spans_t& s, const express::Base& instance) : function_item(instance), start_(start), spans_(s) { } -piecewise_function::piecewise_function(double start, const std::vector& pwfs, const IfcUtil::IfcBaseInterface* instance) : function_item(instance), start_(start) { +piecewise_function::piecewise_function(double start, const std::vector& pwfs, const express::Base& instance) : function_item(instance), start_(start) { for (auto& pwf : pwfs) { spans_.insert(spans_.end(), pwf->spans().begin(), pwf->spans().end()); } @@ -512,7 +512,7 @@ double piecewise_function::length() const { } -gradient_function::gradient_function(piecewise_function::const_ptr horizontal, piecewise_function::const_ptr vertical, const IfcUtil::IfcBaseInterface* instance) : +gradient_function::gradient_function(piecewise_function::const_ptr horizontal, piecewise_function::const_ptr vertical, const express::Base& instance) : function_item(instance), horizontal_(horizontal), vertical_(vertical) { } double gradient_function::start() const { return std::max(horizontal_->start(), vertical_->start()); } @@ -521,7 +521,7 @@ piecewise_function::const_ptr gradient_function::get_horizontal() const { return piecewise_function::const_ptr gradient_function::get_vertical() const { return vertical_; } -cant_function::cant_function(gradient_function::const_ptr gradient, piecewise_function::const_ptr cant, const IfcUtil::IfcBaseInterface* instance) : +cant_function::cant_function(gradient_function::const_ptr gradient, piecewise_function::const_ptr cant, const express::Base& instance) : function_item(instance), gradient_(gradient), cant_(cant) { } double cant_function::start() const { return std::max(gradient_->start(), cant_->start()); } @@ -530,7 +530,7 @@ gradient_function::const_ptr cant_function::get_gradient() const { return gradie piecewise_function::const_ptr cant_function::get_cant() const { return cant_; } -offset_function::offset_function(function_item::const_ptr basis, piecewise_function::const_ptr offset, const IfcUtil::IfcBaseInterface* instance) : function_item(instance), +offset_function::offset_function(function_item::const_ptr basis, piecewise_function::const_ptr offset, const express::Base& instance) : function_item(instance), basis_(basis), offset_(offset) { } @@ -642,12 +642,12 @@ void ifcopenshell::geometry::taxonomy::ellipse::print(std::ostream& o, int inden void ifcopenshell::geometry::taxonomy::trimmed_curve::print(std::ostream& o, int indent) const { o << std::string(indent, ' ') << kind_to_string(kind()); - if (!this->orientation.get_value_or(true)) { + if (!this->orientation.value_or(true)) { o << " [R]"; } else { o << " [ ]"; } - if (!this->curve_sense.get_value_or(true)) { + if (!this->curve_sense.value_or(true)) { o << " [R]"; } else { o << " [ ]"; @@ -657,19 +657,19 @@ void ifcopenshell::geometry::taxonomy::trimmed_curve::print(std::ostream& o, int basis->print(o, indent + 4); } - const boost::variant* const start_end[2] = { &start, &end }; + const std::variant* const start_end[2] = { &start, &end }; for (int i = 0; i < 2; ++i) { o << std::string(indent + 4, ' ') << (i == 0 ? "start" : "end") << std::endl; - if (start_end[i]->which() == 1) { - boost::get(*start_end[i])->print(o, indent + 4); - } else if (start_end[i]->which() == 2) { - o << std::string(indent + 4, ' ') << "parameter " << boost::get(*start_end[i]) << std::endl; + if (start_end[i]->index() == 1) { + std::get(*start_end[i])->print(o, indent + 4); + } else if (start_end[i]->index() == 2) { + o << std::string(indent + 4, ' ') << "parameter " << std::get(*start_end[i]) << std::endl; } } - if (this->instance) { + if (instance) { std::ostringstream oss; - this->instance->as()->toString(oss); + instance.toString(oss); o << std::string(indent + 4, ' ') << oss.str() << std::endl; } } @@ -680,8 +680,8 @@ void ifcopenshell::geometry::taxonomy::extrusion::print(std::ostream& o, int ind basis->print(o, indent + 4); } -boost::optional ifcopenshell::geometry::taxonomy::loop_to_face_upgrade_impl(ptr item) { - boost::optional face_; +std::optional ifcopenshell::geometry::taxonomy::loop_to_face_upgrade_impl(ptr item) { + std::optional face_; auto loop_ = dcast(item); if (loop_) { loop_->external = true; @@ -694,8 +694,8 @@ boost::optional ifcopenshell::geometry::taxonomy::loop_to_face_upgrad return face_; } -boost::optional ifcopenshell::geometry::taxonomy::curve_to_edge_upgrade_impl(ptr item) { - boost::optional edge_; +std::optional ifcopenshell::geometry::taxonomy::curve_to_edge_upgrade_impl(ptr item) { + std::optional edge_; auto circle_ = dcast(item); auto ellipse_ = dcast(item); auto line_ = dcast(item); @@ -725,8 +725,8 @@ boost::optional ifcopenshell::geometry::taxonomy::curve_to_edge_upgra return edge_; } -boost::optional ifcopenshell::geometry::taxonomy::curve_to_loop_upgrade_impl(ptr item) { - boost::optional loop_; +std::optional ifcopenshell::geometry::taxonomy::curve_to_loop_upgrade_impl(ptr item) { + std::optional loop_; auto circle_ = dcast(item); auto ellipse_ = dcast(item); auto line_ = dcast(item); @@ -755,8 +755,8 @@ boost::optional ifcopenshell::geometry::taxonomy::curve_to_loop_upgra return loop_; } -boost::optional ifcopenshell::geometry::taxonomy::edge_to_loop_upgrade_impl(ptr item) { - boost::optional loop_; +std::optional ifcopenshell::geometry::taxonomy::edge_to_loop_upgrade_impl(ptr item) { + std::optional loop_; auto edge_ = dcast(item); if (edge_) { loop_ = make(); @@ -765,8 +765,8 @@ boost::optional ifcopenshell::geometry::taxonomy::edge_to_loop_upgrad return loop_; } -boost::optional ifcopenshell::geometry::taxonomy::curve_to_face_upgrade_impl(ptr item) { - boost::optional face_; +std::optional ifcopenshell::geometry::taxonomy::curve_to_face_upgrade_impl(ptr item) { + std::optional face_; auto circle_ = dcast(item); auto ellipse_ = dcast(item); auto line_ = dcast(item); @@ -821,11 +821,11 @@ namespace { } -boost::optional ifcopenshell::geometry::taxonomy::loop_to_function_item_upgrade_impl(ptr item) { - boost::optional fi_; +std::optional ifcopenshell::geometry::taxonomy::loop_to_function_item_upgrade_impl(ptr item) { + std::optional fi_; auto loop_ = dcast(item); if (loop_) { - if (loop_->fi.is_initialized()) { + if (loop_->fi.has_value()) { fi_ = loop_->fi; } else { // piecewise_function is a specialization of function_item - callers don't need to know this detail @@ -835,16 +835,16 @@ boost::optional ifcopenshell::geometry::taxonomy::loop_to_fu if (edge_->basis && edge_->basis->kind() == CIRCLE) { const circle::ptr circ = std::static_pointer_cast(edge_->basis); - auto* s_pnt = boost::get(&edge_->start); - auto* e_pnt = boost::get(&edge_->end); - auto* s_param = boost::get(&edge_->start); - auto* e_param = boost::get(&edge_->end); + auto* s_pnt = std::get_if(&edge_->start); + auto* e_pnt = std::get_if(&edge_->end); + auto* s_param = std::get_if(&edge_->start); + auto* e_param = std::get_if(&edge_->end); if (!s_pnt && !s_param) { - return boost::none; + return std::nullopt; } if (!e_pnt && !e_param) { - return boost::none; + return std::nullopt; } double s = s_pnt ? project_onto_curve(circ, **s_pnt) : *s_param; @@ -859,12 +859,12 @@ boost::optional ifcopenshell::geometry::taxonomy::loop_to_fu return matrix4(P.ccomponents(), circ->matrix->ccomponents().col(2).head<3>(), d.ccomponents()).components(); }; spans.emplace_back(taxonomy::make(l, fn)); - } else if (edge_->start.which() == 1 && edge_->end.which() == 1) { + } else if (edge_->start.index() == 1 && edge_->end.index() == 1) { if (edge_->basis && edge_->basis->kind() != LINE) { Logger::Message(Logger::Severity::LOG_WARNING, "Basis curve not supported - edge is treated as a straight line edge"); } - const auto& s = boost::get(edge_->start)->ccomponents(); - const auto& e = boost::get(edge_->end)->ccomponents(); + const auto& s = std::get(edge_->start)->ccomponents(); + const auto& e = std::get(edge_->end)->ccomponents(); Eigen::Vector3d v = e - s; auto l = v.norm(); // the norm of a vector is a measure of its length v.normalize(); // normalize the vector so that it is a unit direction vector @@ -877,7 +877,7 @@ boost::optional ifcopenshell::geometry::taxonomy::loop_to_fu spans.emplace_back(taxonomy::make(l, fn)); } else { Logger::Message(Logger::Severity::LOG_ERROR, "Basis curve not supported"); - return boost::none; + return std::nullopt; } } fi_ = make(0.0,spans); diff --git a/src/ifcgeom/taxonomy.h b/src/ifcgeom/taxonomy.h index a6d50ef945..a5c3172ce3 100644 --- a/src/ifcgeom/taxonomy.h +++ b/src/ifcgeom/taxonomy.h @@ -1,7 +1,7 @@ #ifndef TAXONOMY_H #define TAXONOMY_H -#include "../ifcparse/IfcBaseClass.h" +#include "../ifcparse/express.h" #include "../ifcparse/IfcLogger.h" #include "ConversionSettings.h" @@ -158,9 +158,9 @@ typedef item const* ptr; public: DECLARE_PTR(item) - const IfcUtil::IfcBaseInterface* instance; + express::Base instance; - boost::optional orientation; + std::optional orientation; virtual item* clone_() const = 0; virtual kinds kind() const = 0; @@ -178,7 +178,7 @@ typedef item const* ptr; return computed_hash_; } - item(const IfcUtil::IfcBaseInterface* instance = nullptr) : identity_(counter_++), computed_hash_(0), instance(instance) {} + item(const express::Base& instance = express::Base()) : identity_(counter_++), computed_hash_(0), instance(instance) {} virtual ~item() {} @@ -409,8 +409,8 @@ typedef item const* ptr; style::ptr surface_style; matrix4::ptr matrix; - geom_item(const IfcUtil::IfcBaseInterface* instance = nullptr) : item(instance), surface_style(nullptr) {} - geom_item(const IfcUtil::IfcBaseInterface* instance, matrix4::ptr m) : item(instance), surface_style(nullptr), matrix(m) {} + geom_item(const express::Base& instance = express::Base()) : item(instance), surface_style(nullptr) {} + geom_item(const express::Base instance, matrix4::ptr m) : item(instance), surface_style(nullptr), matrix(m) {} geom_item(matrix4::ptr m) : surface_style(nullptr), matrix(m) {} }; @@ -422,7 +422,7 @@ typedef item const* ptr; struct IFC_GEOM_API function_item : public implicit_item { DECLARE_PTR(function_item) - function_item(const IfcUtil::IfcBaseInterface* instance = nullptr) : implicit_item(instance) {} + function_item(const express::Base& instance = express::Base()) : implicit_item(instance) {} function_item(function_item&&) = default; function_item(const function_item&) = default; @@ -443,7 +443,7 @@ typedef item const* ptr; struct IFC_GEOM_API functor_item : public function_item { DECLARE_PTR(functor_item) - functor_item(double length, std::function fn, const IfcUtil::IfcBaseInterface* instance = nullptr) : function_item(instance), + functor_item(double length, std::function fn, const express::Base& instance = express::Base()) : function_item(instance), length_(length), fn_(fn) {} functor_item(functor_item&&) = default; functor_item(const functor_item&) = default; @@ -471,8 +471,8 @@ typedef item const* ptr; using spans_t = std::vector; - piecewise_function(double start, const spans_t& s, const IfcUtil::IfcBaseInterface* instance = nullptr); - piecewise_function(double start, const std::vector& pwfs, const IfcUtil::IfcBaseInterface* instance = nullptr); + piecewise_function(double start, const spans_t& s, const express::Base& instance = express::Base()); + piecewise_function(double start, const std::vector& pwfs, const express::Base& instance = express::Base()); piecewise_function(piecewise_function&&) = default; piecewise_function(const piecewise_function&) = default; virtual ~piecewise_function() = default; @@ -500,7 +500,7 @@ typedef item const* ptr; struct IFC_GEOM_API gradient_function : public function_item { DECLARE_PTR(gradient_function) - gradient_function(piecewise_function::const_ptr horizontal, piecewise_function::const_ptr vertical, const IfcUtil::IfcBaseInterface* instance = nullptr); + gradient_function(piecewise_function::const_ptr horizontal, piecewise_function::const_ptr vertical, const express::Base& instance = express::Base()); gradient_function(gradient_function&&) = default; gradient_function(const gradient_function&) = default; virtual ~gradient_function() = default; @@ -526,7 +526,7 @@ typedef item const* ptr; struct IFC_GEOM_API cant_function : public function_item { DECLARE_PTR(cant_function) - cant_function(gradient_function::const_ptr gradient, piecewise_function::const_ptr cant, const IfcUtil::IfcBaseInterface* instance = nullptr); + cant_function(gradient_function::const_ptr gradient, piecewise_function::const_ptr cant, const express::Base& instance = express::Base()); cant_function(cant_function&&) = default; cant_function(const cant_function&) = default; virtual ~cant_function() = default; @@ -553,7 +553,7 @@ typedef item const* ptr; struct IFC_GEOM_API offset_function : public function_item { DECLARE_PTR(offset_function) - offset_function(function_item::const_ptr basis, piecewise_function::const_ptr offset, const IfcUtil::IfcBaseInterface* instance = nullptr); + offset_function(function_item::const_ptr basis, piecewise_function::const_ptr offset, const express::Base& instance = express::Base()); offset_function(offset_function&&) = default; offset_function(const offset_function&) = default; virtual ~offset_function() = default; @@ -784,7 +784,7 @@ typedef item const* ptr; std::vector control_points; std::vector multiplicities; std::vector knots; - boost::optional> weights; + std::optional> weights; int degree; }; @@ -809,20 +809,20 @@ typedef item const* ptr; // @todo The copy constructor of point3 within the variant fails on the avx instruction // on the default gcc in Ubuntu 18.04 and a recent AMD Ryzen. Probably due to allignment. - boost::variant start, end; + std::variant start, end; // @todo somehow account for the fact that curve in IFC can be trimmed curve, polyline and composite curve as well. item::ptr basis; // @todo does this make sense? this is to accommodate for the fact that orientation is defined on both TrimmedCurve as well CompCurveSegment - boost::optional curve_sense; + std::optional curve_sense; trimmed_curve() : basis(nullptr) {} trimmed_curve(const point3::ptr& a, const point3::ptr& b) : start(a), end(b), basis(nullptr) {} virtual void reverse() { // std::swap(start, end); - orientation = !orientation.get_value_or(true); + orientation = !orientation.value_or(true); } void print(std::ostream& o, int indent = 0) const; @@ -927,9 +927,9 @@ typedef item const* ptr; struct IFC_GEOM_API loop : public collection_base { DECLARE_PTR(loop) - boost::optional external, closed; - boost::optional fi; - boost::optional> tags; + std::optional external, closed; + std::optional fi; + std::optional> tags; bool is_polyhedron() const { for (auto& e : children) { @@ -945,10 +945,10 @@ typedef item const* ptr; void calculate_linear_edge_curves() const { for (auto& e : children) { if (e->basis == nullptr) { - if (e->start.which() == 1 && e->end.which() == 1) { + if (e->start.index() == 1 && e->end.index() == 1) { auto ln = make(); - auto a = boost::get(e->start)->ccomponents(); - auto b = boost::get(e->end)->ccomponents(); + auto a = std::get(e->start)->ccomponents(); + auto b = std::get(e->end)->ccomponents(); ln->matrix = make(a, b - a); e->basis = ln; } @@ -976,11 +976,11 @@ typedef item const* ptr; taxonomy::point3::ptr centroid() const { Eigen::Vector3d c(0, 0, 0); for (auto& e : children) { - if (e->start.which() == 1) { - c += boost::get(e->start)->ccomponents(); + if (e->start.index() == 1) { + c += std::get(e->start)->ccomponents(); } - if (e->end.which() == 1) { - c += boost::get(e->end)->ccomponents(); + if (e->end.index() == 1) { + c += std::get(e->end)->ccomponents(); } } c /= static_cast(children.size()); @@ -1012,7 +1012,7 @@ typedef item const* ptr; struct IFC_GEOM_API shell : public collection_base { DECLARE_PTR(shell) - boost::optional closed; + std::optional closed; virtual void print_impl(std::ostream& o, int indent) const { using namespace std::string_literals; @@ -1033,11 +1033,11 @@ typedef item const* ptr; for (auto& f : children) { for (auto& l : f->children) { for (auto& e : l->children) { - if (e->start.which() == 1) { - c += boost::get(e->start)->ccomponents(); + if (e->start.index() == 1) { + c += std::get(e->start)->ccomponents(); } - if (e->end.which() == 1) { - c += boost::get(e->end)->ccomponents(); + if (e->end.index() == 1) { + c += std::get(e->end)->ccomponents(); } } } @@ -1174,7 +1174,7 @@ typedef item const* ptr; std::vector> control_points; std::array, 2> multiplicities; std::array, 2> knots; - boost::optional>> weights; + std::optional>> weights; std::array degree; }; @@ -1211,12 +1211,12 @@ typedef item const* ptr; point3::ptr axis_origin; direction3::ptr direction; - boost::optional angle; + std::optional angle; virtual revolve* clone_() const { return new revolve(*this); } virtual kinds kind() const { return REVOLVE; } - revolve(matrix4::ptr m, item::ptr basis, point3::ptr pnt, direction3::ptr dir, const boost::optional& a) : sweep(m, basis), axis_origin(pnt), direction(dir), angle(a) {} + revolve(matrix4::ptr m, item::ptr basis, point3::ptr pnt, direction3::ptr dir, const std::optional& a) : sweep(m, basis), axis_origin(pnt), direction(dir), angle(a) {} virtual size_t calc_hash() const { auto v = std::make_tuple(static_cast(REVOLVE), matrix->hash_components(), basis->calc_hash(), axis_origin->hash_components(), direction->hash_components(), angle ? *angle : 1000.); @@ -1319,11 +1319,11 @@ typedef item const* ptr; static const size_t max = std::tuple_size::value; }; - IFC_GEOM_API boost::optional loop_to_face_upgrade_impl(ptr item); + IFC_GEOM_API std::optional loop_to_face_upgrade_impl(ptr item); template class loop_to_face_upgrade { private: - boost::optional face_; + std::optional face_; public: loop_to_face_upgrade(taxonomy::ptr item) { if constexpr (std::is_same_v) { @@ -1332,7 +1332,7 @@ typedef item const* ptr; } operator bool() const { - return face_.is_initialized(); + return face_.has_value(); } operator typename T::ptr() const { @@ -1345,11 +1345,11 @@ typedef item const* ptr; } }; - IFC_GEOM_API boost::optional curve_to_edge_upgrade_impl(ptr item); + IFC_GEOM_API std::optional curve_to_edge_upgrade_impl(ptr item); template class curve_to_edge_upgrade { private: - boost::optional edge_; + std::optional edge_; public: curve_to_edge_upgrade(taxonomy::ptr item) { if constexpr (std::is_same_v) { @@ -1358,7 +1358,7 @@ typedef item const* ptr; } operator bool() const { - return edge_.is_initialized(); + return edge_.has_value(); } operator typename T::ptr() const { @@ -1371,11 +1371,11 @@ typedef item const* ptr; } }; - IFC_GEOM_API boost::optional curve_to_loop_upgrade_impl(ptr item); + IFC_GEOM_API std::optional curve_to_loop_upgrade_impl(ptr item); template class curve_to_loop_upgrade { private: - boost::optional loop_; + std::optional loop_; public: curve_to_loop_upgrade(taxonomy::ptr item) { if constexpr (std::is_same_v) { @@ -1384,7 +1384,7 @@ typedef item const* ptr; } operator bool() const { - return loop_.is_initialized(); + return loop_.has_value(); } operator typename T::ptr() const { @@ -1397,11 +1397,11 @@ typedef item const* ptr; } }; - IFC_GEOM_API boost::optional edge_to_loop_upgrade_impl(ptr item); + IFC_GEOM_API std::optional edge_to_loop_upgrade_impl(ptr item); template class edge_to_loop_upgrade { private: - boost::optional loop_; + std::optional loop_; public: edge_to_loop_upgrade(taxonomy::ptr item) { if constexpr (std::is_same_v) { @@ -1410,7 +1410,7 @@ typedef item const* ptr; } operator bool() const { - return loop_.is_initialized(); + return loop_.has_value(); } operator typename T::ptr() const { @@ -1423,11 +1423,11 @@ typedef item const* ptr; } }; - IFC_GEOM_API boost::optional curve_to_face_upgrade_impl(ptr item); + IFC_GEOM_API std::optional curve_to_face_upgrade_impl(ptr item); template class curve_to_face_upgrade { private: - boost::optional face_; + std::optional face_; public: curve_to_face_upgrade(taxonomy::ptr item) { if constexpr (std::is_same_v) { @@ -1436,7 +1436,7 @@ typedef item const* ptr; } operator bool() const { - return face_.is_initialized(); + return face_.has_value(); } operator typename T::ptr() const { @@ -1449,11 +1449,11 @@ typedef item const* ptr; } }; - IFC_GEOM_API boost::optional loop_to_function_item_upgrade_impl(ptr item); + IFC_GEOM_API std::optional loop_to_function_item_upgrade_impl(ptr item); template class loop_to_function_item_upgrade { private: - boost::optional fi_; + std::optional fi_; public: loop_to_function_item_upgrade(taxonomy::ptr item) { @@ -1463,7 +1463,7 @@ typedef item const* ptr; } operator bool() const { - return fi_.is_initialized(); + return fi_.has_value(); } operator typename T::ptr() const { @@ -1673,11 +1673,11 @@ typedef item const* ptr; fn(pt); } else if (auto ed = std::dynamic_pointer_cast(child)) { // @todo maybe make edge a collection then as well? - if (ed->start.which() == 1) { - fn(boost::get(ed->start)); + if (ed->start.index() == 1) { + fn(std::get(ed->start)); } - if (ed->end.which() == 1) { - fn(boost::get(ed->end)); + if (ed->end.index() == 1) { + fn(std::get(ed->end)); } } } @@ -1751,7 +1751,7 @@ typedef item const* ptr; NOTDEFINED }; - typedef std::tuple endpoint_connection; + typedef std::tuple endpoint_connection; } } diff --git a/src/ifcopenshell-python/ifcopenshell/__init__.py b/src/ifcopenshell-python/ifcopenshell/__init__.py index b81db34cbc..40cc78da6a 100644 --- a/src/ifcopenshell-python/ifcopenshell/__init__.py +++ b/src/ifcopenshell-python/ifcopenshell/__init__.py @@ -88,12 +88,12 @@ except Exception: # `_file`, `_stream` is used only for annotations inside this file, # see https://github.com/microsoft/pyright/discussions/9065. -from .file import file as _file -from .file import file +from .ifcopenshell_wrapper import file as _file +from .ifcopenshell_wrapper import file from .file import rocksdb_lazy_instance from . import guid -from .entity_instance import entity_instance, register_schema_attributes +from .ifcopenshell_wrapper import entity_instance from .sql import sqlite, sqlite_entity # explicitly specify available imported symbols @@ -251,7 +251,6 @@ def register_schema(schema: ifcopenshell.express.schema_class.SchemaClass) -> No schema.schema.this.disown() schema.disown() ifcopenshell_wrapper.register_schema(schema.schema) - register_schema_attributes(schema.schema) def schema_by_name( diff --git a/src/ifcopenshell-python/ifcopenshell/entity_instance.py b/src/ifcopenshell-python/ifcopenshell/entity_instance.py index 0cae2608f3..3dd785092b 100644 --- a/src/ifcopenshell-python/ifcopenshell/entity_instance.py +++ b/src/ifcopenshell-python/ifcopenshell/entity_instance.py @@ -43,75 +43,7 @@ except ImportError: T = TypeVar("T") -def set_derived_attribute(*args): - raise TypeError("Unable to set derived attribute") - - -def set_unsupported_attribute(*args): - raise TypeError("This is an unsupported attribute type") - - -# For every schema and its entities populate a list -# of functions for every entity attribute (including -# inherited attributes) to set that particular -# attribute by index. -# For example. IFC2X3.IfcWall with have a list of -# 9 methods. The first will point at -# ifcopenshell.ifcopenshell_wrapper.entity_instance.setArgumentAsString -# because the first attribute GlobalId ultimately -# is of type string. -# Previously, resolving the appropriate function was -# done for each invocation of __setitem__. Now this -# mapping is built once during initialization of the -# module. -MethodList = list[Callable[[ifcopenshell_wrapper.entity_instance, int, Any], Union[None, NoReturn]]] -"""List of setter methods for class attributes.""" -_method_dict: dict[str, MethodList] = {} -"""Mapping of entity classes (e.g. 'IFC4.IfcWall') to MethodLists.""" - - -def register_schema_attributes(schema: ifcopenshell_wrapper.schema_definition) -> None: - for decl in schema.declarations(): - if hasattr(decl, "argument_types"): - fq_name = ".".join((schema.name(), decl.name())) - - # get type strings as reported by IfcOpenShell C++ - type_strs = decl.argument_types() - type_strs = cast(Sequence[str], type_strs) - - # convert case for setter function - type_strs = [x.title().replace(" ", "") for x in type_strs] - - # binary and enumeration are passed from python as string as well - type_strs = [x.replace("Binary", "String") for x in type_strs] - type_strs = [x.replace("Enumeration", "String") for x in type_strs] - - # prefix to get method names - fn_names = ["setArgumentAs" + x for x in type_strs] - - # resolve to actual functions in wrapper - functions = [ - ( - set_derived_attribute - if mname == "setArgumentAsDerived" - else ( - set_unsupported_attribute - if mname == "setArgumentAsUnknown" - else getattr(ifcopenshell_wrapper.entity_instance, mname) - ) - ) - for mname in fn_names - ] - - _method_dict[fq_name] = functions - - -for nm in ifcopenshell_wrapper.schema_names(): - schema = ifcopenshell_wrapper.schema_by_name(nm) - register_schema_attributes(schema) - - -class entity_instance: +class entity_instance_mixin: """Represents an entity (wall, slab, property, etc) of an IFC model An IFC model consists of entities. Examples of entities include walls, @@ -155,67 +87,33 @@ class entity_instance: print(wall.__class__) # """ - wrapped_data: ifcopenshell_wrapper.entity_instance - method_list: Union[MethodList, None] = None - - def __init__( - self, - e: Union[ifcopenshell_wrapper.entity_instance, tuple[str, str]], - file: Union[ifcopenshell.file, None] = None, - ): - """ - :param e: Wrapper's ``entity_instance`` or a tuple ``(schema_identifier, ifc_class)``. - """ - # Instances of this class will be created and removed very often, - # so it's important to keep it very optimized. - - if isinstance(e, tuple): - e = ifcopenshell_wrapper.new_IfcBaseClass(*e) - object.__setattr__(self, "wrapped_data", e) - - # Make sure the file is not gc'ed while we have live instances - e.file = file - - def __del__(self): - """ - #2471 while the precise chain of action is unclear, creating - instance references prevents file gc, even with all instance - refs deleted. This is a work-around for that. - """ - # Avoid infinite recursion if entity is failed to initialize - # and wrapped_data is unset. Hacky since we override - # both __dict__ and __dir__. - try: - wrapped_data = object.__getattribute__(self, "wrapped_data") - wrapped_data.file = None - except AttributeError: - return - @property def file(self): - # ugh circular imports, name collisions - from . import file - - return file.from_pointer(self.wrapped_data.file_pointer()) + raise NotImplementedError def __getattr__(self, name: str) -> Any: + if name in ("this", "thisown") or name.startswith("_swig_"): + return object.__getattr__(self, name) """ Any aggregate attributes (e.g. `SET`) are returns as Python tuples. - Inverse attributes are always returned as tuples, even it's not a set origially in IFC + Inverse attributes are returned as tuples, even it's not a set origially in IFC (e.g. IfcFeatureElementSubtraction.VoidsElements) + (unless settings.unpack_non_aggregate_inverses is used, which is necessary for express rule execution) """ - INVALID, FORWARD, INVERSE = range(3) - attr_cat = self.wrapped_data.get_attribute_category(name) - if attr_cat == FORWARD: - idx = self.wrapped_data.get_argument_index(name) - if _method_dict[self.is_a(True)][idx] != set_derived_attribute: - # A bit ugly, but we fall through to derived attribute handling below - return entity_instance.wrap_value(self.wrapped_data.get_argument(idx), self.wrapped_data.file) + INVALID, FORWARD, INVERSE, DERIVED = range(4) + attr_cat = self.get_attribute_category(name) + if attr_cat == INVALID: + raise AttributeError( + "entity instance of type '%s' has no attribute '%s'" % (self.is_a(True), name) + ) + elif attr_cat == FORWARD: + idx = self.get_argument_index(name) + return self.get_argument(idx) elif attr_cat == INVERSE: - vs = entity_instance.wrap_value(self.wrapped_data.get_inverse(name), self.wrapped_data.file) + vs = self.get_inverse(name) if settings.unpack_non_aggregate_inverses: - schema_name = self.wrapped_data.is_a(True).split(".")[0] + schema_name = self.is_a(True).split(".")[0] ent: ifcopenshell_wrapper.entity ent = ifcopenshell_wrapper.schema_by_name(schema_name).declaration_by_name(self.is_a()) inv = next(i for i in ent.all_inverse_attributes() if i.name() == name) @@ -225,44 +123,38 @@ class entity_instance: else: vs = None return vs + elif attr_cat == DERIVED: + schema_name = self.is_a(True).split(".")[0] + try: + rules = importlib.import_module(f"ifcopenshell.express.rules.{schema_name}") + except: + import os - # derived attribute perhaps? - schema_name = self.wrapped_data.is_a(True).split(".")[0] - try: - rules = importlib.import_module(f"ifcopenshell.express.rules.{schema_name}") - except: - import os + current_dir_files = {fn.lower(): fn for fn in os.listdir(".")} + exp_filename = schema_name.lower() + ".exp" + schema_path = current_dir_files.get(exp_filename) + if schema_path is None: + raise Exception( + f"Couldn't find express file '{schema_name.lower()}.exp' in the current folder: '{os.getcwd()}'." + ) + fn = schema_path[:-4] + ".py" + if not os.path.exists(fn): + subprocess.run( + [sys.executable, "-m", "ifcopenshell.express.rule_compiler", schema_path, fn], check=True + ) + time.sleep(1.0) + rules = importlib.import_module(schema_name) - current_dir_files = {fn.lower(): fn for fn in os.listdir(".")} - exp_filename = schema_name.lower() + ".exp" - schema_path = current_dir_files.get(exp_filename) - if schema_path is None: - raise Exception( - f"Couldn't find express file '{schema_name.lower()}.exp' in the current folder: '{os.getcwd()}'." - ) - fn = schema_path[:-4] + ".py" - if not os.path.exists(fn): - subprocess.run( - [sys.executable, "-m", "ifcopenshell.express.rule_compiler", schema_path, fn], check=True - ) - time.sleep(1.0) - rules = importlib.import_module(schema_name) + def yield_supertypes(): + decl = ifcopenshell_wrapper.schema_by_name(schema_name).declaration_by_name(self.is_a()) + while decl: + yield decl.name() + decl = decl.supertype() - def yield_supertypes(): - decl = ifcopenshell_wrapper.schema_by_name(schema_name).declaration_by_name(self.is_a()) - while decl: - yield decl.name() - decl = decl.supertype() - - for sty in yield_supertypes(): - fn = getattr(rules, f"calc_{sty}_{name}", None) - if fn: - return fn(self) - - if attr_cat != FORWARD: - raise AttributeError( - "entity instance of type '%s' has no attribute '%s'" % (self.wrapped_data.is_a(True), name) - ) + for sty in yield_supertypes(): + fn = getattr(rules, f"calc_{sty}_{name}", None) + if fn: + return fn(self) @staticmethod def walk(f: Callable[[Any], bool], g: Callable[[Any], Any], value: Any) -> Any: @@ -295,180 +187,53 @@ class entity_instance: """ if isinstance(value, (tuple, list)): - return tuple(map(functools.partial(entity_instance.walk, f, g), value)) + return tuple(map(functools.partial(entity_instance_mixin.walk, f, g), value)) elif f(value): return g(value) else: return value - @staticmethod - def wrap_value(v, file: ifcopenshell.file): - def wrap(e: ifcopenshell_wrapper.entity_instance) -> entity_instance: - return entity_instance(e, file) - - def is_instance(e: Any) -> bool: - return isinstance(e, ifcopenshell_wrapper.entity_instance) - - return entity_instance.walk(is_instance, wrap, v) - - @staticmethod - def unwrap_value(v): - def unwrap(e): - return e.wrapped_data - - def is_instance(e): - return isinstance(e, entity_instance) - - return entity_instance.walk(is_instance, unwrap, v) - - def attribute_type(self, attr: Union[int, str]) -> str: - """Return the data type of a positional attribute of the element - - :param attr: The index or name of the attribute - """ - attr_idx = attr if isinstance(attr, numbers.Integral) else self.wrapped_data.get_argument_index(attr) - return self.wrapped_data.get_argument_type(attr_idx) - - def attribute_name(self, attr_idx: int) -> str: - """Return the name of a positional attribute of the element - - :param attr_idx: The index of the attribute - """ - return self.wrapped_data.get_argument_name(attr_idx) - def __setattr__(self, key: str, value: Any) -> None: - index = self.wrapped_data.get_argument_index(key) + if key in ("this", "thisown") or key.startswith("_swig_"): + return object.__setattr__(self, key, value) + + index = self.get_argument_index(key) try: self[index] = value except IndexError as e: # get_argument_index returns 0xFFFFFFFF if attribute is not found if index == 0xFFFFFFFF: raise AttributeError( - "entity instance of type '%s' has no attribute '%s'" % (self.wrapped_data.is_a(True), key) + "entity instance of type '%s' has no attribute '%s'" % (self.is_a(True), key) ) raise e def __getitem__(self, key: int) -> Any: if key < 0 or key >= len(self): raise IndexError("Attribute index {} out of range for instance of type {}".format(key, self.is_a())) - return entity_instance.wrap_value(self.wrapped_data.get_argument(key), self.wrapped_data.file) + return self.get_argument(key) def __setitem__(self, idx: int, value: T) -> T: - if self.wrapped_data.file and self.wrapped_data.file.transaction: - self.wrapped_data.file.transaction.store_edit(self, idx, value) - - if self.method_list is None: - super().__setattr__("method_list", _method_dict[self.is_a(True)]) - - method = self.method_list[idx] - - if value is None: - if method is not set_derived_attribute: - try: - self.wrapped_data.setArgumentAsNull(idx) - except RuntimeError as e: - if e.args == ("Attribute not set",): - raise TypeError( - "attribute '%s' is not optional for entity instance of type '%s'" - % (self.wrapped_data.get_argument_name(idx), self.wrapped_data.is_a(True)) - ) - raise e - else: - try: - self.method_list[idx](self.wrapped_data, idx, entity_instance.unwrap_value(value)) - except TypeError: - raise TypeError( - "attribute '%s' for entity '%s' is expecting value of type '%s', got '%s'." - % ( - self.wrapped_data.get_argument_name(idx), - self.wrapped_data.is_a(True), - self.wrapped_data.get_argument_type(idx), - type(value).__name__, - ) - ) + if self.file and self.file.transaction: + self.file.transaction.store_edit(self, idx, value) + + self.set_attribute_value_py(idx, value) return value - def __len__(self): - return len(self.wrapped_data) - def __repr__(self): - return repr(self.wrapped_data) - - def to_string(self, valid_spf=True) -> str: - """Returns a string representation of the current entity instance. - Equal to str(self) when valid_spf=False. When valid_spf is True - returns a representation of the string that conforms to valid Step - Physical File notation. The difference being entity names in upper - case and string attribute values with unicode values encoded per - the specific control directives. - """ - - return self.wrapped_data.to_string(valid_spf) - - @overload - def is_a(self) -> str: ... - @overload - def is_a(self, ifc_class: str) -> bool: ... - @overload - def is_a(self, with_schema: bool) -> str: ... - def is_a(self, *args: Union[str, bool]) -> Union[str, bool]: - """Return the IFC class name of an instance, or checks if an instance belongs to a class. - - The check will also return true if a parent class name is provided. - - :param args: If specified, is a case insensitive IFC class name to check - or if specified as a boolean then will define whether - returned IFC class name should include schema name - (e.g. "IFC4.IfcWall" if `True` and "IfcWall" if `False`). - If omitted will act as `False`. - :returns: Either the name of the class, or a boolean if it passes the check - - Example: - - .. code:: python - - f = ifcopenshell.file() - f.create_entity('IfcPerson') - f.is_a() - >>> 'IfcPerson' - f.is_a('IfcPerson') - >>> True - """ - return self.wrapped_data.is_a(*args) - - def id(self) -> int: - """Return the STEP numerical identifier""" - return self.wrapped_data.id() - - def __eq__(self, other: entity_instance) -> bool: + def __eq__(self, other: entity_instance_mixin) -> bool: if not isinstance(self, type(other)): return False - elif None in (self.wrapped_data.file, other.wrapped_data.file): - # when not added to a file, we can only compare attribute values - # and we need this for where rule evaluation - return self.get_info_2(recursive=True, include_identifier=False) == other.get_info_2( - recursive=True, include_identifier=False - ) else: - # Proper entity instances have a stable identity by means of the numeric - # step id. Selected type instances (such as IfcPropertySingleValue.NominalValue - # always have id=0, so we compare - if self.id(): - return self.wrapped_data == other.wrapped_data - else: - return (self.is_a(), self[0], self.wrapped_data.file_pointer()) == ( - other.is_a(), - other[0], - other.wrapped_data.file_pointer(), - ) - + raise NotImplementedError + def is_entity(self) -> bool: """Tests whether the instance is an entity type as opposed to a simple data type. :return: True if the instance is an entity """ - schema_name = self.wrapped_data.is_a(True).split(".")[0] + schema_name = self.is_a(True).split(".")[0] decl = ifcopenshell_wrapper.schema_by_name(schema_name).declaration_by_name(self.is_a()) return isinstance(decl, ifcopenshell_wrapper.entity) @@ -505,9 +270,9 @@ class entity_instance: :return: bool: The comparison predicate applied to self and other """ - if isinstance(other, entity_instance): + if isinstance(other, entity_instance_mixin): a, b = map(tuple, (self, other)) - if any(map(entity_instance.is_entity, (self, other))): + if any(map(entity_instance_mixin.is_entity, (self, other))): a = (self.is_a(),) + a b = (other.is_a(),) + b elif self.is_entity(): @@ -540,17 +305,17 @@ class entity_instance: # step id. Selected type instances (such as IfcPropertySingleValue.NominalValue # always have id=0, so we hash if id_ := self.id(): - return hash((id_, self.wrapped_data.file_pointer())) + return hash((id_, self.file_pointer())) else: - return hash((self.is_a(), self[0], self.wrapped_data.file_pointer())) + return hash((self.is_a(), self[0], self.file_pointer())) def __dir__(self): return sorted( set( itertools.chain( dir(type(self)), - map(str, self.wrapped_data.get_attribute_names()), - map(str, self.wrapped_data.get_inverse_attribute_names()), + map(str, self.get_attribute_names()), + map(str, self.get_inverse_attribute_names()), ) ) ) @@ -595,7 +360,7 @@ class entity_instance: logging.exception("unhandled exception while getting id / type info on {}".format(self)) for i in range(len(self)): try: - if self.wrapped_data.get_attribute_names()[i] in ignore: + if self.get_attribute_names()[i] in ignore: continue attr_value = self[i] @@ -604,10 +369,10 @@ class entity_instance: if recursive or scalar_only: def is_instance(e): - return isinstance(e, entity_instance) + return isinstance(e, entity_instance_mixin) def get_info_(inst): - return entity_instance.get_info( + return entity_instance_mixin.get_info( inst, include_identifier=include_identifier, recursive=recursive, @@ -619,7 +384,7 @@ class entity_instance: to_include["v"] = False return None - attr_value = entity_instance.walk( + attr_value = entity_instance_mixin.walk( is_instance, get_info_ if recursive else do_ignore, attr_value ) @@ -651,4 +416,4 @@ class entity_instance: assert recursive assert return_type is dict assert len(ignore) == 0 - return ifcopenshell_wrapper.get_info_cpp(self.wrapped_data, include_identifier) + return ifcopenshell_wrapper.get_info_cpp(self, include_identifier) diff --git a/src/ifcopenshell-python/ifcopenshell/express/header.py b/src/ifcopenshell-python/ifcopenshell/express/header.py index 4cc8c8ea84..abf934ff73 100644 --- a/src/ifcopenshell-python/ifcopenshell/express/header.py +++ b/src/ifcopenshell-python/ifcopenshell/express/header.py @@ -26,16 +26,14 @@ import documentation from collections import defaultdict -USE_VIRTUAL_INHERITANCE = True - class Header(codegen.Base): def __init__(self, mapping): declarations = [] case_lookup = lambda nm: [k for k in mapping.schema.keys if k.lower() == nm.lower()][0] - case_normalize = lambda nm: nm if nm.startswith("IfcUtil::") else case_lookup(nm) + case_normalize = lambda nm: nm if nm.startswith("express::") else case_lookup(nm) create_supertype_statement = lambda nms: ", ".join( - "public %s %s" % ("" if c.startswith("IfcUtil::") else "", c) for c in nms + "public %s %s" % ("" if c.startswith("express::") else "", c) for c in nms ) write = lambda str, **kwargs: declarations.append( @@ -43,7 +41,7 @@ class Header(codegen.Base): % dict({"documentation": templates.multi_line_comment(documentation.description(kwargs["name"]))}, **kwargs) ) - forward_names = list(mapping.schema.entities.keys()) + list(mapping.schema.simpletypes.keys()) + forward_names = list(mapping.schema.entities.keys()) + list(mapping.schema.simpletypes.keys()) + list(mapping.schema.selects.keys()) forward_definitions = "".join(["class %s; " % n for n in forward_names]) select_super_types = defaultdict(list) @@ -51,7 +49,20 @@ class Header(codegen.Base): for name, type in mapping.schema.selects.items(): for nm in type.values: select_super_types[str(nm).lower()].append(name) - write(templates.select_virtual if USE_VIRTUAL_INHERITANCE else templates.select_plain, name=name) + + # Previously we used (virtual) inheritance, now we use casts to go from Base to Select. + # Casts only go one conversion step deep, so we need to explicitly all descendant selected leafs. + def visit_select(s): + for x in map(str, s.values): + yield x + if mapping.schema.is_select(x): + yield from visit_select(mapping.schema.selects[x]) + + write(templates.select, + name=name, + template_items="\n".join(templates.select_list_item % {'item_name': nm} for nm in visit_select(type)), + cast_functions="\n".join(templates.select_cast_function % {'name': name, 'item_name': nm} for nm in visit_select(type)), + ) def get_select_super_types(nm, bases=[]): x = list(select_super_types[nm.lower()]) @@ -82,13 +93,15 @@ class Header(codegen.Base): all_superclasses.append(superclass) superclass = mapping.simple_type_parent(superclass) else: - superclasses.append("IfcUtil::IfcBaseType") + superclasses.append("express::DeclaredType") - if USE_VIRTUAL_INHERITANCE: - superclasses.extend(get_select_super_types(name, bases=all_superclasses)) + # This is no longer used, previously virtual inheritance was used, now + # a variant-like approach is used instead, so the definition of selects + # is on the other side again, as it is in Express. + # superclasses.extend(get_select_super_types(name, bases=all_superclasses)) is_emitted = ( - lambda nm: nm == "IfcUtil::IfcBaseType" + lambda nm: nm == "express::DeclaredType" or nm in mapping.schema.selects or nm.lower() in emitted_simpletypes ) @@ -99,7 +112,9 @@ class Header(codegen.Base): emitted_simpletypes.add(name.lower()) - superclass_statement = create_supertype_statement(superclasses) + # with the v1 data model we're back to exactly one supertype, no more virtual inheritance to handle selects + assert len(superclasses) == 1 + superclass_statement = superclasses[0] write( templates.simpletype, name=name, type=type_str, attr_type=attr_type, superclass=superclass_statement @@ -128,7 +143,11 @@ class Header(codegen.Base): type_str = mapping.get_parameter_type(attr) if mapping.make_argument_type(attr) != "IfcUtil::Argument_UNKNOWN": attr_lines.append("%s %s() const;" % (type_str, attr.name)) - attr_lines.append("void set%s(%s v);" % (attr.name, type_str)) + attr_lines.append("void set%s(const %s& v);" % (attr.name, type_str)) + if type_str == 'std::optional< std::string >': + # because a 2-step char[] -> std::string -> optional is not allowed + # attr_lines.append("void set%s(const %s& v);" % (attr.name, 'std::string')) + pass [write_method(attr) for attr in type.attributes] @@ -157,11 +176,11 @@ class Header(codegen.Base): all_supertypes.append(tt.supertypes[0]) tt = mapping.schema.entities[tt.supertypes[0]] - supertypes = list(type.supertypes) if len(type.supertypes) else ["IfcUtil::IfcBaseEntity"] - if USE_VIRTUAL_INHERITANCE: - supertypes.extend(get_select_super_types(name, bases=all_supertypes)) + supertypes = list(type.supertypes) if len(type.supertypes) else ["express::Entity"] + # supertypes.extend(get_select_super_types(name, bases=all_supertypes)) supertypes = list(map(case_normalize, supertypes)) - superclass = create_supertype_statement(supertypes) + assert len(supertypes) == 1 + superclass = supertypes[0] argument_count = mapping.argument_count(type) diff --git a/src/ifcopenshell-python/ifcopenshell/express/header_schema.exp b/src/ifcopenshell-python/ifcopenshell/express/header_schema.exp index 0dba8dba60..f8b12041e5 100644 --- a/src/ifcopenshell-python/ifcopenshell/express/header_schema.exp +++ b/src/ifcopenshell-python/ifcopenshell/express/header_schema.exp @@ -13,7 +13,7 @@ ENTITY file_name; organization : LIST [1:?] OF STRING (256); preprocessor_version : STRING (256); originating_system : STRING (256); - authorisation : STRING (256); + authorization : STRING (256); END_ENTITY; ENTITY file_description; diff --git a/src/ifcopenshell-python/ifcopenshell/express/implementation.py b/src/ifcopenshell-python/ifcopenshell/express/implementation.py index 248bbd6e86..011b076ed5 100644 --- a/src/ifcopenshell-python/ifcopenshell/express/implementation.py +++ b/src/ifcopenshell-python/ifcopenshell/express/implementation.py @@ -22,8 +22,6 @@ import templates from schema import OrderedCaseInsensitiveDict -from header import USE_VIRTUAL_INHERITANCE - class Implementation(codegen.Base): def __init__(self, mapping): @@ -70,15 +68,14 @@ class Implementation(codegen.Base): ), ) - if USE_VIRTUAL_INHERITANCE: - for name, enum in mapping.schema.selects.items(): - write( - templates.select_function, - name=name, - schema_name=schema_name, - schema_name_upper=schema_name_upper, - index_in_schema=self.names.index(str(name)), - ) + for name, enum in mapping.schema.selects.items(): + write( + templates.select_function, + name=name, + schema_name=schema_name, + schema_name_upper=schema_name_upper, + index_in_schema=self.names.index(str(name)), + ) write = lambda str, **kwargs: entity_implementations.append(str % kwargs) @@ -101,7 +98,6 @@ class Implementation(codegen.Base): def find_template(arg): simple = mapping.schema.is_simpletype(arg["list_instance_type"]) - select = arg["list_instance_type"] == "IfcUtil::IfcBaseClass" express = ( mapping.flatten_type_string(arg["list_instance_type"]) in mapping.express_to_cpp_typemapping ) @@ -109,9 +105,9 @@ class Implementation(codegen.Base): return templates.get_attr_stmt_enum elif arg["is_nested"] and arg["is_templated_list"]: return templates.get_attr_stmt_nested_array - elif arg["is_templated_list"] and not (select or simple or express): + elif arg["is_templated_list"] and not (simple or express): return templates.get_attr_stmt_array - elif arg["non_optional_type"].endswith("*"): + elif arg["argument_type_enum"] == 'IfcUtil::Argument_ENTITY_INSTANCE': return templates.get_attr_stmt_entity else: return templates.get_attr_stmt @@ -122,10 +118,10 @@ class Implementation(codegen.Base): "if(get_attribute_value(%d).isNull()) { return %%s; }" % (arg["index"] - 1,) ) - if "boost::optional" in arg["full_type"]: - null_check = attr_check % "boost::none" + if "std::optional" in arg["full_type"]: + null_check = attr_check % "std::nullopt" else: - null_check = attr_check % "nullptr" + null_check = attr_check % (arg['full_type'] + "{}") tmpl = find_template(arg) write_attr( @@ -151,13 +147,14 @@ class Implementation(codegen.Base): def find_template(arg): simple = mapping.schema.is_simpletype(arg["list_instance_type"]) - select = arg["list_instance_type"] == "IfcUtil::IfcBaseClass" express = arg["list_instance_type"] in mapping.express_to_cpp_typemapping if arg["is_enum"]: return templates.set_attr_stmt_enum - elif arg["is_templated_list"] and not (select or simple or express): + elif arg["is_nested"] and arg["is_templated_list"]: + return templates.set_attr_stmt_nested_array + elif arg["is_templated_list"] and not (simple or express): return templates.set_attr_stmt_array - elif arg["full_type"].endswith('*'): + elif arg["argument_type_enum"] == 'IfcUtil::Argument_ENTITY_INSTANCE': return templates.set_attr_instance else: return templates.set_attr_stmt @@ -167,7 +164,7 @@ class Implementation(codegen.Base): templates.function, class_name=name, name="set%s" % arg["name"], - arguments="%s v" % arg["full_type"], + arguments="const %s& v" % arg["full_type"], return_type="void", schema_name=schema_name, schema_name_upper=schema_name_upper, @@ -176,10 +173,10 @@ class Implementation(codegen.Base): "index": arg["index"] - 1, "type": arg["full_type"].replace("::Value", ""), "non_optional_type": arg["non_optional_type"].replace("::Value", ""), - "star_if_optional": "*" if "boost::optional" in arg["full_type"] else "", - "check_optional_set_begin": "if (v) {" if "boost::optional" in arg["full_type"] else "", - "check_optional_set_else": "} else {" if "boost::optional" in arg["full_type"] else "if constexpr (false)", - "check_optional_set_end": "}" if "boost::optional" in arg["full_type"] else "", + "star_if_optional": "*" if "std::optional" in arg["full_type"] else "", + "check_optional_set_begin": "if (v) {" if "std::optional" in arg["full_type"] else "", + "check_optional_set_else": "} else {" if "std::optional" in arg["full_type"] else "if constexpr (false)", + "check_optional_set_end": "}" if "std::optional" in arg["full_type"] else "", }, ) @@ -226,7 +223,7 @@ class Implementation(codegen.Base): "schema_name_upper": schema_name_upper, "name": i.name, "arguments": "", - "return_type": "::%s::%s::list::ptr" % (schema_name, i.entity), + "return_type": "std::vector<::%s::%s>" % (schema_name, i.entity), "body": templates.get_inverse % { "type": i.entity, @@ -240,15 +237,15 @@ class Implementation(codegen.Base): ] superclass = ( - "%s(std::move(e))" % type.supertypes[0] + "%s(e)" % type.supertypes[0] if len(type.supertypes) == 1 - else "IfcUtil::IfcBaseEntity(std::move(e))" + else "express::Entity(e)" ) superclass_num_attrs = ( - "%s(IfcEntityInstanceData(in_memory_attribute_storage(%%d)))" % type.supertypes[0] + "%s(const std::weak_ptr&(in_memory_attribute_storage(%%d)))" % type.supertypes[0] if len(type.supertypes) == 1 - else "IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(%d)))" + else "express::Entity(const std::weak_ptr&(in_memory_attribute_storage(%d)))" ) % len(constructor_arguments) write( @@ -313,7 +310,7 @@ class Implementation(codegen.Base): for class_name, type in mapping.schema.simpletypes.items(): type_str = mapping.make_type_string(mapping.flatten_type_string(type)) attr_type = mapping.make_argument_type(type) - superclass = mapping.simple_type_parent(class_name) or "IfcUtil::IfcBaseType" + superclass = mapping.simple_type_parent(class_name) or "express::DeclaredType" simpletype_impl_is = ( templates.simpletype_impl_is_with_supertype @@ -358,24 +355,24 @@ class Implementation(codegen.Base): (), templates.simpletype_impl_class, ), - ( - "", - "declaration", - templates.const_function, - "const IfcParse::type_declaration&", - (), - templates.simpletype_impl_declaration, - ), - ( - "std::move(e)", - "", - constructor, - "", - ("IfcEntityInstanceData&& e",), - "", - ), - ("", "", constructor, "", ("%s v" % type_str,), ("set_attribute_value(0, v%s);" % ("->generalize()" if mapping.is_templated_list(type) else ""))) if mapping.simple_type_parent(class_name) is None else \ - ("v", "", constructor, "", ("%s v" % type_str,), ""), + # ( + # "", + # "declaration", + # templates.const_function, + # "const IfcParse::type_declaration&", + # (), + # templates.simpletype_impl_declaration, + # ), + # ( + # "e", + # "", + # constructor, + # "", + # ("const std::weak_ptr& e",), + # "", + # ), + # ("", "", constructor, "", ("%s v" % type_str,), ("set_attribute_value(0, v%s);" % ("->generalize()" if mapping.is_templated_list(type) else ""))) if mapping.simple_type_parent(class_name) is None else \ + # ("v", "", constructor, "", ("%s v" % type_str,), ""), ("", "", templates.cast_function, type_str, (), simpletype_impl_cast), ), ), diff --git a/src/ifcopenshell-python/ifcopenshell/express/mapping.py b/src/ifcopenshell-python/ifcopenshell/express/mapping.py index 7ebac2478b..2a103c904e 100644 --- a/src/ifcopenshell-python/ifcopenshell/express/mapping.py +++ b/src/ifcopenshell-python/ifcopenshell/express/mapping.py @@ -23,8 +23,6 @@ import nodes import templates import schema -from header import USE_VIRTUAL_INHERITANCE - class Mapping: express_to_cpp_typemapping = { @@ -177,15 +175,8 @@ class Mapping: elif isinstance(type_str, nodes.AggregationType): is_nested_list = isinstance(attr_type.type, nodes.AggregationType) ty = self.get_parameter_type(attr_type.type if is_nested_list else attr_type) - # We do not use pointers in aggregate_of. aggregate_of has member vector - ty = ty.replace("*", "") - # https://github.com/IfcOpenShell/IfcOpenShell/issues/2805 - # We do support statically typed select types as aggregates when USE_VIRTUAL_INHERITANCE=True - - if not USE_VIRTUAL_INHERITANCE and self.schema.is_select(attr_type.type): - type_str = templates.untyped_list - elif self.schema.is_simpletype(ty) or str(ty) in self.express_to_cpp_typemapping.values(): + if self.schema.is_simpletype(ty) or str(ty) in self.express_to_cpp_typemapping.values(): tmpl = templates.nested_array_type if is_nested_list else templates.array_type bounds = (attr_type.bounds.lower, attr_type.bounds.upper) if attr_type.bounds else (-1, -1) type_str = tmpl % {"instance_type": ty, "lower": bounds[0], "upper": bounds[1]} @@ -193,11 +184,11 @@ class Mapping: tmpl = templates.list_list_type if is_nested_list else templates.list_type type_str = tmpl % {"instance_type": ty} elif self.schema.is_entity(type_str) or self.schema.is_select(type_str): - type_str = "::%s::%s*" % (self.schema.name.capitalize(), attr_type) + type_str = "::%s::%s" % (self.schema.name.capitalize(), attr_type) is_ptr = True if allow_optional and attr.optional and not is_ptr: # pointers are still handled with nullptr for the time being - type_str = "boost::optional< %s >" % type_str + type_str = "std::optional< %s >" % type_str return type_str def argument_count(self, t): @@ -224,8 +215,6 @@ class Mapping: isinstance(v, nodes.SimpleType) and isinstance(v.type, nodes.StringType) ): return "string" - if not USE_VIRTUAL_INHERITANCE and self.schema.is_select(v): - return "IfcUtil::IfcBaseClass" if str(v) in self.schema.types or str(v) in self.schema.entities: return "::%s::%s" % (self.schema.name.capitalize(), v) else: @@ -254,8 +243,8 @@ class Mapping: arr = self.is_array(attr_type) simple = self.schema.is_simpletype(ty) express = self.flatten_type_string(ty) in self.express_to_cpp_typemapping - select = ty == "IfcUtil::IfcBaseClass" - return arr and not simple and not express and not select + # select = ty == "IfcUtil::IfcBaseClass" + return arr and not simple and not express def get_assignable_arguments(self, t, include_derived=False): count = self.argument_count(t) diff --git a/src/ifcopenshell-python/ifcopenshell/express/rule_compiler.py b/src/ifcopenshell-python/ifcopenshell/express/rule_compiler.py index ab6caf93f8..545d68c50a 100644 --- a/src/ifcopenshell-python/ifcopenshell/express/rule_compiler.py +++ b/src/ifcopenshell-python/ifcopenshell/express/rule_compiler.py @@ -738,7 +738,7 @@ class AttributeGetattrTransformer(ast.NodeTransformer): while n := getattr(n, "parent", 0): parents.append(n) - custom_funcs = "is_entity", "usedin", "express_len", "express_getitem", "typeof" + custom_funcs = "is_entity", "usedin", "express_len", "express_getitem", "typeof", "express_getattr" function_defs = [p.name for p in parents if isinstance(p, ast.FunctionDef)] if any(fn in function_defs for fn in custom_funcs): return node @@ -755,7 +755,7 @@ class AttributeGetattrTransformer(ast.NodeTransformer): # Replace the Attribute node with a call to the built-in `getattr` function return ast.copy_location( ast.Call( - func=ast.Name(id="getattr", ctx=ast.Load()), + func=ast.Name(id="express_getattr", ctx=ast.Load()), args=[ new_value, ast.Str(s=node.attr), @@ -772,7 +772,7 @@ class AttributeGetattrTransformer(ast.NodeTransformer): while n := getattr(n, "parent", 0): parents.append(n) - custom_funcs = "is_entity", "usedin", "express_len", "express_getitem", "typeof" + custom_funcs = "is_entity", "usedin", "express_len", "express_getitem", "typeof", "express_getattr" function_defs = [p.name for p in parents if isinstance(p, ast.FunctionDef)] if any(fn in function_defs for fn in custom_funcs): return node @@ -937,6 +937,14 @@ def express_getitem(aggr, idx, default): except IndexError as e: return None +def express_getattr(aggr, name, default): + v = getattr(aggr, name, default) + if v is None: + return default + else: + return v + + EXPRESS_ONE_BASED_INDEXING = 1 diff --git a/src/ifcopenshell-python/ifcopenshell/express/rule_executor.py b/src/ifcopenshell-python/ifcopenshell/express/rule_executor.py index 0bf8ac439c..9201e480be 100644 --- a/src/ifcopenshell-python/ifcopenshell/express/rule_executor.py +++ b/src/ifcopenshell-python/ifcopenshell/express/rule_executor.py @@ -9,7 +9,7 @@ from codegen import indent def reverse_compile(s): - return re.sub( + return re.sub(r'\bself\b', 'SELF', re.sub( r"\s*\-\s*EXPRESS_ONE_BASED_INDEXING", "", re.sub( @@ -22,11 +22,11 @@ def reverse_compile(s): .replace("len(", "SIZEOF(") .replace("assert ", "") .replace(" is not False", "") - .replace("getattr(", "") + .replace("express_getattr(", "") .replace("express_getitem(", ""), )[::-1], )[::-1], - ) + )) @dataclass diff --git a/src/ifcopenshell-python/ifcopenshell/express/run.bat b/src/ifcopenshell-python/ifcopenshell/express/run.bat index 96fd58973d..8d0aa69a93 100644 --- a/src/ifcopenshell-python/ifcopenshell/express/run.bat +++ b/src/ifcopenshell-python/ifcopenshell/express/run.bat @@ -2,173 +2,173 @@ :: python bootstrap.py express.bnf > express_parser.py -IF EXIST IFC2X3_TC1.exp ( - python express_parser.py IFC2X3_TC1.exp header implementation schema_class definitions - - IF EXIST Ifc2x3-schema.cpp ( - :: v0.6.0 - python cat.py -o ..\..\..\ifcparse\Ifc2x3.cpp txt/header_ifc2x3.txt Ifc2x3.cpp - python cat.py -o ..\..\..\ifcparse\Ifc2x3.h txt/header_ifc2x3.txt Ifc2x3.h - python cat.py -o ..\..\..\ifcparse\Ifc2x3-schema.cpp txt/header_ifc2x3.txt Ifc2x3-schema.cpp - python cat.py -o ..\..\..\ifcparse\Ifc2x3-definitions.h txt/header_ifc2x3.txt Ifc2x3-definitions.h - ) ELSE ( - :: v0.5.0 - python cat.py -o ..\..\..\ifcparse\Ifc2x3.cpp txt/header_ifc2x3.txt txt/ifndef_ifc4.txt Ifc2x3.cpp txt/endif.txt - python cat.py -o ..\..\..\ifcparse\Ifc2x3.h txt/header_ifc2x3.txt Ifc2x3.h - python cat.py -o ..\..\..\ifcparse\Ifc2x3enum.h txt/header_ifc2x3.txt Ifc2x3enum.h - python cat.py -o ..\..\..\ifcparse\Ifc2x3-latebound.cpp txt/header_ifc2x3.txt txt/ifndef_ifc4.txt Ifc2x3-latebound.cpp txt/endif.txt - python cat.py -o ..\..\..\ifcparse\Ifc2x3-latebound.h txt/header_ifc2x3.txt Ifc2x3-latebound.h - ) - - del *.cpp *.h -) - -IF EXIST IFC4_ADD2TC1.exp ( - python express_parser.py IFC4_ADD2TC1.exp header implementation schema_class definitions - - IF EXIST Ifc4-schema.cpp ( - :: v0.6.0 - python cat.py -o ..\..\..\ifcparse\Ifc4.cpp txt/header_ifc4.txt Ifc4.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4.h txt/header_ifc4.txt Ifc4.h - python cat.py -o ..\..\..\ifcparse\Ifc4-schema.cpp txt/header_ifc4.txt Ifc4-schema.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4-definitions.h txt/header_ifc4.txt Ifc4-definitions.h - ) ELSE ( - :: v0.5.0 - python cat.py -o ..\..\..\ifcparse\Ifc4.cpp txt/header_ifc4.txt txt/ifdef_ifc4.txt Ifc4.cpp txt/endif.txt - python cat.py -o ..\..\..\ifcparse\Ifc4.h txt/header_ifc4.txt Ifc4.h - python cat.py -o ..\..\..\ifcparse\Ifc4enum.h txt/header_ifc4.txt Ifc4enum.h - python cat.py -o ..\..\..\ifcparse\Ifc4-latebound.cpp txt/header_ifc4.txt txt/ifdef_ifc4.txt Ifc4-latebound.cpp txt/endif.txt - python cat.py -o ..\..\..\ifcparse\Ifc4-latebound.h txt/header_ifc4.txt Ifc4-latebound.h - ) - - del *.cpp *.h -) - -IF EXIST IFC4x1.exp ( - python express_parser.py IFC4x1.exp header implementation schema_class definitions - - IF EXIST Ifc4x1-schema.cpp ( - :: v0.6.0 - python cat.py -o ..\..\..\ifcparse\Ifc4x1.cpp txt/header_ifc4x1.txt Ifc4x1.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x1.h txt/header_ifc4x1.txt Ifc4x1.h - python cat.py -o ..\..\..\ifcparse\Ifc4x1-schema.cpp txt/header_ifc4x1.txt Ifc4x1-schema.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x1-definitions.h txt/header_ifc4x1.txt Ifc4x1-definitions.h - ) - - del *.cpp *.h -) - -IF EXIST IFC4x2.exp ( - python express_parser.py IFC4x2.exp header implementation schema_class definitions - - IF EXIST Ifc4x2-schema.cpp ( - :: v0.6.0 - python cat.py -o ..\..\..\ifcparse\Ifc4x2.cpp txt/header_ifc4x2.txt Ifc4x2.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x2.h txt/header_ifc4x2.txt Ifc4x2.h - python cat.py -o ..\..\..\ifcparse\Ifc4x2-schema.cpp txt/header_ifc4x2.txt Ifc4x2-schema.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x2-definitions.h txt/header_ifc4x2.txt Ifc4x2-definitions.h - ) - - del *.cpp *.h -) - -IF EXIST IFC4x3_RC1.exp ( - python express_parser.py IFC4x3_RC1.exp header implementation schema_class definitions - - IF EXIST Ifc4x3_rc1-schema.cpp ( - :: v0.6.0 - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc1.cpp txt/header_ifc4x3_rc1.txt Ifc4x3_rc1.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc1.h txt/header_ifc4x3_rc1.txt Ifc4x3_rc1.h - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc1-schema.cpp txt/header_ifc4x3_rc1.txt Ifc4x3_rc1-schema.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc1-definitions.h txt/header_ifc4x3_rc1.txt Ifc4x3_rc1-definitions.h - ) - - del *.cpp *.h -) - -IF EXIST IFC4x3_RC2.exp ( - python express_parser.py IFC4x3_RC2.exp header implementation schema_class definitions - - IF EXIST Ifc4x3_rc2-schema.cpp ( - :: v0.6.0 - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc2.cpp txt/header_ifc4x3_rc2.txt Ifc4x3_rc2.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc2.h txt/header_ifc4x3_rc2.txt Ifc4x3_rc2.h - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc2-schema.cpp txt/header_ifc4x3_rc2.txt Ifc4x3_rc2-schema.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc2-definitions.h txt/header_ifc4x3_rc2.txt Ifc4x3_rc2-definitions.h - ) - - del *.cpp *.h -) - -IF EXIST IFC4x3_RC3.exp ( - python express_parser.py IFC4x3_RC3.exp header implementation schema_class definitions - - IF EXIST Ifc4x3_rc3-schema.cpp ( - :: v0.6.0 - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc3.cpp txt/header_ifc4x3_rc2.txt Ifc4x3_rc3.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc3.h txt/header_ifc4x3_rc2.txt Ifc4x3_rc3.h - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc3-schema.cpp txt/header_ifc4x3_rc2.txt Ifc4x3_rc3-schema.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc3-definitions.h txt/header_ifc4x3_rc2.txt Ifc4x3_rc3-definitions.h - ) - - del *.cpp *.h -) - -IF EXIST IFC4x3_RC4.exp ( - python express_parser.py IFC4x3_RC4.exp header implementation schema_class definitions - - IF EXIST Ifc4x3_rc4-schema.cpp ( - :: v0.6.0 - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc4.cpp txt/header_ifc4x3_rc2.txt Ifc4x3_rc4.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc4.h txt/header_ifc4x3_rc2.txt Ifc4x3_rc4.h - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc4-schema.cpp txt/header_ifc4x3_rc2.txt Ifc4x3_rc4-schema.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc4-definitions.h txt/header_ifc4x3_rc2.txt Ifc4x3_rc4-definitions.h - ) - - del *.cpp *.h -) - -IF EXIST IFC4X3.exp ( - python express_parser.py IFC4X3.exp header implementation schema_class definitions - - IF EXIST Ifc4x3-schema.cpp ( - :: v0.6.0 - python cat.py -o ..\..\..\ifcparse\Ifc4x3.cpp txt/header_ifc4x3_rc2.txt Ifc4x3.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x3.h txt/header_ifc4x3_rc2.txt Ifc4x3.h - python cat.py -o ..\..\..\ifcparse\Ifc4x3-schema.cpp txt/header_ifc4x3_rc2.txt Ifc4x3-schema.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x3-definitions.h txt/header_ifc4x3_rc2.txt Ifc4x3-definitions.h - ) - - del *.cpp *.h -) - -IF EXIST IFC4X3_TC1.exp ( - python express_parser.py IFC4X3_TC1.exp header implementation schema_class definitions - - IF EXIST Ifc4x3_tc1-schema.cpp ( - :: v0.6.0 - python cat.py -o ..\..\..\ifcparse\Ifc4x3_tc1.cpp txt/header_ifc4x3_tc1.txt Ifc4x3_tc1.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x3_tc1.h txt/header_ifc4x3_tc1.txt Ifc4x3_tc1.h - python cat.py -o ..\..\..\ifcparse\Ifc4x3_tc1-schema.cpp txt/header_ifc4x3_tc1.txt Ifc4x3_tc1-schema.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x3_tc1-definitions.h txt/header_ifc4x3_tc1.txt Ifc4x3_tc1-definitions.h - ) - - del *.cpp *.h -) - -IF EXIST IFC4X3_ADD1.exp ( - python express_parser.py IFC4X3_ADD1.exp header implementation schema_class definitions - - IF EXIST Ifc4x3_add1-schema.cpp ( - :: v0.6.0 - python cat.py -o ..\..\..\ifcparse\Ifc4x3_add1.cpp txt/header_ifc4x3_add1.txt Ifc4x3_add1.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x3_add1.h txt/header_ifc4x3_add1.txt Ifc4x3_add1.h - python cat.py -o ..\..\..\ifcparse\Ifc4x3_add1-schema.cpp txt/header_ifc4x3_add1.txt Ifc4x3_add1-schema.cpp - python cat.py -o ..\..\..\ifcparse\Ifc4x3_add1-definitions.h txt/header_ifc4x3_add1.txt Ifc4x3_add1-definitions.h - ) - - del *.cpp *.h -) +:: IF EXIST IFC2X3_TC1.exp ( +:: python express_parser.py IFC2X3_TC1.exp header implementation schema_class definitions +:: +:: IF EXIST Ifc2x3-schema.cpp ( +:: :: v0.6.0 +:: python cat.py -o ..\..\..\ifcparse\Ifc2x3.cpp txt/header_ifc2x3.txt Ifc2x3.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc2x3.h txt/header_ifc2x3.txt Ifc2x3.h +:: python cat.py -o ..\..\..\ifcparse\Ifc2x3-schema.cpp txt/header_ifc2x3.txt Ifc2x3-schema.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc2x3-definitions.h txt/header_ifc2x3.txt Ifc2x3-definitions.h +:: ) ELSE ( +:: :: v0.5.0 +:: python cat.py -o ..\..\..\ifcparse\Ifc2x3.cpp txt/header_ifc2x3.txt txt/ifndef_ifc4.txt Ifc2x3.cpp txt/endif.txt +:: python cat.py -o ..\..\..\ifcparse\Ifc2x3.h txt/header_ifc2x3.txt Ifc2x3.h +:: python cat.py -o ..\..\..\ifcparse\Ifc2x3enum.h txt/header_ifc2x3.txt Ifc2x3enum.h +:: python cat.py -o ..\..\..\ifcparse\Ifc2x3-latebound.cpp txt/header_ifc2x3.txt txt/ifndef_ifc4.txt Ifc2x3-latebound.cpp txt/endif.txt +:: python cat.py -o ..\..\..\ifcparse\Ifc2x3-latebound.h txt/header_ifc2x3.txt Ifc2x3-latebound.h +:: ) +:: +:: del *.cpp *.h +:: ) +:: +:: IF EXIST IFC4_ADD2TC1.exp ( +:: python express_parser.py IFC4_ADD2TC1.exp header implementation schema_class definitions +:: +:: IF EXIST Ifc4-schema.cpp ( +:: :: v0.6.0 +:: python cat.py -o ..\..\..\ifcparse\Ifc4.cpp txt/header_ifc4.txt Ifc4.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4.h txt/header_ifc4.txt Ifc4.h +:: python cat.py -o ..\..\..\ifcparse\Ifc4-schema.cpp txt/header_ifc4.txt Ifc4-schema.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4-definitions.h txt/header_ifc4.txt Ifc4-definitions.h +:: ) ELSE ( +:: :: v0.5.0 +:: python cat.py -o ..\..\..\ifcparse\Ifc4.cpp txt/header_ifc4.txt txt/ifdef_ifc4.txt Ifc4.cpp txt/endif.txt +:: python cat.py -o ..\..\..\ifcparse\Ifc4.h txt/header_ifc4.txt Ifc4.h +:: python cat.py -o ..\..\..\ifcparse\Ifc4enum.h txt/header_ifc4.txt Ifc4enum.h +:: python cat.py -o ..\..\..\ifcparse\Ifc4-latebound.cpp txt/header_ifc4.txt txt/ifdef_ifc4.txt Ifc4-latebound.cpp txt/endif.txt +:: python cat.py -o ..\..\..\ifcparse\Ifc4-latebound.h txt/header_ifc4.txt Ifc4-latebound.h +:: ) +:: +:: del *.cpp *.h +:: ) +:: +:: IF EXIST IFC4x1.exp ( +:: python express_parser.py IFC4x1.exp header implementation schema_class definitions +:: +:: IF EXIST Ifc4x1-schema.cpp ( +:: :: v0.6.0 +:: python cat.py -o ..\..\..\ifcparse\Ifc4x1.cpp txt/header_ifc4x1.txt Ifc4x1.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x1.h txt/header_ifc4x1.txt Ifc4x1.h +:: python cat.py -o ..\..\..\ifcparse\Ifc4x1-schema.cpp txt/header_ifc4x1.txt Ifc4x1-schema.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x1-definitions.h txt/header_ifc4x1.txt Ifc4x1-definitions.h +:: ) +:: +:: del *.cpp *.h +:: ) +:: +:: IF EXIST IFC4x2.exp ( +:: python express_parser.py IFC4x2.exp header implementation schema_class definitions +:: +:: IF EXIST Ifc4x2-schema.cpp ( +:: :: v0.6.0 +:: python cat.py -o ..\..\..\ifcparse\Ifc4x2.cpp txt/header_ifc4x2.txt Ifc4x2.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x2.h txt/header_ifc4x2.txt Ifc4x2.h +:: python cat.py -o ..\..\..\ifcparse\Ifc4x2-schema.cpp txt/header_ifc4x2.txt Ifc4x2-schema.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x2-definitions.h txt/header_ifc4x2.txt Ifc4x2-definitions.h +:: ) +:: +:: del *.cpp *.h +:: ) +:: +:: IF EXIST IFC4x3_RC1.exp ( +:: python express_parser.py IFC4x3_RC1.exp header implementation schema_class definitions +:: +:: IF EXIST Ifc4x3_rc1-schema.cpp ( +:: :: v0.6.0 +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc1.cpp txt/header_ifc4x3_rc1.txt Ifc4x3_rc1.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc1.h txt/header_ifc4x3_rc1.txt Ifc4x3_rc1.h +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc1-schema.cpp txt/header_ifc4x3_rc1.txt Ifc4x3_rc1-schema.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc1-definitions.h txt/header_ifc4x3_rc1.txt Ifc4x3_rc1-definitions.h +:: ) +:: +:: del *.cpp *.h +:: ) +:: +:: IF EXIST IFC4x3_RC2.exp ( +:: python express_parser.py IFC4x3_RC2.exp header implementation schema_class definitions +:: +:: IF EXIST Ifc4x3_rc2-schema.cpp ( +:: :: v0.6.0 +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc2.cpp txt/header_ifc4x3_rc2.txt Ifc4x3_rc2.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc2.h txt/header_ifc4x3_rc2.txt Ifc4x3_rc2.h +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc2-schema.cpp txt/header_ifc4x3_rc2.txt Ifc4x3_rc2-schema.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc2-definitions.h txt/header_ifc4x3_rc2.txt Ifc4x3_rc2-definitions.h +:: ) +:: +:: del *.cpp *.h +:: ) +:: +:: IF EXIST IFC4x3_RC3.exp ( +:: python express_parser.py IFC4x3_RC3.exp header implementation schema_class definitions +:: +:: IF EXIST Ifc4x3_rc3-schema.cpp ( +:: :: v0.6.0 +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc3.cpp txt/header_ifc4x3_rc2.txt Ifc4x3_rc3.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc3.h txt/header_ifc4x3_rc2.txt Ifc4x3_rc3.h +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc3-schema.cpp txt/header_ifc4x3_rc2.txt Ifc4x3_rc3-schema.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc3-definitions.h txt/header_ifc4x3_rc2.txt Ifc4x3_rc3-definitions.h +:: ) +:: +:: del *.cpp *.h +:: ) +:: +:: IF EXIST IFC4x3_RC4.exp ( +:: python express_parser.py IFC4x3_RC4.exp header implementation schema_class definitions +:: +:: IF EXIST Ifc4x3_rc4-schema.cpp ( +:: :: v0.6.0 +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc4.cpp txt/header_ifc4x3_rc2.txt Ifc4x3_rc4.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc4.h txt/header_ifc4x3_rc2.txt Ifc4x3_rc4.h +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc4-schema.cpp txt/header_ifc4x3_rc2.txt Ifc4x3_rc4-schema.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_rc4-definitions.h txt/header_ifc4x3_rc2.txt Ifc4x3_rc4-definitions.h +:: ) +:: +:: del *.cpp *.h +:: ) +:: +:: IF EXIST IFC4X3.exp ( +:: python express_parser.py IFC4X3.exp header implementation schema_class definitions +:: +:: IF EXIST Ifc4x3-schema.cpp ( +:: :: v0.6.0 +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3.cpp txt/header_ifc4x3_rc2.txt Ifc4x3.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3.h txt/header_ifc4x3_rc2.txt Ifc4x3.h +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3-schema.cpp txt/header_ifc4x3_rc2.txt Ifc4x3-schema.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3-definitions.h txt/header_ifc4x3_rc2.txt Ifc4x3-definitions.h +:: ) +:: +:: del *.cpp *.h +:: ) +:: +:: IF EXIST IFC4X3_TC1.exp ( +:: python express_parser.py IFC4X3_TC1.exp header implementation schema_class definitions +:: +:: IF EXIST Ifc4x3_tc1-schema.cpp ( +:: :: v0.6.0 +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_tc1.cpp txt/header_ifc4x3_tc1.txt Ifc4x3_tc1.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_tc1.h txt/header_ifc4x3_tc1.txt Ifc4x3_tc1.h +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_tc1-schema.cpp txt/header_ifc4x3_tc1.txt Ifc4x3_tc1-schema.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_tc1-definitions.h txt/header_ifc4x3_tc1.txt Ifc4x3_tc1-definitions.h +:: ) +:: +:: del *.cpp *.h +:: ) +:: +:: IF EXIST IFC4X3_ADD1.exp ( +:: python express_parser.py IFC4X3_ADD1.exp header implementation schema_class definitions +:: +:: IF EXIST Ifc4x3_add1-schema.cpp ( +:: :: v0.6.0 +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_add1.cpp txt/header_ifc4x3_add1.txt Ifc4x3_add1.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_add1.h txt/header_ifc4x3_add1.txt Ifc4x3_add1.h +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_add1-schema.cpp txt/header_ifc4x3_add1.txt Ifc4x3_add1-schema.cpp +:: python cat.py -o ..\..\..\ifcparse\Ifc4x3_add1-definitions.h txt/header_ifc4x3_add1.txt Ifc4x3_add1-definitions.h +:: ) +:: +:: del *.cpp *.h +:: ) IF EXIST IFC4X3_ADD2.exp ( python express_parser.py IFC4X3_ADD2.exp header implementation schema_class definitions @@ -183,3 +183,17 @@ IF EXIST IFC4X3_ADD2.exp ( del *.cpp *.h ) + +IF EXIST header_schema.exp ( + python express_parser.py header_schema.exp header implementation schema_class definitions + + IF EXIST Header_section_schema-schema.cpp ( + :: v0.6.0 + python cat.py -o ..\..\..\ifcparse\Header_section_schema.cpp Header_section_schema.cpp + python cat.py -o ..\..\..\ifcparse\Header_section_schema.h Header_section_schema.h + python cat.py -o ..\..\..\ifcparse\Header_section_schema-schema.cpp Header_section_schema-schema.cpp + python cat.py -o ..\..\..\ifcparse\Header_section_schema-definitions.h Header_section_schema-definitions.h + ) + + del *.cpp *.h +) \ No newline at end of file diff --git a/src/ifcopenshell-python/ifcopenshell/express/schema_class.py b/src/ifcopenshell-python/ifcopenshell/express/schema_class.py index 50a4e50c5d..228bbca945 100644 --- a/src/ifcopenshell-python/ifcopenshell/express/schema_class.py +++ b/src/ifcopenshell-python/ifcopenshell/express/schema_class.py @@ -178,7 +178,7 @@ class EarlyBoundCodeWriter: num_names = len(self.names) self.statements.append("declaration* %(schema_name)s_types[%(num_names)d] = {nullptr};" % locals()) - self.statements.append("{factory_placeholder}") + # self.statements.append("{factory_placeholder}") # self.statements.append( # """ @@ -285,7 +285,7 @@ class EarlyBoundCodeWriter: declarations = ",".join(_()) schema_name_ref = self.strings.append(schema_name) self.statements.append( - ' return new schema_definition(%(schema_name_ref)s, {%(declarations)s}, new %(schema_name)s_instance_factory());' + ' return new schema_definition(%(schema_name_ref)s, {%(declarations)s});' % locals() ) self.statements.append("}"); @@ -340,16 +340,17 @@ class EarlyBoundCodeWriter: ) ) - self.statements[self.statements.index("{factory_placeholder}")] = ( - """ -class %(schema_name)s_instance_factory : public IfcParse::instance_factory { - virtual IfcUtil::IfcBaseClass* operator()(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) const { - %(instance_mapping)s - } -}; -""" - % locals() - ) + # Factor no longer exists because we don't have virtual methods anymore. + # self.statements[self.statements.index("{factory_placeholder}")] = ( + # """ + # class %(schema_name)s_instance_factory : public IfcParse::instance_factory { + # virtual IfcUtil::IfcBaseClass* operator()(const IfcParse::declaration* decl, const std::weak_ptr& data) const { + # %(instance_mapping)s + # } + # }; + # """ + # % locals() + # ) "" self.statements[self.statements.index("{string_pool_placeholder}")] = ( diff --git a/src/ifcopenshell-python/ifcopenshell/express/templates.py b/src/ifcopenshell-python/ifcopenshell/express/templates.py index e0398fd58d..e39816ef30 100644 --- a/src/ifcopenshell-python/ifcopenshell/express/templates.py +++ b/src/ifcopenshell-python/ifcopenshell/express/templates.py @@ -23,17 +23,20 @@ header = """ #include #include - -#include +#include #include "../ifcparse/ifc_parse_api.h" -#include "../ifcparse/aggregate_of_instance.h" -#include "../ifcparse/IfcBaseClass.h" +#include "../ifcparse/express.h" #include "../ifcparse/IfcSchema.h" #include "../ifcparse/IfcException.h" #include "../ifcparse/Argument.h" +namespace IfcParse { +class IfcFile; +class IfcSpfHeader; +} // namespace IfcParse + struct %(schema_name)s { IFC_PARSE_API static const IfcParse::schema_definition& get_schema(); @@ -60,7 +63,7 @@ enum_header = """ #include "../ifcparse/ifc_parse_api.h" #include -#include +#include #endif """ @@ -108,12 +111,14 @@ derived_field_statement = " {std::set idxs; %(statements)sderived_map[Ty derived_field_statement_attrs = "idxs.insert(%d); " simpletype = """%(documentation)s -class IFC_PARSE_API %(name)s : %(superclass)s { +class IFC_PARSE_API %(name)s : public %(superclass)s { public: - virtual const IfcParse::type_declaration& declaration() const; + %(name)s() {} + explicit %(name)s (const std::weak_ptr& data) : %(superclass)s(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit %(name)s (IfcEntityInstanceData&& e); - %(name)s (%(type)s v); + // %(name)s (%(type)s v); operator %(type)s() const; }; """ @@ -127,51 +132,60 @@ simpletype_impl_type = "return *((IfcParse::type_declaration*)%(schema_name_uppe simpletype_impl_class = "return *((IfcParse::type_declaration*)%(schema_name_upper)s_types[%(index_in_schema)d]);" simpletype_impl_explicit_constructor = "data_ = e;" simpletype_impl_constructor = ( - "data_ = new IfcEntityInstanceData(%(schema_name_upper)s_types[%(index_in_schema)d]); set_attribute_value(0, v);" + "data_ = new const std::weak_ptr&(%(schema_name_upper)s_types[%(index_in_schema)d]); set_attribute_value(0, v);" ) -simpletype_impl_constructor_templated = "data_ = new IfcEntityInstanceData(%(schema_name_upper)s_types[%(index_in_schema)d]); set_attribute_value(0, v->generalize());" +simpletype_impl_constructor_templated = "data_ = new const std::weak_ptr&(%(schema_name_upper)s_types[%(index_in_schema)d]); set_attribute_value(0, v->generalize());" simpletype_impl_cast = "return get_attribute_value(0);" -simpletype_impl_cast_templated = ( - "aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< %(underlying_type)s >();" -) +simpletype_impl_cast_templated = "std::vector es = get_attribute_value(0); return cast_vector<%(underlying_type)s>(es);" + simpletype_impl_declaration = "return *((IfcParse::type_declaration*)%(schema_name_upper)s_types[%(index_in_schema)d]);" -select_virtual = """%(documentation)s -class IFC_PARSE_API %(name)s : public virtual IfcUtil::IfcBaseInterface { +select = """%(documentation)s +class IFC_PARSE_API %(name)s : public express::Select { public: + %(name)s() {} + explicit %(name)s(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< %(name)s > list; +%(template_items)s +%(cast_functions)s }; """ -select_plain = """%(documentation)s -typedef IfcUtil::IfcBaseClass %(name)s; +select_list_item = """ template, int> = 0> + %(item_name)s as() const { return express::Base::as<%(item_name)s>(); } """ -enumeration = """class IFC_PARSE_API %(name)s : public IfcUtil::IfcBaseType { -%(documentation)s +select_cast_function = """ %(name)s(const %(item_name)s& c) : express::Select(c) {}; +""" + +enumeration = """%(documentation)s +class IFC_PARSE_API %(name)s : public express::DeclaredType { public: + %(name)s() {} + explicit %(name)s (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {%(values)s} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - %(name)s (IfcEntityInstanceData&& e); - %(name)s (Value v); - %(name)s (const std::string& v); + // %(name)s (Value v); + // %(name)s (const std::string& v); operator Value() const; }; """ entity = """%(documentation)s -class IFC_PARSE_API %(name)s : %(superclass)s { +class IFC_PARSE_API %(name)s : public %(superclass)s { public: -%(attributes)s %(inverse)s virtual const IfcParse::entity& declaration() const; + %(name)s() {} + explicit %(name)s (const std::weak_ptr& data) : %(superclass)s(data) {} + +%(attributes)s %(inverse)s // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - %(name)s (IfcEntityInstanceData&& e); - %(name)s (%(constructor_arguments)s); - typedef aggregate_of< %(name)s > list; + // %(name)s (%(constructor_arguments)s); }; """ @@ -180,20 +194,22 @@ const IfcParse::select_type& %(schema_name)s::%(name)s::Class() { return *((IfcP """ enumeration_function = """ -const IfcParse::enumeration_type& %(schema_name)s::%(name)s::declaration() const { return *((IfcParse::enumeration_type*)%(schema_name_upper)s_types[%(index_in_schema)d]); } +// const IfcParse::enumeration_type& %(schema_name)s::%(name)s::declaration() const { return *((IfcParse::enumeration_type*)%(schema_name_upper)s_types[%(index_in_schema)d]); } const IfcParse::enumeration_type& %(schema_name)s::%(name)s::Class() { return *((IfcParse::enumeration_type*)%(schema_name_upper)s_types[%(index_in_schema)d]); } -%(schema_name)s::%(name)s::%(name)s(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +%(schema_name)s::%(name)s::%(name)s(const std::weak_ptr& e) + : express::DeclaredType(e) {} %(schema_name)s::%(name)s::%(name)s(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } %(schema_name)s::%(name)s::%(name)s(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* %(schema_name)s::%(name)s::ToString(Value v) { return %(schema_name)s::%(name)s::%(name)s::Class().lookup_enum_value((size_t)v); @@ -211,14 +227,14 @@ const char* %(schema_name)s::%(name)s::ToString(Value v) { entity_implementation = """// Function implementations for %(name)s %(attributes)s %(inverse)s -const IfcParse::entity& %(schema_name)s::%(name)s::declaration() const { return *((IfcParse::entity*)%(schema_name_upper)s_types[%(index_in_schema)d]); } +// const IfcParse::entity& %(schema_name)s::%(name)s::declaration() const { return *((IfcParse::entity*)%(schema_name_upper)s_types[%(index_in_schema)d]); } const IfcParse::entity& %(schema_name)s::%(name)s::Class() { return *((IfcParse::entity*)%(schema_name_upper)s_types[%(index_in_schema)d]); } -%(schema_name)s::%(name)s::%(name)s(IfcEntityInstanceData&& e) : %(superclass)s { } -%(schema_name)s::%(name)s::%(name)s(%(constructor_arguments)s) : %(superclass_num_attrs)s { %(constructor_implementation)s; populate_derived(); } +// %(schema_name)s::%(name)s::%(name)s(const std::weak_ptr& e) : %(superclass)s { } +// %(schema_name)s::%(name)s::%(name)s(%(constructor_arguments)s) : %(superclass_num_attrs)s { %(constructor_implementation)s; populate_derived(); } """ # data_ = e; -# data_ = new IfcEntityInstanceData(%(schema_name_upper)s_types[%(index_in_schema)d]); +# data_ = new const std::weak_ptr&(%(schema_name_upper)s_types[%(index_in_schema)d]); optional_attribute_description = "/// Whether the optional attribute %s is defined for this %s" @@ -232,10 +248,10 @@ cast_function = "%(schema_name)s::%(class_name)s::operator %(return_type)s() con array_type = "std::vector< %(instance_type)s > /*[%(lower)s:%(upper)s]*/" nested_array_type = "std::vector< std::vector< %(instance_type)s > >" -list_type = "aggregate_of< %(instance_type)s >::ptr" -list_list_type = "aggregate_of_aggregate_of< %(instance_type)s >::ptr" +list_type = "std::vector< %(instance_type)s >" +list_list_type = "std::vector< std::vector< %(instance_type)s > >" untyped_list = "aggregate_of_instance::ptr" -inverse_attr = "aggregate_of< %(entity)s >::ptr %(name)s() const; // INVERSE %(entity)s::%(attribute)s" +inverse_attr = "std::vector< %(entity)s > %(name)s() const; // INVERSE %(entity)s::%(attribute)s" enum_from_string_stmt = ' if (s == "%(value)s") return ::%(schema_name)s::%(name)s::%(short_name)s_%(value)s;' @@ -249,21 +265,24 @@ optional_attr_stmt = "return !get_attribute_value(%(index)d).isNull();" get_attr_stmt = "%(null_check)s %(non_optional_type)s v = get_attribute_value(%(index)d); return v;" get_attr_stmt_enum = "%(null_check)s return %(non_optional_type)s::FromString(get_attribute_value(%(index)d));" -get_attr_stmt_entity = "%(null_check)s return ((IfcUtil::IfcBaseClass*)(get_attribute_value(%(index)d)))->as<%(non_optional_type_no_pointer)s>(true);" -get_attr_stmt_array = "%(null_check)s aggregate_of_instance::ptr es = get_attribute_value(%(index)d); return es->as< %(list_instance_type)s >();" -get_attr_stmt_nested_array = "%(null_check)s aggregate_of_aggregate_of_instance::ptr es = get_attribute_value(%(index)d); return es->as< %(list_instance_type)s >();" +get_attr_stmt_entity = "%(null_check)s return ((express::Base)(get_attribute_value(%(index)d))).as<%(non_optional_type_no_pointer)s>();" +get_attr_stmt_array = "%(null_check)s std::vector es = get_attribute_value(%(index)d); return cast_vector<%(list_instance_type)s>(es);" +get_attr_stmt_nested_array = "%(null_check)s std::vector> es = get_attribute_value(%(index)d); return cast_vector_vector<%(list_instance_type)s>(es);" -get_inverse = "if (!file_) { return nullptr; } return file_->getInverse(id_, %(schema_name_upper)s_types[%(type_index)d], %(index)d)->as<%(type)s>();" +get_inverse = "return cast_vector<%(type)s>(data()->file()->getInverse(data()->id(), %(schema_name_upper)s_types[%(type_index)d], %(index)d));" set_attr_stmt = ( "%(check_optional_set_begin)sset_attribute_value(%(index)d, %(star_if_optional)sv);%(check_optional_set_else)sunset_attribute_value(%(index)d);%(check_optional_set_end)s" ) set_attr_instance = ( - "%(check_optional_set_begin)sset_attribute_value(%(index)d, v->as());%(check_optional_set_else)sunset_attribute_value(%(index)d);%(check_optional_set_end)s" + "%(check_optional_set_begin)sset_attribute_value(%(index)d, v);%(check_optional_set_else)sunset_attribute_value(%(index)d);%(check_optional_set_end)s" ) set_attr_stmt_enum = "%(check_optional_set_begin)sset_attribute_value(%(index)d, EnumerationReference(&%(non_optional_type)s::Class(), (size_t) %(star_if_optional)sv));%(check_optional_set_else)sunset_attribute_value(%(index)d);%(check_optional_set_end)s" set_attr_stmt_array = ( - "%(check_optional_set_begin)sset_attribute_value(%(index)d, (%(star_if_optional)sv)->generalize());%(check_optional_set_else)sunset_attribute_value(%(index)d);%(check_optional_set_end)s" + "%(check_optional_set_begin)sset_attribute_value(%(index)d, cast_vector(%(star_if_optional)sv));%(check_optional_set_else)sunset_attribute_value(%(index)d);%(check_optional_set_end)s" +) +set_attr_stmt_nested_array = ( + "%(check_optional_set_begin)sset_attribute_value(%(index)d, cast_vector_vector(%(star_if_optional)sv));%(check_optional_set_else)sunset_attribute_value(%(index)d);%(check_optional_set_end)s" ) constructor_stmt = ( @@ -289,3 +308,5 @@ inverse_implementation = ' inverse_map[Type::%(type)s].insert(std::make_pair( def multi_line_comment(li): return ("/// %s" % ("\n/// ".join(li))) if len(li) else "" + + diff --git a/src/ifcopenshell-python/ifcopenshell/file.py b/src/ifcopenshell-python/ifcopenshell/file.py index 0aadacfbfc..f922f318c0 100644 --- a/src/ifcopenshell-python/ifcopenshell/file.py +++ b/src/ifcopenshell-python/ifcopenshell/file.py @@ -31,9 +31,6 @@ from typing import Any, Optional, TYPE_CHECKING, Union, overload, Literal, Typed from collections.abc import Callable, Generator from typing_extensions import assert_never -from . import ifcopenshell_wrapper -from .entity_instance import entity_instance - from ifcopenshell.util.mvd_info import MvdInfo, LARK_AVAILABLE if TYPE_CHECKING: @@ -108,7 +105,7 @@ class Transaction: def serialise_value(self, element, value) -> Any: return element.walk( - lambda v: isinstance(v, entity_instance), + lambda v: isinstance(v, ifcopenshell.entity_instance), lambda v: {"id": v.id()} if v.id() else {"type": v.is_a(), "value": v.wrappedValue}, value, ) @@ -237,28 +234,8 @@ class Transaction: else: assert_never(operation["action"]) - -file_dict: dict[int, tuple[weakref.ReferenceType[file], int]] = {} -"""Mapping of internal IfcFile pointer address to existing ``ifcopenshell.file`` -and the timestamp when it was created. - -Needed only to quickly access related from ``entity_instance`` it's ``file``. -""" - -READ_ERROR = ifcopenshell_wrapper.file_open_status.READ_ERROR -NO_HEADER = ifcopenshell_wrapper.file_open_status.NO_HEADER -UNSUPPORTED_SCHEMA = ifcopenshell_wrapper.file_open_status.UNSUPPORTED_SCHEMA -INVALID_SYNTAX = ifcopenshell_wrapper.file_open_status.INVALID_SYNTAX - -# TODO: Workaround for old builds, remove after build stabilizes. -try: - UNKNOWN = ifcopenshell_wrapper.file_open_status.UNKNOWN -except: - UNKNOWN = 5 # Workaround - import struct - def consume_buffer(val, inner): while val: s = struct.unpack("@q", val[:8])[0] @@ -508,20 +485,21 @@ class file_header: self.file = file self.header_data = header_data + # @todo these are probably no longer necessary now as we no longer depend on decoration of file @property - def file_description(self) -> entity_instance: - return entity_instance.wrap_value(self.header_data.file_description_py(), file=self.file) + def file_description(self) -> ifcopenshell.entity_instance: + return self.header_data.file_description_py() @property - def file_name(self) -> entity_instance: - return entity_instance.wrap_value(self.header_data.file_name_py(), file=self.file) + def file_name(self) -> ifcopenshell.entity_instance: + return self.header_data.file_name_py() @property - def file_schema(self) -> entity_instance: - return entity_instance.wrap_value(self.header_data.file_schema_py(), file=self.file) + def file_schema(self) -> ifcopenshell.entity_instance: + return self.header_data.file_schema_py() -class file: +class file_mixin: """Base class for containing IFC files. Class has instance methods for filtering by element Id, Type, etc. @@ -537,8 +515,7 @@ class file: print(products[0] == model[122] == model["2XQ$n5SLP5MBLyL442paFx"]) # True """ - wrapped_data: ifcopenshell_wrapper.file - units: dict[str, entity_instance] = {} + units: dict[str, ifcopenshell.entity_instance] = {} history_size: int = 64 history: list[Transaction] """Chronological order - from oldest to newest.""" @@ -548,104 +525,13 @@ class file: to_delete: Union[set[ifcopenshell.entity_instance], None] = None """Entities for batch removal.""" - def __init__( - self, - f: Optional[ifcopenshell_wrapper.file] = None, - schema: Optional[ifcopenshell.util.schema.IFC_SCHEMA] = None, - schema_version: Optional[tuple[int, int, int, int]] = None, - ): - """Create a new blank IFC model + - This IFC model does not have any entities in it yet. See the - ``create_entity`` function for how to create new entities. All data is - stored in memory. If you wish to write the IFC model to disk, see the - ``write`` function. - - :param f: The underlying IfcOpenShell file object to be wrapped. This - is an internal implementation detail and should generally be left - as None by users. - :param schema: Which IFC schema to use, chosen from "IFC2X3", "IFC4", - or "IFC4X3". These refer to the ISO approved versions of IFC. - Defaults to "IFC4" if not specified, which is currently recommended - for all new projects. - :param schema_version: If you want to specify an exact version of IFC - that may not be an ISO approved version, use this argument instead - of ``schema``. IFC versions on technical.buildingsmart.org are - described using 4 integers representing the major, minor, addendum, - and corrigendum number. For example, (4, 0, 2, 1) refers to IFC4 - ADD2 TC1, which is the official version approved by ISO when people - refer to "IFC4". Generally you should not use this argument unless - you are testing non-ISO IFC releases. - - Example: - - .. code:: python - - # Create a new IFC4 model, create a wall, then save it to an IFC-SPF file. - model = ifcopenshell.file() - model.create_entity("IfcWall") - model.write("/path/to/model.ifc") - - # Create a new IFC4X3 model - model = ifcopenshell.file(schema="IFC4X3") - - # A poweruser testing out a particular version of IFC4X3 - model = ifcopenshell.file(schema_version=(4, 3, 0, 1)) - """ - if schema_version: - prefixes = ("IFC", "X", "_ADD", "_TC") - schema = "".join("".join(map(str, t)) if t[1] else "" for t in zip(prefixes, schema_version)) - else: - schema = {"IFC4X3": "IFC4X3_ADD2"}.get(schema, schema) - if f is not None: - self.wrapped_data = f - if not f.good(): - from . import Error, SchemaError - - exc, msg = { - READ_ERROR: lambda: (IOError, "Unable to open file for reading"), - NO_HEADER: lambda: (Error, "Unable to parse IFC SPF header"), - UNSUPPORTED_SCHEMA: lambda: ( - SchemaError, - "Unsupported schema: %s" % ",".join(self.header.file_schema.schema_identifiers), - ), - INVALID_SYNTAX: lambda: (Error, "Syntax error during parse, check logs"), - # This is the case when passing uninitialized_tag - UNKNOWN: lambda: (None, None), - }[f.good().value()]() - if exc is not None: - raise exc(msg) - else: - args = filter(None, [schema]) - args = map(ifcopenshell_wrapper.schema_by_name, args) - self.wrapped_data = ifcopenshell_wrapper.file(*args) + def post_init(self): self.history = [] self.future = [] self.transaction: Optional[Transaction] = None - # we store a tuple of C++ file pointer address and creation time stamp so that - # when memory addresses get recycled we do not run into collisions when the - # address is used as a cache key. - file_dict[self.wrapped_data.file_pointer()] = (weakref.ref(self), time.monotonic_ns()) - - @property - def identifier(self) -> tuple[int, int]: - """Pair of C++ file pointer address and creation time stamp to uniquely identify a file - over the life time of ifcopenshell module that should be mostly safe except in pathological - cases - - Returns: - tuple[int, int]: Pair of C++ file pointer address and creation time stamp - """ - return (self.wrapped_data.file_pointer(), file_dict[self.wrapped_data.file_pointer()][1]) - - def __del__(self) -> None: - # Avoid infinite recursion if file is failed to initialize - # and wrapped_data is unset. - if "wrapped_data" not in dir(self): - return - del file_dict[self.file_pointer()] - def set_history_size(self, size: int) -> None: self.history_size = size while len(self.history) > self.history_size: @@ -716,7 +602,7 @@ class file: """ eid = kwargs.pop("id", -1) - e = entity_instance((self.schema_identifier, type), self) + e = self.create(type) # Create pairs of {attribute index, attribute value}. # Keyword arguments are mapped to their corresponding @@ -758,15 +644,6 @@ class file: if attrs: self.transaction = transaction - # Once the values are populated add the instance - # to the file. - self.wrapped_data.add(e.wrapped_data, eid) - - # The file container now handles the lifetime of - # this instance. Tell SWIG that it is no longer - # the owner. - e.wrapped_data.this.disown() - if self.transaction: self.transaction.store_create(e) @@ -777,7 +654,7 @@ class file: """General IFC schema version: IFC2X3, IFC4, IFC4X3.""" prefixes = ("IFC", "X", "_ADD", "_TC") reg = "".join(f"(?P<{s}>{s}\\d+)?" for s in prefixes) - match = re.match(reg, self.wrapped_data.schema) + match = re.match(reg, self.schema) version_tuple = tuple( map( lambda pp: int(pp[1][len(pp[0]) :]) if pp[1] else None, @@ -789,7 +666,7 @@ class file: @property def schema_identifier(self) -> str: """Full IFC schema version: IFC2X3_TC1, IFC4_ADD2, IFC4X3_ADD2, etc.""" - return self.wrapped_data.schema + return self.schema @property def schema_version(self) -> tuple[int, int, int, int]: @@ -797,7 +674,7 @@ class file: E.g. IFC4X3_ADD2 is represented as (4, 3, 2, 0). """ - schema = self.wrapped_data.schema + schema = self.schema version = [] for prefix in ("IFC", "X", "_ADD", "_TC"): number = re.search(prefix + r"(\d)", schema) @@ -814,35 +691,16 @@ class file: if attr[0:6] == "create": return functools.partial(self.create_entity, attr[6:]) else: - return getattr(self.wrapped_data, attr) + return getattr(self, attr) def __getitem__(self, key: Union[numbers.Integral, str, bytes]) -> entity_instance: if isinstance(key, numbers.Integral): - return entity_instance(self.wrapped_data.by_id(key), self) + return self.by_id(key) elif isinstance(key, (str, bytes)): - return entity_instance(self.wrapped_data.by_guid(str(key)), self) + return self.by_guid(str(key)) + else: + raise TypeError("Indexing into file requires either an integral number or compressed guid string") - def by_id(self, id: int) -> ifcopenshell.entity_instance: - """Return an IFC entity instance filtered by IFC ID. - - :param id: STEP numerical identifier - - :raises RuntimeError: If `id` is not found. - - :returns: An ifcopenshell.entity_instance - """ - return self[id] - - def by_guid(self, guid: str) -> ifcopenshell.entity_instance: - """Return an IFC entity instance filtered by IFC GUID. - - :param guid: GlobalId value in 22-character encoded form - - :raises RuntimeError: If `guid` is not found. - - :returns: An ifcopenshell.entity_instance - """ - return self[guid] def add(self, inst: ifcopenshell.entity_instance, _id: int = None) -> ifcopenshell.entity_instance: """Adds an entity including any dependent entities to an IFC file. @@ -853,9 +711,10 @@ class file: """ if self.transaction: - max_id = self.wrapped_data.getMaxId() - inst.wrapped_data.this.disown() - result = entity_instance(self.wrapped_data.add(inst.wrapped_data, -1 if _id is None else _id), self) + max_id = self.getMaxId() + + result = self._add(inst, -1 if _id is None else _id) + if self.transaction: added_elements = [e for e in self.traverse(result) if e.id() > max_id] [self.transaction.store_create(e) for e in reversed(added_elements)] @@ -874,8 +733,8 @@ class file: :returns: A list of ifcopenshell.entity_instance objects """ if include_subtypes: - return [entity_instance(e, self) for e in self.wrapped_data.by_type(type)] - return [entity_instance(e, self) for e in self.wrapped_data.by_type_excl_subtypes(type)] + return self._by_type(type) + return self._by_type_excl_subtypes(type) def traverse( self, inst: ifcopenshell.entity_instance, max_levels: Optional[int] = None, breadth_first: bool = False @@ -891,11 +750,11 @@ class file: max_levels = -1 if breadth_first: - fn = self.wrapped_data.traverse_breadth_first + fn = self.traverse_breadth_first else: - fn = self.wrapped_data.traverse + fn = self.traverse - return [entity_instance(e, self) for e in fn(inst.wrapped_data, max_levels)] + return fn(inst, max_levels) @overload def get_inverse( @@ -940,11 +799,11 @@ class file: if with_attribute_indices and not allow_duplicate: raise ValueError("with_attribute_indices requires allow_duplicate to be True") - inverses = [entity_instance(e, self) for e in self.wrapped_data.get_inverse(inst.wrapped_data)] + inverses = [entity_instance(e, self) for e in self.get_inverse(inst.wrapped_data)] if allow_duplicate: if with_attribute_indices: - idxs = self.wrapped_data.get_inverse_indices(inst.wrapped_data) + idxs = self.get_inverse_indices(inst.wrapped_data) # TODO: include in typing. return list(zip(inverses, idxs)) else: @@ -961,7 +820,7 @@ class file: :param inst: The entity instance to get inverse relationships :returns: The total number of references """ - return self.wrapped_data.get_total_inverses(inst.wrapped_data) + return self.get_total_inverses(inst.wrapped_data) def remove(self, inst: ifcopenshell.entity_instance) -> None: """Deletes an IFC object in the file. @@ -974,22 +833,22 @@ class file: """ if self.transaction: self.transaction.store_delete(inst) - return self.wrapped_data.remove(inst.wrapped_data) + return self.remove(inst.wrapped_data) def batch(self): """Low-level mechanism to speed up deletion of large subgraphs""" if self.transaction: self.transaction.batch() - return self.wrapped_data.batch() + return self.batch() def unbatch(self): """Low-level mechanism to speed up deletion of large subgraphs""" if self.transaction: self.transaction.unbatch() - return self.wrapped_data.unbatch() + return self.unbatch() def __iter__(self) -> Generator[ifcopenshell.entity_instance, None, None]: - return iter(self[id] for id in self.wrapped_data.entity_names()) + return iter(self[id] for id in self.entity_names()) def assign_header_from(self, other: ifcopenshell.file) -> None: for k, vs in HEADER_FIELDS.items(): @@ -1024,7 +883,7 @@ class file: raise NotImplementedError("Writing .ifcXML files is not supported") if format == ".ifcZIP": return self.write(path, ".ifc", zipped=True) - self.wrapped_data.write(str(path)) + self.write(str(path)) if zipped: unzipped_path = path.with_suffix(format) @@ -1042,23 +901,18 @@ class file: def from_string(s: str) -> file: return file(ifcopenshell_wrapper.read(s)) - @staticmethod - def from_pointer(address: int) -> file: - assert (f := file_dict[address][0]()) is not None - return f - def to_string(self) -> str: - return self.wrapped_data.to_string() + return self.to_string() @property def header(self) -> file_header: # TODO: Workaround for old builds, remove after build stabilizes. # TODO: No need for `wrapped_data.header` to be a method - should use `@property`? - header = self.wrapped_data.header + header = self.header if isinstance(header, types.MethodType): - return file_header(self, self.wrapped_data.header()) + return file_header(self, self.header()) else: - return self.wrapped_data.header + return self.header @property def storage(self) -> Optional[rocksdb_file_storage]: @@ -1066,5 +920,5 @@ class file: Returns: Optional[rocksdb_file_storage]: underlying key-value store interface when opened as a RocksDB-backed file """ - if self.wrapped_data.storage_mode() == 1: + if self.storage_mode() == 1: return rocksdb_file_storage(self) diff --git a/src/ifcopenshell-python/ifcopenshell/sql.py b/src/ifcopenshell-python/ifcopenshell/sql.py index e0701cf8ed..18665f0d72 100644 --- a/src/ifcopenshell-python/ifcopenshell/sql.py +++ b/src/ifcopenshell-python/ifcopenshell/sql.py @@ -27,8 +27,8 @@ import ifcopenshell.util.schema from pathlib import Path from typing import Any, NoReturn, Union, Optional, TYPE_CHECKING, TypedDict from . import ifcopenshell_wrapper -from .file import file -from .entity_instance import entity_instance +from . import file +from . import entity_instance if TYPE_CHECKING: import sqlite3 diff --git a/src/ifcopenshell-python/ifcopenshell/stream.py b/src/ifcopenshell-python/ifcopenshell/stream.py index 655dc2d9cd..f5fc60d04b 100644 --- a/src/ifcopenshell-python/ifcopenshell/stream.py +++ b/src/ifcopenshell-python/ifcopenshell/stream.py @@ -24,9 +24,9 @@ try: import ifcopenshell.util.attribute import ifcopenshell.util.schema - from .file import file + from . import file from . import ifcopenshell_wrapper - from .entity_instance import entity_instance + from . import entity_instance from lark import Lark, Transformer from typing import Any, NoReturn, Union, Optional diff --git a/src/ifcparse/Header_section_schema-schema.cpp b/src/ifcparse/Header_section_schema-schema.cpp index 426f4f551c..4300f0f3d8 100644 --- a/src/ifcparse/Header_section_schema-schema.cpp +++ b/src/ifcparse/Header_section_schema-schema.cpp @@ -7,21 +7,6 @@ using namespace std::string_literals; using namespace IfcParse; declaration* HEADER_SECTION_SCHEMA_types[5] = {nullptr}; - -class HEADER_SECTION_SCHEMA_instance_factory : public IfcParse::instance_factory { - virtual IfcUtil::IfcBaseClass* operator()(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) const { - switch(decl->index_in_schema()) { - case 0: return new ::Header_section_schema::file_description(std::move(data)); - case 1: return new ::Header_section_schema::file_name(std::move(data)); - case 2: return new ::Header_section_schema::file_schema(std::move(data)); - case 3: return new ::Header_section_schema::schema_name(std::move(data)); - case 4: return new ::Header_section_schema::time_stamp_text(std::move(data)); - default: throw IfcParse::IfcException(decl->name() + " cannot be instantiated"); - } - - } -}; - IfcParse::schema_definition* HEADER_SECTION_SCHEMA_populate_schema() { const std::string strings[] = {"schema_name"s,"time_stamp_text"s,"file_description"s,"file_name"s,"file_schema"s,"description"s,"implementation_level"s,"name"s,"time_stamp"s,"author"s,"organization"s,"preprocessor_version"s,"originating_system"s,"authorization"s,"schema_identifiers"s,"HEADER_SECTION_SCHEMA"s}; @@ -34,7 +19,7 @@ const std::string strings[] = {"schema_name"s,"time_stamp_text"s,"file_descripti ((entity*)HEADER_SECTION_SCHEMA_types[0])->set_attributes({new attribute(strings[5], new aggregation_type(aggregation_type::list_type, 1, -1, new simple_type(simple_type::string_type)), false),new attribute(strings[6], new simple_type(simple_type::string_type), false)}, {false,false}); ((entity*)HEADER_SECTION_SCHEMA_types[1])->set_attributes({new attribute(strings[7], new simple_type(simple_type::string_type), false),new attribute(strings[8], new named_type(HEADER_SECTION_SCHEMA_types[4]), false),new attribute(strings[9], new aggregation_type(aggregation_type::list_type, 1, -1, new simple_type(simple_type::string_type)), false),new attribute(strings[10], new aggregation_type(aggregation_type::list_type, 1, -1, new simple_type(simple_type::string_type)), false),new attribute(strings[11], new simple_type(simple_type::string_type), false),new attribute(strings[12], new simple_type(simple_type::string_type), false),new attribute(strings[13], new simple_type(simple_type::string_type), false)}, {false,false,false,false,false,false,false}); ((entity*)HEADER_SECTION_SCHEMA_types[2])->set_attributes({new attribute(strings[14], new aggregation_type(aggregation_type::list_type, 1, -1, new named_type(HEADER_SECTION_SCHEMA_types[3])), false)}, {false}); - return new schema_definition(strings[15], {HEADER_SECTION_SCHEMA_types[0],HEADER_SECTION_SCHEMA_types[1],HEADER_SECTION_SCHEMA_types[2],HEADER_SECTION_SCHEMA_types[3],HEADER_SECTION_SCHEMA_types[4]}, new HEADER_SECTION_SCHEMA_instance_factory()); + return new schema_definition(strings[15], {HEADER_SECTION_SCHEMA_types[0],HEADER_SECTION_SCHEMA_types[1],HEADER_SECTION_SCHEMA_types[2],HEADER_SECTION_SCHEMA_types[3],HEADER_SECTION_SCHEMA_types[4]}); } static std::unique_ptr schema; diff --git a/src/ifcparse/Header_section_schema.cpp b/src/ifcparse/Header_section_schema.cpp index 411aaf0ba6..e38349da4e 100644 --- a/src/ifcparse/Header_section_schema.cpp +++ b/src/ifcparse/Header_section_schema.cpp @@ -10,6 +10,36 @@ const char* const Header_section_schema::Identifier = "HEADER_SECTION_SCHEMA"; using namespace IfcParse; +namespace { + template + std::vector cast_vector(const std::vector& vs) { + std::vector result; + for (const auto& v : vs) { + if constexpr (std::is_base_of_v || std::is_same_v) { + // For a base or identity transform we can just rely on static cast + result.push_back(v); + } else if constexpr (std::is_base_of_v && std::is_same_v) { + // From a select to concrete we simply call the appropriate method + result.push_back(v.concrete()); + } else { + if (auto u = v.as()) { + result.push_back(u); + } + } + } + return result; + } + + template + std::vector> cast_vector_vector(const std::vector>& vs) { + std::vector> result; + for (const auto& v : vs) { + result.push_back(cast_vector(v)); + } + return result; + } +} + // External definitions extern declaration* HEADER_SECTION_SCHEMA_types[5]; @@ -17,60 +47,54 @@ extern declaration* HEADER_SECTION_SCHEMA_types[5]; // Function implementations for schema_name const IfcParse::type_declaration& Header_section_schema::schema_name::Class() { return *((IfcParse::type_declaration*)HEADER_SECTION_SCHEMA_types[3]); } -const IfcParse::type_declaration& Header_section_schema::schema_name::declaration() const { return *((IfcParse::type_declaration*)HEADER_SECTION_SCHEMA_types[3]); } -Header_section_schema::schema_name::schema_name(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Header_section_schema::schema_name::schema_name(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Header_section_schema::schema_name::operator std::string() const { return get_attribute_value(0); } // Function implementations for time_stamp_text const IfcParse::type_declaration& Header_section_schema::time_stamp_text::Class() { return *((IfcParse::type_declaration*)HEADER_SECTION_SCHEMA_types[4]); } -const IfcParse::type_declaration& Header_section_schema::time_stamp_text::declaration() const { return *((IfcParse::type_declaration*)HEADER_SECTION_SCHEMA_types[4]); } -Header_section_schema::time_stamp_text::time_stamp_text(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Header_section_schema::time_stamp_text::time_stamp_text(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Header_section_schema::time_stamp_text::operator std::string() const { return get_attribute_value(0); } // Function implementations for file_description std::vector< std::string > /*[1:?]*/ Header_section_schema::file_description::description() const { std::vector< std::string > /*[1:?]*/ v = get_attribute_value(0); return v; } -void Header_section_schema::file_description::setdescription(std::vector< std::string > /*[1:?]*/ v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Header_section_schema::file_description::setdescription(const std::vector< std::string > /*[1:?]*/& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } std::string Header_section_schema::file_description::implementation_level() const { std::string v = get_attribute_value(1); return v; } -void Header_section_schema::file_description::setimplementation_level(std::string v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Header_section_schema::file_description::setimplementation_level(const std::string& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Header_section_schema::file_description::declaration() const { return *((IfcParse::entity*)HEADER_SECTION_SCHEMA_types[0]); } +// const IfcParse::entity& Header_section_schema::file_description::declaration() const { return *((IfcParse::entity*)HEADER_SECTION_SCHEMA_types[0]); } const IfcParse::entity& Header_section_schema::file_description::Class() { return *((IfcParse::entity*)HEADER_SECTION_SCHEMA_types[0]); } -Header_section_schema::file_description::file_description(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Header_section_schema::file_description::file_description(std::vector< std::string > /*[1:?]*/ v1_description, std::string v2_implementation_level) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_description));set_attribute_value(1, (v2_implementation_level));; populate_derived(); } +// Header_section_schema::file_description::file_description(const std::weak_ptr& e) : express::Entity(e) { } +// Header_section_schema::file_description::file_description(std::vector< std::string > /*[1:?]*/ v1_description, std::string v2_implementation_level) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_description));set_attribute_value(1, (v2_implementation_level));; populate_derived(); } // Function implementations for file_name std::string Header_section_schema::file_name::name() const { std::string v = get_attribute_value(0); return v; } -void Header_section_schema::file_name::setname(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Header_section_schema::file_name::setname(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } std::string Header_section_schema::file_name::time_stamp() const { std::string v = get_attribute_value(1); return v; } -void Header_section_schema::file_name::settime_stamp(std::string v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Header_section_schema::file_name::settime_stamp(const std::string& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } std::vector< std::string > /*[1:?]*/ Header_section_schema::file_name::author() const { std::vector< std::string > /*[1:?]*/ v = get_attribute_value(2); return v; } -void Header_section_schema::file_name::setauthor(std::vector< std::string > /*[1:?]*/ v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Header_section_schema::file_name::setauthor(const std::vector< std::string > /*[1:?]*/& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } std::vector< std::string > /*[1:?]*/ Header_section_schema::file_name::organization() const { std::vector< std::string > /*[1:?]*/ v = get_attribute_value(3); return v; } -void Header_section_schema::file_name::setorganization(std::vector< std::string > /*[1:?]*/ v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Header_section_schema::file_name::setorganization(const std::vector< std::string > /*[1:?]*/& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } std::string Header_section_schema::file_name::preprocessor_version() const { std::string v = get_attribute_value(4); return v; } -void Header_section_schema::file_name::setpreprocessor_version(std::string v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Header_section_schema::file_name::setpreprocessor_version(const std::string& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } std::string Header_section_schema::file_name::originating_system() const { std::string v = get_attribute_value(5); return v; } -void Header_section_schema::file_name::setoriginating_system(std::string v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Header_section_schema::file_name::setoriginating_system(const std::string& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } std::string Header_section_schema::file_name::authorization() const { std::string v = get_attribute_value(6); return v; } -void Header_section_schema::file_name::setauthorization(std::string v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +void Header_section_schema::file_name::setauthorization(const std::string& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Header_section_schema::file_name::declaration() const { return *((IfcParse::entity*)HEADER_SECTION_SCHEMA_types[1]); } +// const IfcParse::entity& Header_section_schema::file_name::declaration() const { return *((IfcParse::entity*)HEADER_SECTION_SCHEMA_types[1]); } const IfcParse::entity& Header_section_schema::file_name::Class() { return *((IfcParse::entity*)HEADER_SECTION_SCHEMA_types[1]); } -Header_section_schema::file_name::file_name(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Header_section_schema::file_name::file_name(std::string v1_name, std::string v2_time_stamp, std::vector< std::string > /*[1:?]*/ v3_author, std::vector< std::string > /*[1:?]*/ v4_organization, std::string v5_preprocessor_version, std::string v6_originating_system, std::string v7_authorization) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_name));set_attribute_value(1, (v2_time_stamp));set_attribute_value(2, (v3_author));set_attribute_value(3, (v4_organization));set_attribute_value(4, (v5_preprocessor_version));set_attribute_value(5, (v6_originating_system));set_attribute_value(6, (v7_authorization));; populate_derived(); } +// Header_section_schema::file_name::file_name(const std::weak_ptr& e) : express::Entity(e) { } +// Header_section_schema::file_name::file_name(std::string v1_name, std::string v2_time_stamp, std::vector< std::string > /*[1:?]*/ v3_author, std::vector< std::string > /*[1:?]*/ v4_organization, std::string v5_preprocessor_version, std::string v6_originating_system, std::string v7_authorization) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_name));set_attribute_value(1, (v2_time_stamp));set_attribute_value(2, (v3_author));set_attribute_value(3, (v4_organization));set_attribute_value(4, (v5_preprocessor_version));set_attribute_value(5, (v6_originating_system));set_attribute_value(6, (v7_authorization));; populate_derived(); } // Function implementations for file_schema std::vector< std::string > /*[1:?]*/ Header_section_schema::file_schema::schema_identifiers() const { std::vector< std::string > /*[1:?]*/ v = get_attribute_value(0); return v; } -void Header_section_schema::file_schema::setschema_identifiers(std::vector< std::string > /*[1:?]*/ v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Header_section_schema::file_schema::setschema_identifiers(const std::vector< std::string > /*[1:?]*/& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Header_section_schema::file_schema::declaration() const { return *((IfcParse::entity*)HEADER_SECTION_SCHEMA_types[2]); } +// const IfcParse::entity& Header_section_schema::file_schema::declaration() const { return *((IfcParse::entity*)HEADER_SECTION_SCHEMA_types[2]); } const IfcParse::entity& Header_section_schema::file_schema::Class() { return *((IfcParse::entity*)HEADER_SECTION_SCHEMA_types[2]); } -Header_section_schema::file_schema::file_schema(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Header_section_schema::file_schema::file_schema(std::vector< std::string > /*[1:?]*/ v1_schema_identifiers) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_schema_identifiers));; populate_derived(); } +// Header_section_schema::file_schema::file_schema(const std::weak_ptr& e) : express::Entity(e) { } +// Header_section_schema::file_schema::file_schema(std::vector< std::string > /*[1:?]*/ v1_schema_identifiers) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_schema_identifiers));; populate_derived(); } diff --git a/src/ifcparse/Header_section_schema.h b/src/ifcparse/Header_section_schema.h index efce31a5f2..e0f8668cc9 100644 --- a/src/ifcparse/Header_section_schema.h +++ b/src/ifcparse/Header_section_schema.h @@ -4,17 +4,20 @@ #include #include - -#include +#include #include "../ifcparse/ifc_parse_api.h" -#include "../ifcparse/aggregate_of_instance.h" -#include "../ifcparse/IfcBaseClass.h" +#include "../ifcparse/express.h" #include "../ifcparse/IfcSchema.h" #include "../ifcparse/IfcException.h" #include "../ifcparse/Argument.h" +namespace IfcParse { +class IfcFile; +class IfcSpfHeader; +} // namespace IfcParse + struct Header_section_schema { IFC_PARSE_API static const IfcParse::schema_definition& get_schema(); @@ -27,71 +30,78 @@ static const char* const Identifier; class file_description; class file_name; class file_schema; class schema_name; class time_stamp_text; -class IFC_PARSE_API schema_name : public IfcUtil::IfcBaseType { +class IFC_PARSE_API schema_name : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + schema_name() {} + explicit schema_name (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit schema_name (IfcEntityInstanceData&& e); - schema_name (std::string v); + // schema_name (std::string v); operator std::string() const; }; -class IFC_PARSE_API time_stamp_text : public IfcUtil::IfcBaseType { +class IFC_PARSE_API time_stamp_text : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + time_stamp_text() {} + explicit time_stamp_text (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit time_stamp_text (IfcEntityInstanceData&& e); - time_stamp_text (std::string v); + // time_stamp_text (std::string v); operator std::string() const; }; -class IFC_PARSE_API file_description : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API file_description : public express::Entity { public: + file_description() {} + explicit file_description (const std::weak_ptr& data) : express::Entity(data) {} + std::vector< std::string > /*[1:?]*/ description() const; - void setdescription(std::vector< std::string > /*[1:?]*/ v); + void setdescription(const std::vector< std::string > /*[1:?]*/& v); std::string implementation_level() const; - void setimplementation_level(std::string v); - virtual const IfcParse::entity& declaration() const; + void setimplementation_level(const std::string& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - file_description (IfcEntityInstanceData&& e); - file_description (std::vector< std::string > /*[1:?]*/ v1_description, std::string v2_implementation_level); - typedef aggregate_of< file_description > list; + // file_description (std::vector< std::string > /*[1:?]*/ v1_description, std::string v2_implementation_level); }; -class IFC_PARSE_API file_name : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API file_name : public express::Entity { public: + file_name() {} + explicit file_name (const std::weak_ptr& data) : express::Entity(data) {} + std::string name() const; - void setname(std::string v); + void setname(const std::string& v); std::string time_stamp() const; - void settime_stamp(std::string v); + void settime_stamp(const std::string& v); std::vector< std::string > /*[1:?]*/ author() const; - void setauthor(std::vector< std::string > /*[1:?]*/ v); + void setauthor(const std::vector< std::string > /*[1:?]*/& v); std::vector< std::string > /*[1:?]*/ organization() const; - void setorganization(std::vector< std::string > /*[1:?]*/ v); + void setorganization(const std::vector< std::string > /*[1:?]*/& v); std::string preprocessor_version() const; - void setpreprocessor_version(std::string v); + void setpreprocessor_version(const std::string& v); std::string originating_system() const; - void setoriginating_system(std::string v); + void setoriginating_system(const std::string& v); std::string authorization() const; - void setauthorization(std::string v); - virtual const IfcParse::entity& declaration() const; + void setauthorization(const std::string& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - file_name (IfcEntityInstanceData&& e); - file_name (std::string v1_name, std::string v2_time_stamp, std::vector< std::string > /*[1:?]*/ v3_author, std::vector< std::string > /*[1:?]*/ v4_organization, std::string v5_preprocessor_version, std::string v6_originating_system, std::string v7_authorization); - typedef aggregate_of< file_name > list; + // file_name (std::string v1_name, std::string v2_time_stamp, std::vector< std::string > /*[1:?]*/ v3_author, std::vector< std::string > /*[1:?]*/ v4_organization, std::string v5_preprocessor_version, std::string v6_originating_system, std::string v7_authorization); }; -class IFC_PARSE_API file_schema : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API file_schema : public express::Entity { public: + file_schema() {} + explicit file_schema (const std::weak_ptr& data) : express::Entity(data) {} + std::vector< std::string > /*[1:?]*/ schema_identifiers() const; - void setschema_identifiers(std::vector< std::string > /*[1:?]*/ v); - virtual const IfcParse::entity& declaration() const; + void setschema_identifiers(const std::vector< std::string > /*[1:?]*/& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - file_schema (IfcEntityInstanceData&& e); - file_schema (std::vector< std::string > /*[1:?]*/ v1_schema_identifiers); - typedef aggregate_of< file_schema > list; + // file_schema (std::vector< std::string > /*[1:?]*/ v1_schema_identifiers); }; }; diff --git a/src/ifcparse/Ifc2x3-schema.cpp b/src/ifcparse/Ifc2x3-schema.cpp index 1beafaae35..29fcf99588 100644 --- a/src/ifcparse/Ifc2x3-schema.cpp +++ b/src/ifcparse/Ifc2x3-schema.cpp @@ -33,9 +33,6 @@ using namespace IfcParse; declaration* IFC2X3_types[980] = {nullptr}; -const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAheadOrBehind"s,"AHEAD"s,"BEHIND"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"GRILLE"s,"REGISTER"s,"DIFFUSER"s,"EYEBALL"s,"IRIS"s,"LINEARGRILLE"s,"LINEARDIFFUSER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"LINTEL"s,"T_BEAM"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBuildingElementProxyTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"IfcCableSegmentTypeEnum"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"MODIFIEDADDED"s,"MODIFIEDDELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"WATERCOOLINGCOIL"s,"STEAMHEATINGCOIL"s,"WATERHEATINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"IfcComplexNumber"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDTUBEINTUBE"s,"WATERCOOLEDBRAZEDPLATE"s,"EVAPORATIVECOOLED"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROPORTIONAL"s,"PROPORTIONALINTEGRAL"s,"PROPORTIONALINTEGRALDERIVATIVE"s,"TIMEDTWOPOSITION"s,"TWOPOSITION"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"INSULATION"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"IfcCurrencyEnum"s,"AED"s,"AES"s,"ATS"s,"AUD"s,"BBD"s,"BEG"s,"BGL"s,"BHD"s,"BMD"s,"BND"s,"BRL"s,"BSD"s,"BWP"s,"BZD"s,"CAD"s,"CBD"s,"CHF"s,"CLP"s,"CNY"s,"CYS"s,"CZK"s,"DDP"s,"DEM"s,"DKK"s,"EGL"s,"EST"s,"EUR"s,"FAK"s,"FIM"s,"FJD"s,"FKP"s,"FRF"s,"GBP"s,"GIP"s,"GMD"s,"GRX"s,"HKD"s,"HUF"s,"ICK"s,"IDR"s,"ILS"s,"INR"s,"IRP"s,"ITL"s,"JMD"s,"JOD"s,"JPY"s,"KES"s,"KRW"s,"KWD"s,"KYD"s,"LKR"s,"LUF"s,"MTL"s,"MUR"s,"MXN"s,"MYR"s,"NLG"s,"NZD"s,"OMR"s,"PGK"s,"PHP"s,"PKR"s,"PLN"s,"PTN"s,"QAR"s,"RUR"s,"SAR"s,"SCR"s,"SEK"s,"SGD"s,"SKP"s,"THB"s,"TRL"s,"TTD"s,"TWD"s,"USD"s,"VEB"s,"VND"s,"XEU"s,"ZAR"s,"ZWD"s,"NOK"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcDamperTypeEnum"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"SMOKEDAMPER"s,"FIRESMOKEDAMPER"s,"BACKDRAFTDAMPER"s,"RELIEFDAMPER"s,"BLASTDAMPER"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"BALANCINGDAMPER"s,"FUMEHOODEXHAUST"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDayInMonthNumber"s,"IfcDaylightSavingHour"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDimensionExtentUsage"s,"ORIGIN"s,"TARGET"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"WOOD"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"OBSTRUCTION"s,"TRANSITION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDynamicViscosityMeasure"s,"IfcElectricApplianceTypeEnum"s,"COMPUTER"s,"DIRECTWATERHEATER"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"ELECTRICHEATER"s,"FACSIMILE"s,"FREESTANDINGFAN"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"INDIRECTWATERHEATER"s,"MICROWAVE"s,"PHOTOCOPIER"s,"PRINTER"s,"REFRIGERATOR"s,"RADIANTHEATER"s,"SCANNER"s,"TELEPHONE"s,"TUMBLEDRYER"s,"TV"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"WATERHEATER"s,"WATERCOOLER"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentEnum"s,"ALTERNATING"s,"DIRECT"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionPointFunctionEnum"s,"ALARMPANEL"s,"CONSUMERUNIT"s,"CONTROLPANEL"s,"DISTRIBUTIONBOARD"s,"GASDETECTORPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"MOTORCONTROLCENTRE"s,"SWITCHBOARD"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"IfcElectricGeneratorTypeEnum"s,"IfcElectricHeaterTypeEnum"s,"ELECTRICPOINTHEATER"s,"ELECTRICCABLEHEATER"s,"ELECTRICMATHEATER"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"GIRDER"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"TRUSS"s,"IfcElementCompositionEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"IfcEnergyMeasure"s,"IfcEnergySequenceEnum"s,"PRIMARY"s,"SECONDARY"s,"TERTIARY"s,"AUXILIARY"s,"IfcEnvironmentalImpactCategoryEnum"s,"COMBINEDVALUE"s,"DISPOSAL"s,"EXTRACTION"s,"INSTALLATION"s,"MANUFACTURE"s,"TRANSPORTATION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"IfcFlowMeterTypeEnum"s,"ELECTRICMETER"s,"ENERGYMETER"s,"FLOWMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcGasTerminalTypeEnum"s,"GASAPPLIANCE"s,"GASBOOSTER"s,"GASBURNER"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHourInDay"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"EXTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"IfcKinematicViscosityMeasure"s,"IfcLabel"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"METALHALIDE"s,"TUNGSTENFILAMENT"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION_GROUP"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"POST"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"IfcMinuteInHour"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNullStyle"s,"NULL"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"CONTROL"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderRecordTypeEnum"s,"CHANGE"s,"MAINTENANCE"s,"MOVE"s,"PURCHASE"s,"WORK"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcPropertySourceEnum"s,"DESIGN"s,"DESIGNMAXIMUM"s,"DESIGNMINIMUM"s,"ASBUILT"s,"COMMISSIONING"s,"NOTKNOWN"s,"IfcProtectiveDeviceTypeEnum"s,"FUSEDISCONNECTOR"s,"CIRCUITBREAKER"s,"EARTHFAILUREDEVICE"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"GUARDRAIL"s,"BALUSTRADE"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"METAL"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcResourceConsumptionEnum"s,"CONSUMED"s,"PARTIALLYCONSUMED"s,"NOTCONSUMED"s,"OCCUPIED"s,"PARTIALLYOCCUPIED"s,"NOTOCCUPIED"s,"IfcRibPlateDirectionEnum"s,"DIRECTION_X"s,"DIRECTION_Y"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSecondInMinute"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"CO2SENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PRESSURESENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcServiceLifeFactorTypeEnum"s,"A_QUALITYOFCOMPONENTS"s,"B_DESIGNLEVEL"s,"C_WORKEXECUTIONLEVEL"s,"D_INDOORENVIRONMENT"s,"E_OUTDOORENVIRONMENT"s,"F_INUSECONDITIONS"s,"G_MAINTENANCELEVEL"s,"IfcServiceLifeTypeEnum"s,"ACTUALSERVICELIFE"s,"EXPECTEDSERVICELIFE"s,"OPTIMISTICREFERENCESERVICELIFE"s,"PESSIMISTICREFERENCESERVICELIFE"s,"REFERENCESERVICELIFE"s,"IfcShearModulusMeasure"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureMeasure"s,"IfcSoundScaleEnum"s,"DBA"s,"DBB"s,"DBC"s,"NC"s,"NR"s,"IfcSpaceHeaterTypeEnum"s,"SECTIONALRADIATOR"s,"PANELRADIATOR"s,"TUBULARRADIATOR"s,"CONVECTOR"s,"BASEBOARDHEATER"s,"FINNEDTUBEUNIT"s,"UNITHEATER"s,"IfcSpaceTypeEnum"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"CABLE"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSurfaceTextureEnum"s,"BUMP"s,"OPACITY"s,"REFLECTION"s,"SELFILLUMINATION"s,"SHININESS"s,"SPECULAR"s,"TEXTURE"s,"TRANSPARENCYMAP"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"EMERGENCYSTOP"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"IfcTankTypeEnum"s,"PREFORMED"s,"SECTIONAL"s,"EXPANSION"s,"PRESSUREVESSEL"s,"IfcTemperatureGradientMeasure"s,"IfcTendonTypeEnum"s,"STRAND"s,"WIRE"s,"BAR"s,"COATED"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalLoadSourceEnum"s,"PEOPLE"s,"LIGHTING"s,"EQUIPMENT"s,"VENTILATIONINDOORAIR"s,"VENTILATIONOUTSIDEAIR"s,"RECIRCULATEDAIR"s,"EXHAUSTAIR"s,"AIREXCHANGERATE"s,"DRYBULBTEMPERATURE"s,"RELATIVEHUMIDITY"s,"INFILTRATION"s,"IfcThermalLoadTypeEnum"s,"SENSIBLE"s,"LATENT"s,"RADIANT"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTimeMeasure"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETE"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeSeriesScheduleTypeEnum"s,"ANNUAL"s,"MONTHLY"s,"WEEKLY"s,"DAILY"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"VOLTAGE"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTransportElementTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"PARAMETER"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"STANDARD"s,"POLYGONAL"s,"ELEMENTEDWALL"s,"PLUMBINGWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"GREASEINTERCEPTOR"s,"OILINTERCEPTOR"s,"PETROLINTERCEPTOR"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWorkControlTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcYearNumber"s,"IfcActorRole"s,"IfcAddress"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcAppliedValueRelationship"s,"IfcApproval"s,"IfcApprovalActorRelationship"s,"IfcApprovalPropertyRelationship"s,"IfcApprovalRelationship"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcCalendarDate"s,"IfcClassification"s,"IfcClassificationItem"s,"IfcClassificationItemRelationship"s,"IfcClassificationNotation"s,"IfcClassificationNotationFacet"s,"IfcColourSpecification"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionPortGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConstraint"s,"IfcConstraintAggregationRelationship"s,"IfcConstraintClassificationRelationship"s,"IfcConstraintRelationship"s,"IfcCoordinatedUniversalTimeOffset"s,"IfcCostValue"s,"IfcCurrencyRelationship"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDateAndTime"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcDocumentElectronicFormat"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDraughtingCalloutRelationship"s,"IfcEnvironmentalImpactValue"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedSymbol"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcLocalTime"s,"IfcMaterial"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialList"s,"IfcMaterialProperties"s,"IfcMeasureWithUnit"s,"IfcMechanicalMaterialProperties"s,"IfcMechanicalSteelMaterialProperties"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOpticalMaterialProperties"s,"IfcOrganization"s,"IfcOrganizationRelationship"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPreDefinedItem"s,"IfcPreDefinedSymbol"s,"IfcPreDefinedTerminatorSymbol"s,"IfcPreDefinedTextFont"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcPresentationStyleAssignment"s,"IfcProductRepresentation"s,"IfcProductsOfCombustionProperties"s,"IfcProfileDef"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyConstraintRelationship"s,"IfcPropertyDependencyRelationship"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcReferencesValueDocument"s,"IfcReinforcementBarProperties"s,"IfcRelaxation"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcRibPlateProfileProperties"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcSimpleProperty"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcSymbolStyle"s,"IfcTable"s,"IfcTableRow"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleFontModel"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextStyleWithBoxCharacteristics"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcThermalMaterialProperties"s,"IfcTimeSeries"s,"IfcTimeSeriesReferenceRelationship"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexBasedTextureMap"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWaterProperties"s,"IfcActorSelect"s,"IfcAppliedValueSelect"s,"IfcBoxAlignment"s,"IfcCharacterStyleSelect"s,"IfcConditionCriterionSelect"s,"IfcDateTimeSelect"s,"IfcDefinedSymbolSelect"s,"IfcDerivedMeasureValue"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcMaterialSelect"s,"IfcMetricValueSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcTextFontSelect"s,"IfcTextStyleSelect"s,"IfcUnit"s,"IfcAnnotationOccurrence"s,"IfcAnnotationSurfaceOccurrence"s,"IfcAnnotationSymbolOccurrence"s,"IfcAnnotationTextOccurrence"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassificationReference"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcCurveStyle"s,"IfcDerivedProfileDef"s,"IfcDimensionCalloutRelationship"s,"IfcDimensionPair"s,"IfcDocumentReference"s,"IfcDraughtingPreDefinedTextFont"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcExtendedMaterialProperties"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcFuelProperties"s,"IfcGeneralMaterialProperties"s,"IfcGeneralProfileProperties"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcHygroscopicMaterialProperties"s,"IfcImageTexture"s,"IfcIrregularTimeSeries"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterialDefinitionRepresentation"s,"IfcMechanicalConcreteMaterialProperties"s,"IfcObjectDefinition"s,"IfcOneDirectionRepeatFactor"s,"IfcOpenShell"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedDimensionSymbol"s,"IfcPreDefinedPointMarkerSymbol"s,"IfcProductDefinitionShape"s,"IfcPropertyBoundedValue"s,"IfcPropertyDefinition"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySetDefinition"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementDefinitionProperties"s,"IfcRelationship"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionedSpine"s,"IfcServiceLifeFactor"s,"IfcShellBasedSurfaceModel"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcSoundProperties"s,"IfcSoundValue"s,"IfcSpaceThermalLoadProperties"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcStructuralProfileProperties"s,"IfcStructuralSteelProfileProperties"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTerminatorSymbol"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTrapeziumProfileDef"s,"IfcTwoDirectionRepeatFactor"s,"IfcTypeObject"s,"IfcTypeProduct"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationNotationSelect"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCurveStyleFontSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcPresentationStyleSelect"s,"IfcSymbolStyleSelect"s,"IfcValue"s,"IfcAnnotationCurveOccurrence"s,"IfcAnnotationFillArea"s,"IfcAnnotationFillAreaOccurrence"s,"IfcAnnotationSurface"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcCompositeCurveSegment"s,"IfcCraneRailAShapeProfileDef"s,"IfcCraneRailFShapeProfileDef"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcDefinedSymbol"s,"IfcDimensionCurve"s,"IfcDimensionCurveTerminator"s,"IfcDirection"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorStyle"s,"IfcDraughtingCallout"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEnergyProperties"s,"IfcExtrudedAreaSolid"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTileSymbolWithStyle"s,"IfcFillAreaStyleTiles"s,"IfcFluidFlowProperties"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcLShapeProfileDef"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcPermeableCoveringProperties"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectionCurve"s,"IfcPropertySet"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToProjectOrder"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesAppliedValue"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelAssociatesProfileProperties"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralElement"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInteractionRequirements"s,"IfcRelNests"s,"IfcRelOccupiesSpaces"s,"IfcRelOverridesProperties"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSchedulesCostItems"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelVoidsElement"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSphere"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuredDimensionCallout"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTransportElementType"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcCsgSelect"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcDraughtingCalloutElement"s,"IfcFillAreaStyleTileShapeSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcOrientationSelect"s,"IfcShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAnnotation"s,"IfcAsymmetricIShapeProfileDef"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuilding"s,"IfcBuildingElementType"s,"IfcBuildingStorey"s,"IfcCircleHollowProfileDef"s,"IfcColumnType"s,"IfcCompositeCurve"s,"IfcConic"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcDimensionCurveDirectedCallout"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcElectricalBaseProperties"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEquipmentElement"s,"IfcEquipmentStandard"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFurnishingElement"s,"IfcFurnitureStandard"s,"IfcGasTerminalType"s,"IfcGrid"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLinearDimension"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMemberType"s,"IfcMotorConnectionType"s,"IfcMove"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOrderAction"s,"IfcOutletType"s,"IfcPerformanceHistory"s,"IfcPermit"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlateType"s,"IfcPolyline"s,"IfcPort"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectOrderRecord"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRadiusDimension"s,"IfcRailingType"s,"IfcRampFlightType"s,"IfcRelAggregates"s,"IfcRelAssignsTasks"s,"IfcSanitaryTerminalType"s,"IfcScheduleTimeControl"s,"IfcServiceLife"s,"IfcSite"s,"IfcSlabType"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceProgram"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralLinearAction"s,"IfcStructuralLinearActionVarying"s,"IfcStructuralLoadGroup"s,"IfcStructuralPlanarAction"s,"IfcStructuralPlanarActionVarying"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcTankType"s,"IfcTimeSeriesSchedule"s,"IfcTransformerType"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVirtualElement"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveOrEdgeCurve"s,"IfcStructuralActivityAssignmentSelect"s,"Ifc2DCompositeCurve"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAngularDimension"s,"IfcAsset"s,"IfcBSplineCurve"s,"IfcBeamType"s,"IfcBezierCurve"s,"IfcBoilerType"s,"IfcBuildingElement"s,"IfcBuildingElementComponent"s,"IfcBuildingElementPart"s,"IfcBuildingElementProxy"s,"IfcBuildingElementProxyType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableSegmentType"s,"IfcChillerType"s,"IfcCircle"s,"IfcCoilType"s,"IfcColumn"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcCondition"s,"IfcConditionCriterion"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDiameterDimension"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDoor"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcEdgeFeature"s,"IfcElectricApplianceType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricHeaterType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcElectricalCircuit"s,"IfcElectricalElement"s,"IfcEnergyConversionDevice"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcMember"s,"IfcPile"s,"IfcPlate"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBezierCurve"s,"IfcReinforcingElement"s,"IfcReinforcingMesh"s,"IfcRoof"s,"IfcRoundedEdgeFeature"s,"IfcSensorType"s,"IfcSlab"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcVibrationIsolatorType"s,"IfcWall"s,"IfcWallStandardCase"s,"IfcWindow"s,"IfcActuatorType"s,"IfcAlarmType"s,"IfcBeam"s,"IfcChamferEdgeFeature"s,"IfcControllerType"s,"IfcDistributionChamberElement"s,"IfcDistributionControlElement"s,"IfcElectricDistributionPoint"s,"IfcReinforcingBar"s,"RequestID"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"PredefinedType"s,"Purpose"s,"UserDefinedPurpose"s,"OuterBoundary"s,"InnerBoundaries"s,"FillStyleTarget"s,"GlobalOrLocal"s,"Item"s,"TextureCoordinates"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"ComponentOfTotal"s,"Components"s,"ArithmeticOperator"s,"ApprovalDateTime"s,"ApprovalStatus"s,"ApprovalLevel"s,"ApprovalQualifier"s,"Identifier"s,"Actor"s,"Approval"s,"ApprovedProperties"s,"RelatedApproval"s,"RelatingApproval"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"AssetID"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"CentreOfGravityInY"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"LinearStiffnessByLengthX"s,"LinearStiffnessByLengthY"s,"LinearStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"LinearStiffnessByAreaX"s,"LinearStiffnessByAreaY"s,"LinearStiffnessByAreaZ"s,"LinearStiffnessX"s,"LinearStiffnessY"s,"LinearStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"CompositionType"s,"Elevation"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"CentreOfGravityInX"s,"DayComponent"s,"MonthComponent"s,"YearComponent"s,"Coordinates"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"Height"s,"Radius"s,"Source"s,"Edition"s,"EditionDate"s,"Notation"s,"ItemOf"s,"Title"s,"RelatingItem"s,"RelatedItems"s,"NotationFacets"s,"NotationValue"s,"ReferencedSource"s,"Red"s,"Green"s,"Blue"s,"UsageName"s,"HasProperties"s,"Segments"s,"Transition"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Criterion"s,"CriterionDateTime"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"LocationAtRelatingElement"s,"LocationAtRelatedElement"s,"ProfileOfPort"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"RelatingConstraint"s,"RelatedConstraints"s,"LogicalAggregator"s,"ClassifiedConstraint"s,"RelatedClassifications"s,"Suppliers"s,"UsageRatio"s,"ResourceIdentifier"s,"ResourceGroup"s,"ResourceConsumption"s,"BaseQuantity"s,"ConversionFactor"s,"HourOffset"s,"MinuteOffset"s,"Sense"s,"SubmittedBy"s,"PreparedBy"s,"SubmittedOn"s,"Status"s,"TargetUsers"s,"UpdateDate"s,"ID"s,"CostType"s,"Condition"s,"OverallHeight"s,"BaseWidth2"s,"HeadWidth"s,"HeadDepth2"s,"HeadDepth3"s,"WebThickness"s,"BaseWidth4"s,"BaseDepth1"s,"BaseDepth2"s,"BaseDepth3"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"DateComponent"s,"TimeComponent"s,"Definition"s,"Target"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"ControlElementId"s,"FlowDirection"s,"FileExtension"s,"MimeContentType"s,"MimeSubtype"s,"DocumentId"s,"DocumentReferences"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"OverallWidth"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"OperationType"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"Contents"s,"RelatingDraughtingCallout"s,"RelatedDraughtingCallout"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"FeatureLength"s,"EdgeList"s,"DistributionPointFunction"s,"UserDefinedFunction"s,"ElectricCurrentType"s,"InputVoltage"s,"InputFrequency"s,"FullLoadCurrent"s,"MinimumCircuitCurrent"s,"MaximumPowerInput"s,"RatedPowerInput"s,"InputPhase"s,"Tag"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EnergySequence"s,"UserDefinedEnergySequence"s,"ImpactType"s,"Category"s,"UserDefinedCategory"s,"ExtendedProperties"s,"Location"s,"ItemReference"s,"ExtrudedDirection"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"Voids"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"Symbol"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"PropertySource"s,"FlowConditionTimeSeries"s,"VelocityTimeSeries"s,"FlowrateTimeSeries"s,"Fluid"s,"PressureTimeSeries"s,"UserDefinedPropertySource"s,"TemperatureSingleValue"s,"WetBulbTemperatureSingleValue"s,"WetBulbTemperatureTimeSeries"s,"TemperatureTimeSeries"s,"FlowrateSingleValue"s,"FlowConditionSingleValue"s,"VelocitySingleValue"s,"PressureSingleValue"s,"CombustionTemperature"s,"CarbonContent"s,"LowerHeatingValue"s,"HigherHeatingValue"s,"MolecularWeight"s,"Porosity"s,"MassDensity"s,"PhysicalWeight"s,"Perimeter"s,"MinimumPlateThickness"s,"MaximumPlateThickness"s,"CrossSectionArea"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"UpperVaporResistanceFactor"s,"LowerVaporResistanceFactor"s,"IsothermalMoistureCapacity"s,"VaporPermeability"s,"MoistureDiffusivity"s,"OverallDepth"s,"FlangeThickness"s,"FilletRadius"s,"UrlReference"s,"InventoryType"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"EdgeRadius"s,"LegSlope"s,"SkillSet"s,"Publisher"s,"VersionDate"s,"LibraryReference"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"PlacementRelTo"s,"RelativePlacement"s,"HourComponent"s,"MinuteComponent"s,"SecondComponent"s,"Zone"s,"DaylightSavingOffset"s,"Outer"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"RepresentedMaterial"s,"Material"s,"LayerThickness"s,"IsVentilated"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"Materials"s,"ValueComponent"s,"UnitComponent"s,"CompressiveStrength"s,"MaxAggregateSize"s,"AdmixturesDescription"s,"Workability"s,"ProtectivePoreRatio"s,"WaterImpermeability"s,"NominalDiameter"s,"NominalLength"s,"DynamicViscosity"s,"YoungModulus"s,"ShearModulus"s,"PoissonRatio"s,"ThermalExpansionCoefficient"s,"YieldStress"s,"UltimateStress"s,"UltimateStrain"s,"HardeningModule"s,"ProportionalStress"s,"PlasticStrain"s,"Relaxations"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"Currency"s,"MoveFrom"s,"MoveTo"s,"PunchList"s,"Dimensions"s,"ObjectType"s,"BenchmarkValues"s,"ResultValues"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"Distance"s,"RepeatFactor"s,"VisibleTransmittance"s,"SolarTransmittance"s,"ThermalIrTransmittance"s,"ThermalIrEmissivityBack"s,"ThermalIrEmissivityFront"s,"VisibleReflectanceBack"s,"VisibleReflectanceFront"s,"SolarReflectanceFront"s,"SolarReflectanceBack"s,"ActionID"s,"Id"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"PermitID"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Usage"s,"ColourComponents"s,"Pixel"s,"Placement"s,"SizeInX"s,"SizeInY"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Points"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"Styles"s,"ProcedureID"s,"ProcedureType"s,"UserDefinedProcedureType"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"SpecificHeatCapacity"s,"N20Content"s,"COContent"s,"CO2Content"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"LongName"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"Records"s,"UpperBoundValue"s,"LowerBoundValue"s,"RelatedProperties"s,"DependingProperty"s,"DependantProperty"s,"Expression"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"ProxyType"s,"AreaValue"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"ShapeType"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"ReferencedDocument"s,"ReferencingValues"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"BarLength"s,"BarRole"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatedObjects"s,"RelatedObjectsType"s,"TimeForTask"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingAppliedValue"s,"RelatingClassification"s,"Intent"s,"RelatingLibrary"s,"RelatingMaterial"s,"RelatingProfileProperties"s,"ProfileSectionLocation"s,"ProfileOrientation"s,"ConnectionGeometry"s,"RelatingElement"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatedStructuralMember"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatedSpace"s,"RelatingObject"s,"RelatingPropertyDefinition"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"DailyInteraction"s,"ImportanceRating"s,"LocationOfInteraction"s,"RelatedSpaceProgram"s,"RelatingSpaceProgram"s,"OverridingProperties"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"RelatingSpace"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"RelatedOpeningElement"s,"RelaxationValue"s,"InitialStress"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"Angle"s,"RibHeight"s,"RibWidth"s,"RibSpacing"s,"Direction"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"ActualStart"s,"EarlyStart"s,"LateStart"s,"ScheduleStart"s,"ActualFinish"s,"EarlyFinish"s,"LateFinish"s,"ScheduleFinish"s,"ScheduleDuration"s,"ActualDuration"s,"RemainingTime"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"StatusTime"s,"StartFloat"s,"FinishFloat"s,"Completion"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"SpineCurve"s,"CrossSections"s,"CrossSectionPositions"s,"ServiceLifeType"s,"ServiceLifeDuration"s,"UpperValue"s,"MostUsedValue"s,"LowerValue"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"IsAttenuating"s,"SoundScale"s,"SoundValues"s,"SoundLevelTimeSeries"s,"Frequency"s,"SoundLevelSingleValue"s,"InteriorOrExteriorSpace"s,"ElevationWithFlooring"s,"SpaceProgramIdentifier"s,"MaxRequiredArea"s,"MinRequiredArea"s,"RequestedLocation"s,"StandardRequiredArea"s,"ApplicableValueRatio"s,"ThermalLoadSource"s,"SourceDescription"s,"MaximumValue"s,"MinimumValue"s,"ThermalLoadTimeSeriesValues"s,"UserDefinedThermalLoadSource"s,"ThermalLoadType"s,"NumberOfRiser"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"CausedBy"s,"AppliedLoad"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"ProjectedOrTrue"s,"VaryingAppliedLoadLocation"s,"SubsequentAppliedLoads"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaT_Constant"s,"DeltaT_Y"s,"DeltaT_Z"s,"TorsionalConstantX"s,"MomentOfInertiaYZ"s,"MomentOfInertiaY"s,"MomentOfInertiaZ"s,"WarpingConstant"s,"ShearCentreZ"s,"ShearCentreY"s,"ShearDeformationAreaZ"s,"ShearDeformationAreaY"s,"MaximumSectionModulusY"s,"MinimumSectionModulusY"s,"MaximumSectionModulusZ"s,"MinimumSectionModulusZ"s,"TorsionalSectionModulus"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"ShearAreaZ"s,"ShearAreaY"s,"PlasticShapeFactorY"s,"PlasticShapeFactorZ"s,"SubsequentThickness"s,"VaryingThicknessLocation"s,"SubContractor"s,"JobDescription"s,"ParentEdge"s,"Directrix"s,"StartParam"s,"EndParam"s,"ReferenceSurface"s,"AxisPosition"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"Transparency"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Textures"s,"RepeatS"s,"RepeatT"s,"TextureType"s,"TextureTransform"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"StyleOfSymbol"s,"FlangeWidth"s,"FlangeEdgeRadius"s,"WebEdgeRadius"s,"WebSlope"s,"FlangeSlope"s,"Rows"s,"RowCells"s,"IsHeading"s,"TaskId"s,"WorkMethod"s,"IsMilestone"s,"Priority"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"AnnotatedCurve"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"BoxHeight"s,"BoxWidth"s,"BoxSlantAngle"s,"BoxRotateAngle"s,"CharacterSpacing"s,"Mode"s,"Parameter"s,"TextureMaps"s,"BoilingPoint"s,"FreezingPoint"s,"ThermalConductivity"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"ReferencedTimeSeries"s,"TimeSeriesReferences"s,"ApplicableDates"s,"TimeSeriesScheduleType"s,"TimeSeries"s,"CapacityByWeight"s,"CapacityByNumber"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"MasterRepresentation"s,"SecondRepeatFactor"s,"ApplicableOccurrence"s,"HasPropertySets"s,"RepresentationMaps"s,"Units"s,"Magnitude"s,"TextureVertices"s,"TexturePoints"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"IsPotable"s,"Hardness"s,"AlkalinityConcentration"s,"AcidityConcentration"s,"ImpuritiesContent"s,"PHLevel"s,"DissolvedSolidsContent"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"Creators"s,"Duration"s,"FinishTime"s,"WorkControlType"s,"UserDefinedControlType"s,"IsActingUpon"s,"OfPerson"s,"OfOrganization"s,"ContainedInStructure"s,"ValuesReferenced"s,"ValueOfComponents"s,"IsComponentIn"s,"Actors"s,"IsRelatedWith"s,"Relates"s,"Contains"s,"IsClassifiedItemIn"s,"IsClassifyingItemIn"s,"UsingCurves"s,"ClassifiedAs"s,"RelatesConstraints"s,"PropertiesForConstraint"s,"Aggregates"s,"IsAggregatedIn"s,"Controls"s,"CoversSpaces"s,"Covers"s,"AnnotatedBySymbols"s,"AssignedToFlowElement"s,"HasControlElements"s,"IsPointedTo"s,"IsPointer"s,"ReferenceToDocument"s,"IsRelatedFromCallout"s,"IsRelatedToCallout"s,"HasStructuralMember"s,"FillsVoids"s,"ConnectedTo"s,"HasCoverings"s,"HasProjections"s,"ReferencedInStructures"s,"HasPorts"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ReferenceIntoLibrary"s,"HasRepresentation"s,"ToMaterialLayerSet"s,"IsDefinedBy"s,"HasAssignments"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"ReferencedByPlacements"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"OperatesOn"s,"IsSuccessorFrom"s,"IsPredecessorTo"s,"ReferencedBy"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PropertyForDependance"s,"PropertyDependsOn"s,"PropertyDefinitionOf"s,"DefinesType"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"ScheduleTimeControlAssigned"s,"OfShapeAspect"s,"BoundedBy"s,"HasInteractionReqsFrom"s,"HasInteractionReqsTo"s,"ReferencesElements"s,"ServicedBySystems"s,"ContainsElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ReferencesElement"s,"ConnectedBy"s,"Causes"s,"ResultGroupFor"s,"ServicesBuildings"s,"OfTable"s,"AnnotatedSurface"s,"DocumentedBy"s,"ObjectTypeOf"s,"IFC2X3"s}; - - class IFC2X3_instance_factory : public IfcParse::instance_factory { virtual IfcUtil::IfcBaseClass* operator()(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) const { switch(decl->index_in_schema()) { @@ -980,6 +977,9 @@ class IFC2X3_instance_factory : public IfcParse::instance_factory { }; IfcParse::schema_definition* IFC2X3_populate_schema() { + +const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAheadOrBehind"s,"AHEAD"s,"BEHIND"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"GRILLE"s,"REGISTER"s,"DIFFUSER"s,"EYEBALL"s,"IRIS"s,"LINEARGRILLE"s,"LINEARDIFFUSER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"LINTEL"s,"T_BEAM"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBuildingElementProxyTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"IfcCableSegmentTypeEnum"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"MODIFIEDADDED"s,"MODIFIEDDELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"WATERCOOLINGCOIL"s,"STEAMHEATINGCOIL"s,"WATERHEATINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"IfcComplexNumber"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDTUBEINTUBE"s,"WATERCOOLEDBRAZEDPLATE"s,"EVAPORATIVECOOLED"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROPORTIONAL"s,"PROPORTIONALINTEGRAL"s,"PROPORTIONALINTEGRALDERIVATIVE"s,"TIMEDTWOPOSITION"s,"TWOPOSITION"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"INSULATION"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"IfcCurrencyEnum"s,"AED"s,"AES"s,"ATS"s,"AUD"s,"BBD"s,"BEG"s,"BGL"s,"BHD"s,"BMD"s,"BND"s,"BRL"s,"BSD"s,"BWP"s,"BZD"s,"CAD"s,"CBD"s,"CHF"s,"CLP"s,"CNY"s,"CYS"s,"CZK"s,"DDP"s,"DEM"s,"DKK"s,"EGL"s,"EST"s,"EUR"s,"FAK"s,"FIM"s,"FJD"s,"FKP"s,"FRF"s,"GBP"s,"GIP"s,"GMD"s,"GRX"s,"HKD"s,"HUF"s,"ICK"s,"IDR"s,"ILS"s,"INR"s,"IRP"s,"ITL"s,"JMD"s,"JOD"s,"JPY"s,"KES"s,"KRW"s,"KWD"s,"KYD"s,"LKR"s,"LUF"s,"MTL"s,"MUR"s,"MXN"s,"MYR"s,"NLG"s,"NZD"s,"OMR"s,"PGK"s,"PHP"s,"PKR"s,"PLN"s,"PTN"s,"QAR"s,"RUR"s,"SAR"s,"SCR"s,"SEK"s,"SGD"s,"SKP"s,"THB"s,"TRL"s,"TTD"s,"TWD"s,"USD"s,"VEB"s,"VND"s,"XEU"s,"ZAR"s,"ZWD"s,"NOK"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcDamperTypeEnum"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"SMOKEDAMPER"s,"FIRESMOKEDAMPER"s,"BACKDRAFTDAMPER"s,"RELIEFDAMPER"s,"BLASTDAMPER"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"BALANCINGDAMPER"s,"FUMEHOODEXHAUST"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDayInMonthNumber"s,"IfcDaylightSavingHour"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDimensionExtentUsage"s,"ORIGIN"s,"TARGET"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"WOOD"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"OBSTRUCTION"s,"TRANSITION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDynamicViscosityMeasure"s,"IfcElectricApplianceTypeEnum"s,"COMPUTER"s,"DIRECTWATERHEATER"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"ELECTRICHEATER"s,"FACSIMILE"s,"FREESTANDINGFAN"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"INDIRECTWATERHEATER"s,"MICROWAVE"s,"PHOTOCOPIER"s,"PRINTER"s,"REFRIGERATOR"s,"RADIANTHEATER"s,"SCANNER"s,"TELEPHONE"s,"TUMBLEDRYER"s,"TV"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"WATERHEATER"s,"WATERCOOLER"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentEnum"s,"ALTERNATING"s,"DIRECT"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionPointFunctionEnum"s,"ALARMPANEL"s,"CONSUMERUNIT"s,"CONTROLPANEL"s,"DISTRIBUTIONBOARD"s,"GASDETECTORPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"MOTORCONTROLCENTRE"s,"SWITCHBOARD"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"IfcElectricGeneratorTypeEnum"s,"IfcElectricHeaterTypeEnum"s,"ELECTRICPOINTHEATER"s,"ELECTRICCABLEHEATER"s,"ELECTRICMATHEATER"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"GIRDER"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"TRUSS"s,"IfcElementCompositionEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"IfcEnergyMeasure"s,"IfcEnergySequenceEnum"s,"PRIMARY"s,"SECONDARY"s,"TERTIARY"s,"AUXILIARY"s,"IfcEnvironmentalImpactCategoryEnum"s,"COMBINEDVALUE"s,"DISPOSAL"s,"EXTRACTION"s,"INSTALLATION"s,"MANUFACTURE"s,"TRANSPORTATION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"IfcFlowMeterTypeEnum"s,"ELECTRICMETER"s,"ENERGYMETER"s,"FLOWMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcGasTerminalTypeEnum"s,"GASAPPLIANCE"s,"GASBOOSTER"s,"GASBURNER"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHourInDay"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"EXTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"IfcKinematicViscosityMeasure"s,"IfcLabel"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"METALHALIDE"s,"TUNGSTENFILAMENT"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION_GROUP"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"POST"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"IfcMinuteInHour"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNullStyle"s,"NULL"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"CONTROL"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderRecordTypeEnum"s,"CHANGE"s,"MAINTENANCE"s,"MOVE"s,"PURCHASE"s,"WORK"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcPropertySourceEnum"s,"DESIGN"s,"DESIGNMAXIMUM"s,"DESIGNMINIMUM"s,"ASBUILT"s,"COMMISSIONING"s,"NOTKNOWN"s,"IfcProtectiveDeviceTypeEnum"s,"FUSEDISCONNECTOR"s,"CIRCUITBREAKER"s,"EARTHFAILUREDEVICE"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"GUARDRAIL"s,"BALUSTRADE"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"METAL"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcResourceConsumptionEnum"s,"CONSUMED"s,"PARTIALLYCONSUMED"s,"NOTCONSUMED"s,"OCCUPIED"s,"PARTIALLYOCCUPIED"s,"NOTOCCUPIED"s,"IfcRibPlateDirectionEnum"s,"DIRECTION_X"s,"DIRECTION_Y"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSecondInMinute"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"CO2SENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PRESSURESENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcServiceLifeFactorTypeEnum"s,"A_QUALITYOFCOMPONENTS"s,"B_DESIGNLEVEL"s,"C_WORKEXECUTIONLEVEL"s,"D_INDOORENVIRONMENT"s,"E_OUTDOORENVIRONMENT"s,"F_INUSECONDITIONS"s,"G_MAINTENANCELEVEL"s,"IfcServiceLifeTypeEnum"s,"ACTUALSERVICELIFE"s,"EXPECTEDSERVICELIFE"s,"OPTIMISTICREFERENCESERVICELIFE"s,"PESSIMISTICREFERENCESERVICELIFE"s,"REFERENCESERVICELIFE"s,"IfcShearModulusMeasure"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureMeasure"s,"IfcSoundScaleEnum"s,"DBA"s,"DBB"s,"DBC"s,"NC"s,"NR"s,"IfcSpaceHeaterTypeEnum"s,"SECTIONALRADIATOR"s,"PANELRADIATOR"s,"TUBULARRADIATOR"s,"CONVECTOR"s,"BASEBOARDHEATER"s,"FINNEDTUBEUNIT"s,"UNITHEATER"s,"IfcSpaceTypeEnum"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"CABLE"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSurfaceTextureEnum"s,"BUMP"s,"OPACITY"s,"REFLECTION"s,"SELFILLUMINATION"s,"SHININESS"s,"SPECULAR"s,"TEXTURE"s,"TRANSPARENCYMAP"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"EMERGENCYSTOP"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"IfcTankTypeEnum"s,"PREFORMED"s,"SECTIONAL"s,"EXPANSION"s,"PRESSUREVESSEL"s,"IfcTemperatureGradientMeasure"s,"IfcTendonTypeEnum"s,"STRAND"s,"WIRE"s,"BAR"s,"COATED"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalLoadSourceEnum"s,"PEOPLE"s,"LIGHTING"s,"EQUIPMENT"s,"VENTILATIONINDOORAIR"s,"VENTILATIONOUTSIDEAIR"s,"RECIRCULATEDAIR"s,"EXHAUSTAIR"s,"AIREXCHANGERATE"s,"DRYBULBTEMPERATURE"s,"RELATIVEHUMIDITY"s,"INFILTRATION"s,"IfcThermalLoadTypeEnum"s,"SENSIBLE"s,"LATENT"s,"RADIANT"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTimeMeasure"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETE"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeSeriesScheduleTypeEnum"s,"ANNUAL"s,"MONTHLY"s,"WEEKLY"s,"DAILY"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"VOLTAGE"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTransportElementTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"PARAMETER"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"STANDARD"s,"POLYGONAL"s,"ELEMENTEDWALL"s,"PLUMBINGWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"GREASEINTERCEPTOR"s,"OILINTERCEPTOR"s,"PETROLINTERCEPTOR"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWorkControlTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcYearNumber"s,"IfcActorRole"s,"IfcAddress"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcAppliedValueRelationship"s,"IfcApproval"s,"IfcApprovalActorRelationship"s,"IfcApprovalPropertyRelationship"s,"IfcApprovalRelationship"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcCalendarDate"s,"IfcClassification"s,"IfcClassificationItem"s,"IfcClassificationItemRelationship"s,"IfcClassificationNotation"s,"IfcClassificationNotationFacet"s,"IfcColourSpecification"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionPortGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConstraint"s,"IfcConstraintAggregationRelationship"s,"IfcConstraintClassificationRelationship"s,"IfcConstraintRelationship"s,"IfcCoordinatedUniversalTimeOffset"s,"IfcCostValue"s,"IfcCurrencyRelationship"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDateAndTime"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcDocumentElectronicFormat"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDraughtingCalloutRelationship"s,"IfcEnvironmentalImpactValue"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedSymbol"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcLocalTime"s,"IfcMaterial"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialList"s,"IfcMaterialProperties"s,"IfcMeasureWithUnit"s,"IfcMechanicalMaterialProperties"s,"IfcMechanicalSteelMaterialProperties"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOpticalMaterialProperties"s,"IfcOrganization"s,"IfcOrganizationRelationship"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPreDefinedItem"s,"IfcPreDefinedSymbol"s,"IfcPreDefinedTerminatorSymbol"s,"IfcPreDefinedTextFont"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcPresentationStyleAssignment"s,"IfcProductRepresentation"s,"IfcProductsOfCombustionProperties"s,"IfcProfileDef"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyConstraintRelationship"s,"IfcPropertyDependencyRelationship"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcReferencesValueDocument"s,"IfcReinforcementBarProperties"s,"IfcRelaxation"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcRibPlateProfileProperties"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcSimpleProperty"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcSymbolStyle"s,"IfcTable"s,"IfcTableRow"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleFontModel"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextStyleWithBoxCharacteristics"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcThermalMaterialProperties"s,"IfcTimeSeries"s,"IfcTimeSeriesReferenceRelationship"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexBasedTextureMap"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWaterProperties"s,"IfcActorSelect"s,"IfcAppliedValueSelect"s,"IfcBoxAlignment"s,"IfcCharacterStyleSelect"s,"IfcConditionCriterionSelect"s,"IfcDateTimeSelect"s,"IfcDefinedSymbolSelect"s,"IfcDerivedMeasureValue"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcMaterialSelect"s,"IfcMetricValueSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcTextFontSelect"s,"IfcTextStyleSelect"s,"IfcUnit"s,"IfcAnnotationOccurrence"s,"IfcAnnotationSurfaceOccurrence"s,"IfcAnnotationSymbolOccurrence"s,"IfcAnnotationTextOccurrence"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassificationReference"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcCurveStyle"s,"IfcDerivedProfileDef"s,"IfcDimensionCalloutRelationship"s,"IfcDimensionPair"s,"IfcDocumentReference"s,"IfcDraughtingPreDefinedTextFont"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcExtendedMaterialProperties"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcFuelProperties"s,"IfcGeneralMaterialProperties"s,"IfcGeneralProfileProperties"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcHygroscopicMaterialProperties"s,"IfcImageTexture"s,"IfcIrregularTimeSeries"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterialDefinitionRepresentation"s,"IfcMechanicalConcreteMaterialProperties"s,"IfcObjectDefinition"s,"IfcOneDirectionRepeatFactor"s,"IfcOpenShell"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedDimensionSymbol"s,"IfcPreDefinedPointMarkerSymbol"s,"IfcProductDefinitionShape"s,"IfcPropertyBoundedValue"s,"IfcPropertyDefinition"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySetDefinition"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementDefinitionProperties"s,"IfcRelationship"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionedSpine"s,"IfcServiceLifeFactor"s,"IfcShellBasedSurfaceModel"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcSoundProperties"s,"IfcSoundValue"s,"IfcSpaceThermalLoadProperties"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcStructuralProfileProperties"s,"IfcStructuralSteelProfileProperties"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTerminatorSymbol"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTrapeziumProfileDef"s,"IfcTwoDirectionRepeatFactor"s,"IfcTypeObject"s,"IfcTypeProduct"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationNotationSelect"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCurveStyleFontSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcPresentationStyleSelect"s,"IfcSymbolStyleSelect"s,"IfcValue"s,"IfcAnnotationCurveOccurrence"s,"IfcAnnotationFillArea"s,"IfcAnnotationFillAreaOccurrence"s,"IfcAnnotationSurface"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcCompositeCurveSegment"s,"IfcCraneRailAShapeProfileDef"s,"IfcCraneRailFShapeProfileDef"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcDefinedSymbol"s,"IfcDimensionCurve"s,"IfcDimensionCurveTerminator"s,"IfcDirection"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorStyle"s,"IfcDraughtingCallout"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEnergyProperties"s,"IfcExtrudedAreaSolid"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTileSymbolWithStyle"s,"IfcFillAreaStyleTiles"s,"IfcFluidFlowProperties"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcLShapeProfileDef"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcPermeableCoveringProperties"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectionCurve"s,"IfcPropertySet"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToProjectOrder"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesAppliedValue"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelAssociatesProfileProperties"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralElement"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInteractionRequirements"s,"IfcRelNests"s,"IfcRelOccupiesSpaces"s,"IfcRelOverridesProperties"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSchedulesCostItems"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelVoidsElement"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSphere"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuredDimensionCallout"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTransportElementType"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcCsgSelect"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcDraughtingCalloutElement"s,"IfcFillAreaStyleTileShapeSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcOrientationSelect"s,"IfcShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAnnotation"s,"IfcAsymmetricIShapeProfileDef"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuilding"s,"IfcBuildingElementType"s,"IfcBuildingStorey"s,"IfcCircleHollowProfileDef"s,"IfcColumnType"s,"IfcCompositeCurve"s,"IfcConic"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcDimensionCurveDirectedCallout"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcElectricalBaseProperties"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEquipmentElement"s,"IfcEquipmentStandard"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFurnishingElement"s,"IfcFurnitureStandard"s,"IfcGasTerminalType"s,"IfcGrid"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLinearDimension"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMemberType"s,"IfcMotorConnectionType"s,"IfcMove"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOrderAction"s,"IfcOutletType"s,"IfcPerformanceHistory"s,"IfcPermit"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlateType"s,"IfcPolyline"s,"IfcPort"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectOrderRecord"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRadiusDimension"s,"IfcRailingType"s,"IfcRampFlightType"s,"IfcRelAggregates"s,"IfcRelAssignsTasks"s,"IfcSanitaryTerminalType"s,"IfcScheduleTimeControl"s,"IfcServiceLife"s,"IfcSite"s,"IfcSlabType"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceProgram"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralLinearAction"s,"IfcStructuralLinearActionVarying"s,"IfcStructuralLoadGroup"s,"IfcStructuralPlanarAction"s,"IfcStructuralPlanarActionVarying"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcTankType"s,"IfcTimeSeriesSchedule"s,"IfcTransformerType"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVirtualElement"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveOrEdgeCurve"s,"IfcStructuralActivityAssignmentSelect"s,"Ifc2DCompositeCurve"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAngularDimension"s,"IfcAsset"s,"IfcBSplineCurve"s,"IfcBeamType"s,"IfcBezierCurve"s,"IfcBoilerType"s,"IfcBuildingElement"s,"IfcBuildingElementComponent"s,"IfcBuildingElementPart"s,"IfcBuildingElementProxy"s,"IfcBuildingElementProxyType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableSegmentType"s,"IfcChillerType"s,"IfcCircle"s,"IfcCoilType"s,"IfcColumn"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcCondition"s,"IfcConditionCriterion"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDiameterDimension"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDoor"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcEdgeFeature"s,"IfcElectricApplianceType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricHeaterType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcElectricalCircuit"s,"IfcElectricalElement"s,"IfcEnergyConversionDevice"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcMember"s,"IfcPile"s,"IfcPlate"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBezierCurve"s,"IfcReinforcingElement"s,"IfcReinforcingMesh"s,"IfcRoof"s,"IfcRoundedEdgeFeature"s,"IfcSensorType"s,"IfcSlab"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcVibrationIsolatorType"s,"IfcWall"s,"IfcWallStandardCase"s,"IfcWindow"s,"IfcActuatorType"s,"IfcAlarmType"s,"IfcBeam"s,"IfcChamferEdgeFeature"s,"IfcControllerType"s,"IfcDistributionChamberElement"s,"IfcDistributionControlElement"s,"IfcElectricDistributionPoint"s,"IfcReinforcingBar"s,"RequestID"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"PredefinedType"s,"Purpose"s,"UserDefinedPurpose"s,"OuterBoundary"s,"InnerBoundaries"s,"FillStyleTarget"s,"GlobalOrLocal"s,"Item"s,"TextureCoordinates"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"ComponentOfTotal"s,"Components"s,"ArithmeticOperator"s,"ApprovalDateTime"s,"ApprovalStatus"s,"ApprovalLevel"s,"ApprovalQualifier"s,"Identifier"s,"Actor"s,"Approval"s,"ApprovedProperties"s,"RelatedApproval"s,"RelatingApproval"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"AssetID"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"CentreOfGravityInY"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"LinearStiffnessByLengthX"s,"LinearStiffnessByLengthY"s,"LinearStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"LinearStiffnessByAreaX"s,"LinearStiffnessByAreaY"s,"LinearStiffnessByAreaZ"s,"LinearStiffnessX"s,"LinearStiffnessY"s,"LinearStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"CompositionType"s,"Elevation"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"CentreOfGravityInX"s,"DayComponent"s,"MonthComponent"s,"YearComponent"s,"Coordinates"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"Height"s,"Radius"s,"Source"s,"Edition"s,"EditionDate"s,"Notation"s,"ItemOf"s,"Title"s,"RelatingItem"s,"RelatedItems"s,"NotationFacets"s,"NotationValue"s,"ReferencedSource"s,"Red"s,"Green"s,"Blue"s,"UsageName"s,"HasProperties"s,"Segments"s,"Transition"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Criterion"s,"CriterionDateTime"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"LocationAtRelatingElement"s,"LocationAtRelatedElement"s,"ProfileOfPort"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"RelatingConstraint"s,"RelatedConstraints"s,"LogicalAggregator"s,"ClassifiedConstraint"s,"RelatedClassifications"s,"Suppliers"s,"UsageRatio"s,"ResourceIdentifier"s,"ResourceGroup"s,"ResourceConsumption"s,"BaseQuantity"s,"ConversionFactor"s,"HourOffset"s,"MinuteOffset"s,"Sense"s,"SubmittedBy"s,"PreparedBy"s,"SubmittedOn"s,"Status"s,"TargetUsers"s,"UpdateDate"s,"ID"s,"CostType"s,"Condition"s,"OverallHeight"s,"BaseWidth2"s,"HeadWidth"s,"HeadDepth2"s,"HeadDepth3"s,"WebThickness"s,"BaseWidth4"s,"BaseDepth1"s,"BaseDepth2"s,"BaseDepth3"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"DateComponent"s,"TimeComponent"s,"Definition"s,"Target"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"ControlElementId"s,"FlowDirection"s,"FileExtension"s,"MimeContentType"s,"MimeSubtype"s,"DocumentId"s,"DocumentReferences"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"OverallWidth"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"OperationType"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"Contents"s,"RelatingDraughtingCallout"s,"RelatedDraughtingCallout"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"FeatureLength"s,"EdgeList"s,"DistributionPointFunction"s,"UserDefinedFunction"s,"ElectricCurrentType"s,"InputVoltage"s,"InputFrequency"s,"FullLoadCurrent"s,"MinimumCircuitCurrent"s,"MaximumPowerInput"s,"RatedPowerInput"s,"InputPhase"s,"Tag"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EnergySequence"s,"UserDefinedEnergySequence"s,"ImpactType"s,"Category"s,"UserDefinedCategory"s,"ExtendedProperties"s,"Location"s,"ItemReference"s,"ExtrudedDirection"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"Voids"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"Symbol"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"PropertySource"s,"FlowConditionTimeSeries"s,"VelocityTimeSeries"s,"FlowrateTimeSeries"s,"Fluid"s,"PressureTimeSeries"s,"UserDefinedPropertySource"s,"TemperatureSingleValue"s,"WetBulbTemperatureSingleValue"s,"WetBulbTemperatureTimeSeries"s,"TemperatureTimeSeries"s,"FlowrateSingleValue"s,"FlowConditionSingleValue"s,"VelocitySingleValue"s,"PressureSingleValue"s,"CombustionTemperature"s,"CarbonContent"s,"LowerHeatingValue"s,"HigherHeatingValue"s,"MolecularWeight"s,"Porosity"s,"MassDensity"s,"PhysicalWeight"s,"Perimeter"s,"MinimumPlateThickness"s,"MaximumPlateThickness"s,"CrossSectionArea"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"UpperVaporResistanceFactor"s,"LowerVaporResistanceFactor"s,"IsothermalMoistureCapacity"s,"VaporPermeability"s,"MoistureDiffusivity"s,"OverallDepth"s,"FlangeThickness"s,"FilletRadius"s,"UrlReference"s,"InventoryType"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"EdgeRadius"s,"LegSlope"s,"SkillSet"s,"Publisher"s,"VersionDate"s,"LibraryReference"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"PlacementRelTo"s,"RelativePlacement"s,"HourComponent"s,"MinuteComponent"s,"SecondComponent"s,"Zone"s,"DaylightSavingOffset"s,"Outer"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"RepresentedMaterial"s,"Material"s,"LayerThickness"s,"IsVentilated"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"Materials"s,"ValueComponent"s,"UnitComponent"s,"CompressiveStrength"s,"MaxAggregateSize"s,"AdmixturesDescription"s,"Workability"s,"ProtectivePoreRatio"s,"WaterImpermeability"s,"NominalDiameter"s,"NominalLength"s,"DynamicViscosity"s,"YoungModulus"s,"ShearModulus"s,"PoissonRatio"s,"ThermalExpansionCoefficient"s,"YieldStress"s,"UltimateStress"s,"UltimateStrain"s,"HardeningModule"s,"ProportionalStress"s,"PlasticStrain"s,"Relaxations"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"Currency"s,"MoveFrom"s,"MoveTo"s,"PunchList"s,"Dimensions"s,"ObjectType"s,"BenchmarkValues"s,"ResultValues"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"Distance"s,"RepeatFactor"s,"VisibleTransmittance"s,"SolarTransmittance"s,"ThermalIrTransmittance"s,"ThermalIrEmissivityBack"s,"ThermalIrEmissivityFront"s,"VisibleReflectanceBack"s,"VisibleReflectanceFront"s,"SolarReflectanceFront"s,"SolarReflectanceBack"s,"ActionID"s,"Id"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"PermitID"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Usage"s,"ColourComponents"s,"Pixel"s,"Placement"s,"SizeInX"s,"SizeInY"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Points"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"Styles"s,"ProcedureID"s,"ProcedureType"s,"UserDefinedProcedureType"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"SpecificHeatCapacity"s,"N20Content"s,"COContent"s,"CO2Content"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"LongName"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"Records"s,"UpperBoundValue"s,"LowerBoundValue"s,"RelatedProperties"s,"DependingProperty"s,"DependantProperty"s,"Expression"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"ProxyType"s,"AreaValue"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"ShapeType"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"ReferencedDocument"s,"ReferencingValues"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"BarLength"s,"BarRole"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatedObjects"s,"RelatedObjectsType"s,"TimeForTask"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingAppliedValue"s,"RelatingClassification"s,"Intent"s,"RelatingLibrary"s,"RelatingMaterial"s,"RelatingProfileProperties"s,"ProfileSectionLocation"s,"ProfileOrientation"s,"ConnectionGeometry"s,"RelatingElement"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatedStructuralMember"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatedSpace"s,"RelatingObject"s,"RelatingPropertyDefinition"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"DailyInteraction"s,"ImportanceRating"s,"LocationOfInteraction"s,"RelatedSpaceProgram"s,"RelatingSpaceProgram"s,"OverridingProperties"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"RelatingSpace"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"RelatedOpeningElement"s,"RelaxationValue"s,"InitialStress"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"Angle"s,"RibHeight"s,"RibWidth"s,"RibSpacing"s,"Direction"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"ActualStart"s,"EarlyStart"s,"LateStart"s,"ScheduleStart"s,"ActualFinish"s,"EarlyFinish"s,"LateFinish"s,"ScheduleFinish"s,"ScheduleDuration"s,"ActualDuration"s,"RemainingTime"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"StatusTime"s,"StartFloat"s,"FinishFloat"s,"Completion"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"SpineCurve"s,"CrossSections"s,"CrossSectionPositions"s,"ServiceLifeType"s,"ServiceLifeDuration"s,"UpperValue"s,"MostUsedValue"s,"LowerValue"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"IsAttenuating"s,"SoundScale"s,"SoundValues"s,"SoundLevelTimeSeries"s,"Frequency"s,"SoundLevelSingleValue"s,"InteriorOrExteriorSpace"s,"ElevationWithFlooring"s,"SpaceProgramIdentifier"s,"MaxRequiredArea"s,"MinRequiredArea"s,"RequestedLocation"s,"StandardRequiredArea"s,"ApplicableValueRatio"s,"ThermalLoadSource"s,"SourceDescription"s,"MaximumValue"s,"MinimumValue"s,"ThermalLoadTimeSeriesValues"s,"UserDefinedThermalLoadSource"s,"ThermalLoadType"s,"NumberOfRiser"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"CausedBy"s,"AppliedLoad"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"ProjectedOrTrue"s,"VaryingAppliedLoadLocation"s,"SubsequentAppliedLoads"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaT_Constant"s,"DeltaT_Y"s,"DeltaT_Z"s,"TorsionalConstantX"s,"MomentOfInertiaYZ"s,"MomentOfInertiaY"s,"MomentOfInertiaZ"s,"WarpingConstant"s,"ShearCentreZ"s,"ShearCentreY"s,"ShearDeformationAreaZ"s,"ShearDeformationAreaY"s,"MaximumSectionModulusY"s,"MinimumSectionModulusY"s,"MaximumSectionModulusZ"s,"MinimumSectionModulusZ"s,"TorsionalSectionModulus"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"ShearAreaZ"s,"ShearAreaY"s,"PlasticShapeFactorY"s,"PlasticShapeFactorZ"s,"SubsequentThickness"s,"VaryingThicknessLocation"s,"SubContractor"s,"JobDescription"s,"ParentEdge"s,"Directrix"s,"StartParam"s,"EndParam"s,"ReferenceSurface"s,"AxisPosition"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"Transparency"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Textures"s,"RepeatS"s,"RepeatT"s,"TextureType"s,"TextureTransform"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"StyleOfSymbol"s,"FlangeWidth"s,"FlangeEdgeRadius"s,"WebEdgeRadius"s,"WebSlope"s,"FlangeSlope"s,"Rows"s,"RowCells"s,"IsHeading"s,"TaskId"s,"WorkMethod"s,"IsMilestone"s,"Priority"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"AnnotatedCurve"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"BoxHeight"s,"BoxWidth"s,"BoxSlantAngle"s,"BoxRotateAngle"s,"CharacterSpacing"s,"Mode"s,"Parameter"s,"TextureMaps"s,"BoilingPoint"s,"FreezingPoint"s,"ThermalConductivity"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"ReferencedTimeSeries"s,"TimeSeriesReferences"s,"ApplicableDates"s,"TimeSeriesScheduleType"s,"TimeSeries"s,"CapacityByWeight"s,"CapacityByNumber"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"MasterRepresentation"s,"SecondRepeatFactor"s,"ApplicableOccurrence"s,"HasPropertySets"s,"RepresentationMaps"s,"Units"s,"Magnitude"s,"TextureVertices"s,"TexturePoints"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"IsPotable"s,"Hardness"s,"AlkalinityConcentration"s,"AcidityConcentration"s,"ImpuritiesContent"s,"PHLevel"s,"DissolvedSolidsContent"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"Creators"s,"Duration"s,"FinishTime"s,"WorkControlType"s,"UserDefinedControlType"s,"IsActingUpon"s,"OfPerson"s,"OfOrganization"s,"ContainedInStructure"s,"ValuesReferenced"s,"ValueOfComponents"s,"IsComponentIn"s,"Actors"s,"IsRelatedWith"s,"Relates"s,"Contains"s,"IsClassifiedItemIn"s,"IsClassifyingItemIn"s,"UsingCurves"s,"ClassifiedAs"s,"RelatesConstraints"s,"PropertiesForConstraint"s,"Aggregates"s,"IsAggregatedIn"s,"Controls"s,"CoversSpaces"s,"Covers"s,"AnnotatedBySymbols"s,"AssignedToFlowElement"s,"HasControlElements"s,"IsPointedTo"s,"IsPointer"s,"ReferenceToDocument"s,"IsRelatedFromCallout"s,"IsRelatedToCallout"s,"HasStructuralMember"s,"FillsVoids"s,"ConnectedTo"s,"HasCoverings"s,"HasProjections"s,"ReferencedInStructures"s,"HasPorts"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ReferenceIntoLibrary"s,"HasRepresentation"s,"ToMaterialLayerSet"s,"IsDefinedBy"s,"HasAssignments"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"ReferencedByPlacements"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"OperatesOn"s,"IsSuccessorFrom"s,"IsPredecessorTo"s,"ReferencedBy"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PropertyForDependance"s,"PropertyDependsOn"s,"PropertyDefinitionOf"s,"DefinesType"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"ScheduleTimeControlAssigned"s,"OfShapeAspect"s,"BoundedBy"s,"HasInteractionReqsFrom"s,"HasInteractionReqsTo"s,"ReferencesElements"s,"ServicedBySystems"s,"ContainsElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ReferencesElement"s,"ConnectedBy"s,"Causes"s,"ResultGroupFor"s,"ServicesBuildings"s,"OfTable"s,"AnnotatedSurface"s,"DocumentedBy"s,"ObjectTypeOf"s,"IFC2X3"s}; + IFC2X3_types[1] = new type_declaration(strings[0], 1, new simple_type(simple_type::real_type)); IFC2X3_types[2] = new type_declaration(strings[1], 2, new simple_type(simple_type::real_type)); IFC2X3_types[4] = new enumeration_type(strings[2], 4, {strings[3],strings[4],strings[5],strings[6],strings[7],strings[8],strings[9],strings[10],strings[11],strings[12],strings[13],strings[14],strings[15],strings[16],strings[17],strings[18],strings[19],strings[20],strings[21],strings[22],strings[23],strings[24],strings[25],strings[26],strings[27],strings[28],strings[29]}); diff --git a/src/ifcparse/Ifc4-schema.cpp b/src/ifcparse/Ifc4-schema.cpp index 8fdb97a7b6..8fc5741563 100644 --- a/src/ifcparse/Ifc4-schema.cpp +++ b/src/ifcparse/Ifc4-schema.cpp @@ -33,9 +33,6 @@ using namespace IfcParse; declaration* IFC4_types[1173] = {nullptr}; -const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"PLANE_SURF"s,"CYLINDRICAL_SURF"s,"CONICAL_SURF"s,"SPHERICAL_SURF"s,"TOROIDAL_SURF"s,"SURF_OF_REVOLUTION"s,"RULED_SURF"s,"GENERALISED_CONE"s,"QUADRIC_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"HOLLOWCORE"s,"LINTEL"s,"SPANDREL"s,"T_BEAM"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"INCLUDES"s,"NOTINCLUDES"s,"INCLUDEDIN"s,"NOTINCLUDEDIN"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBuildingElementPartTypeEnum"s,"INSULATION"s,"PRECASTPANEL"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"PROVISIONFORVOID"s,"PROVISIONFORSPACE"s,"IfcBuildingSystemTypeEnum"s,"FENESTRATION"s,"FOUNDATION"s,"LOADBEARING"s,"OUTERSHELL"s,"SHADING"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"IfcCableFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"TRANSITION"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CORESEGMENT"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PILASTER"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"COMPUTER"s,"GATEWAY"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"PRINTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"MULTIPOSITION"s,"TWOPOSITION"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"MOLDING"s,"SKIRTINGBOARD"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BRACKET"s,"SHOE"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"FIXEDPANEL"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoorTypeEnum"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"IfcDoorTypeOperationEnum"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERHEATER"s,"FREESTANDINGWATERCOOLER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"CONSUMERUNIT"s,"DISTRIBUTIONBOARD"s,"MOTORCONTROLCENTRE"s,"SWITCHBOARD"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"GIRDER"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"TRUSS"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTRULE"s,"EVENTMESSAGE"s,"EVENTTIME"s,"EVENTCOMPLEX"s,"IfcEventTypeEnum"s,"STARTEVENT"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_WATER"s,"EXTERNAL_FIRE"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"CHAIR"s,"TABLE"s,"DESK"s,"BED"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"IfcGeographicElementTypeEnum"s,"TERRAIN"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"RADIAL"s,"TRIANGULAR"s,"IRREGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"UNIFORM_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"PIECEWISE_BEZIER_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"LOGICALXOR"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RIVET"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNonNegativeLengthMeasure"s,"IfcNullStyle"s,"NULL"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"DATAOUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"DRIVEN"s,"JETGROUTING"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"CULVERT"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTRONIC"s,"ELECTROMAGNETIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"CIRCUITBREAKER"s,"EARTHLEAKAGECIRCUITBREAKER"s,"EARTHINGSWITCH"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"GUARDRAIL"s,"BALUSTRADE"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"DAILY"s,"WEEKLY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"ANCHORING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"COSENSOR"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"WINDSENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcShadingDeviceTypeEnum"s,"JALOUSIE"s,"SHUTTER"s,"AWNING"s,"IfcShearModulusMeasure"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_SINGLEVALUE"s,"P_ENUMERATEDVALUE"s,"P_BOUNDEDVALUE"s,"P_LISTVALUE"s,"P_TABLEVALUE"s,"P_REFERENCEVALUE"s,"Q_LENGTH"s,"Q_AREA"s,"Q_VOLUME"s,"Q_COUNT"s,"Q_WEIGHT"s,"Q_TIME"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"SPACE"s,"PARKING"s,"GFA"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"OCCUPANCY"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"POLYGONAL"s,"EQUIDISTANT"s,"SINUS"s,"PARABOLA"s,"DISCRETE"s,"IfcStructuralCurveMemberTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"MARK"s,"TAG"s,"TREATMENT"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"WORKSURFACE"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"PRESSUREVESSEL"s,"STORAGE"s,"VESSEL"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"COUPLER"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"CRANEWAY"s,"LIFTINGGEAR"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"HUMIDISTAT"s,"THERMOSTAT"s,"WEATHERSTATION"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"DEHUMIDIFIER"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"IfcVoidingFeatureTypeEnum"s,"CUTOUT"s,"NOTCH"s,"HOLE"s,"MITER"s,"CHAMFER"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"SOLIDWALL"s,"STANDARD"s,"ELEMENTEDWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWindowTypeEnum"s,"WINDOW"s,"SKYLIGHT"s,"LIGHTDOME"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcPresentationStyleAssignment"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcDerivedMeasureValue"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcStyleAssignmentSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcPresentationStyleSelect"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcDirection"s,"IfcDoorStyle"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcToroidalSurface"s,"IfcTransportElementType"s,"IfcTriangulatedFaceSet"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuilding"s,"IfcBuildingElementType"s,"IfcBuildingStorey"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCylindricalSurface"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGrid"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMotorConnectionType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOpeningStandardCase"s,"IfcOutletType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailingType"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAggregates"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcShadingDeviceType"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonType"s,"IfcTransformerType"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVirtualElement"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBuildingElement"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxy"s,"IfcBuildingElementProxyType"s,"IfcBuildingSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcColumnStandardCase"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDoorStandardCase"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcLamp"s,"IfcLightFixture"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMemberStandardCase"s,"IfcMotorConnection"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcPlateStandardCase"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSlab"s,"IfcSlabElementedCase"s,"IfcSlabStandardCase"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTransformer"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallElementedCase"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcWindowStandardCase"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBeamStandardCase"s,"IfcBoiler"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"Radius"s,"Source"s,"Edition"s,"EditionDate"s,"Location"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"Segments"s,"Transition"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"FlowDirection"s,"SystemType"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"Tag"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"ModelorDraughting"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"Directrix"s,"StartParam"s,"EndParam"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"PlacementRelTo"s,"RelativePlacement"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"Expression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"Distance"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Height"s,"ColourComponents"s,"Pixel"s,"Placement"s,"SizeInX"s,"SizeInY"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Closed"s,"Faces"s,"PnIndex"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"Styles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"ProxyType"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"ConnectionGeometry"s,"RelatingElement"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceType"s,"ImpliedOrder"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"SpineCurve"s,"CrossSections"s,"CrossSectionPositions"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"Vertices"s,"TexCoordsList"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"Start"s,"Finish"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"UsingCurves"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"ReferencedInStructures"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ToFaceSet"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"ReferencedByPlacements"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"HasColours"s,"HasTextures"s,"Types"s,"IFC4"s}; - - class IFC4_instance_factory : public IfcParse::instance_factory { virtual IfcUtil::IfcBaseClass* operator()(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) const { switch(decl->index_in_schema()) { @@ -1159,6 +1156,9 @@ class IFC4_instance_factory : public IfcParse::instance_factory { }; IfcParse::schema_definition* IFC4_populate_schema() { + +const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"PLANE_SURF"s,"CYLINDRICAL_SURF"s,"CONICAL_SURF"s,"SPHERICAL_SURF"s,"TOROIDAL_SURF"s,"SURF_OF_REVOLUTION"s,"RULED_SURF"s,"GENERALISED_CONE"s,"QUADRIC_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"HOLLOWCORE"s,"LINTEL"s,"SPANDREL"s,"T_BEAM"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"INCLUDES"s,"NOTINCLUDES"s,"INCLUDEDIN"s,"NOTINCLUDEDIN"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBuildingElementPartTypeEnum"s,"INSULATION"s,"PRECASTPANEL"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"PROVISIONFORVOID"s,"PROVISIONFORSPACE"s,"IfcBuildingSystemTypeEnum"s,"FENESTRATION"s,"FOUNDATION"s,"LOADBEARING"s,"OUTERSHELL"s,"SHADING"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"IfcCableFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"TRANSITION"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CORESEGMENT"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PILASTER"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"COMPUTER"s,"GATEWAY"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"PRINTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"MULTIPOSITION"s,"TWOPOSITION"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"MOLDING"s,"SKIRTINGBOARD"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BRACKET"s,"SHOE"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"FIXEDPANEL"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoorTypeEnum"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"IfcDoorTypeOperationEnum"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERHEATER"s,"FREESTANDINGWATERCOOLER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"CONSUMERUNIT"s,"DISTRIBUTIONBOARD"s,"MOTORCONTROLCENTRE"s,"SWITCHBOARD"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"GIRDER"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"TRUSS"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTRULE"s,"EVENTMESSAGE"s,"EVENTTIME"s,"EVENTCOMPLEX"s,"IfcEventTypeEnum"s,"STARTEVENT"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_WATER"s,"EXTERNAL_FIRE"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"CHAIR"s,"TABLE"s,"DESK"s,"BED"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"IfcGeographicElementTypeEnum"s,"TERRAIN"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"RADIAL"s,"TRIANGULAR"s,"IRREGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"UNIFORM_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"PIECEWISE_BEZIER_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"LOGICALXOR"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RIVET"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNonNegativeLengthMeasure"s,"IfcNullStyle"s,"NULL"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"DATAOUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"DRIVEN"s,"JETGROUTING"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"CULVERT"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTRONIC"s,"ELECTROMAGNETIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"CIRCUITBREAKER"s,"EARTHLEAKAGECIRCUITBREAKER"s,"EARTHINGSWITCH"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"GUARDRAIL"s,"BALUSTRADE"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"DAILY"s,"WEEKLY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"ANCHORING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"COSENSOR"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"WINDSENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcShadingDeviceTypeEnum"s,"JALOUSIE"s,"SHUTTER"s,"AWNING"s,"IfcShearModulusMeasure"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_SINGLEVALUE"s,"P_ENUMERATEDVALUE"s,"P_BOUNDEDVALUE"s,"P_LISTVALUE"s,"P_TABLEVALUE"s,"P_REFERENCEVALUE"s,"Q_LENGTH"s,"Q_AREA"s,"Q_VOLUME"s,"Q_COUNT"s,"Q_WEIGHT"s,"Q_TIME"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"SPACE"s,"PARKING"s,"GFA"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"OCCUPANCY"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"POLYGONAL"s,"EQUIDISTANT"s,"SINUS"s,"PARABOLA"s,"DISCRETE"s,"IfcStructuralCurveMemberTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"MARK"s,"TAG"s,"TREATMENT"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"WORKSURFACE"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"PRESSUREVESSEL"s,"STORAGE"s,"VESSEL"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"COUPLER"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"CRANEWAY"s,"LIFTINGGEAR"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"HUMIDISTAT"s,"THERMOSTAT"s,"WEATHERSTATION"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"DEHUMIDIFIER"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"IfcVoidingFeatureTypeEnum"s,"CUTOUT"s,"NOTCH"s,"HOLE"s,"MITER"s,"CHAMFER"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"SOLIDWALL"s,"STANDARD"s,"ELEMENTEDWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWindowTypeEnum"s,"WINDOW"s,"SKYLIGHT"s,"LIGHTDOME"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcPresentationStyleAssignment"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcDerivedMeasureValue"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcStyleAssignmentSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcPresentationStyleSelect"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcDirection"s,"IfcDoorStyle"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcToroidalSurface"s,"IfcTransportElementType"s,"IfcTriangulatedFaceSet"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuilding"s,"IfcBuildingElementType"s,"IfcBuildingStorey"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCylindricalSurface"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGrid"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMotorConnectionType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOpeningStandardCase"s,"IfcOutletType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailingType"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAggregates"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcShadingDeviceType"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonType"s,"IfcTransformerType"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVirtualElement"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBuildingElement"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxy"s,"IfcBuildingElementProxyType"s,"IfcBuildingSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcColumnStandardCase"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDoorStandardCase"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcLamp"s,"IfcLightFixture"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMemberStandardCase"s,"IfcMotorConnection"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcPlateStandardCase"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSlab"s,"IfcSlabElementedCase"s,"IfcSlabStandardCase"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTransformer"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallElementedCase"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcWindowStandardCase"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBeamStandardCase"s,"IfcBoiler"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"Radius"s,"Source"s,"Edition"s,"EditionDate"s,"Location"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"Segments"s,"Transition"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"FlowDirection"s,"SystemType"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"Tag"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"ModelorDraughting"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"Directrix"s,"StartParam"s,"EndParam"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"PlacementRelTo"s,"RelativePlacement"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"Expression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"Distance"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Height"s,"ColourComponents"s,"Pixel"s,"Placement"s,"SizeInX"s,"SizeInY"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Closed"s,"Faces"s,"PnIndex"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"Styles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"ProxyType"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"ConnectionGeometry"s,"RelatingElement"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceType"s,"ImpliedOrder"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"SpineCurve"s,"CrossSections"s,"CrossSectionPositions"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"Vertices"s,"TexCoordsList"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"Start"s,"Finish"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"UsingCurves"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"ReferencedInStructures"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ToFaceSet"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"ReferencedByPlacements"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"HasColours"s,"HasTextures"s,"Types"s,"IFC4"s}; + IFC4_types[0] = new type_declaration(strings[0], 0, new simple_type(simple_type::real_type)); IFC4_types[1] = new type_declaration(strings[1], 1, new simple_type(simple_type::real_type)); IFC4_types[3] = new enumeration_type(strings[2], 3, {strings[3],strings[4],strings[5],strings[6],strings[7],strings[8],strings[9]}); diff --git a/src/ifcparse/Ifc4x1-schema.cpp b/src/ifcparse/Ifc4x1-schema.cpp index c2c19eb289..9b00b664f8 100644 --- a/src/ifcparse/Ifc4x1-schema.cpp +++ b/src/ifcparse/Ifc4x1-schema.cpp @@ -33,9 +33,6 @@ using namespace IfcParse; declaration* IFC4X1_types[1201] = {nullptr}; -const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"IfcAlignmentTypeEnum"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"PLANE_SURF"s,"CYLINDRICAL_SURF"s,"CONICAL_SURF"s,"SPHERICAL_SURF"s,"TOROIDAL_SURF"s,"SURF_OF_REVOLUTION"s,"RULED_SURF"s,"GENERALISED_CONE"s,"QUADRIC_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"HOLLOWCORE"s,"LINTEL"s,"SPANDREL"s,"T_BEAM"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"INCLUDES"s,"NOTINCLUDES"s,"INCLUDEDIN"s,"NOTINCLUDEDIN"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBuildingElementPartTypeEnum"s,"INSULATION"s,"PRECASTPANEL"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"PROVISIONFORVOID"s,"PROVISIONFORSPACE"s,"IfcBuildingSystemTypeEnum"s,"FENESTRATION"s,"FOUNDATION"s,"LOADBEARING"s,"OUTERSHELL"s,"SHADING"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"IfcCableFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"TRANSITION"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CORESEGMENT"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PILASTER"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"COMPUTER"s,"GATEWAY"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"PRINTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"MULTIPOSITION"s,"TWOPOSITION"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"MOLDING"s,"SKIRTINGBOARD"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BRACKET"s,"SHOE"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"FIXEDPANEL"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoorTypeEnum"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"IfcDoorTypeOperationEnum"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERHEATER"s,"FREESTANDINGWATERCOOLER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"CONSUMERUNIT"s,"DISTRIBUTIONBOARD"s,"MOTORCONTROLCENTRE"s,"SWITCHBOARD"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"GIRDER"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"TRUSS"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTRULE"s,"EVENTMESSAGE"s,"EVENTTIME"s,"EVENTCOMPLEX"s,"IfcEventTypeEnum"s,"STARTEVENT"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_WATER"s,"EXTERNAL_FIRE"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"CHAIR"s,"TABLE"s,"DESK"s,"BED"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"IfcGeographicElementTypeEnum"s,"TERRAIN"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"RADIAL"s,"TRIANGULAR"s,"IRREGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"UNIFORM_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"PIECEWISE_BEZIER_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"LOGICALXOR"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RIVET"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNonNegativeLengthMeasure"s,"IfcNullStyle"s,"NULL"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"DATAOUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"DRIVEN"s,"JETGROUTING"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"CULVERT"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTRONIC"s,"ELECTROMAGNETIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"CIRCUITBREAKER"s,"EARTHLEAKAGECIRCUITBREAKER"s,"EARTHINGSWITCH"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"GUARDRAIL"s,"BALUSTRADE"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"DAILY"s,"WEEKLY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReferentTypeEnum"s,"KILOPOINT"s,"MILEPOINT"s,"STATION"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"ANCHORING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"COSENSOR"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"WINDSENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcShadingDeviceTypeEnum"s,"JALOUSIE"s,"SHUTTER"s,"AWNING"s,"IfcShearModulusMeasure"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_SINGLEVALUE"s,"P_ENUMERATEDVALUE"s,"P_BOUNDEDVALUE"s,"P_LISTVALUE"s,"P_TABLEVALUE"s,"P_REFERENCEVALUE"s,"Q_LENGTH"s,"Q_AREA"s,"Q_VOLUME"s,"Q_COUNT"s,"Q_WEIGHT"s,"Q_TIME"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"SPACE"s,"PARKING"s,"GFA"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"OCCUPANCY"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"POLYGONAL"s,"EQUIDISTANT"s,"SINUS"s,"PARABOLA"s,"DISCRETE"s,"IfcStructuralCurveMemberTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"MARK"s,"TAG"s,"TREATMENT"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"WORKSURFACE"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"PRESSUREVESSEL"s,"STORAGE"s,"VESSEL"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"COUPLER"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTransitionCurveType"s,"BIQUADRATICPARABOLA"s,"BLOSSCURVE"s,"CLOTHOIDCURVE"s,"COSINECURVE"s,"CUBICPARABOLA"s,"SINECURVE"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"CRANEWAY"s,"LIFTINGGEAR"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"HUMIDISTAT"s,"THERMOSTAT"s,"WEATHERSTATION"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"DEHUMIDIFIER"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"IfcVoidingFeatureTypeEnum"s,"CUTOUT"s,"NOTCH"s,"HOLE"s,"MITER"s,"CHAMFER"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"SOLIDWALL"s,"STANDARD"s,"ELEMENTEDWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWindowTypeEnum"s,"WINDOW"s,"SKYLIGHT"s,"LIGHTDOME"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcPresentationStyleAssignment"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcDerivedMeasureValue"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcStyleAssignmentSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLinearPlacement"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientationExpression"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcPresentationStyleSelect"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAlignment2DHorizontal"s,"IfcAlignment2DSegment"s,"IfcAlignment2DVertical"s,"IfcAlignment2DVerticalSegment"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcDirection"s,"IfcDistanceExpression"s,"IfcDoorStyle"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcOffsetCurveByDistances"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSectionedSolid"s,"IfcSectionedSolidHorizontal"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcToroidalSurface"s,"IfcTransportElementType"s,"IfcTriangulatedFaceSet"s,"IfcTriangulatedIrregularNetwork"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAlignment2DHorizontalSegment"s,"IfcAlignment2DVerSegCircularArc"s,"IfcAlignment2DVerSegLine"s,"IfcAlignment2DVerSegParabolicArc"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuilding"s,"IfcBuildingElementType"s,"IfcBuildingStorey"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCurveSegment2D"s,"IfcCylindricalSurface"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLineSegment2D"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMotorConnectionType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOpeningStandardCase"s,"IfcOutletType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcPositioningElement"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailingType"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReferent"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAggregates"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcShadingDeviceType"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonType"s,"IfcTransformerType"s,"IfcTransitionCurveSegment2D"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVirtualElement"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAlignmentCurve"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBuildingElement"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxy"s,"IfcBuildingElementProxyType"s,"IfcBuildingSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCircularArcSegment2D"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcColumnStandardCase"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDoorStandardCase"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcGrid"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcLamp"s,"IfcLightFixture"s,"IfcLinearPositioningElement"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMemberStandardCase"s,"IfcMotorConnection"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcPlateStandardCase"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSlab"s,"IfcSlabElementedCase"s,"IfcSlabStandardCase"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTransformer"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallElementedCase"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcWindowStandardCase"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAlignment"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBeamStandardCase"s,"IfcBoiler"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"StartDistAlong"s,"Segments"s,"CurveGeometry"s,"TangentialContinuity"s,"StartTag"s,"EndTag"s,"Radius"s,"IsConvex"s,"ParabolaConstant"s,"HorizontalLength"s,"StartHeight"s,"StartGradient"s,"Horizontal"s,"Vertical"s,"Tag"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"TagList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"IsCCW"s,"Source"s,"Edition"s,"EditionDate"s,"Location"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"Transition"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"StartPoint"s,"StartDirection"s,"SegmentLength"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"DistanceAlong"s,"OffsetLateral"s,"OffsetVertical"s,"OffsetLongitudinal"s,"AlongHorizontal"s,"FlowDirection"s,"SystemType"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"ModelorDraughting"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"Directrix"s,"StartParam"s,"EndParam"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"PlacementRelTo"s,"Distance"s,"CartesianPosition"s,"RelativePlacement"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"Expression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"LateralAxisDirection"s,"VerticalAxisDirection"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Height"s,"ColourComponents"s,"Pixel"s,"Placement"s,"SizeInX"s,"SizeInY"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Closed"s,"Faces"s,"PnIndex"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"Styles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"ProxyType"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"RestartDistance"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"ConnectionGeometry"s,"RelatingElement"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceType"s,"ImpliedOrder"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"CrossSections"s,"CrossSectionPositions"s,"FixedAxisVertical"s,"SpineCurve"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"Vertices"s,"TexCoordsList"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"StartRadius"s,"EndRadius"s,"IsStartRadiusCCW"s,"IsEndRadiusCCW"s,"TransitionCurveType"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Flags"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"Start"s,"Finish"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ToAlignmentCurve"s,"ToHorizontal"s,"ToVertical"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"UsingCurves"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"ReferencedInStructures"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ToFaceSet"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"ReferencedByPlacements"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"HasColours"s,"HasTextures"s,"Types"s,"IFC4X1"s}; - - class IFC4X1_instance_factory : public IfcParse::instance_factory { virtual IfcUtil::IfcBaseClass* operator()(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) const { switch(decl->index_in_schema()) { @@ -1187,6 +1184,9 @@ class IFC4X1_instance_factory : public IfcParse::instance_factory { }; IfcParse::schema_definition* IFC4X1_populate_schema() { + +const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"IfcAlignmentTypeEnum"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"PLANE_SURF"s,"CYLINDRICAL_SURF"s,"CONICAL_SURF"s,"SPHERICAL_SURF"s,"TOROIDAL_SURF"s,"SURF_OF_REVOLUTION"s,"RULED_SURF"s,"GENERALISED_CONE"s,"QUADRIC_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"HOLLOWCORE"s,"LINTEL"s,"SPANDREL"s,"T_BEAM"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"INCLUDES"s,"NOTINCLUDES"s,"INCLUDEDIN"s,"NOTINCLUDEDIN"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBuildingElementPartTypeEnum"s,"INSULATION"s,"PRECASTPANEL"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"PROVISIONFORVOID"s,"PROVISIONFORSPACE"s,"IfcBuildingSystemTypeEnum"s,"FENESTRATION"s,"FOUNDATION"s,"LOADBEARING"s,"OUTERSHELL"s,"SHADING"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"IfcCableFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"TRANSITION"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CORESEGMENT"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PILASTER"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"COMPUTER"s,"GATEWAY"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"PRINTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"MULTIPOSITION"s,"TWOPOSITION"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"MOLDING"s,"SKIRTINGBOARD"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BRACKET"s,"SHOE"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"FIXEDPANEL"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoorTypeEnum"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"IfcDoorTypeOperationEnum"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERHEATER"s,"FREESTANDINGWATERCOOLER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"CONSUMERUNIT"s,"DISTRIBUTIONBOARD"s,"MOTORCONTROLCENTRE"s,"SWITCHBOARD"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"GIRDER"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"TRUSS"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTRULE"s,"EVENTMESSAGE"s,"EVENTTIME"s,"EVENTCOMPLEX"s,"IfcEventTypeEnum"s,"STARTEVENT"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_WATER"s,"EXTERNAL_FIRE"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"CHAIR"s,"TABLE"s,"DESK"s,"BED"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"IfcGeographicElementTypeEnum"s,"TERRAIN"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"RADIAL"s,"TRIANGULAR"s,"IRREGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"UNIFORM_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"PIECEWISE_BEZIER_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"LOGICALXOR"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RIVET"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNonNegativeLengthMeasure"s,"IfcNullStyle"s,"NULL"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"DATAOUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"DRIVEN"s,"JETGROUTING"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"CULVERT"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTRONIC"s,"ELECTROMAGNETIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"CIRCUITBREAKER"s,"EARTHLEAKAGECIRCUITBREAKER"s,"EARTHINGSWITCH"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"GUARDRAIL"s,"BALUSTRADE"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"DAILY"s,"WEEKLY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReferentTypeEnum"s,"KILOPOINT"s,"MILEPOINT"s,"STATION"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"ANCHORING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"COSENSOR"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"WINDSENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcShadingDeviceTypeEnum"s,"JALOUSIE"s,"SHUTTER"s,"AWNING"s,"IfcShearModulusMeasure"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_SINGLEVALUE"s,"P_ENUMERATEDVALUE"s,"P_BOUNDEDVALUE"s,"P_LISTVALUE"s,"P_TABLEVALUE"s,"P_REFERENCEVALUE"s,"Q_LENGTH"s,"Q_AREA"s,"Q_VOLUME"s,"Q_COUNT"s,"Q_WEIGHT"s,"Q_TIME"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"SPACE"s,"PARKING"s,"GFA"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"OCCUPANCY"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"POLYGONAL"s,"EQUIDISTANT"s,"SINUS"s,"PARABOLA"s,"DISCRETE"s,"IfcStructuralCurveMemberTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"MARK"s,"TAG"s,"TREATMENT"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"WORKSURFACE"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"PRESSUREVESSEL"s,"STORAGE"s,"VESSEL"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"COUPLER"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTransitionCurveType"s,"BIQUADRATICPARABOLA"s,"BLOSSCURVE"s,"CLOTHOIDCURVE"s,"COSINECURVE"s,"CUBICPARABOLA"s,"SINECURVE"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"CRANEWAY"s,"LIFTINGGEAR"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"HUMIDISTAT"s,"THERMOSTAT"s,"WEATHERSTATION"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"DEHUMIDIFIER"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"IfcVoidingFeatureTypeEnum"s,"CUTOUT"s,"NOTCH"s,"HOLE"s,"MITER"s,"CHAMFER"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"SOLIDWALL"s,"STANDARD"s,"ELEMENTEDWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWindowTypeEnum"s,"WINDOW"s,"SKYLIGHT"s,"LIGHTDOME"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcPresentationStyleAssignment"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcDerivedMeasureValue"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcStyleAssignmentSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLinearPlacement"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientationExpression"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcPresentationStyleSelect"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAlignment2DHorizontal"s,"IfcAlignment2DSegment"s,"IfcAlignment2DVertical"s,"IfcAlignment2DVerticalSegment"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcDirection"s,"IfcDistanceExpression"s,"IfcDoorStyle"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcOffsetCurveByDistances"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSectionedSolid"s,"IfcSectionedSolidHorizontal"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcToroidalSurface"s,"IfcTransportElementType"s,"IfcTriangulatedFaceSet"s,"IfcTriangulatedIrregularNetwork"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAlignment2DHorizontalSegment"s,"IfcAlignment2DVerSegCircularArc"s,"IfcAlignment2DVerSegLine"s,"IfcAlignment2DVerSegParabolicArc"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuilding"s,"IfcBuildingElementType"s,"IfcBuildingStorey"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCurveSegment2D"s,"IfcCylindricalSurface"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLineSegment2D"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMotorConnectionType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOpeningStandardCase"s,"IfcOutletType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcPositioningElement"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailingType"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReferent"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAggregates"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcShadingDeviceType"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonType"s,"IfcTransformerType"s,"IfcTransitionCurveSegment2D"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVirtualElement"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAlignmentCurve"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBuildingElement"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxy"s,"IfcBuildingElementProxyType"s,"IfcBuildingSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCircularArcSegment2D"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcColumnStandardCase"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDoorStandardCase"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcGrid"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcLamp"s,"IfcLightFixture"s,"IfcLinearPositioningElement"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMemberStandardCase"s,"IfcMotorConnection"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcPlateStandardCase"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSlab"s,"IfcSlabElementedCase"s,"IfcSlabStandardCase"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTransformer"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallElementedCase"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcWindowStandardCase"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAlignment"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBeamStandardCase"s,"IfcBoiler"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"StartDistAlong"s,"Segments"s,"CurveGeometry"s,"TangentialContinuity"s,"StartTag"s,"EndTag"s,"Radius"s,"IsConvex"s,"ParabolaConstant"s,"HorizontalLength"s,"StartHeight"s,"StartGradient"s,"Horizontal"s,"Vertical"s,"Tag"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"TagList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"IsCCW"s,"Source"s,"Edition"s,"EditionDate"s,"Location"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"Transition"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"StartPoint"s,"StartDirection"s,"SegmentLength"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"DistanceAlong"s,"OffsetLateral"s,"OffsetVertical"s,"OffsetLongitudinal"s,"AlongHorizontal"s,"FlowDirection"s,"SystemType"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"ModelorDraughting"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"Directrix"s,"StartParam"s,"EndParam"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"PlacementRelTo"s,"Distance"s,"CartesianPosition"s,"RelativePlacement"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"Expression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"LateralAxisDirection"s,"VerticalAxisDirection"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Height"s,"ColourComponents"s,"Pixel"s,"Placement"s,"SizeInX"s,"SizeInY"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Closed"s,"Faces"s,"PnIndex"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"Styles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"ProxyType"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"RestartDistance"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"ConnectionGeometry"s,"RelatingElement"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceType"s,"ImpliedOrder"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"CrossSections"s,"CrossSectionPositions"s,"FixedAxisVertical"s,"SpineCurve"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"Vertices"s,"TexCoordsList"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"StartRadius"s,"EndRadius"s,"IsStartRadiusCCW"s,"IsEndRadiusCCW"s,"TransitionCurveType"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Flags"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"Start"s,"Finish"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ToAlignmentCurve"s,"ToHorizontal"s,"ToVertical"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"UsingCurves"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"ReferencedInStructures"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ToFaceSet"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"ReferencedByPlacements"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"HasColours"s,"HasTextures"s,"Types"s,"IFC4X1"s}; + IFC4X1_types[0] = new type_declaration(strings[0], 0, new simple_type(simple_type::real_type)); IFC4X1_types[1] = new type_declaration(strings[1], 1, new simple_type(simple_type::real_type)); IFC4X1_types[3] = new enumeration_type(strings[2], 3, {strings[3],strings[4],strings[5],strings[6],strings[7],strings[8],strings[9]}); diff --git a/src/ifcparse/Ifc4x2-schema.cpp b/src/ifcparse/Ifc4x2-schema.cpp index 36ea64bd6a..d00a1e7ebf 100644 --- a/src/ifcparse/Ifc4x2-schema.cpp +++ b/src/ifcparse/Ifc4x2-schema.cpp @@ -33,9 +33,6 @@ using namespace IfcParse; declaration* IFC4X2_types[1223] = {nullptr}; -const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"IfcAlignmentTypeEnum"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"PLANE_SURF"s,"CYLINDRICAL_SURF"s,"CONICAL_SURF"s,"SPHERICAL_SURF"s,"TOROIDAL_SURF"s,"SURF_OF_REVOLUTION"s,"RULED_SURF"s,"GENERALISED_CONE"s,"QUADRIC_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"HOLLOWCORE"s,"LINTEL"s,"SPANDREL"s,"T_BEAM"s,"GIRDER_SEGMENT"s,"DIAPHRAGM"s,"PIERCAP"s,"HATSTONE"s,"CORNICE"s,"EDGEBEAM"s,"IfcBearingTypeDisplacementEnum"s,"FIXED_MOVEMENT"s,"GUIDED_LONGITUDINAL"s,"GUIDED_TRANSVERSAL"s,"FREE_MOVEMENT"s,"IfcBearingTypeEnum"s,"CYLINDRICAL"s,"SPHERICAL"s,"ELASTOMERIC"s,"POT"s,"GUIDE"s,"ROCKER"s,"ROLLER"s,"DISK"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"INCLUDES"s,"NOTINCLUDES"s,"INCLUDEDIN"s,"NOTINCLUDEDIN"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBridgePartTypeEnum"s,"ABUTMENT"s,"DECK"s,"DECK_SEGMENT"s,"FOUNDATION"s,"PIER"s,"PIER_SEGMENT"s,"PYLON"s,"SUBSTRUCTURE"s,"SUPERSTRUCTURE"s,"SURFACESTRUCTURE"s,"IfcBridgeTypeEnum"s,"ARCHED"s,"CABLE_STAYED"s,"CANTILEVER"s,"CULVERT"s,"FRAMEWORK"s,"GIRDER"s,"SUSPENSION"s,"TRUSS"s,"IfcBuildingElementPartTypeEnum"s,"INSULATION"s,"PRECASTPANEL"s,"APRON"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"PROVISIONFORVOID"s,"PROVISIONFORSPACE"s,"IfcBuildingSystemTypeEnum"s,"FENESTRATION"s,"LOADBEARING"s,"OUTERSHELL"s,"SHADING"s,"REINFORCING"s,"PRESTRESSING"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"IfcCableFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"TRANSITION"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CORESEGMENT"s,"IfcCaissonFoundationTypeEnum"s,"WELL"s,"CAISSON"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PILASTER"s,"PIERSTEM"s,"PIERSTEM_SEGMENT"s,"STANDCOLUMN"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"COMPUTER"s,"GATEWAY"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"PRINTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"MULTIPOSITION"s,"TWOPOSITION"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"MOLDING"s,"SKIRTINGBOARD"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"COPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BRACKET"s,"SHOE"s,"EXPANSION_JOINT_DEVICE"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"FIXEDPANEL"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoorTypeEnum"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"IfcDoorTypeOperationEnum"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERHEATER"s,"FREESTANDINGWATERCOOLER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"CONSUMERUNIT"s,"DISTRIBUTIONBOARD"s,"MOTORCONTROLCENTRE"s,"SWITCHBOARD"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"CROSS_BRACING"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTRULE"s,"EVENTMESSAGE"s,"EVENTTIME"s,"EVENTCOMPLEX"s,"IfcEventTypeEnum"s,"STARTEVENT"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_WATER"s,"EXTERNAL_FIRE"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"CHAIR"s,"TABLE"s,"DESK"s,"BED"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"IfcGeographicElementTypeEnum"s,"TERRAIN"s,"SOIL_BORING_POINT"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"RADIAL"s,"TRIANGULAR"s,"IRREGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"UNIFORM_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"PIECEWISE_BEZIER_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"LOGICALXOR"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RIVET"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"COUPLER"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"STIFFENING_RIB"s,"ARCH_SEGMENT"s,"SUSPENSION_CABLE"s,"SUSPENDER"s,"STAY_CABLE"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNonNegativeLengthMeasure"s,"IfcNullStyle"s,"NULL"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"DATAOUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"DRIVEN"s,"JETGROUTING"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"FLANGE_PLATE"s,"WEB_PLATE"s,"STIFFENER_PLATE"s,"GUSSET_PLATE"s,"COVER_PLATE"s,"SPLICE_PLATE"s,"BASE_PLATE"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"BLISTER"s,"DEVIATOR"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTRONIC"s,"ELECTROMAGNETIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"CIRCUITBREAKER"s,"EARTHLEAKAGECIRCUITBREAKER"s,"EARTHINGSWITCH"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"GUARDRAIL"s,"BALUSTRADE"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"DAILY"s,"WEEKLY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReferentTypeEnum"s,"KILOPOINT"s,"MILEPOINT"s,"STATION"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"ANCHORING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"SPACEBAR"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"COSENSOR"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"WINDSENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcShadingDeviceTypeEnum"s,"JALOUSIE"s,"SHUTTER"s,"AWNING"s,"IfcShearModulusMeasure"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_SINGLEVALUE"s,"P_ENUMERATEDVALUE"s,"P_BOUNDEDVALUE"s,"P_LISTVALUE"s,"P_TABLEVALUE"s,"P_REFERENCEVALUE"s,"Q_LENGTH"s,"Q_AREA"s,"Q_VOLUME"s,"Q_COUNT"s,"Q_WEIGHT"s,"Q_TIME"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"APPROACH_SLAB"s,"WEARING"s,"SIDEWALK"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"SPACE"s,"PARKING"s,"GFA"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"OCCUPANCY"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"POLYGONAL"s,"EQUIDISTANT"s,"SINUS"s,"PARABOLA"s,"DISCRETE"s,"IfcStructuralCurveMemberTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"MARK"s,"TAG"s,"TREATMENT"s,"DEFECT"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"WORKSURFACE"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"PRESSUREVESSEL"s,"STORAGE"s,"VESSEL"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonConduitTypeEnum"s,"GROUTING_DUCT"s,"TRUMPET"s,"DIABOLO"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTransitionCurveType"s,"BIQUADRATICPARABOLA"s,"BLOSSCURVE"s,"CLOTHOIDCURVE"s,"COSINECURVE"s,"CUBICPARABOLA"s,"SINECURVE"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"CRANEWAY"s,"LIFTINGGEAR"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"HUMIDISTAT"s,"THERMOSTAT"s,"WEATHERSTATION"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"DEHUMIDIFIER"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationDamperTypeEnum"s,"BENDING_YIELD"s,"SHEAR_YIELD"s,"AXIAL_YIELD"s,"VISCOUS"s,"RUBBER"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"BASE"s,"IfcVoidingFeatureTypeEnum"s,"CUTOUT"s,"NOTCH"s,"HOLE"s,"MITER"s,"CHAMFER"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"SOLIDWALL"s,"STANDARD"s,"ELEMENTEDWALL"s,"RETAININGWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWindowTypeEnum"s,"WINDOW"s,"SKYLIGHT"s,"LIGHTDOME"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcPresentationStyleAssignment"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcDerivedMeasureValue"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcStyleAssignmentSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLinearPlacement"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientationExpression"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcPresentationStyleSelect"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAlignment2DHorizontal"s,"IfcAlignment2DSegment"s,"IfcAlignment2DVertical"s,"IfcAlignment2DVerticalSegment"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcDirection"s,"IfcDistanceExpression"s,"IfcDoorStyle"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcOffsetCurveByDistances"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelPositions"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSectionedSolid"s,"IfcSectionedSolidHorizontal"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcToroidalSurface"s,"IfcTransportElementType"s,"IfcTriangulatedFaceSet"s,"IfcTriangulatedIrregularNetwork"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAlignment2DHorizontalSegment"s,"IfcAlignment2DVerSegCircularArc"s,"IfcAlignment2DVerSegLine"s,"IfcAlignment2DVerSegParabolicArc"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuildingElementType"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCurveSegment2D"s,"IfcCylindricalSurface"s,"IfcDeepFoundationType"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFacility"s,"IfcFacilityPart"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLineSegment2D"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMotorConnectionType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOpeningStandardCase"s,"IfcOutletType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcPositioningElement"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailingType"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReferent"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAggregates"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcShadingDeviceType"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonConduit"s,"IfcTendonConduitType"s,"IfcTendonType"s,"IfcTransformerType"s,"IfcTransitionCurveSegment2D"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVibrationDamper"s,"IfcVibrationDamperType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVirtualElement"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAlignmentCurve"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBearingType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBridge"s,"IfcBridgePart"s,"IfcBuilding"s,"IfcBuildingElement"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxy"s,"IfcBuildingElementProxyType"s,"IfcBuildingStorey"s,"IfcBuildingSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcCaissonFoundationType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCircularArcSegment2D"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcColumnStandardCase"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDeepFoundation"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDoorStandardCase"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcGrid"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcLamp"s,"IfcLightFixture"s,"IfcLinearPositioningElement"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMemberStandardCase"s,"IfcMotorConnection"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcPlateStandardCase"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSlab"s,"IfcSlabElementedCase"s,"IfcSlabStandardCase"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTransformer"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallElementedCase"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcWindowStandardCase"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAlignment"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBeamStandardCase"s,"IfcBearing"s,"IfcBoiler"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcCaissonFoundation"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"StartDistAlong"s,"Segments"s,"CurveGeometry"s,"TangentialContinuity"s,"StartTag"s,"EndTag"s,"Radius"s,"IsConvex"s,"ParabolaConstant"s,"HorizontalLength"s,"StartHeight"s,"StartGradient"s,"Horizontal"s,"Vertical"s,"Tag"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"TagList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"IsCCW"s,"Source"s,"Edition"s,"EditionDate"s,"Location"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"Transition"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"StartPoint"s,"StartDirection"s,"SegmentLength"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"DistanceAlong"s,"OffsetLateral"s,"OffsetVertical"s,"OffsetLongitudinal"s,"AlongHorizontal"s,"FlowDirection"s,"SystemType"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"ModelorDraughting"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"Directrix"s,"StartParam"s,"EndParam"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"PlacementMeasuredAlong"s,"Distance"s,"CartesianPosition"s,"RelativePlacement"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"Expression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"PlacementRelTo"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"LateralAxisDirection"s,"VerticalAxisDirection"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Height"s,"ColourComponents"s,"Pixel"s,"Placement"s,"SizeInX"s,"SizeInY"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Closed"s,"Faces"s,"PnIndex"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"Styles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"ProxyType"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"RestartDistance"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"ConnectionGeometry"s,"RelatingElement"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceType"s,"ImpliedOrder"s,"RelatingPositioningElement"s,"RelatedProducts"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"CrossSections"s,"CrossSectionPositions"s,"FixedAxisVertical"s,"SpineCurve"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"Vertices"s,"TexCoordsList"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"StartRadius"s,"EndRadius"s,"IsStartRadiusCCW"s,"IsEndRadiusCCW"s,"TransitionCurveType"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Flags"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"Start"s,"Finish"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ToAlignmentCurve"s,"ToHorizontal"s,"ToVertical"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"PositioningElement"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"UsingCurves"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"ReferencedInStructures"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ToFaceSet"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"Positions"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"PositionedRelativeTo"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"HasColours"s,"HasTextures"s,"Types"s,"IFC4X2"s}; - - class IFC4X2_instance_factory : public IfcParse::instance_factory { virtual IfcUtil::IfcBaseClass* operator()(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) const { switch(decl->index_in_schema()) { @@ -1209,6 +1206,9 @@ class IFC4X2_instance_factory : public IfcParse::instance_factory { }; IfcParse::schema_definition* IFC4X2_populate_schema() { + +const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"IfcAlignmentTypeEnum"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"PLANE_SURF"s,"CYLINDRICAL_SURF"s,"CONICAL_SURF"s,"SPHERICAL_SURF"s,"TOROIDAL_SURF"s,"SURF_OF_REVOLUTION"s,"RULED_SURF"s,"GENERALISED_CONE"s,"QUADRIC_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"HOLLOWCORE"s,"LINTEL"s,"SPANDREL"s,"T_BEAM"s,"GIRDER_SEGMENT"s,"DIAPHRAGM"s,"PIERCAP"s,"HATSTONE"s,"CORNICE"s,"EDGEBEAM"s,"IfcBearingTypeDisplacementEnum"s,"FIXED_MOVEMENT"s,"GUIDED_LONGITUDINAL"s,"GUIDED_TRANSVERSAL"s,"FREE_MOVEMENT"s,"IfcBearingTypeEnum"s,"CYLINDRICAL"s,"SPHERICAL"s,"ELASTOMERIC"s,"POT"s,"GUIDE"s,"ROCKER"s,"ROLLER"s,"DISK"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"INCLUDES"s,"NOTINCLUDES"s,"INCLUDEDIN"s,"NOTINCLUDEDIN"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBridgePartTypeEnum"s,"ABUTMENT"s,"DECK"s,"DECK_SEGMENT"s,"FOUNDATION"s,"PIER"s,"PIER_SEGMENT"s,"PYLON"s,"SUBSTRUCTURE"s,"SUPERSTRUCTURE"s,"SURFACESTRUCTURE"s,"IfcBridgeTypeEnum"s,"ARCHED"s,"CABLE_STAYED"s,"CANTILEVER"s,"CULVERT"s,"FRAMEWORK"s,"GIRDER"s,"SUSPENSION"s,"TRUSS"s,"IfcBuildingElementPartTypeEnum"s,"INSULATION"s,"PRECASTPANEL"s,"APRON"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"PROVISIONFORVOID"s,"PROVISIONFORSPACE"s,"IfcBuildingSystemTypeEnum"s,"FENESTRATION"s,"LOADBEARING"s,"OUTERSHELL"s,"SHADING"s,"REINFORCING"s,"PRESTRESSING"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"IfcCableFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"TRANSITION"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CORESEGMENT"s,"IfcCaissonFoundationTypeEnum"s,"WELL"s,"CAISSON"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PILASTER"s,"PIERSTEM"s,"PIERSTEM_SEGMENT"s,"STANDCOLUMN"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"COMPUTER"s,"GATEWAY"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"PRINTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"MULTIPOSITION"s,"TWOPOSITION"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"MOLDING"s,"SKIRTINGBOARD"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"COPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BRACKET"s,"SHOE"s,"EXPANSION_JOINT_DEVICE"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"FIXEDPANEL"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoorTypeEnum"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"IfcDoorTypeOperationEnum"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERHEATER"s,"FREESTANDINGWATERCOOLER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"CONSUMERUNIT"s,"DISTRIBUTIONBOARD"s,"MOTORCONTROLCENTRE"s,"SWITCHBOARD"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"CROSS_BRACING"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTRULE"s,"EVENTMESSAGE"s,"EVENTTIME"s,"EVENTCOMPLEX"s,"IfcEventTypeEnum"s,"STARTEVENT"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_WATER"s,"EXTERNAL_FIRE"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"CHAIR"s,"TABLE"s,"DESK"s,"BED"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"IfcGeographicElementTypeEnum"s,"TERRAIN"s,"SOIL_BORING_POINT"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"RADIAL"s,"TRIANGULAR"s,"IRREGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"UNIFORM_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"PIECEWISE_BEZIER_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"LOGICALXOR"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RIVET"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"COUPLER"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"STIFFENING_RIB"s,"ARCH_SEGMENT"s,"SUSPENSION_CABLE"s,"SUSPENDER"s,"STAY_CABLE"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNonNegativeLengthMeasure"s,"IfcNullStyle"s,"NULL"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"DATAOUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"DRIVEN"s,"JETGROUTING"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"FLANGE_PLATE"s,"WEB_PLATE"s,"STIFFENER_PLATE"s,"GUSSET_PLATE"s,"COVER_PLATE"s,"SPLICE_PLATE"s,"BASE_PLATE"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"BLISTER"s,"DEVIATOR"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTRONIC"s,"ELECTROMAGNETIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"CIRCUITBREAKER"s,"EARTHLEAKAGECIRCUITBREAKER"s,"EARTHINGSWITCH"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"GUARDRAIL"s,"BALUSTRADE"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"DAILY"s,"WEEKLY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReferentTypeEnum"s,"KILOPOINT"s,"MILEPOINT"s,"STATION"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"ANCHORING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"SPACEBAR"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"COSENSOR"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"WINDSENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcShadingDeviceTypeEnum"s,"JALOUSIE"s,"SHUTTER"s,"AWNING"s,"IfcShearModulusMeasure"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_SINGLEVALUE"s,"P_ENUMERATEDVALUE"s,"P_BOUNDEDVALUE"s,"P_LISTVALUE"s,"P_TABLEVALUE"s,"P_REFERENCEVALUE"s,"Q_LENGTH"s,"Q_AREA"s,"Q_VOLUME"s,"Q_COUNT"s,"Q_WEIGHT"s,"Q_TIME"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"APPROACH_SLAB"s,"WEARING"s,"SIDEWALK"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"SPACE"s,"PARKING"s,"GFA"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"OCCUPANCY"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"POLYGONAL"s,"EQUIDISTANT"s,"SINUS"s,"PARABOLA"s,"DISCRETE"s,"IfcStructuralCurveMemberTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"MARK"s,"TAG"s,"TREATMENT"s,"DEFECT"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"WORKSURFACE"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"PRESSUREVESSEL"s,"STORAGE"s,"VESSEL"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonConduitTypeEnum"s,"GROUTING_DUCT"s,"TRUMPET"s,"DIABOLO"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTransitionCurveType"s,"BIQUADRATICPARABOLA"s,"BLOSSCURVE"s,"CLOTHOIDCURVE"s,"COSINECURVE"s,"CUBICPARABOLA"s,"SINECURVE"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"CRANEWAY"s,"LIFTINGGEAR"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"HUMIDISTAT"s,"THERMOSTAT"s,"WEATHERSTATION"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"DEHUMIDIFIER"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationDamperTypeEnum"s,"BENDING_YIELD"s,"SHEAR_YIELD"s,"AXIAL_YIELD"s,"VISCOUS"s,"RUBBER"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"BASE"s,"IfcVoidingFeatureTypeEnum"s,"CUTOUT"s,"NOTCH"s,"HOLE"s,"MITER"s,"CHAMFER"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"SOLIDWALL"s,"STANDARD"s,"ELEMENTEDWALL"s,"RETAININGWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWindowTypeEnum"s,"WINDOW"s,"SKYLIGHT"s,"LIGHTDOME"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcPresentationStyleAssignment"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcDerivedMeasureValue"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcStyleAssignmentSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLinearPlacement"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientationExpression"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcPresentationStyleSelect"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAlignment2DHorizontal"s,"IfcAlignment2DSegment"s,"IfcAlignment2DVertical"s,"IfcAlignment2DVerticalSegment"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcDirection"s,"IfcDistanceExpression"s,"IfcDoorStyle"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcOffsetCurveByDistances"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelPositions"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSectionedSolid"s,"IfcSectionedSolidHorizontal"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcToroidalSurface"s,"IfcTransportElementType"s,"IfcTriangulatedFaceSet"s,"IfcTriangulatedIrregularNetwork"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAlignment2DHorizontalSegment"s,"IfcAlignment2DVerSegCircularArc"s,"IfcAlignment2DVerSegLine"s,"IfcAlignment2DVerSegParabolicArc"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuildingElementType"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCurveSegment2D"s,"IfcCylindricalSurface"s,"IfcDeepFoundationType"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFacility"s,"IfcFacilityPart"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLineSegment2D"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMotorConnectionType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOpeningStandardCase"s,"IfcOutletType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcPositioningElement"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailingType"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReferent"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAggregates"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcShadingDeviceType"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonConduit"s,"IfcTendonConduitType"s,"IfcTendonType"s,"IfcTransformerType"s,"IfcTransitionCurveSegment2D"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVibrationDamper"s,"IfcVibrationDamperType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVirtualElement"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAlignmentCurve"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBearingType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBridge"s,"IfcBridgePart"s,"IfcBuilding"s,"IfcBuildingElement"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxy"s,"IfcBuildingElementProxyType"s,"IfcBuildingStorey"s,"IfcBuildingSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcCaissonFoundationType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCircularArcSegment2D"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcColumnStandardCase"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDeepFoundation"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDoorStandardCase"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcGrid"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcLamp"s,"IfcLightFixture"s,"IfcLinearPositioningElement"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMemberStandardCase"s,"IfcMotorConnection"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcPlateStandardCase"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSlab"s,"IfcSlabElementedCase"s,"IfcSlabStandardCase"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTransformer"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallElementedCase"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcWindowStandardCase"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAlignment"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBeamStandardCase"s,"IfcBearing"s,"IfcBoiler"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcCaissonFoundation"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"StartDistAlong"s,"Segments"s,"CurveGeometry"s,"TangentialContinuity"s,"StartTag"s,"EndTag"s,"Radius"s,"IsConvex"s,"ParabolaConstant"s,"HorizontalLength"s,"StartHeight"s,"StartGradient"s,"Horizontal"s,"Vertical"s,"Tag"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"TagList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"IsCCW"s,"Source"s,"Edition"s,"EditionDate"s,"Location"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"Transition"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"StartPoint"s,"StartDirection"s,"SegmentLength"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"DistanceAlong"s,"OffsetLateral"s,"OffsetVertical"s,"OffsetLongitudinal"s,"AlongHorizontal"s,"FlowDirection"s,"SystemType"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"ModelorDraughting"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"Directrix"s,"StartParam"s,"EndParam"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"PlacementMeasuredAlong"s,"Distance"s,"CartesianPosition"s,"RelativePlacement"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"Expression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"PlacementRelTo"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"LateralAxisDirection"s,"VerticalAxisDirection"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Height"s,"ColourComponents"s,"Pixel"s,"Placement"s,"SizeInX"s,"SizeInY"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Closed"s,"Faces"s,"PnIndex"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"Styles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"ProxyType"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"RestartDistance"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"ConnectionGeometry"s,"RelatingElement"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceType"s,"ImpliedOrder"s,"RelatingPositioningElement"s,"RelatedProducts"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"CrossSections"s,"CrossSectionPositions"s,"FixedAxisVertical"s,"SpineCurve"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"Vertices"s,"TexCoordsList"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"StartRadius"s,"EndRadius"s,"IsStartRadiusCCW"s,"IsEndRadiusCCW"s,"TransitionCurveType"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Flags"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"Start"s,"Finish"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ToAlignmentCurve"s,"ToHorizontal"s,"ToVertical"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"PositioningElement"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"UsingCurves"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"ReferencedInStructures"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ToFaceSet"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"Positions"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"PositionedRelativeTo"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"HasColours"s,"HasTextures"s,"Types"s,"IFC4X2"s}; + IFC4X2_types[0] = new type_declaration(strings[0], 0, new simple_type(simple_type::real_type)); IFC4X2_types[1] = new type_declaration(strings[1], 1, new simple_type(simple_type::real_type)); IFC4X2_types[3] = new enumeration_type(strings[2], 3, {strings[3],strings[4],strings[5],strings[6],strings[7],strings[8],strings[9]}); diff --git a/src/ifcparse/Ifc4x3-schema.cpp b/src/ifcparse/Ifc4x3-schema.cpp index c130138f9e..02e7e79cc9 100644 --- a/src/ifcparse/Ifc4x3-schema.cpp +++ b/src/ifcparse/Ifc4x3-schema.cpp @@ -33,9 +33,6 @@ using namespace IfcParse; declaration* IFC4X3_types[1311] = {nullptr}; -const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"BRAKES"s,"BUOYANCY"s,"COMPLETION_G1"s,"CREEP"s,"CURRENT"s,"DEAD_LOAD_G"s,"EARTHQUAKE_E"s,"ERECTION"s,"FIRE"s,"ICE"s,"IMPACT"s,"IMPULSE"s,"LACK_OF_FIT"s,"LIVE_LOAD_Q"s,"PRESTRESSING_P"s,"PROPPING"s,"RAIN"s,"SETTLEMENT_U"s,"SHRINKAGE"s,"SNOW_S"s,"SYSTEM_IMPERFECTION"s,"TEMPERATURE_T"s,"TRANSPORT"s,"WAVE"s,"WIND_W"s,"IfcActionTypeEnum"s,"EXTRAORDINARY_A"s,"PERMANENT_G"s,"VARIABLE_Q"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"DISTRIBUTIONPOINT"s,"HOME"s,"OFFICE"s,"SITE"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"HEATPIPE"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"RAILWAYCROCODILE"s,"RAILWAYDETONATOR"s,"SIREN"s,"WHISTLE"s,"IfcAlignmentCantSegmentTypeEnum"s,"BLOSSCURVE"s,"CONSTANTCANT"s,"COSINECURVE"s,"HELMERTCURVE"s,"LINEARTRANSITION"s,"SINECURVE"s,"VIENNESEBEND"s,"IfcAlignmentHorizontalSegmentTypeEnum"s,"CIRCULARARC"s,"CLOTHOID"s,"CUBIC"s,"LINE"s,"IfcAlignmentTypeEnum"s,"IfcAlignmentVerticalSegmentTypeEnum"s,"CONSTANTGRADIENT"s,"PARABOLICARC"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"LOADING_3D"s,"OUT_PLANE_LOADING_2D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAnnotationTypeEnum"s,"ASBUILTAREA"s,"ASBUILTLINE"s,"ASBUILTPOINT"s,"ASSUMEDAREA"s,"ASSUMEDLINE"s,"ASSUMEDPOINT"s,"NON_PHYSICAL_SIGNAL"s,"SUPERELEVATIONEVENT"s,"WIDTHEVENT"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"COMMUNICATIONTERMINAL"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"RECORDINGEQUIPMENT"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"IfcBSplineCurveForm"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"HYPERBOLIC_ARC"s,"PARABOLIC_ARC"s,"POLYLINE_FORM"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"CONICAL_SURF"s,"CYLINDRICAL_SURF"s,"GENERALISED_CONE"s,"PLANE_SURF"s,"QUADRIC_SURF"s,"RULED_SURF"s,"SPHERICAL_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"SURF_OF_REVOLUTION"s,"TOROIDAL_SURF"s,"IfcBeamTypeEnum"s,"BEAM"s,"CORNICE"s,"DIAPHRAGM"s,"EDGEBEAM"s,"GIRDER_SEGMENT"s,"HATSTONE"s,"HOLLOWCORE"s,"JOIST"s,"LINTEL"s,"PIERCAP"s,"SPANDREL"s,"T_BEAM"s,"IfcBearingTypeDisplacementEnum"s,"FIXED_MOVEMENT"s,"FREE_MOVEMENT"s,"GUIDED_LONGITUDINAL"s,"GUIDED_TRANSVERSAL"s,"IfcBearingTypeEnum"s,"CYLINDRICAL"s,"DISK"s,"ELASTOMERIC"s,"GUIDE"s,"POT"s,"ROCKER"s,"ROLLER"s,"SPHERICAL"s,"IfcBenchmarkEnum"s,"EQUALTO"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"INCLUDEDIN"s,"INCLUDES"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"NOTEQUALTO"s,"NOTINCLUDEDIN"s,"NOTINCLUDES"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"STEAM"s,"WATER"s,"IfcBoolean"s,"IfcBooleanOperator"s,"DIFFERENCE"s,"INTERSECTION"s,"UNION"s,"IfcBridgePartTypeEnum"s,"ABUTMENT"s,"DECK"s,"DECK_SEGMENT"s,"FOUNDATION"s,"PIER"s,"PIER_SEGMENT"s,"PYLON"s,"SUBSTRUCTURE"s,"SUPERSTRUCTURE"s,"SURFACESTRUCTURE"s,"IfcBridgeTypeEnum"s,"ARCHED"s,"CABLE_STAYED"s,"CANTILEVER"s,"CULVERT"s,"FRAMEWORK"s,"GIRDER"s,"SUSPENSION"s,"TRUSS"s,"IfcBuildingElementPartTypeEnum"s,"APRON"s,"ARMOURUNIT"s,"INSULATION"s,"PRECASTPANEL"s,"SAFETYCAGE"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"IfcBuildingSystemTypeEnum"s,"EROSIONPREVENTION"s,"FENESTRATION"s,"LOADBEARING"s,"OUTERSHELL"s,"PRESTRESSING"s,"REINFORCING"s,"SHADING"s,"IfcBuiltSystemTypeEnum"s,"MOORING"s,"RAILWAYLINE"s,"RAILWAYTRACK"s,"TRACKCIRCUIT"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CONNECTOR"s,"CROSS"s,"JUNCTION"s,"TEE"s,"TRANSITION"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLEBRACKET"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CATENARYWIRE"s,"CONDUITSEGMENT"s,"DROPPER"s,"IfcCableFittingTypeEnum"s,"ENTRY"s,"EXIT"s,"FANOUT"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CONTACTWIRESEGMENT"s,"CORESEGMENT"s,"FIBERSEGMENT"s,"FIBERTUBE"s,"OPTICALCABLESEGMENT"s,"STITCHWIRE"s,"WIREPAIRSEGMENT"s,"IfcCaissonFoundationTypeEnum"s,"CAISSON"s,"WELL"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"ADDED"s,"DELETED"s,"MODIFIED"s,"NOCHANGE"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"HEATRECOVERY"s,"WATERCOOLED"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PIERSTEM"s,"PIERSTEM_SEGMENT"s,"PILASTER"s,"STANDCOLUMN"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"AUTOMATON"s,"COMPUTER"s,"GATEWAY"s,"INTELLIGENTPERIPHERAL"s,"IPNETWORKEQUIPMENT"s,"LINESIDEELECTRONICUNIT"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"OPTICALLINETERMINAL"s,"OPTICALNETWORKUNIT"s,"PRINTER"s,"RADIOBLOCKCENTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"TELECOMMAND"s,"TELEPHONYEXCHANGE"s,"TRANSITIONCOMPONENT"s,"TRANSPONDER"s,"TRANSPORTEQUIPMENT"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"BOOSTER"s,"DYNAMIC"s,"HERMETIC"s,"OPENTYPE"s,"RECIPROCATING"s,"ROLLINGPISTON"s,"ROTARY"s,"ROTARYVANE"s,"SCROLL"s,"SEMIHERMETIC"s,"SINGLESCREW"s,"SINGLESTAGE"s,"TROCHOIDAL"s,"TWINSCREW"s,"WELDEDSHELLHERMETIC"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATEND"s,"ATPATH"s,"ATSTART"s,"IfcConstraintEnum"s,"ADVISORY"s,"HARD"s,"SOFT"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"MULTIPOSITION"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"TWOPOSITION"s,"IfcConveyorSegmentTypeEnum"s,"BELTCONVEYOR"s,"BUCKETCONVEYOR"s,"CHUTECONVEYOR"s,"SCREWCONVEYOR"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"MECHANICALFORCEDDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"NATURALDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"PRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"TENDER"s,"UNPRICEDBILLOFQUANTITIES"s,"IfcCountMeasure"s,"IfcCourseTypeEnum"s,"ARMOUR"s,"BALLASTBED"s,"CORE"s,"FILTER"s,"PAVEMENT"s,"PROTECTION"s,"IfcCoveringTypeEnum"s,"CEILING"s,"CLADDING"s,"COPING"s,"FLOORING"s,"MEMBRANE"s,"MOLDING"s,"ROOFING"s,"SKIRTINGBOARD"s,"SLEEVING"s,"TOPPING"s,"WRAPPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ACCELERATIONUNIT"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"CURVATUREUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"HEATINGVALUEUNIT"s,"INTEGERCOUNTRATEUNIT"s,"IONCONCENTRATIONUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARFORCEUNIT"s,"LINEARMOMENTUNIT"s,"LINEARSTIFFNESSUNIT"s,"LINEARVELOCITYUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFELASTICITYUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"MOMENTOFINERTIAUNIT"s,"PHUNIT"s,"PLANARFORCEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"ROTATIONALMASSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SHEARMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"TORQUEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"NEGATIVE"s,"POSITIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BIRDPROTECTION"s,"BRACKET"s,"CABLEARRANGER"s,"ELASTIC_CUSHION"s,"EXPANSION_JOINT_DEVICE"s,"FILLER"s,"FLASHING"s,"INSULATOR"s,"LOCK"s,"PANEL_STRENGTHENING"s,"POINTMACHINEMOUNTINGDEVICE"s,"POINT_MACHINE_LOCKING_DEVICE"s,"RAILBRACE"s,"RAILPAD"s,"RAIL_LUBRICATION"s,"RAIL_MECHANICAL_EQUIPMENT"s,"SHOE"s,"SLIDINGCHAIR"s,"SOUNDABSORPTION"s,"TENSIONINGEQUIPMENT"s,"IfcDistributionBoardTypeEnum"s,"CONSUMERUNIT"s,"DISPATCHINGBOARD"s,"DISTRIBUTIONBOARD"s,"DISTRIBUTIONFRAME"s,"MOTORCONTROLCENTRE"s,"SWITCHBOARD"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"WIRELESS"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CATENARY_SYSTEM"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"FIXEDTRANSMISSIONNETWORK"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MOBILENETWORK"s,"MONITORINGSYSTEM"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"OPERATIONALTELEPHONYSYSTEM"s,"OVERHEAD_CONTACTLINE_SYSTEM"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"RETURN_CIRCUIT"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"IfcDocumentConfidentialityEnum"s,"CONFIDENTIAL"s,"PERSONAL"s,"PUBLIC"s,"RESTRICTED"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINAL"s,"FINALDRAFT"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"DOUBLE_ACTING"s,"FIXEDPANEL"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"SLIDING"s,"SWINGING"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"ALUMINIUM_PLASTIC"s,"ALUMINIUM_WOOD"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"IfcDoorStyleOperationEnum"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"DOUBLE_DOOR_FOLDING"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"IfcDoorTypeEnum"s,"BOOM_BARRIER"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"TURNSTILE"s,"IfcDoorTypeOperationEnum"s,"DOUBLE_PANEL_DOUBLE_SWING"s,"DOUBLE_PANEL_FOLDING"s,"DOUBLE_PANEL_LIFTING_VERTICAL"s,"DOUBLE_PANEL_SINGLE_SWING"s,"DOUBLE_PANEL_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_PANEL_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_PANEL_SLIDING"s,"LIFTING_HORIZONTAL"s,"LIFTING_VERTICAL_LEFT"s,"LIFTING_VERTICAL_RIGHT"s,"REVOLVING_HORIZONTAL"s,"REVOLVING_VERTICAL"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"FLEXIBLESEGMENT"s,"RIGIDSEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcEarthworksCutTypeEnum"s,"BASE_EXCAVATION"s,"CUT"s,"DREDGING"s,"EXCAVATION"s,"OVEREXCAVATION"s,"PAVEMENTMILLING"s,"STEPEXCAVATION"s,"TOPSOILREMOVAL"s,"IfcEarthworksFillTypeEnum"s,"BACKFILL"s,"COUNTERWEIGHT"s,"EMBANKMENT"s,"SLOPEFILL"s,"SUBGRADE"s,"SUBGRADEBED"s,"TRANSITIONSECTION"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERCOOLER"s,"FREESTANDINGWATERHEATER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITOR"s,"CAPACITORBANK"s,"COMPENSATOR"s,"HARMONICFILTER"s,"INDUCTOR"s,"INDUCTORBANK"s,"RECHARGER"s,"UPS"s,"IfcElectricFlowTreatmentDeviceTypeEnum"s,"ELECTRONICFILTER"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"RELAY"s,"TIMECLOCK"s,"TIMEDELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"CROSS_BRACING"s,"DILATATIONPANEL"s,"ENTRANCEWORKS"s,"GRID"s,"MAST"s,"RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SHELTER"s,"SIGNALASSEMBLY"s,"SLAB_FIELD"s,"SUMPBUSTER"s,"SUPPORTINGASSEMBLY"s,"SUSPENSIONASSEMBLY"s,"TRACKPANEL"s,"TRACTION_SWITCHING_ASSEMBLY"s,"TRAFFIC_CALMING_DEVICE"s,"TURNOUTPANEL"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVEAIRWASHER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTCOMPLEX"s,"EVENTMESSAGE"s,"EVENTRULE"s,"EVENTTIME"s,"IfcEventTypeEnum"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"STARTEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_FIRE"s,"EXTERNAL_WATER"s,"IfcFacilityPartCommonTypeEnum"s,"ABOVEGROUND"s,"BELOWGROUND"s,"LEVELCROSSING"s,"SEGMENT"s,"TERMINAL"s,"IfcFacilityUsageEnum"s,"LATERAL"s,"LONGITUDINAL"s,"REGION"s,"VERTICAL"s,"IfcFanTypeEnum"s,"CENTRIFUGALAIRFOIL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"PROPELLORAXIAL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"FIREMONITOR"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"IfcFlowDirectionEnum"s,"SINK"s,"SOURCE"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"AMMETER"s,"COMBINED"s,"FREQUENCYMETER"s,"PHASEANGLEMETER"s,"POWERFACTORMETER"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"VOLTMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"BED"s,"CHAIR"s,"DESK"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"TABLE"s,"TECHNICALCABINET"s,"IfcGeographicElementTypeEnum"s,"SOIL_BORING_POINT"s,"TERRAIN"s,"VEGETATION"s,"IfcGeometricProjectionEnum"s,"ELEVATION_VIEW"s,"GRAPH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"SKETCH_VIEW"s,"IfcGeotechnicalStratumTypeEnum"s,"SOLID"s,"VOID"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"IRREGULAR"s,"RADIAL"s,"TRIANGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"TURNOUTHEATING"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"ADIABATICAIRWASHER"s,"ADIABATICATOMIZING"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ADIABATICPAN"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICULTRASONIC"s,"ADIABATICWETTEDELEMENT"s,"ASSISTEDBUTANE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDSTEAM"s,"STEAMINJECTION"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcImpactProtectionDeviceTypeEnum"s,"BUMPER"s,"CRASHCUSHION"s,"DAMPINGSYSTEM"s,"FENDER"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"FURNITUREINVENTORY"s,"SPACEINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"PIECEWISE_BEZIER_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"UNIFORM_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"DIRECTIONSOURCE"s,"POINTSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLiquidTerminalTypeEnum"s,"LOADINGARM"s,"IfcLoadGroupTypeEnum"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"LOAD_GROUP"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"LOGICALOR"s,"LOGICALXOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMarineFacilityTypeEnum"s,"BARRIERBEACH"s,"BREAKWATER"s,"CANAL"s,"DRYDOCK"s,"FLOATINGDOCK"s,"HYDROLIFT"s,"JETTY"s,"LAUNCHRECOVERY"s,"MARINEDEFENCE"s,"NAVIGATIONALCHANNEL"s,"PORT"s,"QUAY"s,"REVETMENT"s,"SHIPLIFT"s,"SHIPLOCK"s,"SHIPYARD"s,"SLIPWAY"s,"WATERWAY"s,"WATERWAYSHIPLIFT"s,"IfcMarinePartTypeEnum"s,"ABOVEWATERLINE"s,"ANCHORAGE"s,"APPROACHCHANNEL"s,"BELOWWATERLINE"s,"BERTHINGSTRUCTURE"s,"CHAMBER"s,"CILL_LEVEL"s,"COPELEVEL"s,"CREST"s,"GATEHEAD"s,"GUDINGSTRUCTURE"s,"HIGHWATERLINE"s,"LANDFIELD"s,"LEEWARDSIDE"s,"LOWWATERLINE"s,"MANUFACTURING"s,"NAVIGATIONALAREA"s,"SHIPTRANSFER"s,"STORAGEAREA"s,"VEHICLESERVICING"s,"WATERFIELD"s,"WEATHERSIDE"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"CHAIN"s,"COUPLER"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RAILFASTENING"s,"RAILJOINT"s,"RIVET"s,"ROPE"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"ARCH_SEGMENT"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STAY_CABLE"s,"STIFFENING_RIB"s,"STRINGER"s,"STRUCTURALCABLE"s,"STRUT"s,"STUD"s,"SUSPENDER"s,"SUSPENSION_CABLE"s,"TIEBAR"s,"IfcMobileTelecommunicationsApplianceTypeEnum"s,"ACCESSPOINT"s,"BASEBANDUNIT"s,"BASETRANSCEIVERSTATION"s,"E_UTRAN_NODE_B"s,"GATEWAY_GPRS_SUPPORT_NODE"s,"MASTERUNIT"s,"MOBILESWITCHINGCENTER"s,"MSCSERVER"s,"PACKETCONTROLUNIT"s,"REMOTERADIOUNIT"s,"REMOTEUNIT"s,"SERVICE_GPRS_SUPPORT_NODE"s,"SUBSCRIBERSERVER"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMooringDeviceTypeEnum"s,"BOLLARD"s,"LINETENSIONER"s,"MAGNETICDEVICE"s,"MOORINGHOOKS"s,"VACUUMDEVICE"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNavigationElementTypeEnum"s,"BEACON"s,"BUOY"s,"IfcNonNegativeLengthMeasure"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"ACTOR"s,"GROUP"s,"PROCESS"s,"PRODUCT"s,"PROJECT"s,"RESOURCE"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"DATAOUTLET"s,"POWEROUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPavementTypeEnum"s,"FLEXIBLE"s,"RIGID"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"COHESION"s,"DRIVEN"s,"FRICTION"s,"JETGROUTING"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"BASE_PLATE"s,"COVER_PLATE"s,"CURTAIN_PANEL"s,"FLANGE_PLATE"s,"GUSSET_PLATE"s,"SHEET"s,"SPLICE_PLATE"s,"STIFFENER_PLATE"s,"WEB_PLATE"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"AREA"s,"CURVE"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"BLISTER"s,"DEVIATOR"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_MATERIALDRIVEN"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"PSET_PROFILEDRIVEN"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTROMAGNETIC"s,"ELECTRONIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"ANTI_ARCING_DEVICE"s,"CIRCUITBREAKER"s,"EARTHINGSWITCH"s,"EARTHLEAKAGECIRCUITBREAKER"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"SPARKGAP"s,"VARISTOR"s,"VOLTAGELIMITER"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailTypeEnum"s,"BLADE"s,"CHECKRAIL"s,"GUARDRAIL"s,"RACKRAIL"s,"RAIL"s,"STOCKRAIL"s,"IfcRailingTypeEnum"s,"BALUSTRADE"s,"FENCE"s,"HANDRAIL"s,"IfcRailwayPartTypeEnum"s,"DILATATIONSUPERSTRUCTURE"s,"LINESIDESTRUCTURE"s,"LINESIDESTRUCTUREPART"s,"PLAINTRACKSUPERSTRUCTURE"s,"TRACKSTRUCTURE"s,"TRACKSTRUCTUREPART"s,"TURNOUTSUPERSTRUCTURE"s,"IfcRailwayTypeEnum"s,"IfcRampFlightTypeEnum"s,"SPIRAL"s,"STRAIGHT"s,"IfcRampTypeEnum"s,"HALF_TURN_RAMP"s,"QUARTER_TURN_RAMP"s,"SPIRAL_RAMP"s,"STRAIGHT_RUN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"DAILY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"WEEKLY"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReferentTypeEnum"s,"BOUNDARY"s,"KILOPOINT"s,"LANDMARK"s,"MILEPOINT"s,"POSITION"s,"REFERENCEMARKER"s,"STATION"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcedSoilTypeEnum"s,"DYNAMICALLYCOMPACTED"s,"GROUTED"s,"REPLACED"s,"ROLLERCOMPACTED"s,"SURCHARGEPRELOADED"s,"VERTICALLYDRAINED"s,"IfcReinforcingBarRoleEnum"s,"ANCHORING"s,"EDGE"s,"LIGATURE"s,"MAIN"s,"PUNCHING"s,"RING"s,"SHEAR"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"SPACEBAR"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoadPartTypeEnum"s,"BICYCLECROSSING"s,"BUS_STOP"s,"CARRIAGEWAY"s,"CENTRALISLAND"s,"CENTRALRESERVE"s,"HARDSHOULDER"s,"LAYBY"s,"PARKINGBAY"s,"PASSINGBAY"s,"PEDESTRIAN_CROSSING"s,"RAILWAYCROSSING"s,"REFUGEISLAND"s,"ROADSEGMENT"s,"ROADSIDE"s,"ROADSIDEPART"s,"ROADWAYPLATEAU"s,"ROUNDABOUT"s,"SHOULDER"s,"SIDEWALK"s,"SOFTSHOULDER"s,"TOLLPLAZA"s,"TRAFFICISLAND"s,"TRAFFICLANE"s,"IfcRoadTypeEnum"s,"IfcRoleEnum"s,"ARCHITECT"s,"BUILDINGOPERATOR"s,"BUILDINGOWNER"s,"CIVILENGINEER"s,"CLIENT"s,"COMMISSIONINGENGINEER"s,"CONSTRUCTIONMANAGER"s,"CONSULTANT"s,"CONTRACTOR"s,"COSTENGINEER"s,"ELECTRICALENGINEER"s,"ENGINEER"s,"FACILITIESMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"MANUFACTURER"s,"MECHANICALENGINEER"s,"PROJECTMANAGER"s,"RESELLER"s,"STRUCTURALENGINEER"s,"SUBCONTRACTOR"s,"SUPPLIER"s,"IfcRoofTypeEnum"s,"BARREL_ROOF"s,"BUTTERFLY_ROOF"s,"DOME_ROOF"s,"FLAT_ROOF"s,"FREEFORM"s,"GABLE_ROOF"s,"GAMBREL_ROOF"s,"HIPPED_GABLE_ROOF"s,"HIP_ROOF"s,"MANSARD_ROOF"s,"PAVILION_ROOF"s,"RAINBOW_ROOF"s,"SHED_ROOF"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"ATTO"s,"CENTI"s,"DECA"s,"DECI"s,"EXA"s,"FEMTO"s,"GIGA"s,"HECTO"s,"KILO"s,"MEGA"s,"MICRO"s,"MILLI"s,"NANO"s,"PETA"s,"PICO"s,"TERA"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SANITARYFOUNTAIN"s,"SHOWER"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"TAPERED"s,"UNIFORM"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"COSENSOR"s,"EARTHQUAKESENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FOREIGNOBJECTDETECTIONSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"OBSTACLESENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"RAINSENSOR"s,"SMOKESENSOR"s,"SNOWDEPTHSENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"TRAINSENSOR"s,"TURNOUTCLOSURESENSOR"s,"WHEELSENSOR"s,"WINDSENSOR"s,"IfcSequenceEnum"s,"FINISH_FINISH"s,"FINISH_START"s,"START_FINISH"s,"START_START"s,"IfcShadingDeviceTypeEnum"s,"AWNING"s,"JALOUSIE"s,"SHUTTER"s,"IfcShearModulusMeasure"s,"IfcSignTypeEnum"s,"MARKER"s,"PICTORAL"s,"IfcSignalTypeEnum"s,"AUDIO"s,"MIXED"s,"VISUAL"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_BOUNDEDVALUE"s,"P_ENUMERATEDVALUE"s,"P_LISTVALUE"s,"P_REFERENCEVALUE"s,"P_SINGLEVALUE"s,"P_TABLEVALUE"s,"Q_AREA"s,"Q_COUNT"s,"Q_LENGTH"s,"Q_NUMBER"s,"Q_TIME"s,"Q_VOLUME"s,"Q_WEIGHT"s,"IfcSlabTypeEnum"s,"APPROACH_SLAB"s,"BASESLAB"s,"FLOOR"s,"LANDING"s,"ROOF"s,"TRACKSLAB"s,"WEARING"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"BERTH"s,"GFA"s,"PARKING"s,"SPACE"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"INTERFERENCE"s,"OCCUPANCY"s,"RESERVATION"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"CURVED"s,"WINDER"s,"IfcStairTypeEnum"s,"CURVED_RUN_STAIR"s,"DOUBLE_RETURN_STAIR"s,"HALF_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"LADDER"s,"QUARTER_TURN_STAIR"s,"QUARTER_WINDING_STAIR"s,"SPIRAL_STAIR"s,"STRAIGHT_RUN_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"IfcStateEnum"s,"LOCKED"s,"READONLY"s,"READONLYLOCKED"s,"READWRITE"s,"READWRITELOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"DISCRETE"s,"EQUIDISTANT"s,"PARABOLA"s,"POLYGONAL"s,"SINUS"s,"IfcStructuralCurveMemberTypeEnum"s,"COMPRESSION_MEMBER"s,"PIN_JOINED_MEMBER"s,"RIGID_JOINED_MEMBER"s,"TENSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"DEFECT"s,"HATCHMARKING"s,"LINEMARKING"s,"MARK"s,"NONSKIDSURFACING"s,"PAVEMENTSURFACEMARKING"s,"RUMBLESTRIP"s,"SYMBOLMARKING"s,"TAG"s,"TRANSVERSERUMBLESTRIP"s,"TREATMENT"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"START_AND_STOP_EQUIPMENT"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"SUBRACK"s,"WORKSURFACE"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"OILRETENTIONTRAY"s,"PRESSUREVESSEL"s,"STORAGE"s,"VESSEL"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ADJUSTMENT"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"EMERGENCY"s,"INSPECTION"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"SAFETY"s,"TESTING"s,"TROUBLESHOOTING"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonConduitTypeEnum"s,"DIABOLO"s,"GROUTING_DUCT"s,"TRUMPET"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"DOWN"s,"UP"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTrackElementTypeEnum"s,"BLOCKINGDEVICE"s,"DERAILER"s,"FROG"s,"HALF_SET_OF_BLADES"s,"SLEEPER"s,"SPEEDREGULATOR"s,"TRACKENDOFALIGNMENT"s,"VEHICLESTOP"s,"IfcTransformerTypeEnum"s,"CHOPPER"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"IfcTransitionCode"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"DISCONTINUOUS"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementTypeEnum"s,"CRANEWAY"s,"ELEVATOR"s,"ESCALATOR"s,"HAULINGGEAR"s,"LIFTINGGEAR"s,"MOVINGWALKWAY"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"BASESTATIONCONTROLLER"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"HUMIDISTAT"s,"INDICATORPANEL"s,"MIMICPANEL"s,"THERMOSTAT"s,"WEATHERSTATION"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRCONDITIONINGUNIT"s,"AIRHANDLER"s,"DEHUMIDIFIER"s,"ROOFTOPUNIT"s,"SPLITSYSTEM"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"DRAWOFFCOCK"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVehicleTypeEnum"s,"CARGO"s,"ROLLINGSTOCK"s,"VEHICLE"s,"VEHICLEAIR"s,"VEHICLEMARINE"s,"VEHICLETRACKED"s,"VEHICLEWHEELED"s,"IfcVibrationDamperTypeEnum"s,"AXIAL_YIELD"s,"BENDING_YIELD"s,"RUBBER"s,"SHEAR_YIELD"s,"VISCOUS"s,"IfcVibrationIsolatorTypeEnum"s,"BASE"s,"COMPRESSION"s,"SPRING"s,"IfcVirtualElementTypeEnum"s,"CLEARANCE"s,"PROVISIONFORVOID"s,"IfcVoidingFeatureTypeEnum"s,"CHAMFER"s,"CUTOUT"s,"HOLE"s,"MITER"s,"NOTCH"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"ELEMENTEDWALL"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"RETAININGWALL"s,"SOLIDWALL"s,"STANDARD"s,"WAVEWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"BOTTOMHUNG"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"REMOVABLECASEMENT"s,"SIDEHUNGLEFTHAND"s,"SIDEHUNGRIGHTHAND"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"TILTANDTURNLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TOPHUNG"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"DOUBLE_PANEL_HORIZONTAL"s,"DOUBLE_PANEL_VERTICAL"s,"SINGLE_PANEL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_VERTICAL"s,"IfcWindowTypeEnum"s,"LIGHTDOME"s,"SKYLIGHT"s,"WINDOW"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcAlignmentParameterSegment"s,"IfcAlignmentVerticalSegment"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityNumber"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureCoordinateIndices"s,"IfcTextureCoordinateIndicesWithVoids"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcCurveMeasureSelect"s,"IfcDerivedMeasureValue"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcAlignmentCantSegment"s,"IfcAlignmentHorizontalSegment"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLinearPlacement"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenCrossProfileDef"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointByDistanceExpression"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcSegment"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcAxis2PlacementLinear"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcCurveSegment"s,"IfcDirection"s,"IfcDirectrixCurveSweptAreaSolid"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcIndexedPolygonalTextureMap"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcOffsetCurveByDistances"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPolynomialCurve"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelAssociatesProfileDef"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelPositions"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSectionedSolid"s,"IfcSectionedSolidHorizontal"s,"IfcSectionedSurface"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcSpiral"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcThirdOrderPolynomialSpiral"s,"IfcToroidalSurface"s,"IfcTransportationDeviceType"s,"IfcTriangulatedFaceSet"s,"IfcTriangulatedIrregularNetwork"s,"IfcVehicleType"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuildingStorey"s,"IfcBuiltElementType"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcClothoid"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCosineSpiral"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCourseType"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCylindricalSurface"s,"IfcDeepFoundationType"s,"IfcDirectrixDerivedReferenceSweptAreaSolid"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFacility"s,"IfcFacilityPart"s,"IfcFacilityPartCommon"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGeotechnicalElement"s,"IfcGeotechnicalStratum"s,"IfcGradientCurve"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcImpactProtectionDevice"s,"IfcImpactProtectionDeviceType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcKerbType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLinearElement"s,"IfcLiquidTerminalType"s,"IfcMarineFacility"s,"IfcMarinePart"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMobileTelecommunicationsApplianceType"s,"IfcMooringDeviceType"s,"IfcMotorConnectionType"s,"IfcNavigationElementType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOutletType"s,"IfcPavementType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcPositioningElement"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailType"s,"IfcRailingType"s,"IfcRailway"s,"IfcRailwayPart"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReferent"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAdheresToElement"s,"IfcRelAggregates"s,"IfcRoad"s,"IfcRoadPart"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcSecondOrderPolynomialSpiral"s,"IfcSegmentedReferenceCurve"s,"IfcSeventhOrderPolynomialSpiral"s,"IfcShadingDeviceType"s,"IfcSign"s,"IfcSignType"s,"IfcSignalType"s,"IfcSineSpiral"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonConduit"s,"IfcTendonConduitType"s,"IfcTendonType"s,"IfcTrackElementType"s,"IfcTransformerType"s,"IfcTransportElementType"s,"IfcTransportationDevice"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVehicle"s,"IfcVibrationDamper"s,"IfcVibrationDamperType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVirtualElement"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcInterferenceSelect"s,"IfcSpatialReferenceSelect"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAlignmentCant"s,"IfcAlignmentHorizontal"s,"IfcAlignmentSegment"s,"IfcAlignmentVertical"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBearingType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBridge"s,"IfcBridgePart"s,"IfcBuilding"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxyType"s,"IfcBuildingSystem"s,"IfcBuiltElement"s,"IfcBuiltSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcCaissonFoundationType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcConveyorSegmentType"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCourse"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDeepFoundation"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionBoardType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcEarthworksCut"s,"IfcEarthworksElement"s,"IfcEarthworksFill"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricFlowTreatmentDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcGeotechnicalAssembly"s,"IfcGrid"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcKerb"s,"IfcLamp"s,"IfcLightFixture"s,"IfcLinearPositioningElement"s,"IfcLiquidTerminal"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMobileTelecommunicationsAppliance"s,"IfcMooringDevice"s,"IfcMotorConnection"s,"IfcNavigationElement"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPavement"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRail"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcedSoil"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSignal"s,"IfcSlab"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTrackElement"s,"IfcTransformer"s,"IfcTransportElement"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAlignment"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBearing"s,"IfcBoiler"s,"IfcBorehole"s,"IfcBuildingElementProxy"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcCaissonFoundation"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcConveyorSegment"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionBoard"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricFlowTreatmentDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcGeomodel"s,"IfcGeoslice"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"RailHeadDistance"s,"StartDistAlong"s,"HorizontalLength"s,"StartCantLeft"s,"EndCantLeft"s,"StartCantRight"s,"EndCantRight"s,"StartPoint"s,"StartDirection"s,"StartRadiusOfCurvature"s,"EndRadiusOfCurvature"s,"SegmentLength"s,"GravityCenterLineHeight"s,"StartTag"s,"EndTag"s,"DesignParameters"s,"StartHeight"s,"StartGradient"s,"EndGradient"s,"RadiusOfCurvature"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"TagList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"Radius"s,"Source"s,"Edition"s,"EditionDate"s,"Specification"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"ClothoidConstant"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"Segments"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CosineTerm"s,"ConstantTerm"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"Placement"s,"SegmentStart"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveStyleFont"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"Directrix"s,"StartParam"s,"EndParam"s,"FlowDirection"s,"SystemType"s,"Location"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ParameterTakesPrecedence"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"Tag"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"UsageType"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"BaseCurve"s,"EndPoint"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"Mountable"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"RelativePlacement"s,"CartesianPosition"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"ScaleY"s,"ScaleZ"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"MaterialExpression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"PlacementRelTo"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"Distance"s,"HorizontalWidths"s,"Widths"s,"Slopes"s,"Tags"s,"OffsetPoint"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"ConstructionType"s,"Height"s,"ColourComponents"s,"Pixel"s,"SizeInX"s,"SizeInY"s,"DistanceAlong"s,"OffsetLateral"s,"OffsetVertical"s,"OffsetLongitudinal"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Faces"s,"PnIndex"s,"CoefficientsX"s,"CoefficientsY"s,"CoefficientsZ"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"Expression"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"NumberValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingElement"s,"RelatedSurfaceFeatures"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"RelatingProfileDef"s,"ConnectionGeometry"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceSpace"s,"InterferenceType"s,"ImpliedOrder"s,"RelatingPositioningElement"s,"RelatedProducts"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"QuadraticTerm"s,"LinearTerm"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"CrossSections"s,"CrossSectionPositions"s,"SpineCurve"s,"Transition"s,"SepticTerm"s,"SexticTerm"s,"QuinticTerm"s,"QuarticTerm"s,"CubicTerm"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"SineTerm"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"AxisDirection"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"Styles"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Closed"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"TexCoordsOf"s,"InnerTexCoordIndices"s,"Vertices"s,"TexCoordsList"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Flags"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"StartDate"s,"FinishDate"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"HasSurfaceFeatures"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ReferencedInStructures"s,"ToFaceSet"s,"HasTexCoords"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"ReferencedByPlacements"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"Positions"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"PositionedRelativeTo"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"UsingCurves"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"AdheresToElement"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"ServicesFacilities"s,"HasColours"s,"HasTextures"s,"ToTexMap"s,"Types"s,"IFC4X3"s}; - - class IFC4X3_instance_factory : public IfcParse::instance_factory { virtual IfcUtil::IfcBaseClass* operator()(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) const { switch(decl->index_in_schema()) { @@ -1296,6 +1293,9 @@ class IFC4X3_instance_factory : public IfcParse::instance_factory { }; IfcParse::schema_definition* IFC4X3_populate_schema() { + +const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"BRAKES"s,"BUOYANCY"s,"COMPLETION_G1"s,"CREEP"s,"CURRENT"s,"DEAD_LOAD_G"s,"EARTHQUAKE_E"s,"ERECTION"s,"FIRE"s,"ICE"s,"IMPACT"s,"IMPULSE"s,"LACK_OF_FIT"s,"LIVE_LOAD_Q"s,"PRESTRESSING_P"s,"PROPPING"s,"RAIN"s,"SETTLEMENT_U"s,"SHRINKAGE"s,"SNOW_S"s,"SYSTEM_IMPERFECTION"s,"TEMPERATURE_T"s,"TRANSPORT"s,"WAVE"s,"WIND_W"s,"IfcActionTypeEnum"s,"EXTRAORDINARY_A"s,"PERMANENT_G"s,"VARIABLE_Q"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"DISTRIBUTIONPOINT"s,"HOME"s,"OFFICE"s,"SITE"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"HEATPIPE"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"RAILWAYCROCODILE"s,"RAILWAYDETONATOR"s,"SIREN"s,"WHISTLE"s,"IfcAlignmentCantSegmentTypeEnum"s,"BLOSSCURVE"s,"CONSTANTCANT"s,"COSINECURVE"s,"HELMERTCURVE"s,"LINEARTRANSITION"s,"SINECURVE"s,"VIENNESEBEND"s,"IfcAlignmentHorizontalSegmentTypeEnum"s,"CIRCULARARC"s,"CLOTHOID"s,"CUBIC"s,"LINE"s,"IfcAlignmentTypeEnum"s,"IfcAlignmentVerticalSegmentTypeEnum"s,"CONSTANTGRADIENT"s,"PARABOLICARC"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"LOADING_3D"s,"OUT_PLANE_LOADING_2D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAnnotationTypeEnum"s,"ASBUILTAREA"s,"ASBUILTLINE"s,"ASBUILTPOINT"s,"ASSUMEDAREA"s,"ASSUMEDLINE"s,"ASSUMEDPOINT"s,"NON_PHYSICAL_SIGNAL"s,"SUPERELEVATIONEVENT"s,"WIDTHEVENT"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"COMMUNICATIONTERMINAL"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"RECORDINGEQUIPMENT"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"IfcBSplineCurveForm"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"HYPERBOLIC_ARC"s,"PARABOLIC_ARC"s,"POLYLINE_FORM"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"CONICAL_SURF"s,"CYLINDRICAL_SURF"s,"GENERALISED_CONE"s,"PLANE_SURF"s,"QUADRIC_SURF"s,"RULED_SURF"s,"SPHERICAL_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"SURF_OF_REVOLUTION"s,"TOROIDAL_SURF"s,"IfcBeamTypeEnum"s,"BEAM"s,"CORNICE"s,"DIAPHRAGM"s,"EDGEBEAM"s,"GIRDER_SEGMENT"s,"HATSTONE"s,"HOLLOWCORE"s,"JOIST"s,"LINTEL"s,"PIERCAP"s,"SPANDREL"s,"T_BEAM"s,"IfcBearingTypeDisplacementEnum"s,"FIXED_MOVEMENT"s,"FREE_MOVEMENT"s,"GUIDED_LONGITUDINAL"s,"GUIDED_TRANSVERSAL"s,"IfcBearingTypeEnum"s,"CYLINDRICAL"s,"DISK"s,"ELASTOMERIC"s,"GUIDE"s,"POT"s,"ROCKER"s,"ROLLER"s,"SPHERICAL"s,"IfcBenchmarkEnum"s,"EQUALTO"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"INCLUDEDIN"s,"INCLUDES"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"NOTEQUALTO"s,"NOTINCLUDEDIN"s,"NOTINCLUDES"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"STEAM"s,"WATER"s,"IfcBoolean"s,"IfcBooleanOperator"s,"DIFFERENCE"s,"INTERSECTION"s,"UNION"s,"IfcBridgePartTypeEnum"s,"ABUTMENT"s,"DECK"s,"DECK_SEGMENT"s,"FOUNDATION"s,"PIER"s,"PIER_SEGMENT"s,"PYLON"s,"SUBSTRUCTURE"s,"SUPERSTRUCTURE"s,"SURFACESTRUCTURE"s,"IfcBridgeTypeEnum"s,"ARCHED"s,"CABLE_STAYED"s,"CANTILEVER"s,"CULVERT"s,"FRAMEWORK"s,"GIRDER"s,"SUSPENSION"s,"TRUSS"s,"IfcBuildingElementPartTypeEnum"s,"APRON"s,"ARMOURUNIT"s,"INSULATION"s,"PRECASTPANEL"s,"SAFETYCAGE"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"IfcBuildingSystemTypeEnum"s,"EROSIONPREVENTION"s,"FENESTRATION"s,"LOADBEARING"s,"OUTERSHELL"s,"PRESTRESSING"s,"REINFORCING"s,"SHADING"s,"IfcBuiltSystemTypeEnum"s,"MOORING"s,"RAILWAYLINE"s,"RAILWAYTRACK"s,"TRACKCIRCUIT"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CONNECTOR"s,"CROSS"s,"JUNCTION"s,"TEE"s,"TRANSITION"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLEBRACKET"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CATENARYWIRE"s,"CONDUITSEGMENT"s,"DROPPER"s,"IfcCableFittingTypeEnum"s,"ENTRY"s,"EXIT"s,"FANOUT"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CONTACTWIRESEGMENT"s,"CORESEGMENT"s,"FIBERSEGMENT"s,"FIBERTUBE"s,"OPTICALCABLESEGMENT"s,"STITCHWIRE"s,"WIREPAIRSEGMENT"s,"IfcCaissonFoundationTypeEnum"s,"CAISSON"s,"WELL"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"ADDED"s,"DELETED"s,"MODIFIED"s,"NOCHANGE"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"HEATRECOVERY"s,"WATERCOOLED"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PIERSTEM"s,"PIERSTEM_SEGMENT"s,"PILASTER"s,"STANDCOLUMN"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"AUTOMATON"s,"COMPUTER"s,"GATEWAY"s,"INTELLIGENTPERIPHERAL"s,"IPNETWORKEQUIPMENT"s,"LINESIDEELECTRONICUNIT"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"OPTICALLINETERMINAL"s,"OPTICALNETWORKUNIT"s,"PRINTER"s,"RADIOBLOCKCENTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"TELECOMMAND"s,"TELEPHONYEXCHANGE"s,"TRANSITIONCOMPONENT"s,"TRANSPONDER"s,"TRANSPORTEQUIPMENT"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"BOOSTER"s,"DYNAMIC"s,"HERMETIC"s,"OPENTYPE"s,"RECIPROCATING"s,"ROLLINGPISTON"s,"ROTARY"s,"ROTARYVANE"s,"SCROLL"s,"SEMIHERMETIC"s,"SINGLESCREW"s,"SINGLESTAGE"s,"TROCHOIDAL"s,"TWINSCREW"s,"WELDEDSHELLHERMETIC"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATEND"s,"ATPATH"s,"ATSTART"s,"IfcConstraintEnum"s,"ADVISORY"s,"HARD"s,"SOFT"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"MULTIPOSITION"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"TWOPOSITION"s,"IfcConveyorSegmentTypeEnum"s,"BELTCONVEYOR"s,"BUCKETCONVEYOR"s,"CHUTECONVEYOR"s,"SCREWCONVEYOR"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"MECHANICALFORCEDDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"NATURALDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"PRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"TENDER"s,"UNPRICEDBILLOFQUANTITIES"s,"IfcCountMeasure"s,"IfcCourseTypeEnum"s,"ARMOUR"s,"BALLASTBED"s,"CORE"s,"FILTER"s,"PAVEMENT"s,"PROTECTION"s,"IfcCoveringTypeEnum"s,"CEILING"s,"CLADDING"s,"COPING"s,"FLOORING"s,"MEMBRANE"s,"MOLDING"s,"ROOFING"s,"SKIRTINGBOARD"s,"SLEEVING"s,"TOPPING"s,"WRAPPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ACCELERATIONUNIT"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"CURVATUREUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"HEATINGVALUEUNIT"s,"INTEGERCOUNTRATEUNIT"s,"IONCONCENTRATIONUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARFORCEUNIT"s,"LINEARMOMENTUNIT"s,"LINEARSTIFFNESSUNIT"s,"LINEARVELOCITYUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFELASTICITYUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"MOMENTOFINERTIAUNIT"s,"PHUNIT"s,"PLANARFORCEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"ROTATIONALMASSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SHEARMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"TORQUEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"NEGATIVE"s,"POSITIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BIRDPROTECTION"s,"BRACKET"s,"CABLEARRANGER"s,"ELASTIC_CUSHION"s,"EXPANSION_JOINT_DEVICE"s,"FILLER"s,"FLASHING"s,"INSULATOR"s,"LOCK"s,"PANEL_STRENGTHENING"s,"POINTMACHINEMOUNTINGDEVICE"s,"POINT_MACHINE_LOCKING_DEVICE"s,"RAILBRACE"s,"RAILPAD"s,"RAIL_LUBRICATION"s,"RAIL_MECHANICAL_EQUIPMENT"s,"SHOE"s,"SLIDINGCHAIR"s,"SOUNDABSORPTION"s,"TENSIONINGEQUIPMENT"s,"IfcDistributionBoardTypeEnum"s,"CONSUMERUNIT"s,"DISPATCHINGBOARD"s,"DISTRIBUTIONBOARD"s,"DISTRIBUTIONFRAME"s,"MOTORCONTROLCENTRE"s,"SWITCHBOARD"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"WIRELESS"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CATENARY_SYSTEM"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"FIXEDTRANSMISSIONNETWORK"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MOBILENETWORK"s,"MONITORINGSYSTEM"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"OPERATIONALTELEPHONYSYSTEM"s,"OVERHEAD_CONTACTLINE_SYSTEM"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"RETURN_CIRCUIT"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"IfcDocumentConfidentialityEnum"s,"CONFIDENTIAL"s,"PERSONAL"s,"PUBLIC"s,"RESTRICTED"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINAL"s,"FINALDRAFT"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"DOUBLE_ACTING"s,"FIXEDPANEL"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"SLIDING"s,"SWINGING"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"ALUMINIUM_PLASTIC"s,"ALUMINIUM_WOOD"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"IfcDoorStyleOperationEnum"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"DOUBLE_DOOR_FOLDING"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"IfcDoorTypeEnum"s,"BOOM_BARRIER"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"TURNSTILE"s,"IfcDoorTypeOperationEnum"s,"DOUBLE_PANEL_DOUBLE_SWING"s,"DOUBLE_PANEL_FOLDING"s,"DOUBLE_PANEL_LIFTING_VERTICAL"s,"DOUBLE_PANEL_SINGLE_SWING"s,"DOUBLE_PANEL_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_PANEL_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_PANEL_SLIDING"s,"LIFTING_HORIZONTAL"s,"LIFTING_VERTICAL_LEFT"s,"LIFTING_VERTICAL_RIGHT"s,"REVOLVING_HORIZONTAL"s,"REVOLVING_VERTICAL"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"FLEXIBLESEGMENT"s,"RIGIDSEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcEarthworksCutTypeEnum"s,"BASE_EXCAVATION"s,"CUT"s,"DREDGING"s,"EXCAVATION"s,"OVEREXCAVATION"s,"PAVEMENTMILLING"s,"STEPEXCAVATION"s,"TOPSOILREMOVAL"s,"IfcEarthworksFillTypeEnum"s,"BACKFILL"s,"COUNTERWEIGHT"s,"EMBANKMENT"s,"SLOPEFILL"s,"SUBGRADE"s,"SUBGRADEBED"s,"TRANSITIONSECTION"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERCOOLER"s,"FREESTANDINGWATERHEATER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITOR"s,"CAPACITORBANK"s,"COMPENSATOR"s,"HARMONICFILTER"s,"INDUCTOR"s,"INDUCTORBANK"s,"RECHARGER"s,"UPS"s,"IfcElectricFlowTreatmentDeviceTypeEnum"s,"ELECTRONICFILTER"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"RELAY"s,"TIMECLOCK"s,"TIMEDELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"CROSS_BRACING"s,"DILATATIONPANEL"s,"ENTRANCEWORKS"s,"GRID"s,"MAST"s,"RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SHELTER"s,"SIGNALASSEMBLY"s,"SLAB_FIELD"s,"SUMPBUSTER"s,"SUPPORTINGASSEMBLY"s,"SUSPENSIONASSEMBLY"s,"TRACKPANEL"s,"TRACTION_SWITCHING_ASSEMBLY"s,"TRAFFIC_CALMING_DEVICE"s,"TURNOUTPANEL"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVEAIRWASHER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTCOMPLEX"s,"EVENTMESSAGE"s,"EVENTRULE"s,"EVENTTIME"s,"IfcEventTypeEnum"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"STARTEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_FIRE"s,"EXTERNAL_WATER"s,"IfcFacilityPartCommonTypeEnum"s,"ABOVEGROUND"s,"BELOWGROUND"s,"LEVELCROSSING"s,"SEGMENT"s,"TERMINAL"s,"IfcFacilityUsageEnum"s,"LATERAL"s,"LONGITUDINAL"s,"REGION"s,"VERTICAL"s,"IfcFanTypeEnum"s,"CENTRIFUGALAIRFOIL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"PROPELLORAXIAL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"FIREMONITOR"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"IfcFlowDirectionEnum"s,"SINK"s,"SOURCE"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"AMMETER"s,"COMBINED"s,"FREQUENCYMETER"s,"PHASEANGLEMETER"s,"POWERFACTORMETER"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"VOLTMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"BED"s,"CHAIR"s,"DESK"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"TABLE"s,"TECHNICALCABINET"s,"IfcGeographicElementTypeEnum"s,"SOIL_BORING_POINT"s,"TERRAIN"s,"VEGETATION"s,"IfcGeometricProjectionEnum"s,"ELEVATION_VIEW"s,"GRAPH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"SKETCH_VIEW"s,"IfcGeotechnicalStratumTypeEnum"s,"SOLID"s,"VOID"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"IRREGULAR"s,"RADIAL"s,"TRIANGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"TURNOUTHEATING"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"ADIABATICAIRWASHER"s,"ADIABATICATOMIZING"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ADIABATICPAN"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICULTRASONIC"s,"ADIABATICWETTEDELEMENT"s,"ASSISTEDBUTANE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDSTEAM"s,"STEAMINJECTION"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcImpactProtectionDeviceTypeEnum"s,"BUMPER"s,"CRASHCUSHION"s,"DAMPINGSYSTEM"s,"FENDER"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"FURNITUREINVENTORY"s,"SPACEINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"PIECEWISE_BEZIER_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"UNIFORM_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"DIRECTIONSOURCE"s,"POINTSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLiquidTerminalTypeEnum"s,"LOADINGARM"s,"IfcLoadGroupTypeEnum"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"LOAD_GROUP"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"LOGICALOR"s,"LOGICALXOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMarineFacilityTypeEnum"s,"BARRIERBEACH"s,"BREAKWATER"s,"CANAL"s,"DRYDOCK"s,"FLOATINGDOCK"s,"HYDROLIFT"s,"JETTY"s,"LAUNCHRECOVERY"s,"MARINEDEFENCE"s,"NAVIGATIONALCHANNEL"s,"PORT"s,"QUAY"s,"REVETMENT"s,"SHIPLIFT"s,"SHIPLOCK"s,"SHIPYARD"s,"SLIPWAY"s,"WATERWAY"s,"WATERWAYSHIPLIFT"s,"IfcMarinePartTypeEnum"s,"ABOVEWATERLINE"s,"ANCHORAGE"s,"APPROACHCHANNEL"s,"BELOWWATERLINE"s,"BERTHINGSTRUCTURE"s,"CHAMBER"s,"CILL_LEVEL"s,"COPELEVEL"s,"CREST"s,"GATEHEAD"s,"GUDINGSTRUCTURE"s,"HIGHWATERLINE"s,"LANDFIELD"s,"LEEWARDSIDE"s,"LOWWATERLINE"s,"MANUFACTURING"s,"NAVIGATIONALAREA"s,"SHIPTRANSFER"s,"STORAGEAREA"s,"VEHICLESERVICING"s,"WATERFIELD"s,"WEATHERSIDE"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"CHAIN"s,"COUPLER"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RAILFASTENING"s,"RAILJOINT"s,"RIVET"s,"ROPE"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"ARCH_SEGMENT"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STAY_CABLE"s,"STIFFENING_RIB"s,"STRINGER"s,"STRUCTURALCABLE"s,"STRUT"s,"STUD"s,"SUSPENDER"s,"SUSPENSION_CABLE"s,"TIEBAR"s,"IfcMobileTelecommunicationsApplianceTypeEnum"s,"ACCESSPOINT"s,"BASEBANDUNIT"s,"BASETRANSCEIVERSTATION"s,"E_UTRAN_NODE_B"s,"GATEWAY_GPRS_SUPPORT_NODE"s,"MASTERUNIT"s,"MOBILESWITCHINGCENTER"s,"MSCSERVER"s,"PACKETCONTROLUNIT"s,"REMOTERADIOUNIT"s,"REMOTEUNIT"s,"SERVICE_GPRS_SUPPORT_NODE"s,"SUBSCRIBERSERVER"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMooringDeviceTypeEnum"s,"BOLLARD"s,"LINETENSIONER"s,"MAGNETICDEVICE"s,"MOORINGHOOKS"s,"VACUUMDEVICE"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNavigationElementTypeEnum"s,"BEACON"s,"BUOY"s,"IfcNonNegativeLengthMeasure"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"ACTOR"s,"GROUP"s,"PROCESS"s,"PRODUCT"s,"PROJECT"s,"RESOURCE"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"DATAOUTLET"s,"POWEROUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPavementTypeEnum"s,"FLEXIBLE"s,"RIGID"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"COHESION"s,"DRIVEN"s,"FRICTION"s,"JETGROUTING"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"BASE_PLATE"s,"COVER_PLATE"s,"CURTAIN_PANEL"s,"FLANGE_PLATE"s,"GUSSET_PLATE"s,"SHEET"s,"SPLICE_PLATE"s,"STIFFENER_PLATE"s,"WEB_PLATE"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"AREA"s,"CURVE"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"BLISTER"s,"DEVIATOR"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_MATERIALDRIVEN"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"PSET_PROFILEDRIVEN"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTROMAGNETIC"s,"ELECTRONIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"ANTI_ARCING_DEVICE"s,"CIRCUITBREAKER"s,"EARTHINGSWITCH"s,"EARTHLEAKAGECIRCUITBREAKER"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"SPARKGAP"s,"VARISTOR"s,"VOLTAGELIMITER"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailTypeEnum"s,"BLADE"s,"CHECKRAIL"s,"GUARDRAIL"s,"RACKRAIL"s,"RAIL"s,"STOCKRAIL"s,"IfcRailingTypeEnum"s,"BALUSTRADE"s,"FENCE"s,"HANDRAIL"s,"IfcRailwayPartTypeEnum"s,"DILATATIONSUPERSTRUCTURE"s,"LINESIDESTRUCTURE"s,"LINESIDESTRUCTUREPART"s,"PLAINTRACKSUPERSTRUCTURE"s,"TRACKSTRUCTURE"s,"TRACKSTRUCTUREPART"s,"TURNOUTSUPERSTRUCTURE"s,"IfcRailwayTypeEnum"s,"IfcRampFlightTypeEnum"s,"SPIRAL"s,"STRAIGHT"s,"IfcRampTypeEnum"s,"HALF_TURN_RAMP"s,"QUARTER_TURN_RAMP"s,"SPIRAL_RAMP"s,"STRAIGHT_RUN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"DAILY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"WEEKLY"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReferentTypeEnum"s,"BOUNDARY"s,"KILOPOINT"s,"LANDMARK"s,"MILEPOINT"s,"POSITION"s,"REFERENCEMARKER"s,"STATION"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcedSoilTypeEnum"s,"DYNAMICALLYCOMPACTED"s,"GROUTED"s,"REPLACED"s,"ROLLERCOMPACTED"s,"SURCHARGEPRELOADED"s,"VERTICALLYDRAINED"s,"IfcReinforcingBarRoleEnum"s,"ANCHORING"s,"EDGE"s,"LIGATURE"s,"MAIN"s,"PUNCHING"s,"RING"s,"SHEAR"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"SPACEBAR"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoadPartTypeEnum"s,"BICYCLECROSSING"s,"BUS_STOP"s,"CARRIAGEWAY"s,"CENTRALISLAND"s,"CENTRALRESERVE"s,"HARDSHOULDER"s,"LAYBY"s,"PARKINGBAY"s,"PASSINGBAY"s,"PEDESTRIAN_CROSSING"s,"RAILWAYCROSSING"s,"REFUGEISLAND"s,"ROADSEGMENT"s,"ROADSIDE"s,"ROADSIDEPART"s,"ROADWAYPLATEAU"s,"ROUNDABOUT"s,"SHOULDER"s,"SIDEWALK"s,"SOFTSHOULDER"s,"TOLLPLAZA"s,"TRAFFICISLAND"s,"TRAFFICLANE"s,"IfcRoadTypeEnum"s,"IfcRoleEnum"s,"ARCHITECT"s,"BUILDINGOPERATOR"s,"BUILDINGOWNER"s,"CIVILENGINEER"s,"CLIENT"s,"COMMISSIONINGENGINEER"s,"CONSTRUCTIONMANAGER"s,"CONSULTANT"s,"CONTRACTOR"s,"COSTENGINEER"s,"ELECTRICALENGINEER"s,"ENGINEER"s,"FACILITIESMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"MANUFACTURER"s,"MECHANICALENGINEER"s,"PROJECTMANAGER"s,"RESELLER"s,"STRUCTURALENGINEER"s,"SUBCONTRACTOR"s,"SUPPLIER"s,"IfcRoofTypeEnum"s,"BARREL_ROOF"s,"BUTTERFLY_ROOF"s,"DOME_ROOF"s,"FLAT_ROOF"s,"FREEFORM"s,"GABLE_ROOF"s,"GAMBREL_ROOF"s,"HIPPED_GABLE_ROOF"s,"HIP_ROOF"s,"MANSARD_ROOF"s,"PAVILION_ROOF"s,"RAINBOW_ROOF"s,"SHED_ROOF"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"ATTO"s,"CENTI"s,"DECA"s,"DECI"s,"EXA"s,"FEMTO"s,"GIGA"s,"HECTO"s,"KILO"s,"MEGA"s,"MICRO"s,"MILLI"s,"NANO"s,"PETA"s,"PICO"s,"TERA"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SANITARYFOUNTAIN"s,"SHOWER"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"TAPERED"s,"UNIFORM"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"COSENSOR"s,"EARTHQUAKESENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FOREIGNOBJECTDETECTIONSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"OBSTACLESENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"RAINSENSOR"s,"SMOKESENSOR"s,"SNOWDEPTHSENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"TRAINSENSOR"s,"TURNOUTCLOSURESENSOR"s,"WHEELSENSOR"s,"WINDSENSOR"s,"IfcSequenceEnum"s,"FINISH_FINISH"s,"FINISH_START"s,"START_FINISH"s,"START_START"s,"IfcShadingDeviceTypeEnum"s,"AWNING"s,"JALOUSIE"s,"SHUTTER"s,"IfcShearModulusMeasure"s,"IfcSignTypeEnum"s,"MARKER"s,"PICTORAL"s,"IfcSignalTypeEnum"s,"AUDIO"s,"MIXED"s,"VISUAL"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_BOUNDEDVALUE"s,"P_ENUMERATEDVALUE"s,"P_LISTVALUE"s,"P_REFERENCEVALUE"s,"P_SINGLEVALUE"s,"P_TABLEVALUE"s,"Q_AREA"s,"Q_COUNT"s,"Q_LENGTH"s,"Q_NUMBER"s,"Q_TIME"s,"Q_VOLUME"s,"Q_WEIGHT"s,"IfcSlabTypeEnum"s,"APPROACH_SLAB"s,"BASESLAB"s,"FLOOR"s,"LANDING"s,"ROOF"s,"TRACKSLAB"s,"WEARING"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"BERTH"s,"GFA"s,"PARKING"s,"SPACE"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"INTERFERENCE"s,"OCCUPANCY"s,"RESERVATION"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"CURVED"s,"WINDER"s,"IfcStairTypeEnum"s,"CURVED_RUN_STAIR"s,"DOUBLE_RETURN_STAIR"s,"HALF_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"LADDER"s,"QUARTER_TURN_STAIR"s,"QUARTER_WINDING_STAIR"s,"SPIRAL_STAIR"s,"STRAIGHT_RUN_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"IfcStateEnum"s,"LOCKED"s,"READONLY"s,"READONLYLOCKED"s,"READWRITE"s,"READWRITELOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"DISCRETE"s,"EQUIDISTANT"s,"PARABOLA"s,"POLYGONAL"s,"SINUS"s,"IfcStructuralCurveMemberTypeEnum"s,"COMPRESSION_MEMBER"s,"PIN_JOINED_MEMBER"s,"RIGID_JOINED_MEMBER"s,"TENSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"DEFECT"s,"HATCHMARKING"s,"LINEMARKING"s,"MARK"s,"NONSKIDSURFACING"s,"PAVEMENTSURFACEMARKING"s,"RUMBLESTRIP"s,"SYMBOLMARKING"s,"TAG"s,"TRANSVERSERUMBLESTRIP"s,"TREATMENT"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"START_AND_STOP_EQUIPMENT"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"SUBRACK"s,"WORKSURFACE"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"OILRETENTIONTRAY"s,"PRESSUREVESSEL"s,"STORAGE"s,"VESSEL"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ADJUSTMENT"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"EMERGENCY"s,"INSPECTION"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"SAFETY"s,"TESTING"s,"TROUBLESHOOTING"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonConduitTypeEnum"s,"DIABOLO"s,"GROUTING_DUCT"s,"TRUMPET"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"DOWN"s,"UP"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTrackElementTypeEnum"s,"BLOCKINGDEVICE"s,"DERAILER"s,"FROG"s,"HALF_SET_OF_BLADES"s,"SLEEPER"s,"SPEEDREGULATOR"s,"TRACKENDOFALIGNMENT"s,"VEHICLESTOP"s,"IfcTransformerTypeEnum"s,"CHOPPER"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"IfcTransitionCode"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"DISCONTINUOUS"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementTypeEnum"s,"CRANEWAY"s,"ELEVATOR"s,"ESCALATOR"s,"HAULINGGEAR"s,"LIFTINGGEAR"s,"MOVINGWALKWAY"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"BASESTATIONCONTROLLER"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"HUMIDISTAT"s,"INDICATORPANEL"s,"MIMICPANEL"s,"THERMOSTAT"s,"WEATHERSTATION"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRCONDITIONINGUNIT"s,"AIRHANDLER"s,"DEHUMIDIFIER"s,"ROOFTOPUNIT"s,"SPLITSYSTEM"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"DRAWOFFCOCK"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVehicleTypeEnum"s,"CARGO"s,"ROLLINGSTOCK"s,"VEHICLE"s,"VEHICLEAIR"s,"VEHICLEMARINE"s,"VEHICLETRACKED"s,"VEHICLEWHEELED"s,"IfcVibrationDamperTypeEnum"s,"AXIAL_YIELD"s,"BENDING_YIELD"s,"RUBBER"s,"SHEAR_YIELD"s,"VISCOUS"s,"IfcVibrationIsolatorTypeEnum"s,"BASE"s,"COMPRESSION"s,"SPRING"s,"IfcVirtualElementTypeEnum"s,"CLEARANCE"s,"PROVISIONFORVOID"s,"IfcVoidingFeatureTypeEnum"s,"CHAMFER"s,"CUTOUT"s,"HOLE"s,"MITER"s,"NOTCH"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"ELEMENTEDWALL"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"RETAININGWALL"s,"SOLIDWALL"s,"STANDARD"s,"WAVEWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"BOTTOMHUNG"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"REMOVABLECASEMENT"s,"SIDEHUNGLEFTHAND"s,"SIDEHUNGRIGHTHAND"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"TILTANDTURNLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TOPHUNG"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"DOUBLE_PANEL_HORIZONTAL"s,"DOUBLE_PANEL_VERTICAL"s,"SINGLE_PANEL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_VERTICAL"s,"IfcWindowTypeEnum"s,"LIGHTDOME"s,"SKYLIGHT"s,"WINDOW"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcAlignmentParameterSegment"s,"IfcAlignmentVerticalSegment"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityNumber"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureCoordinateIndices"s,"IfcTextureCoordinateIndicesWithVoids"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcCurveMeasureSelect"s,"IfcDerivedMeasureValue"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcAlignmentCantSegment"s,"IfcAlignmentHorizontalSegment"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLinearPlacement"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenCrossProfileDef"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointByDistanceExpression"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcSegment"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcAxis2PlacementLinear"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcCurveSegment"s,"IfcDirection"s,"IfcDirectrixCurveSweptAreaSolid"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcIndexedPolygonalTextureMap"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcOffsetCurveByDistances"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPolynomialCurve"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelAssociatesProfileDef"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelPositions"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSectionedSolid"s,"IfcSectionedSolidHorizontal"s,"IfcSectionedSurface"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcSpiral"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcThirdOrderPolynomialSpiral"s,"IfcToroidalSurface"s,"IfcTransportationDeviceType"s,"IfcTriangulatedFaceSet"s,"IfcTriangulatedIrregularNetwork"s,"IfcVehicleType"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuildingStorey"s,"IfcBuiltElementType"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcClothoid"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCosineSpiral"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCourseType"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCylindricalSurface"s,"IfcDeepFoundationType"s,"IfcDirectrixDerivedReferenceSweptAreaSolid"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFacility"s,"IfcFacilityPart"s,"IfcFacilityPartCommon"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGeotechnicalElement"s,"IfcGeotechnicalStratum"s,"IfcGradientCurve"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcImpactProtectionDevice"s,"IfcImpactProtectionDeviceType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcKerbType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLinearElement"s,"IfcLiquidTerminalType"s,"IfcMarineFacility"s,"IfcMarinePart"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMobileTelecommunicationsApplianceType"s,"IfcMooringDeviceType"s,"IfcMotorConnectionType"s,"IfcNavigationElementType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOutletType"s,"IfcPavementType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcPositioningElement"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailType"s,"IfcRailingType"s,"IfcRailway"s,"IfcRailwayPart"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReferent"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAdheresToElement"s,"IfcRelAggregates"s,"IfcRoad"s,"IfcRoadPart"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcSecondOrderPolynomialSpiral"s,"IfcSegmentedReferenceCurve"s,"IfcSeventhOrderPolynomialSpiral"s,"IfcShadingDeviceType"s,"IfcSign"s,"IfcSignType"s,"IfcSignalType"s,"IfcSineSpiral"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonConduit"s,"IfcTendonConduitType"s,"IfcTendonType"s,"IfcTrackElementType"s,"IfcTransformerType"s,"IfcTransportElementType"s,"IfcTransportationDevice"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVehicle"s,"IfcVibrationDamper"s,"IfcVibrationDamperType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVirtualElement"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcInterferenceSelect"s,"IfcSpatialReferenceSelect"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAlignmentCant"s,"IfcAlignmentHorizontal"s,"IfcAlignmentSegment"s,"IfcAlignmentVertical"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBearingType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBridge"s,"IfcBridgePart"s,"IfcBuilding"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxyType"s,"IfcBuildingSystem"s,"IfcBuiltElement"s,"IfcBuiltSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcCaissonFoundationType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcConveyorSegmentType"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCourse"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDeepFoundation"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionBoardType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcEarthworksCut"s,"IfcEarthworksElement"s,"IfcEarthworksFill"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricFlowTreatmentDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcGeotechnicalAssembly"s,"IfcGrid"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcKerb"s,"IfcLamp"s,"IfcLightFixture"s,"IfcLinearPositioningElement"s,"IfcLiquidTerminal"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMobileTelecommunicationsAppliance"s,"IfcMooringDevice"s,"IfcMotorConnection"s,"IfcNavigationElement"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPavement"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRail"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcedSoil"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSignal"s,"IfcSlab"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTrackElement"s,"IfcTransformer"s,"IfcTransportElement"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAlignment"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBearing"s,"IfcBoiler"s,"IfcBorehole"s,"IfcBuildingElementProxy"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcCaissonFoundation"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcConveyorSegment"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionBoard"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricFlowTreatmentDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcGeomodel"s,"IfcGeoslice"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"RailHeadDistance"s,"StartDistAlong"s,"HorizontalLength"s,"StartCantLeft"s,"EndCantLeft"s,"StartCantRight"s,"EndCantRight"s,"StartPoint"s,"StartDirection"s,"StartRadiusOfCurvature"s,"EndRadiusOfCurvature"s,"SegmentLength"s,"GravityCenterLineHeight"s,"StartTag"s,"EndTag"s,"DesignParameters"s,"StartHeight"s,"StartGradient"s,"EndGradient"s,"RadiusOfCurvature"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"TagList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"Radius"s,"Source"s,"Edition"s,"EditionDate"s,"Specification"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"ClothoidConstant"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"Segments"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CosineTerm"s,"ConstantTerm"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"Placement"s,"SegmentStart"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveStyleFont"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"Directrix"s,"StartParam"s,"EndParam"s,"FlowDirection"s,"SystemType"s,"Location"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ParameterTakesPrecedence"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"Tag"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"UsageType"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"BaseCurve"s,"EndPoint"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"Mountable"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"RelativePlacement"s,"CartesianPosition"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"ScaleY"s,"ScaleZ"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"MaterialExpression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"PlacementRelTo"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"Distance"s,"HorizontalWidths"s,"Widths"s,"Slopes"s,"Tags"s,"OffsetPoint"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"ConstructionType"s,"Height"s,"ColourComponents"s,"Pixel"s,"SizeInX"s,"SizeInY"s,"DistanceAlong"s,"OffsetLateral"s,"OffsetVertical"s,"OffsetLongitudinal"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Faces"s,"PnIndex"s,"CoefficientsX"s,"CoefficientsY"s,"CoefficientsZ"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"Expression"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"NumberValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingElement"s,"RelatedSurfaceFeatures"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"RelatingProfileDef"s,"ConnectionGeometry"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceSpace"s,"InterferenceType"s,"ImpliedOrder"s,"RelatingPositioningElement"s,"RelatedProducts"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"QuadraticTerm"s,"LinearTerm"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"CrossSections"s,"CrossSectionPositions"s,"SpineCurve"s,"Transition"s,"SepticTerm"s,"SexticTerm"s,"QuinticTerm"s,"QuarticTerm"s,"CubicTerm"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"SineTerm"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"AxisDirection"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"Styles"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Closed"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"TexCoordsOf"s,"InnerTexCoordIndices"s,"Vertices"s,"TexCoordsList"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Flags"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"StartDate"s,"FinishDate"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"HasSurfaceFeatures"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ReferencedInStructures"s,"ToFaceSet"s,"HasTexCoords"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"ReferencedByPlacements"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"Positions"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"PositionedRelativeTo"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"UsingCurves"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"AdheresToElement"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"ServicesFacilities"s,"HasColours"s,"HasTextures"s,"ToTexMap"s,"Types"s,"IFC4X3"s}; + IFC4X3_types[0] = new type_declaration(strings[0], 0, new simple_type(simple_type::real_type)); IFC4X3_types[1] = new type_declaration(strings[1], 1, new simple_type(simple_type::real_type)); IFC4X3_types[3] = new enumeration_type(strings[2], 3, {strings[3],strings[4],strings[5],strings[6],strings[7],strings[8],strings[9]}); diff --git a/src/ifcparse/Ifc4x3_add2-schema.cpp b/src/ifcparse/Ifc4x3_add2-schema.cpp index b6de783e34..3c848294bb 100644 --- a/src/ifcparse/Ifc4x3_add2-schema.cpp +++ b/src/ifcparse/Ifc4x3_add2-schema.cpp @@ -32,1271 +32,10 @@ using namespace std::string_literals; using namespace IfcParse; declaration* IFC4X3_ADD2_types[1312] = {nullptr}; +IfcParse::schema_definition* IFC4X3_ADD2_populate_schema() { const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"BRAKES"s,"BUOYANCY"s,"COMPLETION_G1"s,"CREEP"s,"CURRENT"s,"DEAD_LOAD_G"s,"EARTHQUAKE_E"s,"ERECTION"s,"FIRE"s,"ICE"s,"IMPACT"s,"IMPULSE"s,"LACK_OF_FIT"s,"LIVE_LOAD_Q"s,"PRESTRESSING_P"s,"PROPPING"s,"RAIN"s,"SETTLEMENT_U"s,"SHRINKAGE"s,"SNOW_S"s,"SYSTEM_IMPERFECTION"s,"TEMPERATURE_T"s,"TRANSPORT"s,"WAVE"s,"WIND_W"s,"IfcActionTypeEnum"s,"EXTRAORDINARY_A"s,"PERMANENT_G"s,"VARIABLE_Q"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"DISTRIBUTIONPOINT"s,"HOME"s,"OFFICE"s,"SITE"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"HEATPIPE"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"RAILWAYCROCODILE"s,"RAILWAYDETONATOR"s,"SIREN"s,"WHISTLE"s,"IfcAlignmentCantSegmentTypeEnum"s,"BLOSSCURVE"s,"CONSTANTCANT"s,"COSINECURVE"s,"HELMERTCURVE"s,"LINEARTRANSITION"s,"SINECURVE"s,"VIENNESEBEND"s,"IfcAlignmentHorizontalSegmentTypeEnum"s,"CIRCULARARC"s,"CLOTHOID"s,"CUBIC"s,"LINE"s,"IfcAlignmentTypeEnum"s,"IfcAlignmentVerticalSegmentTypeEnum"s,"CONSTANTGRADIENT"s,"PARABOLICARC"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"LOADING_3D"s,"OUT_PLANE_LOADING_2D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAnnotationTypeEnum"s,"CONTOURLINE"s,"DIMENSION"s,"ISOBAR"s,"ISOLUX"s,"ISOTHERM"s,"LEADER"s,"SURVEY"s,"SYMBOL"s,"TEXT"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MODULO"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"COMMUNICATIONTERMINAL"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"RECORDINGEQUIPMENT"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"IfcBSplineCurveForm"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"HYPERBOLIC_ARC"s,"PARABOLIC_ARC"s,"POLYLINE_FORM"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"CONICAL_SURF"s,"CYLINDRICAL_SURF"s,"GENERALISED_CONE"s,"PLANE_SURF"s,"QUADRIC_SURF"s,"RULED_SURF"s,"SPHERICAL_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"SURF_OF_REVOLUTION"s,"TOROIDAL_SURF"s,"IfcBeamTypeEnum"s,"BEAM"s,"CORNICE"s,"DIAPHRAGM"s,"EDGEBEAM"s,"GIRDER_SEGMENT"s,"HATSTONE"s,"HOLLOWCORE"s,"JOIST"s,"LINTEL"s,"PIERCAP"s,"SPANDREL"s,"T_BEAM"s,"IfcBearingTypeEnum"s,"CYLINDRICAL"s,"DISK"s,"ELASTOMERIC"s,"GUIDE"s,"POT"s,"ROCKER"s,"ROLLER"s,"SPHERICAL"s,"IfcBenchmarkEnum"s,"EQUALTO"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"INCLUDEDIN"s,"INCLUDES"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"NOTEQUALTO"s,"NOTINCLUDEDIN"s,"NOTINCLUDES"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"STEAM"s,"WATER"s,"IfcBoolean"s,"IfcBooleanOperator"s,"DIFFERENCE"s,"INTERSECTION"s,"UNION"s,"IfcBridgePartTypeEnum"s,"ABUTMENT"s,"DECK"s,"DECK_SEGMENT"s,"FOUNDATION"s,"PIER"s,"PIER_SEGMENT"s,"PYLON"s,"SUBSTRUCTURE"s,"SUPERSTRUCTURE"s,"SURFACESTRUCTURE"s,"IfcBridgeTypeEnum"s,"ARCHED"s,"CABLE_STAYED"s,"CANTILEVER"s,"CULVERT"s,"FRAMEWORK"s,"GIRDER"s,"SUSPENSION"s,"TRUSS"s,"IfcBuildingElementPartTypeEnum"s,"APRON"s,"ARMOURUNIT"s,"INSULATION"s,"PRECASTPANEL"s,"SAFETYCAGE"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"PROVISIONFORSPACE"s,"PROVISIONFORVOID"s,"IfcBuildingSystemTypeEnum"s,"FENESTRATION"s,"LOADBEARING"s,"OUTERSHELL"s,"SHADING"s,"IfcBuiltSystemTypeEnum"s,"EROSIONPREVENTION"s,"MOORING"s,"PRESTRESSING"s,"RAILWAYLINE"s,"RAILWAYTRACK"s,"REINFORCING"s,"TRACKCIRCUIT"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CONNECTOR"s,"CROSS"s,"JUNCTION"s,"REDUCER"s,"TEE"s,"TRANSITION"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLEBRACKET"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CATENARYWIRE"s,"CONDUITSEGMENT"s,"DROPPER"s,"IfcCableFittingTypeEnum"s,"ENTRY"s,"EXIT"s,"FANOUT"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CONTACTWIRESEGMENT"s,"CORESEGMENT"s,"FIBERSEGMENT"s,"FIBERTUBE"s,"OPTICALCABLESEGMENT"s,"STITCHWIRE"s,"WIREPAIRSEGMENT"s,"IfcCaissonFoundationTypeEnum"s,"CAISSON"s,"WELL"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"ADDED"s,"DELETED"s,"MODIFIED"s,"NOCHANGE"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"HEATRECOVERY"s,"WATERCOOLED"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PIERSTEM"s,"PIERSTEM_SEGMENT"s,"PILASTER"s,"STANDCOLUMN"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"AUTOMATON"s,"COMPUTER"s,"GATEWAY"s,"INTELLIGENTPERIPHERAL"s,"IPNETWORKEQUIPMENT"s,"LINESIDEELECTRONICUNIT"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"OPTICALLINETERMINAL"s,"OPTICALNETWORKUNIT"s,"PRINTER"s,"RADIOBLOCKCENTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"TELECOMMAND"s,"TELEPHONYEXCHANGE"s,"TRANSITIONCOMPONENT"s,"TRANSPONDER"s,"TRANSPORTEQUIPMENT"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"BOOSTER"s,"DYNAMIC"s,"HERMETIC"s,"OPENTYPE"s,"RECIPROCATING"s,"ROLLINGPISTON"s,"ROTARY"s,"ROTARYVANE"s,"SCROLL"s,"SEMIHERMETIC"s,"SINGLESCREW"s,"SINGLESTAGE"s,"TROCHOIDAL"s,"TWINSCREW"s,"WELDEDSHELLHERMETIC"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATEND"s,"ATPATH"s,"ATSTART"s,"IfcConstraintEnum"s,"ADVISORY"s,"HARD"s,"SOFT"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"MULTIPOSITION"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"TWOPOSITION"s,"IfcConveyorSegmentTypeEnum"s,"BELTCONVEYOR"s,"BUCKETCONVEYOR"s,"CHUTECONVEYOR"s,"SCREWCONVEYOR"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"MECHANICALFORCEDDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"NATURALDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"PRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"TENDER"s,"UNPRICEDBILLOFQUANTITIES"s,"IfcCountMeasure"s,"IfcCourseTypeEnum"s,"ARMOUR"s,"BALLASTBED"s,"CORE"s,"FILTER"s,"PAVEMENT"s,"PROTECTION"s,"IfcCoveringTypeEnum"s,"CEILING"s,"CLADDING"s,"COPING"s,"FLOORING"s,"MEMBRANE"s,"MOLDING"s,"ROOFING"s,"SKIRTINGBOARD"s,"SLEEVING"s,"TOPPING"s,"WRAPPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ACCELERATIONUNIT"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"CURVATUREUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"HEATINGVALUEUNIT"s,"INTEGERCOUNTRATEUNIT"s,"IONCONCENTRATIONUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARFORCEUNIT"s,"LINEARMOMENTUNIT"s,"LINEARSTIFFNESSUNIT"s,"LINEARVELOCITYUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFELASTICITYUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"MOMENTOFINERTIAUNIT"s,"PHUNIT"s,"PLANARFORCEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"ROTATIONALMASSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SHEARMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"TORQUEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"NEGATIVE"s,"POSITIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BIRDPROTECTION"s,"BRACKET"s,"CABLEARRANGER"s,"ELASTIC_CUSHION"s,"EXPANSION_JOINT_DEVICE"s,"FILLER"s,"FLASHING"s,"INSULATOR"s,"LOCK"s,"PANEL_STRENGTHENING"s,"POINTMACHINEMOUNTINGDEVICE"s,"POINT_MACHINE_LOCKING_DEVICE"s,"RAILBRACE"s,"RAILPAD"s,"RAIL_LUBRICATION"s,"RAIL_MECHANICAL_EQUIPMENT"s,"SHOE"s,"SLIDINGCHAIR"s,"SOUNDABSORPTION"s,"TENSIONINGEQUIPMENT"s,"IfcDistributionBoardTypeEnum"s,"CONSUMERUNIT"s,"DISPATCHINGBOARD"s,"DISTRIBUTIONBOARD"s,"DISTRIBUTIONFRAME"s,"MOTORCONTROLCENTRE"s,"SWITCHBOARD"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"WIRELESS"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CATENARY_SYSTEM"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"FIXEDTRANSMISSIONNETWORK"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MOBILENETWORK"s,"MONITORINGSYSTEM"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"OPERATIONALTELEPHONYSYSTEM"s,"OVERHEAD_CONTACTLINE_SYSTEM"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"RETURN_CIRCUIT"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"IfcDocumentConfidentialityEnum"s,"CONFIDENTIAL"s,"PERSONAL"s,"PUBLIC"s,"RESTRICTED"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINAL"s,"FINALDRAFT"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"DOUBLE_ACTING"s,"FIXEDPANEL"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"SLIDING"s,"SWINGING"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorTypeEnum"s,"BOOM_BARRIER"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"TURNSTILE"s,"IfcDoorTypeOperationEnum"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"DOUBLE_DOOR_FOLDING"s,"DOUBLE_DOOR_LIFTING_VERTICAL"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"LIFTING_HORIZONTAL"s,"LIFTING_VERTICAL_LEFT"s,"LIFTING_VERTICAL_RIGHT"s,"REVOLVING_VERTICAL"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"FLEXIBLESEGMENT"s,"RIGIDSEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcEarthworksCutTypeEnum"s,"BASE_EXCAVATION"s,"CUT"s,"DREDGING"s,"EXCAVATION"s,"OVEREXCAVATION"s,"PAVEMENTMILLING"s,"STEPEXCAVATION"s,"TOPSOILREMOVAL"s,"IfcEarthworksFillTypeEnum"s,"BACKFILL"s,"COUNTERWEIGHT"s,"EMBANKMENT"s,"SLOPEFILL"s,"SUBGRADE"s,"SUBGRADEBED"s,"TRANSITIONSECTION"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERCOOLER"s,"FREESTANDINGWATERHEATER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITOR"s,"CAPACITORBANK"s,"COMPENSATOR"s,"HARMONICFILTER"s,"INDUCTOR"s,"INDUCTORBANK"s,"RECHARGER"s,"UPS"s,"IfcElectricFlowTreatmentDeviceTypeEnum"s,"ELECTRONICFILTER"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"RELAY"s,"TIMECLOCK"s,"TIMEDELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"CROSS_BRACING"s,"DILATATIONPANEL"s,"ENTRANCEWORKS"s,"GRID"s,"MAST"s,"RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SHELTER"s,"SIGNALASSEMBLY"s,"SLAB_FIELD"s,"SUMPBUSTER"s,"SUPPORTINGASSEMBLY"s,"SUSPENSIONASSEMBLY"s,"TRACKPANEL"s,"TRACTION_SWITCHING_ASSEMBLY"s,"TRAFFIC_CALMING_DEVICE"s,"TURNOUTPANEL"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVEAIRWASHER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTCOMPLEX"s,"EVENTMESSAGE"s,"EVENTRULE"s,"EVENTTIME"s,"IfcEventTypeEnum"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"STARTEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_FIRE"s,"EXTERNAL_WATER"s,"IfcFacilityPartCommonTypeEnum"s,"ABOVEGROUND"s,"BELOWGROUND"s,"LEVELCROSSING"s,"SEGMENT"s,"TERMINAL"s,"IfcFacilityUsageEnum"s,"LATERAL"s,"LONGITUDINAL"s,"REGION"s,"VERTICAL"s,"IfcFanTypeEnum"s,"CENTRIFUGALAIRFOIL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"PROPELLORAXIAL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"FIREMONITOR"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"IfcFlowDirectionEnum"s,"SINK"s,"SOURCE"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"AMMETER"s,"COMBINED"s,"FREQUENCYMETER"s,"PHASEANGLEMETER"s,"POWERFACTORMETER"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"VOLTMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"BED"s,"CHAIR"s,"DESK"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"TABLE"s,"TECHNICALCABINET"s,"IfcGeographicElementTypeEnum"s,"SOIL_BORING_POINT"s,"TERRAIN"s,"VEGETATION"s,"IfcGeometricProjectionEnum"s,"ELEVATION_VIEW"s,"GRAPH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"SKETCH_VIEW"s,"IfcGeotechnicalStratumTypeEnum"s,"SOLID"s,"VOID"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"IRREGULAR"s,"RADIAL"s,"TRIANGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"TURNOUTHEATING"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"ADIABATICAIRWASHER"s,"ADIABATICATOMIZING"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ADIABATICPAN"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICULTRASONIC"s,"ADIABATICWETTEDELEMENT"s,"ASSISTEDBUTANE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDSTEAM"s,"STEAMINJECTION"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcImpactProtectionDeviceTypeEnum"s,"BUMPER"s,"CRASHCUSHION"s,"DAMPINGSYSTEM"s,"FENDER"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"FURNITUREINVENTORY"s,"SPACEINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKerbTypeEnum"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"PIECEWISE_BEZIER_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"UNIFORM_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"DIRECTIONSOURCE"s,"POINTSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLiquidTerminalTypeEnum"s,"LOADINGARM"s,"IfcLoadGroupTypeEnum"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"LOAD_GROUP"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"LOGICALOR"s,"LOGICALXOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMarineFacilityTypeEnum"s,"BARRIERBEACH"s,"BREAKWATER"s,"CANAL"s,"DRYDOCK"s,"FLOATINGDOCK"s,"HYDROLIFT"s,"JETTY"s,"LAUNCHRECOVERY"s,"MARINEDEFENCE"s,"NAVIGATIONALCHANNEL"s,"PORT"s,"QUAY"s,"REVETMENT"s,"SHIPLIFT"s,"SHIPLOCK"s,"SHIPYARD"s,"SLIPWAY"s,"WATERWAY"s,"WATERWAYSHIPLIFT"s,"IfcMarinePartTypeEnum"s,"ABOVEWATERLINE"s,"ANCHORAGE"s,"APPROACHCHANNEL"s,"BELOWWATERLINE"s,"BERTHINGSTRUCTURE"s,"CHAMBER"s,"CILL_LEVEL"s,"COPELEVEL"s,"CREST"s,"GATEHEAD"s,"GUDINGSTRUCTURE"s,"HIGHWATERLINE"s,"LANDFIELD"s,"LEEWARDSIDE"s,"LOWWATERLINE"s,"MANUFACTURING"s,"NAVIGATIONALAREA"s,"SHIPTRANSFER"s,"STORAGEAREA"s,"VEHICLESERVICING"s,"WATERFIELD"s,"WEATHERSIDE"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"CHAIN"s,"COUPLER"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RAILFASTENING"s,"RAILJOINT"s,"RIVET"s,"ROPE"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"ARCH_SEGMENT"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STAY_CABLE"s,"STIFFENING_RIB"s,"STRINGER"s,"STRUCTURALCABLE"s,"STRUT"s,"STUD"s,"SUSPENDER"s,"SUSPENSION_CABLE"s,"TIEBAR"s,"IfcMobileTelecommunicationsApplianceTypeEnum"s,"ACCESSPOINT"s,"BASEBANDUNIT"s,"BASETRANSCEIVERSTATION"s,"E_UTRAN_NODE_B"s,"GATEWAY_GPRS_SUPPORT_NODE"s,"MASTERUNIT"s,"MOBILESWITCHINGCENTER"s,"MSCSERVER"s,"PACKETCONTROLUNIT"s,"REMOTERADIOUNIT"s,"REMOTEUNIT"s,"SERVICE_GPRS_SUPPORT_NODE"s,"SUBSCRIBERSERVER"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMooringDeviceTypeEnum"s,"BOLLARD"s,"LINETENSIONER"s,"MAGNETICDEVICE"s,"MOORINGHOOKS"s,"VACUUMDEVICE"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNavigationElementTypeEnum"s,"BEACON"s,"BUOY"s,"IfcNonNegativeLengthMeasure"s,"IfcNumericMeasure"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"DATAOUTLET"s,"POWEROUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPavementTypeEnum"s,"FLEXIBLE"s,"RIGID"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"COHESION"s,"DRIVEN"s,"FRICTION"s,"JETGROUTING"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"BASE_PLATE"s,"COVER_PLATE"s,"CURTAIN_PANEL"s,"FLANGE_PLATE"s,"GUSSET_PLATE"s,"SHEET"s,"SPLICE_PLATE"s,"STIFFENER_PLATE"s,"WEB_PLATE"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"AREA"s,"CURVE"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"BLISTER"s,"DEVIATOR"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_MATERIALDRIVEN"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"PSET_PROFILEDRIVEN"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTROMAGNETIC"s,"ELECTRONIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"ANTI_ARCING_DEVICE"s,"CIRCUITBREAKER"s,"EARTHINGSWITCH"s,"EARTHLEAKAGECIRCUITBREAKER"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"SPARKGAP"s,"VARISTOR"s,"VOLTAGELIMITER"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailTypeEnum"s,"BLADE"s,"CHECKRAIL"s,"GUARDRAIL"s,"RACKRAIL"s,"RAIL"s,"STOCKRAIL"s,"IfcRailingTypeEnum"s,"BALUSTRADE"s,"FENCE"s,"HANDRAIL"s,"IfcRailwayPartTypeEnum"s,"ABOVETRACK"s,"DILATIONTRACK"s,"LINESIDE"s,"LINESIDEPART"s,"PLAINTRACK"s,"TRACK"s,"TRACKPART"s,"TURNOUTTRACK"s,"IfcRailwayTypeEnum"s,"IfcRampFlightTypeEnum"s,"SPIRAL"s,"STRAIGHT"s,"IfcRampTypeEnum"s,"HALF_TURN_RAMP"s,"QUARTER_TURN_RAMP"s,"SPIRAL_RAMP"s,"STRAIGHT_RUN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"DAILY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"WEEKLY"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReferentTypeEnum"s,"BOUNDARY"s,"KILOPOINT"s,"LANDMARK"s,"MILEPOINT"s,"POSITION"s,"REFERENCEMARKER"s,"STATION"s,"SUPERELEVATIONEVENT"s,"WIDTHEVENT"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcedSoilTypeEnum"s,"DYNAMICALLYCOMPACTED"s,"GROUTED"s,"REPLACED"s,"ROLLERCOMPACTED"s,"SURCHARGEPRELOADED"s,"VERTICALLYDRAINED"s,"IfcReinforcingBarRoleEnum"s,"ANCHORING"s,"EDGE"s,"LIGATURE"s,"MAIN"s,"PUNCHING"s,"RING"s,"SHEAR"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"SPACEBAR"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoadPartTypeEnum"s,"BICYCLECROSSING"s,"BUS_STOP"s,"CARRIAGEWAY"s,"CENTRALISLAND"s,"CENTRALRESERVE"s,"HARDSHOULDER"s,"LAYBY"s,"PARKINGBAY"s,"PASSINGBAY"s,"PEDESTRIAN_CROSSING"s,"RAILWAYCROSSING"s,"REFUGEISLAND"s,"ROADSEGMENT"s,"ROADSIDE"s,"ROADSIDEPART"s,"ROADWAYPLATEAU"s,"ROUNDABOUT"s,"SHOULDER"s,"SIDEWALK"s,"SOFTSHOULDER"s,"TOLLPLAZA"s,"TRAFFICISLAND"s,"TRAFFICLANE"s,"IfcRoadTypeEnum"s,"IfcRoleEnum"s,"ARCHITECT"s,"BUILDINGOPERATOR"s,"BUILDINGOWNER"s,"CIVILENGINEER"s,"CLIENT"s,"COMMISSIONINGENGINEER"s,"CONSTRUCTIONMANAGER"s,"CONSULTANT"s,"CONTRACTOR"s,"COSTENGINEER"s,"ELECTRICALENGINEER"s,"ENGINEER"s,"FACILITIESMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"MANUFACTURER"s,"MECHANICALENGINEER"s,"PROJECTMANAGER"s,"RESELLER"s,"STRUCTURALENGINEER"s,"SUBCONTRACTOR"s,"SUPPLIER"s,"IfcRoofTypeEnum"s,"BARREL_ROOF"s,"BUTTERFLY_ROOF"s,"DOME_ROOF"s,"FLAT_ROOF"s,"FREEFORM"s,"GABLE_ROOF"s,"GAMBREL_ROOF"s,"HIPPED_GABLE_ROOF"s,"HIP_ROOF"s,"MANSARD_ROOF"s,"PAVILION_ROOF"s,"RAINBOW_ROOF"s,"SHED_ROOF"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"ATTO"s,"CENTI"s,"DECA"s,"DECI"s,"EXA"s,"FEMTO"s,"GIGA"s,"HECTO"s,"KILO"s,"MEGA"s,"MICRO"s,"MILLI"s,"NANO"s,"PETA"s,"PICO"s,"TERA"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SANITARYFOUNTAIN"s,"SHOWER"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"TAPERED"s,"UNIFORM"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"COSENSOR"s,"EARTHQUAKESENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FOREIGNOBJECTDETECTIONSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"OBSTACLESENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"RAINSENSOR"s,"SMOKESENSOR"s,"SNOWDEPTHSENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"TRAINSENSOR"s,"TURNOUTCLOSURESENSOR"s,"WHEELSENSOR"s,"WINDSENSOR"s,"IfcSequenceEnum"s,"FINISH_FINISH"s,"FINISH_START"s,"START_FINISH"s,"START_START"s,"IfcShadingDeviceTypeEnum"s,"AWNING"s,"JALOUSIE"s,"SHUTTER"s,"IfcShearModulusMeasure"s,"IfcSignTypeEnum"s,"MARKER"s,"PICTORAL"s,"IfcSignalTypeEnum"s,"AUDIO"s,"MIXED"s,"VISUAL"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_BOUNDEDVALUE"s,"P_ENUMERATEDVALUE"s,"P_LISTVALUE"s,"P_REFERENCEVALUE"s,"P_SINGLEVALUE"s,"P_TABLEVALUE"s,"Q_AREA"s,"Q_COUNT"s,"Q_LENGTH"s,"Q_NUMBER"s,"Q_TIME"s,"Q_VOLUME"s,"Q_WEIGHT"s,"IfcSlabTypeEnum"s,"APPROACH_SLAB"s,"BASESLAB"s,"FLOOR"s,"LANDING"s,"ROOF"s,"TRACKSLAB"s,"WEARING"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"BERTH"s,"GFA"s,"PARKING"s,"SPACE"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"INTERFERENCE"s,"OCCUPANCY"s,"RESERVATION"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"CURVED"s,"WINDER"s,"IfcStairTypeEnum"s,"CURVED_RUN_STAIR"s,"DOUBLE_RETURN_STAIR"s,"HALF_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"LADDER"s,"QUARTER_TURN_STAIR"s,"QUARTER_WINDING_STAIR"s,"SPIRAL_STAIR"s,"STRAIGHT_RUN_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"IfcStateEnum"s,"LOCKED"s,"READONLY"s,"READONLYLOCKED"s,"READWRITE"s,"READWRITELOCKED"s,"IfcStrippedOptional"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"DISCRETE"s,"EQUIDISTANT"s,"PARABOLA"s,"POLYGONAL"s,"SINUS"s,"IfcStructuralCurveMemberTypeEnum"s,"COMPRESSION_MEMBER"s,"PIN_JOINED_MEMBER"s,"RIGID_JOINED_MEMBER"s,"TENSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"DEFECT"s,"HATCHMARKING"s,"LINEMARKING"s,"MARK"s,"NONSKIDSURFACING"s,"PAVEMENTSURFACEMARKING"s,"RUMBLESTRIP"s,"SYMBOLMARKING"s,"TAG"s,"TRANSVERSERUMBLESTRIP"s,"TREATMENT"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"START_AND_STOP_EQUIPMENT"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"SUBRACK"s,"WORKSURFACE"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"OILRETENTIONTRAY"s,"PRESSUREVESSEL"s,"STORAGE"s,"VESSEL"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ADJUSTMENT"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"EMERGENCY"s,"INSPECTION"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"SAFETY"s,"TESTING"s,"TROUBLESHOOTING"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonConduitTypeEnum"s,"DIABOLO"s,"GROUTING_DUCT"s,"TRUMPET"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"DOWN"s,"UP"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTrackElementTypeEnum"s,"BLOCKINGDEVICE"s,"DERAILER"s,"FROG"s,"HALF_SET_OF_BLADES"s,"SLEEPER"s,"SPEEDREGULATOR"s,"TRACKENDOFALIGNMENT"s,"VEHICLESTOP"s,"IfcTransformerTypeEnum"s,"CHOPPER"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"IfcTransitionCode"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"DISCONTINUOUS"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementTypeEnum"s,"CRANEWAY"s,"ELEVATOR"s,"ESCALATOR"s,"HAULINGGEAR"s,"LIFTINGGEAR"s,"MOVINGWALKWAY"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"BASESTATIONCONTROLLER"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"HUMIDISTAT"s,"INDICATORPANEL"s,"MIMICPANEL"s,"THERMOSTAT"s,"WEATHERSTATION"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRCONDITIONINGUNIT"s,"AIRHANDLER"s,"DEHUMIDIFIER"s,"ROOFTOPUNIT"s,"SPLITSYSTEM"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"DRAWOFFCOCK"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVehicleTypeEnum"s,"CARGO"s,"ROLLINGSTOCK"s,"VEHICLE"s,"VEHICLEAIR"s,"VEHICLEMARINE"s,"VEHICLETRACKED"s,"VEHICLEWHEELED"s,"IfcVibrationDamperTypeEnum"s,"AXIAL_YIELD"s,"BENDING_YIELD"s,"RUBBER"s,"SHEAR_YIELD"s,"VISCOUS"s,"IfcVibrationIsolatorTypeEnum"s,"BASE"s,"COMPRESSION"s,"SPRING"s,"IfcVirtualElementTypeEnum"s,"CLEARANCE"s,"IfcVoidingFeatureTypeEnum"s,"CHAMFER"s,"CUTOUT"s,"HOLE"s,"MITER"s,"NOTCH"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"ELEMENTEDWALL"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"RETAININGWALL"s,"SOLIDWALL"s,"STANDARD"s,"WAVEWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWellKnownTextLiteral"s,"IfcWindowPanelOperationEnum"s,"BOTTOMHUNG"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"REMOVABLECASEMENT"s,"SIDEHUNGLEFTHAND"s,"SIDEHUNGRIGHTHAND"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"TILTANDTURNLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TOPHUNG"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowTypeEnum"s,"LIGHTDOME"s,"SKYLIGHT"s,"WINDOW"s,"IfcWindowTypePartitioningEnum"s,"DOUBLE_PANEL_HORIZONTAL"s,"DOUBLE_PANEL_VERTICAL"s,"SINGLE_PANEL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_VERTICAL"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcAlignmentParameterSegment"s,"IfcAlignmentVerticalSegment"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGeographicCRS"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMapConversionScaled"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityNumber"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRigidOperation"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureCoordinateIndices"s,"IfcTextureCoordinateIndicesWithVoids"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWellKnownText"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcCurveMeasureSelect"s,"IfcDerivedMeasureValue"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcAlignmentCantSegment"s,"IfcAlignmentHorizontalSegment"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLinearPlacement"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenCrossProfileDef"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointByDistanceExpression"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcSegment"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcAxis2PlacementLinear"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcCurveSegment"s,"IfcDirection"s,"IfcDirectrixCurveSweptAreaSolid"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcIndexedPolygonalTextureMap"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcOffsetCurveByDistances"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPolynomialCurve"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelAssociatesProfileDef"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelPositions"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSectionedSolid"s,"IfcSectionedSolidHorizontal"s,"IfcSectionedSurface"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcSpiral"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcThirdOrderPolynomialSpiral"s,"IfcToroidalSurface"s,"IfcTransportationDeviceType"s,"IfcTriangulatedFaceSet"s,"IfcTriangulatedIrregularNetwork"s,"IfcVehicleType"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuildingStorey"s,"IfcBuiltElementType"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcClothoid"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCosineSpiral"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCourseType"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCylindricalSurface"s,"IfcDeepFoundationType"s,"IfcDirectrixDerivedReferenceSweptAreaSolid"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFacility"s,"IfcFacilityPart"s,"IfcFacilityPartCommon"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGeotechnicalElement"s,"IfcGeotechnicalStratum"s,"IfcGradientCurve"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcImpactProtectionDevice"s,"IfcImpactProtectionDeviceType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcKerbType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLinearElement"s,"IfcLiquidTerminalType"s,"IfcMarineFacility"s,"IfcMarinePart"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMobileTelecommunicationsApplianceType"s,"IfcMooringDeviceType"s,"IfcMotorConnectionType"s,"IfcNavigationElementType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOutletType"s,"IfcPavementType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcPositioningElement"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailType"s,"IfcRailingType"s,"IfcRailway"s,"IfcRailwayPart"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReferent"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAdheresToElement"s,"IfcRelAggregates"s,"IfcRoad"s,"IfcRoadPart"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcSecondOrderPolynomialSpiral"s,"IfcSegmentedReferenceCurve"s,"IfcSeventhOrderPolynomialSpiral"s,"IfcShadingDeviceType"s,"IfcSign"s,"IfcSignType"s,"IfcSignalType"s,"IfcSineSpiral"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonConduit"s,"IfcTendonConduitType"s,"IfcTendonType"s,"IfcTrackElementType"s,"IfcTransformerType"s,"IfcTransportElementType"s,"IfcTransportationDevice"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVehicle"s,"IfcVibrationDamper"s,"IfcVibrationDamperType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVirtualElement"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcInterferenceSelect"s,"IfcSpatialReferenceSelect"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAlignmentCant"s,"IfcAlignmentHorizontal"s,"IfcAlignmentSegment"s,"IfcAlignmentVertical"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBearingType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBridge"s,"IfcBridgePart"s,"IfcBuilding"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxyType"s,"IfcBuildingSystem"s,"IfcBuiltElement"s,"IfcBuiltSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcCaissonFoundationType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcConveyorSegmentType"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCourse"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDeepFoundation"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionBoardType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcEarthworksCut"s,"IfcEarthworksElement"s,"IfcEarthworksFill"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricFlowTreatmentDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcGeotechnicalAssembly"s,"IfcGrid"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcKerb"s,"IfcLamp"s,"IfcLightFixture"s,"IfcLinearPositioningElement"s,"IfcLiquidTerminal"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMobileTelecommunicationsAppliance"s,"IfcMooringDevice"s,"IfcMotorConnection"s,"IfcNavigationElement"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPavement"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRail"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcedSoil"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSignal"s,"IfcSlab"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTrackElement"s,"IfcTransformer"s,"IfcTransportElement"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAlignment"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBearing"s,"IfcBoiler"s,"IfcBorehole"s,"IfcBuildingElementProxy"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcCaissonFoundation"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcConveyorSegment"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionBoard"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricFlowTreatmentDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcGeomodel"s,"IfcGeoslice"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"RailHeadDistance"s,"StartDistAlong"s,"HorizontalLength"s,"StartCantLeft"s,"EndCantLeft"s,"StartCantRight"s,"EndCantRight"s,"StartPoint"s,"StartDirection"s,"StartRadiusOfCurvature"s,"EndRadiusOfCurvature"s,"SegmentLength"s,"GravityCenterLineHeight"s,"StartTag"s,"EndTag"s,"DesignParameters"s,"StartHeight"s,"StartGradient"s,"EndGradient"s,"RadiusOfCurvature"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"TagList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"Radius"s,"Source"s,"Edition"s,"EditionDate"s,"Specification"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"ClothoidConstant"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"Segments"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"CosineTerm"s,"ConstantTerm"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"Placement"s,"SegmentStart"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveStyleFont"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"Directrix"s,"StartParam"s,"EndParam"s,"FlowDirection"s,"SystemType"s,"Location"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ParameterTakesPrecedence"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"Tag"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"UsageType"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"FixedReference"s,"PrimeMeridian"s,"AngleUnit"s,"HeightUnit"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"BaseCurve"s,"EndPoint"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"RelativePlacement"s,"CartesianPosition"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"FactorX"s,"FactorY"s,"FactorZ"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"MaterialExpression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"PlacementRelTo"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"Distance"s,"HorizontalWidths"s,"Widths"s,"Slopes"s,"Tags"s,"OffsetPoint"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"ConstructionType"s,"Height"s,"ColourComponents"s,"Pixel"s,"SizeInX"s,"SizeInY"s,"DistanceAlong"s,"OffsetLateral"s,"OffsetVertical"s,"OffsetLongitudinal"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Closed"s,"Faces"s,"PnIndex"s,"CoefficientsX"s,"CoefficientsY"s,"CoefficientsZ"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"VerticalDatum"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"Expression"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"NumberValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingElement"s,"RelatedSurfaceFeatures"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"RelatingProfileDef"s,"ConnectionGeometry"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceType"s,"ImpliedOrder"s,"InterferenceSpace"s,"RelatingPositioningElement"s,"RelatedProducts"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"FirstCoordinate"s,"SecondCoordinate"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"QuadraticTerm"s,"LinearTerm"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"CrossSections"s,"CrossSectionPositions"s,"SpineCurve"s,"Transition"s,"SepticTerm"s,"SexticTerm"s,"QuinticTerm"s,"QuarticTerm"s,"CubicTerm"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"SineTerm"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"AxisDirection"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"Styles"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"TexCoordsOf"s,"InnerTexCoordIndices"s,"Vertices"s,"TexCoordsList"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Flags"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"WellKnownText"s,"CoordinateReferenceSystem"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"StartDate"s,"FinishDate"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"HasSurfaceFeatures"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ReferencedInStructures"s,"ToFaceSet"s,"HasTexCoords"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"ReferencedByPlacements"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"Positions"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"PositionedRelativeTo"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"UsingCurves"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"AdheresToElement"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"ServicesFacilities"s,"HasColours"s,"HasTextures"s,"ToTexMap"s,"Types"s,"IFC4X3_ADD2"s}; - -class IFC4X3_ADD2_instance_factory : public IfcParse::instance_factory { - virtual IfcUtil::IfcBaseClass* operator()(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) const { - switch(decl->index_in_schema()) { - case 0: return new ::Ifc4x3_add2::IfcAbsorbedDoseMeasure(std::move(data)); - case 1: return new ::Ifc4x3_add2::IfcAccelerationMeasure(std::move(data)); - case 2: return new ::Ifc4x3_add2::IfcActionRequest(std::move(data)); - case 3: return new ::Ifc4x3_add2::IfcActionRequestTypeEnum(std::move(data)); - case 4: return new ::Ifc4x3_add2::IfcActionSourceTypeEnum(std::move(data)); - case 5: return new ::Ifc4x3_add2::IfcActionTypeEnum(std::move(data)); - case 6: return new ::Ifc4x3_add2::IfcActor(std::move(data)); - case 7: return new ::Ifc4x3_add2::IfcActorRole(std::move(data)); - case 9: return new ::Ifc4x3_add2::IfcActuator(std::move(data)); - case 10: return new ::Ifc4x3_add2::IfcActuatorType(std::move(data)); - case 11: return new ::Ifc4x3_add2::IfcActuatorTypeEnum(std::move(data)); - case 12: return new ::Ifc4x3_add2::IfcAddress(std::move(data)); - case 13: return new ::Ifc4x3_add2::IfcAddressTypeEnum(std::move(data)); - case 14: return new ::Ifc4x3_add2::IfcAdvancedBrep(std::move(data)); - case 15: return new ::Ifc4x3_add2::IfcAdvancedBrepWithVoids(std::move(data)); - case 16: return new ::Ifc4x3_add2::IfcAdvancedFace(std::move(data)); - case 17: return new ::Ifc4x3_add2::IfcAirTerminal(std::move(data)); - case 18: return new ::Ifc4x3_add2::IfcAirTerminalBox(std::move(data)); - case 19: return new ::Ifc4x3_add2::IfcAirTerminalBoxType(std::move(data)); - case 20: return new ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum(std::move(data)); - case 21: return new ::Ifc4x3_add2::IfcAirTerminalType(std::move(data)); - case 22: return new ::Ifc4x3_add2::IfcAirTerminalTypeEnum(std::move(data)); - case 23: return new ::Ifc4x3_add2::IfcAirToAirHeatRecovery(std::move(data)); - case 24: return new ::Ifc4x3_add2::IfcAirToAirHeatRecoveryType(std::move(data)); - case 25: return new ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum(std::move(data)); - case 26: return new ::Ifc4x3_add2::IfcAlarm(std::move(data)); - case 27: return new ::Ifc4x3_add2::IfcAlarmType(std::move(data)); - case 28: return new ::Ifc4x3_add2::IfcAlarmTypeEnum(std::move(data)); - case 29: return new ::Ifc4x3_add2::IfcAlignment(std::move(data)); - case 30: return new ::Ifc4x3_add2::IfcAlignmentCant(std::move(data)); - case 31: return new ::Ifc4x3_add2::IfcAlignmentCantSegment(std::move(data)); - case 32: return new ::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum(std::move(data)); - case 33: return new ::Ifc4x3_add2::IfcAlignmentHorizontal(std::move(data)); - case 34: return new ::Ifc4x3_add2::IfcAlignmentHorizontalSegment(std::move(data)); - case 35: return new ::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum(std::move(data)); - case 36: return new ::Ifc4x3_add2::IfcAlignmentParameterSegment(std::move(data)); - case 37: return new ::Ifc4x3_add2::IfcAlignmentSegment(std::move(data)); - case 38: return new ::Ifc4x3_add2::IfcAlignmentTypeEnum(std::move(data)); - case 39: return new ::Ifc4x3_add2::IfcAlignmentVertical(std::move(data)); - case 40: return new ::Ifc4x3_add2::IfcAlignmentVerticalSegment(std::move(data)); - case 41: return new ::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum(std::move(data)); - case 42: return new ::Ifc4x3_add2::IfcAmountOfSubstanceMeasure(std::move(data)); - case 43: return new ::Ifc4x3_add2::IfcAnalysisModelTypeEnum(std::move(data)); - case 44: return new ::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum(std::move(data)); - case 45: return new ::Ifc4x3_add2::IfcAngularVelocityMeasure(std::move(data)); - case 46: return new ::Ifc4x3_add2::IfcAnnotation(std::move(data)); - case 47: return new ::Ifc4x3_add2::IfcAnnotationFillArea(std::move(data)); - case 48: return new ::Ifc4x3_add2::IfcAnnotationTypeEnum(std::move(data)); - case 49: return new ::Ifc4x3_add2::IfcApplication(std::move(data)); - case 50: return new ::Ifc4x3_add2::IfcAppliedValue(std::move(data)); - case 52: return new ::Ifc4x3_add2::IfcApproval(std::move(data)); - case 53: return new ::Ifc4x3_add2::IfcApprovalRelationship(std::move(data)); - case 54: return new ::Ifc4x3_add2::IfcArbitraryClosedProfileDef(std::move(data)); - case 55: return new ::Ifc4x3_add2::IfcArbitraryOpenProfileDef(std::move(data)); - case 56: return new ::Ifc4x3_add2::IfcArbitraryProfileDefWithVoids(std::move(data)); - case 57: return new ::Ifc4x3_add2::IfcArcIndex(std::move(data)); - case 58: return new ::Ifc4x3_add2::IfcAreaDensityMeasure(std::move(data)); - case 59: return new ::Ifc4x3_add2::IfcAreaMeasure(std::move(data)); - case 60: return new ::Ifc4x3_add2::IfcArithmeticOperatorEnum(std::move(data)); - case 61: return new ::Ifc4x3_add2::IfcAssemblyPlaceEnum(std::move(data)); - case 62: return new ::Ifc4x3_add2::IfcAsset(std::move(data)); - case 63: return new ::Ifc4x3_add2::IfcAsymmetricIShapeProfileDef(std::move(data)); - case 64: return new ::Ifc4x3_add2::IfcAudioVisualAppliance(std::move(data)); - case 65: return new ::Ifc4x3_add2::IfcAudioVisualApplianceType(std::move(data)); - case 66: return new ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum(std::move(data)); - case 67: return new ::Ifc4x3_add2::IfcAxis1Placement(std::move(data)); - case 69: return new ::Ifc4x3_add2::IfcAxis2Placement2D(std::move(data)); - case 70: return new ::Ifc4x3_add2::IfcAxis2Placement3D(std::move(data)); - case 71: return new ::Ifc4x3_add2::IfcAxis2PlacementLinear(std::move(data)); - case 72: return new ::Ifc4x3_add2::IfcBeam(std::move(data)); - case 73: return new ::Ifc4x3_add2::IfcBeamType(std::move(data)); - case 74: return new ::Ifc4x3_add2::IfcBeamTypeEnum(std::move(data)); - case 75: return new ::Ifc4x3_add2::IfcBearing(std::move(data)); - case 76: return new ::Ifc4x3_add2::IfcBearingType(std::move(data)); - case 77: return new ::Ifc4x3_add2::IfcBearingTypeEnum(std::move(data)); - case 78: return new ::Ifc4x3_add2::IfcBenchmarkEnum(std::move(data)); - case 80: return new ::Ifc4x3_add2::IfcBinary(std::move(data)); - case 81: return new ::Ifc4x3_add2::IfcBlobTexture(std::move(data)); - case 82: return new ::Ifc4x3_add2::IfcBlock(std::move(data)); - case 83: return new ::Ifc4x3_add2::IfcBoiler(std::move(data)); - case 84: return new ::Ifc4x3_add2::IfcBoilerType(std::move(data)); - case 85: return new ::Ifc4x3_add2::IfcBoilerTypeEnum(std::move(data)); - case 86: return new ::Ifc4x3_add2::IfcBoolean(std::move(data)); - case 87: return new ::Ifc4x3_add2::IfcBooleanClippingResult(std::move(data)); - case 89: return new ::Ifc4x3_add2::IfcBooleanOperator(std::move(data)); - case 90: return new ::Ifc4x3_add2::IfcBooleanResult(std::move(data)); - case 91: return new ::Ifc4x3_add2::IfcBorehole(std::move(data)); - case 92: return new ::Ifc4x3_add2::IfcBoundaryCondition(std::move(data)); - case 93: return new ::Ifc4x3_add2::IfcBoundaryCurve(std::move(data)); - case 94: return new ::Ifc4x3_add2::IfcBoundaryEdgeCondition(std::move(data)); - case 95: return new ::Ifc4x3_add2::IfcBoundaryFaceCondition(std::move(data)); - case 96: return new ::Ifc4x3_add2::IfcBoundaryNodeCondition(std::move(data)); - case 97: return new ::Ifc4x3_add2::IfcBoundaryNodeConditionWarping(std::move(data)); - case 98: return new ::Ifc4x3_add2::IfcBoundedCurve(std::move(data)); - case 99: return new ::Ifc4x3_add2::IfcBoundedSurface(std::move(data)); - case 100: return new ::Ifc4x3_add2::IfcBoundingBox(std::move(data)); - case 101: return new ::Ifc4x3_add2::IfcBoxAlignment(std::move(data)); - case 102: return new ::Ifc4x3_add2::IfcBoxedHalfSpace(std::move(data)); - case 103: return new ::Ifc4x3_add2::IfcBridge(std::move(data)); - case 104: return new ::Ifc4x3_add2::IfcBridgePart(std::move(data)); - case 105: return new ::Ifc4x3_add2::IfcBridgePartTypeEnum(std::move(data)); - case 106: return new ::Ifc4x3_add2::IfcBridgeTypeEnum(std::move(data)); - case 107: return new ::Ifc4x3_add2::IfcBSplineCurve(std::move(data)); - case 108: return new ::Ifc4x3_add2::IfcBSplineCurveForm(std::move(data)); - case 109: return new ::Ifc4x3_add2::IfcBSplineCurveWithKnots(std::move(data)); - case 110: return new ::Ifc4x3_add2::IfcBSplineSurface(std::move(data)); - case 111: return new ::Ifc4x3_add2::IfcBSplineSurfaceForm(std::move(data)); - case 112: return new ::Ifc4x3_add2::IfcBSplineSurfaceWithKnots(std::move(data)); - case 113: return new ::Ifc4x3_add2::IfcBuilding(std::move(data)); - case 114: return new ::Ifc4x3_add2::IfcBuildingElementPart(std::move(data)); - case 115: return new ::Ifc4x3_add2::IfcBuildingElementPartType(std::move(data)); - case 116: return new ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum(std::move(data)); - case 117: return new ::Ifc4x3_add2::IfcBuildingElementProxy(std::move(data)); - case 118: return new ::Ifc4x3_add2::IfcBuildingElementProxyType(std::move(data)); - case 119: return new ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum(std::move(data)); - case 120: return new ::Ifc4x3_add2::IfcBuildingStorey(std::move(data)); - case 121: return new ::Ifc4x3_add2::IfcBuildingSystem(std::move(data)); - case 122: return new ::Ifc4x3_add2::IfcBuildingSystemTypeEnum(std::move(data)); - case 123: return new ::Ifc4x3_add2::IfcBuiltElement(std::move(data)); - case 124: return new ::Ifc4x3_add2::IfcBuiltElementType(std::move(data)); - case 125: return new ::Ifc4x3_add2::IfcBuiltSystem(std::move(data)); - case 126: return new ::Ifc4x3_add2::IfcBuiltSystemTypeEnum(std::move(data)); - case 127: return new ::Ifc4x3_add2::IfcBurner(std::move(data)); - case 128: return new ::Ifc4x3_add2::IfcBurnerType(std::move(data)); - case 129: return new ::Ifc4x3_add2::IfcBurnerTypeEnum(std::move(data)); - case 130: return new ::Ifc4x3_add2::IfcCableCarrierFitting(std::move(data)); - case 131: return new ::Ifc4x3_add2::IfcCableCarrierFittingType(std::move(data)); - case 132: return new ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum(std::move(data)); - case 133: return new ::Ifc4x3_add2::IfcCableCarrierSegment(std::move(data)); - case 134: return new ::Ifc4x3_add2::IfcCableCarrierSegmentType(std::move(data)); - case 135: return new ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum(std::move(data)); - case 136: return new ::Ifc4x3_add2::IfcCableFitting(std::move(data)); - case 137: return new ::Ifc4x3_add2::IfcCableFittingType(std::move(data)); - case 138: return new ::Ifc4x3_add2::IfcCableFittingTypeEnum(std::move(data)); - case 139: return new ::Ifc4x3_add2::IfcCableSegment(std::move(data)); - case 140: return new ::Ifc4x3_add2::IfcCableSegmentType(std::move(data)); - case 141: return new ::Ifc4x3_add2::IfcCableSegmentTypeEnum(std::move(data)); - case 142: return new ::Ifc4x3_add2::IfcCaissonFoundation(std::move(data)); - case 143: return new ::Ifc4x3_add2::IfcCaissonFoundationType(std::move(data)); - case 144: return new ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum(std::move(data)); - case 145: return new ::Ifc4x3_add2::IfcCardinalPointReference(std::move(data)); - case 146: return new ::Ifc4x3_add2::IfcCartesianPoint(std::move(data)); - case 147: return new ::Ifc4x3_add2::IfcCartesianPointList(std::move(data)); - case 148: return new ::Ifc4x3_add2::IfcCartesianPointList2D(std::move(data)); - case 149: return new ::Ifc4x3_add2::IfcCartesianPointList3D(std::move(data)); - case 150: return new ::Ifc4x3_add2::IfcCartesianTransformationOperator(std::move(data)); - case 151: return new ::Ifc4x3_add2::IfcCartesianTransformationOperator2D(std::move(data)); - case 152: return new ::Ifc4x3_add2::IfcCartesianTransformationOperator2DnonUniform(std::move(data)); - case 153: return new ::Ifc4x3_add2::IfcCartesianTransformationOperator3D(std::move(data)); - case 154: return new ::Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform(std::move(data)); - case 155: return new ::Ifc4x3_add2::IfcCenterLineProfileDef(std::move(data)); - case 156: return new ::Ifc4x3_add2::IfcChangeActionEnum(std::move(data)); - case 157: return new ::Ifc4x3_add2::IfcChiller(std::move(data)); - case 158: return new ::Ifc4x3_add2::IfcChillerType(std::move(data)); - case 159: return new ::Ifc4x3_add2::IfcChillerTypeEnum(std::move(data)); - case 160: return new ::Ifc4x3_add2::IfcChimney(std::move(data)); - case 161: return new ::Ifc4x3_add2::IfcChimneyType(std::move(data)); - case 162: return new ::Ifc4x3_add2::IfcChimneyTypeEnum(std::move(data)); - case 163: return new ::Ifc4x3_add2::IfcCircle(std::move(data)); - case 164: return new ::Ifc4x3_add2::IfcCircleHollowProfileDef(std::move(data)); - case 165: return new ::Ifc4x3_add2::IfcCircleProfileDef(std::move(data)); - case 166: return new ::Ifc4x3_add2::IfcCivilElement(std::move(data)); - case 167: return new ::Ifc4x3_add2::IfcCivilElementType(std::move(data)); - case 168: return new ::Ifc4x3_add2::IfcClassification(std::move(data)); - case 169: return new ::Ifc4x3_add2::IfcClassificationReference(std::move(data)); - case 172: return new ::Ifc4x3_add2::IfcClosedShell(std::move(data)); - case 173: return new ::Ifc4x3_add2::IfcClothoid(std::move(data)); - case 174: return new ::Ifc4x3_add2::IfcCoil(std::move(data)); - case 175: return new ::Ifc4x3_add2::IfcCoilType(std::move(data)); - case 176: return new ::Ifc4x3_add2::IfcCoilTypeEnum(std::move(data)); - case 179: return new ::Ifc4x3_add2::IfcColourRgb(std::move(data)); - case 180: return new ::Ifc4x3_add2::IfcColourRgbList(std::move(data)); - case 181: return new ::Ifc4x3_add2::IfcColourSpecification(std::move(data)); - case 182: return new ::Ifc4x3_add2::IfcColumn(std::move(data)); - case 183: return new ::Ifc4x3_add2::IfcColumnType(std::move(data)); - case 184: return new ::Ifc4x3_add2::IfcColumnTypeEnum(std::move(data)); - case 185: return new ::Ifc4x3_add2::IfcCommunicationsAppliance(std::move(data)); - case 186: return new ::Ifc4x3_add2::IfcCommunicationsApplianceType(std::move(data)); - case 187: return new ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum(std::move(data)); - case 188: return new ::Ifc4x3_add2::IfcComplexNumber(std::move(data)); - case 189: return new ::Ifc4x3_add2::IfcComplexProperty(std::move(data)); - case 190: return new ::Ifc4x3_add2::IfcComplexPropertyTemplate(std::move(data)); - case 191: return new ::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum(std::move(data)); - case 192: return new ::Ifc4x3_add2::IfcCompositeCurve(std::move(data)); - case 193: return new ::Ifc4x3_add2::IfcCompositeCurveOnSurface(std::move(data)); - case 194: return new ::Ifc4x3_add2::IfcCompositeCurveSegment(std::move(data)); - case 195: return new ::Ifc4x3_add2::IfcCompositeProfileDef(std::move(data)); - case 196: return new ::Ifc4x3_add2::IfcCompoundPlaneAngleMeasure(std::move(data)); - case 197: return new ::Ifc4x3_add2::IfcCompressor(std::move(data)); - case 198: return new ::Ifc4x3_add2::IfcCompressorType(std::move(data)); - case 199: return new ::Ifc4x3_add2::IfcCompressorTypeEnum(std::move(data)); - case 200: return new ::Ifc4x3_add2::IfcCondenser(std::move(data)); - case 201: return new ::Ifc4x3_add2::IfcCondenserType(std::move(data)); - case 202: return new ::Ifc4x3_add2::IfcCondenserTypeEnum(std::move(data)); - case 203: return new ::Ifc4x3_add2::IfcConic(std::move(data)); - case 204: return new ::Ifc4x3_add2::IfcConnectedFaceSet(std::move(data)); - case 205: return new ::Ifc4x3_add2::IfcConnectionCurveGeometry(std::move(data)); - case 206: return new ::Ifc4x3_add2::IfcConnectionGeometry(std::move(data)); - case 207: return new ::Ifc4x3_add2::IfcConnectionPointEccentricity(std::move(data)); - case 208: return new ::Ifc4x3_add2::IfcConnectionPointGeometry(std::move(data)); - case 209: return new ::Ifc4x3_add2::IfcConnectionSurfaceGeometry(std::move(data)); - case 210: return new ::Ifc4x3_add2::IfcConnectionTypeEnum(std::move(data)); - case 211: return new ::Ifc4x3_add2::IfcConnectionVolumeGeometry(std::move(data)); - case 212: return new ::Ifc4x3_add2::IfcConstraint(std::move(data)); - case 213: return new ::Ifc4x3_add2::IfcConstraintEnum(std::move(data)); - case 214: return new ::Ifc4x3_add2::IfcConstructionEquipmentResource(std::move(data)); - case 215: return new ::Ifc4x3_add2::IfcConstructionEquipmentResourceType(std::move(data)); - case 216: return new ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum(std::move(data)); - case 217: return new ::Ifc4x3_add2::IfcConstructionMaterialResource(std::move(data)); - case 218: return new ::Ifc4x3_add2::IfcConstructionMaterialResourceType(std::move(data)); - case 219: return new ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum(std::move(data)); - case 220: return new ::Ifc4x3_add2::IfcConstructionProductResource(std::move(data)); - case 221: return new ::Ifc4x3_add2::IfcConstructionProductResourceType(std::move(data)); - case 222: return new ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum(std::move(data)); - case 223: return new ::Ifc4x3_add2::IfcConstructionResource(std::move(data)); - case 224: return new ::Ifc4x3_add2::IfcConstructionResourceType(std::move(data)); - case 225: return new ::Ifc4x3_add2::IfcContext(std::move(data)); - case 226: return new ::Ifc4x3_add2::IfcContextDependentMeasure(std::move(data)); - case 227: return new ::Ifc4x3_add2::IfcContextDependentUnit(std::move(data)); - case 228: return new ::Ifc4x3_add2::IfcControl(std::move(data)); - case 229: return new ::Ifc4x3_add2::IfcController(std::move(data)); - case 230: return new ::Ifc4x3_add2::IfcControllerType(std::move(data)); - case 231: return new ::Ifc4x3_add2::IfcControllerTypeEnum(std::move(data)); - case 232: return new ::Ifc4x3_add2::IfcConversionBasedUnit(std::move(data)); - case 233: return new ::Ifc4x3_add2::IfcConversionBasedUnitWithOffset(std::move(data)); - case 234: return new ::Ifc4x3_add2::IfcConveyorSegment(std::move(data)); - case 235: return new ::Ifc4x3_add2::IfcConveyorSegmentType(std::move(data)); - case 236: return new ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum(std::move(data)); - case 237: return new ::Ifc4x3_add2::IfcCooledBeam(std::move(data)); - case 238: return new ::Ifc4x3_add2::IfcCooledBeamType(std::move(data)); - case 239: return new ::Ifc4x3_add2::IfcCooledBeamTypeEnum(std::move(data)); - case 240: return new ::Ifc4x3_add2::IfcCoolingTower(std::move(data)); - case 241: return new ::Ifc4x3_add2::IfcCoolingTowerType(std::move(data)); - case 242: return new ::Ifc4x3_add2::IfcCoolingTowerTypeEnum(std::move(data)); - case 243: return new ::Ifc4x3_add2::IfcCoordinateOperation(std::move(data)); - case 244: return new ::Ifc4x3_add2::IfcCoordinateReferenceSystem(std::move(data)); - case 246: return new ::Ifc4x3_add2::IfcCosineSpiral(std::move(data)); - case 247: return new ::Ifc4x3_add2::IfcCostItem(std::move(data)); - case 248: return new ::Ifc4x3_add2::IfcCostItemTypeEnum(std::move(data)); - case 249: return new ::Ifc4x3_add2::IfcCostSchedule(std::move(data)); - case 250: return new ::Ifc4x3_add2::IfcCostScheduleTypeEnum(std::move(data)); - case 251: return new ::Ifc4x3_add2::IfcCostValue(std::move(data)); - case 252: return new ::Ifc4x3_add2::IfcCountMeasure(std::move(data)); - case 253: return new ::Ifc4x3_add2::IfcCourse(std::move(data)); - case 254: return new ::Ifc4x3_add2::IfcCourseType(std::move(data)); - case 255: return new ::Ifc4x3_add2::IfcCourseTypeEnum(std::move(data)); - case 256: return new ::Ifc4x3_add2::IfcCovering(std::move(data)); - case 257: return new ::Ifc4x3_add2::IfcCoveringType(std::move(data)); - case 258: return new ::Ifc4x3_add2::IfcCoveringTypeEnum(std::move(data)); - case 259: return new ::Ifc4x3_add2::IfcCrewResource(std::move(data)); - case 260: return new ::Ifc4x3_add2::IfcCrewResourceType(std::move(data)); - case 261: return new ::Ifc4x3_add2::IfcCrewResourceTypeEnum(std::move(data)); - case 262: return new ::Ifc4x3_add2::IfcCsgPrimitive3D(std::move(data)); - case 264: return new ::Ifc4x3_add2::IfcCsgSolid(std::move(data)); - case 265: return new ::Ifc4x3_add2::IfcCShapeProfileDef(std::move(data)); - case 266: return new ::Ifc4x3_add2::IfcCurrencyRelationship(std::move(data)); - case 267: return new ::Ifc4x3_add2::IfcCurtainWall(std::move(data)); - case 268: return new ::Ifc4x3_add2::IfcCurtainWallType(std::move(data)); - case 269: return new ::Ifc4x3_add2::IfcCurtainWallTypeEnum(std::move(data)); - case 270: return new ::Ifc4x3_add2::IfcCurvatureMeasure(std::move(data)); - case 271: return new ::Ifc4x3_add2::IfcCurve(std::move(data)); - case 272: return new ::Ifc4x3_add2::IfcCurveBoundedPlane(std::move(data)); - case 273: return new ::Ifc4x3_add2::IfcCurveBoundedSurface(std::move(data)); - case 275: return new ::Ifc4x3_add2::IfcCurveInterpolationEnum(std::move(data)); - case 279: return new ::Ifc4x3_add2::IfcCurveSegment(std::move(data)); - case 280: return new ::Ifc4x3_add2::IfcCurveStyle(std::move(data)); - case 281: return new ::Ifc4x3_add2::IfcCurveStyleFont(std::move(data)); - case 282: return new ::Ifc4x3_add2::IfcCurveStyleFontAndScaling(std::move(data)); - case 283: return new ::Ifc4x3_add2::IfcCurveStyleFontPattern(std::move(data)); - case 285: return new ::Ifc4x3_add2::IfcCylindricalSurface(std::move(data)); - case 286: return new ::Ifc4x3_add2::IfcDamper(std::move(data)); - case 287: return new ::Ifc4x3_add2::IfcDamperType(std::move(data)); - case 288: return new ::Ifc4x3_add2::IfcDamperTypeEnum(std::move(data)); - case 289: return new ::Ifc4x3_add2::IfcDataOriginEnum(std::move(data)); - case 290: return new ::Ifc4x3_add2::IfcDate(std::move(data)); - case 291: return new ::Ifc4x3_add2::IfcDateTime(std::move(data)); - case 292: return new ::Ifc4x3_add2::IfcDayInMonthNumber(std::move(data)); - case 293: return new ::Ifc4x3_add2::IfcDayInWeekNumber(std::move(data)); - case 294: return new ::Ifc4x3_add2::IfcDeepFoundation(std::move(data)); - case 295: return new ::Ifc4x3_add2::IfcDeepFoundationType(std::move(data)); - case 298: return new ::Ifc4x3_add2::IfcDerivedProfileDef(std::move(data)); - case 299: return new ::Ifc4x3_add2::IfcDerivedUnit(std::move(data)); - case 300: return new ::Ifc4x3_add2::IfcDerivedUnitElement(std::move(data)); - case 301: return new ::Ifc4x3_add2::IfcDerivedUnitEnum(std::move(data)); - case 302: return new ::Ifc4x3_add2::IfcDescriptiveMeasure(std::move(data)); - case 303: return new ::Ifc4x3_add2::IfcDimensionalExponents(std::move(data)); - case 304: return new ::Ifc4x3_add2::IfcDimensionCount(std::move(data)); - case 305: return new ::Ifc4x3_add2::IfcDirection(std::move(data)); - case 306: return new ::Ifc4x3_add2::IfcDirectionSenseEnum(std::move(data)); - case 307: return new ::Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid(std::move(data)); - case 308: return new ::Ifc4x3_add2::IfcDirectrixDerivedReferenceSweptAreaSolid(std::move(data)); - case 309: return new ::Ifc4x3_add2::IfcDiscreteAccessory(std::move(data)); - case 310: return new ::Ifc4x3_add2::IfcDiscreteAccessoryType(std::move(data)); - case 311: return new ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum(std::move(data)); - case 312: return new ::Ifc4x3_add2::IfcDistributionBoard(std::move(data)); - case 313: return new ::Ifc4x3_add2::IfcDistributionBoardType(std::move(data)); - case 314: return new ::Ifc4x3_add2::IfcDistributionBoardTypeEnum(std::move(data)); - case 315: return new ::Ifc4x3_add2::IfcDistributionChamberElement(std::move(data)); - case 316: return new ::Ifc4x3_add2::IfcDistributionChamberElementType(std::move(data)); - case 317: return new ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum(std::move(data)); - case 318: return new ::Ifc4x3_add2::IfcDistributionCircuit(std::move(data)); - case 319: return new ::Ifc4x3_add2::IfcDistributionControlElement(std::move(data)); - case 320: return new ::Ifc4x3_add2::IfcDistributionControlElementType(std::move(data)); - case 321: return new ::Ifc4x3_add2::IfcDistributionElement(std::move(data)); - case 322: return new ::Ifc4x3_add2::IfcDistributionElementType(std::move(data)); - case 323: return new ::Ifc4x3_add2::IfcDistributionFlowElement(std::move(data)); - case 324: return new ::Ifc4x3_add2::IfcDistributionFlowElementType(std::move(data)); - case 325: return new ::Ifc4x3_add2::IfcDistributionPort(std::move(data)); - case 326: return new ::Ifc4x3_add2::IfcDistributionPortTypeEnum(std::move(data)); - case 327: return new ::Ifc4x3_add2::IfcDistributionSystem(std::move(data)); - case 328: return new ::Ifc4x3_add2::IfcDistributionSystemEnum(std::move(data)); - case 329: return new ::Ifc4x3_add2::IfcDocumentConfidentialityEnum(std::move(data)); - case 330: return new ::Ifc4x3_add2::IfcDocumentInformation(std::move(data)); - case 331: return new ::Ifc4x3_add2::IfcDocumentInformationRelationship(std::move(data)); - case 332: return new ::Ifc4x3_add2::IfcDocumentReference(std::move(data)); - case 334: return new ::Ifc4x3_add2::IfcDocumentStatusEnum(std::move(data)); - case 335: return new ::Ifc4x3_add2::IfcDoor(std::move(data)); - case 336: return new ::Ifc4x3_add2::IfcDoorLiningProperties(std::move(data)); - case 337: return new ::Ifc4x3_add2::IfcDoorPanelOperationEnum(std::move(data)); - case 338: return new ::Ifc4x3_add2::IfcDoorPanelPositionEnum(std::move(data)); - case 339: return new ::Ifc4x3_add2::IfcDoorPanelProperties(std::move(data)); - case 340: return new ::Ifc4x3_add2::IfcDoorType(std::move(data)); - case 341: return new ::Ifc4x3_add2::IfcDoorTypeEnum(std::move(data)); - case 342: return new ::Ifc4x3_add2::IfcDoorTypeOperationEnum(std::move(data)); - case 343: return new ::Ifc4x3_add2::IfcDoseEquivalentMeasure(std::move(data)); - case 344: return new ::Ifc4x3_add2::IfcDraughtingPreDefinedColour(std::move(data)); - case 345: return new ::Ifc4x3_add2::IfcDraughtingPreDefinedCurveFont(std::move(data)); - case 346: return new ::Ifc4x3_add2::IfcDuctFitting(std::move(data)); - case 347: return new ::Ifc4x3_add2::IfcDuctFittingType(std::move(data)); - case 348: return new ::Ifc4x3_add2::IfcDuctFittingTypeEnum(std::move(data)); - case 349: return new ::Ifc4x3_add2::IfcDuctSegment(std::move(data)); - case 350: return new ::Ifc4x3_add2::IfcDuctSegmentType(std::move(data)); - case 351: return new ::Ifc4x3_add2::IfcDuctSegmentTypeEnum(std::move(data)); - case 352: return new ::Ifc4x3_add2::IfcDuctSilencer(std::move(data)); - case 353: return new ::Ifc4x3_add2::IfcDuctSilencerType(std::move(data)); - case 354: return new ::Ifc4x3_add2::IfcDuctSilencerTypeEnum(std::move(data)); - case 355: return new ::Ifc4x3_add2::IfcDuration(std::move(data)); - case 356: return new ::Ifc4x3_add2::IfcDynamicViscosityMeasure(std::move(data)); - case 357: return new ::Ifc4x3_add2::IfcEarthworksCut(std::move(data)); - case 358: return new ::Ifc4x3_add2::IfcEarthworksCutTypeEnum(std::move(data)); - case 359: return new ::Ifc4x3_add2::IfcEarthworksElement(std::move(data)); - case 360: return new ::Ifc4x3_add2::IfcEarthworksFill(std::move(data)); - case 361: return new ::Ifc4x3_add2::IfcEarthworksFillTypeEnum(std::move(data)); - case 362: return new ::Ifc4x3_add2::IfcEdge(std::move(data)); - case 363: return new ::Ifc4x3_add2::IfcEdgeCurve(std::move(data)); - case 364: return new ::Ifc4x3_add2::IfcEdgeLoop(std::move(data)); - case 365: return new ::Ifc4x3_add2::IfcElectricAppliance(std::move(data)); - case 366: return new ::Ifc4x3_add2::IfcElectricApplianceType(std::move(data)); - case 367: return new ::Ifc4x3_add2::IfcElectricApplianceTypeEnum(std::move(data)); - case 368: return new ::Ifc4x3_add2::IfcElectricCapacitanceMeasure(std::move(data)); - case 369: return new ::Ifc4x3_add2::IfcElectricChargeMeasure(std::move(data)); - case 370: return new ::Ifc4x3_add2::IfcElectricConductanceMeasure(std::move(data)); - case 371: return new ::Ifc4x3_add2::IfcElectricCurrentMeasure(std::move(data)); - case 372: return new ::Ifc4x3_add2::IfcElectricDistributionBoard(std::move(data)); - case 373: return new ::Ifc4x3_add2::IfcElectricDistributionBoardType(std::move(data)); - case 374: return new ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum(std::move(data)); - case 375: return new ::Ifc4x3_add2::IfcElectricFlowStorageDevice(std::move(data)); - case 376: return new ::Ifc4x3_add2::IfcElectricFlowStorageDeviceType(std::move(data)); - case 377: return new ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum(std::move(data)); - case 378: return new ::Ifc4x3_add2::IfcElectricFlowTreatmentDevice(std::move(data)); - case 379: return new ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceType(std::move(data)); - case 380: return new ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum(std::move(data)); - case 381: return new ::Ifc4x3_add2::IfcElectricGenerator(std::move(data)); - case 382: return new ::Ifc4x3_add2::IfcElectricGeneratorType(std::move(data)); - case 383: return new ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum(std::move(data)); - case 384: return new ::Ifc4x3_add2::IfcElectricMotor(std::move(data)); - case 385: return new ::Ifc4x3_add2::IfcElectricMotorType(std::move(data)); - case 386: return new ::Ifc4x3_add2::IfcElectricMotorTypeEnum(std::move(data)); - case 387: return new ::Ifc4x3_add2::IfcElectricResistanceMeasure(std::move(data)); - case 388: return new ::Ifc4x3_add2::IfcElectricTimeControl(std::move(data)); - case 389: return new ::Ifc4x3_add2::IfcElectricTimeControlType(std::move(data)); - case 390: return new ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum(std::move(data)); - case 391: return new ::Ifc4x3_add2::IfcElectricVoltageMeasure(std::move(data)); - case 392: return new ::Ifc4x3_add2::IfcElement(std::move(data)); - case 393: return new ::Ifc4x3_add2::IfcElementarySurface(std::move(data)); - case 394: return new ::Ifc4x3_add2::IfcElementAssembly(std::move(data)); - case 395: return new ::Ifc4x3_add2::IfcElementAssemblyType(std::move(data)); - case 396: return new ::Ifc4x3_add2::IfcElementAssemblyTypeEnum(std::move(data)); - case 397: return new ::Ifc4x3_add2::IfcElementComponent(std::move(data)); - case 398: return new ::Ifc4x3_add2::IfcElementComponentType(std::move(data)); - case 399: return new ::Ifc4x3_add2::IfcElementCompositionEnum(std::move(data)); - case 400: return new ::Ifc4x3_add2::IfcElementQuantity(std::move(data)); - case 401: return new ::Ifc4x3_add2::IfcElementType(std::move(data)); - case 402: return new ::Ifc4x3_add2::IfcEllipse(std::move(data)); - case 403: return new ::Ifc4x3_add2::IfcEllipseProfileDef(std::move(data)); - case 404: return new ::Ifc4x3_add2::IfcEnergyConversionDevice(std::move(data)); - case 405: return new ::Ifc4x3_add2::IfcEnergyConversionDeviceType(std::move(data)); - case 406: return new ::Ifc4x3_add2::IfcEnergyMeasure(std::move(data)); - case 407: return new ::Ifc4x3_add2::IfcEngine(std::move(data)); - case 408: return new ::Ifc4x3_add2::IfcEngineType(std::move(data)); - case 409: return new ::Ifc4x3_add2::IfcEngineTypeEnum(std::move(data)); - case 410: return new ::Ifc4x3_add2::IfcEvaporativeCooler(std::move(data)); - case 411: return new ::Ifc4x3_add2::IfcEvaporativeCoolerType(std::move(data)); - case 412: return new ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum(std::move(data)); - case 413: return new ::Ifc4x3_add2::IfcEvaporator(std::move(data)); - case 414: return new ::Ifc4x3_add2::IfcEvaporatorType(std::move(data)); - case 415: return new ::Ifc4x3_add2::IfcEvaporatorTypeEnum(std::move(data)); - case 416: return new ::Ifc4x3_add2::IfcEvent(std::move(data)); - case 417: return new ::Ifc4x3_add2::IfcEventTime(std::move(data)); - case 418: return new ::Ifc4x3_add2::IfcEventTriggerTypeEnum(std::move(data)); - case 419: return new ::Ifc4x3_add2::IfcEventType(std::move(data)); - case 420: return new ::Ifc4x3_add2::IfcEventTypeEnum(std::move(data)); - case 421: return new ::Ifc4x3_add2::IfcExtendedProperties(std::move(data)); - case 422: return new ::Ifc4x3_add2::IfcExternalInformation(std::move(data)); - case 423: return new ::Ifc4x3_add2::IfcExternallyDefinedHatchStyle(std::move(data)); - case 424: return new ::Ifc4x3_add2::IfcExternallyDefinedSurfaceStyle(std::move(data)); - case 425: return new ::Ifc4x3_add2::IfcExternallyDefinedTextFont(std::move(data)); - case 426: return new ::Ifc4x3_add2::IfcExternalReference(std::move(data)); - case 427: return new ::Ifc4x3_add2::IfcExternalReferenceRelationship(std::move(data)); - case 428: return new ::Ifc4x3_add2::IfcExternalSpatialElement(std::move(data)); - case 429: return new ::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum(std::move(data)); - case 430: return new ::Ifc4x3_add2::IfcExternalSpatialStructureElement(std::move(data)); - case 431: return new ::Ifc4x3_add2::IfcExtrudedAreaSolid(std::move(data)); - case 432: return new ::Ifc4x3_add2::IfcExtrudedAreaSolidTapered(std::move(data)); - case 433: return new ::Ifc4x3_add2::IfcFace(std::move(data)); - case 434: return new ::Ifc4x3_add2::IfcFaceBasedSurfaceModel(std::move(data)); - case 435: return new ::Ifc4x3_add2::IfcFaceBound(std::move(data)); - case 436: return new ::Ifc4x3_add2::IfcFaceOuterBound(std::move(data)); - case 437: return new ::Ifc4x3_add2::IfcFaceSurface(std::move(data)); - case 438: return new ::Ifc4x3_add2::IfcFacetedBrep(std::move(data)); - case 439: return new ::Ifc4x3_add2::IfcFacetedBrepWithVoids(std::move(data)); - case 440: return new ::Ifc4x3_add2::IfcFacility(std::move(data)); - case 441: return new ::Ifc4x3_add2::IfcFacilityPart(std::move(data)); - case 442: return new ::Ifc4x3_add2::IfcFacilityPartCommon(std::move(data)); - case 443: return new ::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum(std::move(data)); - case 444: return new ::Ifc4x3_add2::IfcFacilityUsageEnum(std::move(data)); - case 445: return new ::Ifc4x3_add2::IfcFailureConnectionCondition(std::move(data)); - case 446: return new ::Ifc4x3_add2::IfcFan(std::move(data)); - case 447: return new ::Ifc4x3_add2::IfcFanType(std::move(data)); - case 448: return new ::Ifc4x3_add2::IfcFanTypeEnum(std::move(data)); - case 449: return new ::Ifc4x3_add2::IfcFastener(std::move(data)); - case 450: return new ::Ifc4x3_add2::IfcFastenerType(std::move(data)); - case 451: return new ::Ifc4x3_add2::IfcFastenerTypeEnum(std::move(data)); - case 452: return new ::Ifc4x3_add2::IfcFeatureElement(std::move(data)); - case 453: return new ::Ifc4x3_add2::IfcFeatureElementAddition(std::move(data)); - case 454: return new ::Ifc4x3_add2::IfcFeatureElementSubtraction(std::move(data)); - case 455: return new ::Ifc4x3_add2::IfcFillAreaStyle(std::move(data)); - case 456: return new ::Ifc4x3_add2::IfcFillAreaStyleHatching(std::move(data)); - case 457: return new ::Ifc4x3_add2::IfcFillAreaStyleTiles(std::move(data)); - case 459: return new ::Ifc4x3_add2::IfcFilter(std::move(data)); - case 460: return new ::Ifc4x3_add2::IfcFilterType(std::move(data)); - case 461: return new ::Ifc4x3_add2::IfcFilterTypeEnum(std::move(data)); - case 462: return new ::Ifc4x3_add2::IfcFireSuppressionTerminal(std::move(data)); - case 463: return new ::Ifc4x3_add2::IfcFireSuppressionTerminalType(std::move(data)); - case 464: return new ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum(std::move(data)); - case 465: return new ::Ifc4x3_add2::IfcFixedReferenceSweptAreaSolid(std::move(data)); - case 466: return new ::Ifc4x3_add2::IfcFlowController(std::move(data)); - case 467: return new ::Ifc4x3_add2::IfcFlowControllerType(std::move(data)); - case 468: return new ::Ifc4x3_add2::IfcFlowDirectionEnum(std::move(data)); - case 469: return new ::Ifc4x3_add2::IfcFlowFitting(std::move(data)); - case 470: return new ::Ifc4x3_add2::IfcFlowFittingType(std::move(data)); - case 471: return new ::Ifc4x3_add2::IfcFlowInstrument(std::move(data)); - case 472: return new ::Ifc4x3_add2::IfcFlowInstrumentType(std::move(data)); - case 473: return new ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum(std::move(data)); - case 474: return new ::Ifc4x3_add2::IfcFlowMeter(std::move(data)); - case 475: return new ::Ifc4x3_add2::IfcFlowMeterType(std::move(data)); - case 476: return new ::Ifc4x3_add2::IfcFlowMeterTypeEnum(std::move(data)); - case 477: return new ::Ifc4x3_add2::IfcFlowMovingDevice(std::move(data)); - case 478: return new ::Ifc4x3_add2::IfcFlowMovingDeviceType(std::move(data)); - case 479: return new ::Ifc4x3_add2::IfcFlowSegment(std::move(data)); - case 480: return new ::Ifc4x3_add2::IfcFlowSegmentType(std::move(data)); - case 481: return new ::Ifc4x3_add2::IfcFlowStorageDevice(std::move(data)); - case 482: return new ::Ifc4x3_add2::IfcFlowStorageDeviceType(std::move(data)); - case 483: return new ::Ifc4x3_add2::IfcFlowTerminal(std::move(data)); - case 484: return new ::Ifc4x3_add2::IfcFlowTerminalType(std::move(data)); - case 485: return new ::Ifc4x3_add2::IfcFlowTreatmentDevice(std::move(data)); - case 486: return new ::Ifc4x3_add2::IfcFlowTreatmentDeviceType(std::move(data)); - case 487: return new ::Ifc4x3_add2::IfcFontStyle(std::move(data)); - case 488: return new ::Ifc4x3_add2::IfcFontVariant(std::move(data)); - case 489: return new ::Ifc4x3_add2::IfcFontWeight(std::move(data)); - case 490: return new ::Ifc4x3_add2::IfcFooting(std::move(data)); - case 491: return new ::Ifc4x3_add2::IfcFootingType(std::move(data)); - case 492: return new ::Ifc4x3_add2::IfcFootingTypeEnum(std::move(data)); - case 493: return new ::Ifc4x3_add2::IfcForceMeasure(std::move(data)); - case 494: return new ::Ifc4x3_add2::IfcFrequencyMeasure(std::move(data)); - case 495: return new ::Ifc4x3_add2::IfcFurnishingElement(std::move(data)); - case 496: return new ::Ifc4x3_add2::IfcFurnishingElementType(std::move(data)); - case 497: return new ::Ifc4x3_add2::IfcFurniture(std::move(data)); - case 498: return new ::Ifc4x3_add2::IfcFurnitureType(std::move(data)); - case 499: return new ::Ifc4x3_add2::IfcFurnitureTypeEnum(std::move(data)); - case 500: return new ::Ifc4x3_add2::IfcGeographicCRS(std::move(data)); - case 501: return new ::Ifc4x3_add2::IfcGeographicElement(std::move(data)); - case 502: return new ::Ifc4x3_add2::IfcGeographicElementType(std::move(data)); - case 503: return new ::Ifc4x3_add2::IfcGeographicElementTypeEnum(std::move(data)); - case 504: return new ::Ifc4x3_add2::IfcGeometricCurveSet(std::move(data)); - case 505: return new ::Ifc4x3_add2::IfcGeometricProjectionEnum(std::move(data)); - case 506: return new ::Ifc4x3_add2::IfcGeometricRepresentationContext(std::move(data)); - case 507: return new ::Ifc4x3_add2::IfcGeometricRepresentationItem(std::move(data)); - case 508: return new ::Ifc4x3_add2::IfcGeometricRepresentationSubContext(std::move(data)); - case 509: return new ::Ifc4x3_add2::IfcGeometricSet(std::move(data)); - case 511: return new ::Ifc4x3_add2::IfcGeomodel(std::move(data)); - case 512: return new ::Ifc4x3_add2::IfcGeoslice(std::move(data)); - case 513: return new ::Ifc4x3_add2::IfcGeotechnicalAssembly(std::move(data)); - case 514: return new ::Ifc4x3_add2::IfcGeotechnicalElement(std::move(data)); - case 515: return new ::Ifc4x3_add2::IfcGeotechnicalStratum(std::move(data)); - case 516: return new ::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum(std::move(data)); - case 517: return new ::Ifc4x3_add2::IfcGloballyUniqueId(std::move(data)); - case 518: return new ::Ifc4x3_add2::IfcGlobalOrLocalEnum(std::move(data)); - case 519: return new ::Ifc4x3_add2::IfcGradientCurve(std::move(data)); - case 520: return new ::Ifc4x3_add2::IfcGrid(std::move(data)); - case 521: return new ::Ifc4x3_add2::IfcGridAxis(std::move(data)); - case 522: return new ::Ifc4x3_add2::IfcGridPlacement(std::move(data)); - case 524: return new ::Ifc4x3_add2::IfcGridTypeEnum(std::move(data)); - case 525: return new ::Ifc4x3_add2::IfcGroup(std::move(data)); - case 526: return new ::Ifc4x3_add2::IfcHalfSpaceSolid(std::move(data)); - case 528: return new ::Ifc4x3_add2::IfcHeatExchanger(std::move(data)); - case 529: return new ::Ifc4x3_add2::IfcHeatExchangerType(std::move(data)); - case 530: return new ::Ifc4x3_add2::IfcHeatExchangerTypeEnum(std::move(data)); - case 531: return new ::Ifc4x3_add2::IfcHeatFluxDensityMeasure(std::move(data)); - case 532: return new ::Ifc4x3_add2::IfcHeatingValueMeasure(std::move(data)); - case 533: return new ::Ifc4x3_add2::IfcHumidifier(std::move(data)); - case 534: return new ::Ifc4x3_add2::IfcHumidifierType(std::move(data)); - case 535: return new ::Ifc4x3_add2::IfcHumidifierTypeEnum(std::move(data)); - case 536: return new ::Ifc4x3_add2::IfcIdentifier(std::move(data)); - case 537: return new ::Ifc4x3_add2::IfcIlluminanceMeasure(std::move(data)); - case 538: return new ::Ifc4x3_add2::IfcImageTexture(std::move(data)); - case 539: return new ::Ifc4x3_add2::IfcImpactProtectionDevice(std::move(data)); - case 540: return new ::Ifc4x3_add2::IfcImpactProtectionDeviceType(std::move(data)); - case 541: return new ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum(std::move(data)); - case 542: return new ::Ifc4x3_add2::IfcIndexedColourMap(std::move(data)); - case 543: return new ::Ifc4x3_add2::IfcIndexedPolyCurve(std::move(data)); - case 544: return new ::Ifc4x3_add2::IfcIndexedPolygonalFace(std::move(data)); - case 545: return new ::Ifc4x3_add2::IfcIndexedPolygonalFaceWithVoids(std::move(data)); - case 546: return new ::Ifc4x3_add2::IfcIndexedPolygonalTextureMap(std::move(data)); - case 547: return new ::Ifc4x3_add2::IfcIndexedTextureMap(std::move(data)); - case 548: return new ::Ifc4x3_add2::IfcIndexedTriangleTextureMap(std::move(data)); - case 549: return new ::Ifc4x3_add2::IfcInductanceMeasure(std::move(data)); - case 550: return new ::Ifc4x3_add2::IfcInteger(std::move(data)); - case 551: return new ::Ifc4x3_add2::IfcIntegerCountRateMeasure(std::move(data)); - case 552: return new ::Ifc4x3_add2::IfcInterceptor(std::move(data)); - case 553: return new ::Ifc4x3_add2::IfcInterceptorType(std::move(data)); - case 554: return new ::Ifc4x3_add2::IfcInterceptorTypeEnum(std::move(data)); - case 556: return new ::Ifc4x3_add2::IfcInternalOrExternalEnum(std::move(data)); - case 557: return new ::Ifc4x3_add2::IfcIntersectionCurve(std::move(data)); - case 558: return new ::Ifc4x3_add2::IfcInventory(std::move(data)); - case 559: return new ::Ifc4x3_add2::IfcInventoryTypeEnum(std::move(data)); - case 560: return new ::Ifc4x3_add2::IfcIonConcentrationMeasure(std::move(data)); - case 561: return new ::Ifc4x3_add2::IfcIrregularTimeSeries(std::move(data)); - case 562: return new ::Ifc4x3_add2::IfcIrregularTimeSeriesValue(std::move(data)); - case 563: return new ::Ifc4x3_add2::IfcIShapeProfileDef(std::move(data)); - case 564: return new ::Ifc4x3_add2::IfcIsothermalMoistureCapacityMeasure(std::move(data)); - case 565: return new ::Ifc4x3_add2::IfcJunctionBox(std::move(data)); - case 566: return new ::Ifc4x3_add2::IfcJunctionBoxType(std::move(data)); - case 567: return new ::Ifc4x3_add2::IfcJunctionBoxTypeEnum(std::move(data)); - case 568: return new ::Ifc4x3_add2::IfcKerb(std::move(data)); - case 569: return new ::Ifc4x3_add2::IfcKerbType(std::move(data)); - case 570: return new ::Ifc4x3_add2::IfcKerbTypeEnum(std::move(data)); - case 571: return new ::Ifc4x3_add2::IfcKinematicViscosityMeasure(std::move(data)); - case 572: return new ::Ifc4x3_add2::IfcKnotType(std::move(data)); - case 573: return new ::Ifc4x3_add2::IfcLabel(std::move(data)); - case 574: return new ::Ifc4x3_add2::IfcLaborResource(std::move(data)); - case 575: return new ::Ifc4x3_add2::IfcLaborResourceType(std::move(data)); - case 576: return new ::Ifc4x3_add2::IfcLaborResourceTypeEnum(std::move(data)); - case 577: return new ::Ifc4x3_add2::IfcLagTime(std::move(data)); - case 578: return new ::Ifc4x3_add2::IfcLamp(std::move(data)); - case 579: return new ::Ifc4x3_add2::IfcLampType(std::move(data)); - case 580: return new ::Ifc4x3_add2::IfcLampTypeEnum(std::move(data)); - case 581: return new ::Ifc4x3_add2::IfcLanguageId(std::move(data)); - case 583: return new ::Ifc4x3_add2::IfcLayerSetDirectionEnum(std::move(data)); - case 584: return new ::Ifc4x3_add2::IfcLengthMeasure(std::move(data)); - case 585: return new ::Ifc4x3_add2::IfcLibraryInformation(std::move(data)); - case 586: return new ::Ifc4x3_add2::IfcLibraryReference(std::move(data)); - case 588: return new ::Ifc4x3_add2::IfcLightDistributionCurveEnum(std::move(data)); - case 589: return new ::Ifc4x3_add2::IfcLightDistributionData(std::move(data)); - case 591: return new ::Ifc4x3_add2::IfcLightEmissionSourceEnum(std::move(data)); - case 592: return new ::Ifc4x3_add2::IfcLightFixture(std::move(data)); - case 593: return new ::Ifc4x3_add2::IfcLightFixtureType(std::move(data)); - case 594: return new ::Ifc4x3_add2::IfcLightFixtureTypeEnum(std::move(data)); - case 595: return new ::Ifc4x3_add2::IfcLightIntensityDistribution(std::move(data)); - case 596: return new ::Ifc4x3_add2::IfcLightSource(std::move(data)); - case 597: return new ::Ifc4x3_add2::IfcLightSourceAmbient(std::move(data)); - case 598: return new ::Ifc4x3_add2::IfcLightSourceDirectional(std::move(data)); - case 599: return new ::Ifc4x3_add2::IfcLightSourceGoniometric(std::move(data)); - case 600: return new ::Ifc4x3_add2::IfcLightSourcePositional(std::move(data)); - case 601: return new ::Ifc4x3_add2::IfcLightSourceSpot(std::move(data)); - case 602: return new ::Ifc4x3_add2::IfcLine(std::move(data)); - case 603: return new ::Ifc4x3_add2::IfcLinearElement(std::move(data)); - case 604: return new ::Ifc4x3_add2::IfcLinearForceMeasure(std::move(data)); - case 605: return new ::Ifc4x3_add2::IfcLinearMomentMeasure(std::move(data)); - case 606: return new ::Ifc4x3_add2::IfcLinearPlacement(std::move(data)); - case 607: return new ::Ifc4x3_add2::IfcLinearPositioningElement(std::move(data)); - case 608: return new ::Ifc4x3_add2::IfcLinearStiffnessMeasure(std::move(data)); - case 609: return new ::Ifc4x3_add2::IfcLinearVelocityMeasure(std::move(data)); - case 610: return new ::Ifc4x3_add2::IfcLineIndex(std::move(data)); - case 611: return new ::Ifc4x3_add2::IfcLiquidTerminal(std::move(data)); - case 612: return new ::Ifc4x3_add2::IfcLiquidTerminalType(std::move(data)); - case 613: return new ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum(std::move(data)); - case 614: return new ::Ifc4x3_add2::IfcLoadGroupTypeEnum(std::move(data)); - case 615: return new ::Ifc4x3_add2::IfcLocalPlacement(std::move(data)); - case 616: return new ::Ifc4x3_add2::IfcLogical(std::move(data)); - case 617: return new ::Ifc4x3_add2::IfcLogicalOperatorEnum(std::move(data)); - case 618: return new ::Ifc4x3_add2::IfcLoop(std::move(data)); - case 619: return new ::Ifc4x3_add2::IfcLShapeProfileDef(std::move(data)); - case 620: return new ::Ifc4x3_add2::IfcLuminousFluxMeasure(std::move(data)); - case 621: return new ::Ifc4x3_add2::IfcLuminousIntensityDistributionMeasure(std::move(data)); - case 622: return new ::Ifc4x3_add2::IfcLuminousIntensityMeasure(std::move(data)); - case 623: return new ::Ifc4x3_add2::IfcMagneticFluxDensityMeasure(std::move(data)); - case 624: return new ::Ifc4x3_add2::IfcMagneticFluxMeasure(std::move(data)); - case 625: return new ::Ifc4x3_add2::IfcManifoldSolidBrep(std::move(data)); - case 626: return new ::Ifc4x3_add2::IfcMapConversion(std::move(data)); - case 627: return new ::Ifc4x3_add2::IfcMapConversionScaled(std::move(data)); - case 628: return new ::Ifc4x3_add2::IfcMappedItem(std::move(data)); - case 629: return new ::Ifc4x3_add2::IfcMarineFacility(std::move(data)); - case 630: return new ::Ifc4x3_add2::IfcMarineFacilityTypeEnum(std::move(data)); - case 631: return new ::Ifc4x3_add2::IfcMarinePart(std::move(data)); - case 632: return new ::Ifc4x3_add2::IfcMarinePartTypeEnum(std::move(data)); - case 633: return new ::Ifc4x3_add2::IfcMassDensityMeasure(std::move(data)); - case 634: return new ::Ifc4x3_add2::IfcMassFlowRateMeasure(std::move(data)); - case 635: return new ::Ifc4x3_add2::IfcMassMeasure(std::move(data)); - case 636: return new ::Ifc4x3_add2::IfcMassPerLengthMeasure(std::move(data)); - case 637: return new ::Ifc4x3_add2::IfcMaterial(std::move(data)); - case 638: return new ::Ifc4x3_add2::IfcMaterialClassificationRelationship(std::move(data)); - case 639: return new ::Ifc4x3_add2::IfcMaterialConstituent(std::move(data)); - case 640: return new ::Ifc4x3_add2::IfcMaterialConstituentSet(std::move(data)); - case 641: return new ::Ifc4x3_add2::IfcMaterialDefinition(std::move(data)); - case 642: return new ::Ifc4x3_add2::IfcMaterialDefinitionRepresentation(std::move(data)); - case 643: return new ::Ifc4x3_add2::IfcMaterialLayer(std::move(data)); - case 644: return new ::Ifc4x3_add2::IfcMaterialLayerSet(std::move(data)); - case 645: return new ::Ifc4x3_add2::IfcMaterialLayerSetUsage(std::move(data)); - case 646: return new ::Ifc4x3_add2::IfcMaterialLayerWithOffsets(std::move(data)); - case 647: return new ::Ifc4x3_add2::IfcMaterialList(std::move(data)); - case 648: return new ::Ifc4x3_add2::IfcMaterialProfile(std::move(data)); - case 649: return new ::Ifc4x3_add2::IfcMaterialProfileSet(std::move(data)); - case 650: return new ::Ifc4x3_add2::IfcMaterialProfileSetUsage(std::move(data)); - case 651: return new ::Ifc4x3_add2::IfcMaterialProfileSetUsageTapering(std::move(data)); - case 652: return new ::Ifc4x3_add2::IfcMaterialProfileWithOffsets(std::move(data)); - case 653: return new ::Ifc4x3_add2::IfcMaterialProperties(std::move(data)); - case 654: return new ::Ifc4x3_add2::IfcMaterialRelationship(std::move(data)); - case 656: return new ::Ifc4x3_add2::IfcMaterialUsageDefinition(std::move(data)); - case 658: return new ::Ifc4x3_add2::IfcMeasureWithUnit(std::move(data)); - case 659: return new ::Ifc4x3_add2::IfcMechanicalFastener(std::move(data)); - case 660: return new ::Ifc4x3_add2::IfcMechanicalFastenerType(std::move(data)); - case 661: return new ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum(std::move(data)); - case 662: return new ::Ifc4x3_add2::IfcMedicalDevice(std::move(data)); - case 663: return new ::Ifc4x3_add2::IfcMedicalDeviceType(std::move(data)); - case 664: return new ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum(std::move(data)); - case 665: return new ::Ifc4x3_add2::IfcMember(std::move(data)); - case 666: return new ::Ifc4x3_add2::IfcMemberType(std::move(data)); - case 667: return new ::Ifc4x3_add2::IfcMemberTypeEnum(std::move(data)); - case 668: return new ::Ifc4x3_add2::IfcMetric(std::move(data)); - case 670: return new ::Ifc4x3_add2::IfcMirroredProfileDef(std::move(data)); - case 671: return new ::Ifc4x3_add2::IfcMobileTelecommunicationsAppliance(std::move(data)); - case 672: return new ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceType(std::move(data)); - case 673: return new ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum(std::move(data)); - case 674: return new ::Ifc4x3_add2::IfcModulusOfElasticityMeasure(std::move(data)); - case 675: return new ::Ifc4x3_add2::IfcModulusOfLinearSubgradeReactionMeasure(std::move(data)); - case 676: return new ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionMeasure(std::move(data)); - case 678: return new ::Ifc4x3_add2::IfcModulusOfSubgradeReactionMeasure(std::move(data)); - case 681: return new ::Ifc4x3_add2::IfcMoistureDiffusivityMeasure(std::move(data)); - case 682: return new ::Ifc4x3_add2::IfcMolecularWeightMeasure(std::move(data)); - case 683: return new ::Ifc4x3_add2::IfcMomentOfInertiaMeasure(std::move(data)); - case 684: return new ::Ifc4x3_add2::IfcMonetaryMeasure(std::move(data)); - case 685: return new ::Ifc4x3_add2::IfcMonetaryUnit(std::move(data)); - case 686: return new ::Ifc4x3_add2::IfcMonthInYearNumber(std::move(data)); - case 687: return new ::Ifc4x3_add2::IfcMooringDevice(std::move(data)); - case 688: return new ::Ifc4x3_add2::IfcMooringDeviceType(std::move(data)); - case 689: return new ::Ifc4x3_add2::IfcMooringDeviceTypeEnum(std::move(data)); - case 690: return new ::Ifc4x3_add2::IfcMotorConnection(std::move(data)); - case 691: return new ::Ifc4x3_add2::IfcMotorConnectionType(std::move(data)); - case 692: return new ::Ifc4x3_add2::IfcMotorConnectionTypeEnum(std::move(data)); - case 693: return new ::Ifc4x3_add2::IfcNamedUnit(std::move(data)); - case 694: return new ::Ifc4x3_add2::IfcNavigationElement(std::move(data)); - case 695: return new ::Ifc4x3_add2::IfcNavigationElementType(std::move(data)); - case 696: return new ::Ifc4x3_add2::IfcNavigationElementTypeEnum(std::move(data)); - case 697: return new ::Ifc4x3_add2::IfcNonNegativeLengthMeasure(std::move(data)); - case 698: return new ::Ifc4x3_add2::IfcNormalisedRatioMeasure(std::move(data)); - case 699: return new ::Ifc4x3_add2::IfcNumericMeasure(std::move(data)); - case 700: return new ::Ifc4x3_add2::IfcObject(std::move(data)); - case 701: return new ::Ifc4x3_add2::IfcObjectDefinition(std::move(data)); - case 702: return new ::Ifc4x3_add2::IfcObjective(std::move(data)); - case 703: return new ::Ifc4x3_add2::IfcObjectiveEnum(std::move(data)); - case 704: return new ::Ifc4x3_add2::IfcObjectPlacement(std::move(data)); - case 706: return new ::Ifc4x3_add2::IfcOccupant(std::move(data)); - case 707: return new ::Ifc4x3_add2::IfcOccupantTypeEnum(std::move(data)); - case 708: return new ::Ifc4x3_add2::IfcOffsetCurve(std::move(data)); - case 709: return new ::Ifc4x3_add2::IfcOffsetCurve2D(std::move(data)); - case 710: return new ::Ifc4x3_add2::IfcOffsetCurve3D(std::move(data)); - case 711: return new ::Ifc4x3_add2::IfcOffsetCurveByDistances(std::move(data)); - case 712: return new ::Ifc4x3_add2::IfcOpenCrossProfileDef(std::move(data)); - case 713: return new ::Ifc4x3_add2::IfcOpeningElement(std::move(data)); - case 714: return new ::Ifc4x3_add2::IfcOpeningElementTypeEnum(std::move(data)); - case 715: return new ::Ifc4x3_add2::IfcOpenShell(std::move(data)); - case 716: return new ::Ifc4x3_add2::IfcOrganization(std::move(data)); - case 717: return new ::Ifc4x3_add2::IfcOrganizationRelationship(std::move(data)); - case 718: return new ::Ifc4x3_add2::IfcOrientedEdge(std::move(data)); - case 719: return new ::Ifc4x3_add2::IfcOuterBoundaryCurve(std::move(data)); - case 720: return new ::Ifc4x3_add2::IfcOutlet(std::move(data)); - case 721: return new ::Ifc4x3_add2::IfcOutletType(std::move(data)); - case 722: return new ::Ifc4x3_add2::IfcOutletTypeEnum(std::move(data)); - case 723: return new ::Ifc4x3_add2::IfcOwnerHistory(std::move(data)); - case 724: return new ::Ifc4x3_add2::IfcParameterizedProfileDef(std::move(data)); - case 725: return new ::Ifc4x3_add2::IfcParameterValue(std::move(data)); - case 726: return new ::Ifc4x3_add2::IfcPath(std::move(data)); - case 727: return new ::Ifc4x3_add2::IfcPavement(std::move(data)); - case 728: return new ::Ifc4x3_add2::IfcPavementType(std::move(data)); - case 729: return new ::Ifc4x3_add2::IfcPavementTypeEnum(std::move(data)); - case 730: return new ::Ifc4x3_add2::IfcPcurve(std::move(data)); - case 731: return new ::Ifc4x3_add2::IfcPerformanceHistory(std::move(data)); - case 732: return new ::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum(std::move(data)); - case 733: return new ::Ifc4x3_add2::IfcPermeableCoveringOperationEnum(std::move(data)); - case 734: return new ::Ifc4x3_add2::IfcPermeableCoveringProperties(std::move(data)); - case 735: return new ::Ifc4x3_add2::IfcPermit(std::move(data)); - case 736: return new ::Ifc4x3_add2::IfcPermitTypeEnum(std::move(data)); - case 737: return new ::Ifc4x3_add2::IfcPerson(std::move(data)); - case 738: return new ::Ifc4x3_add2::IfcPersonAndOrganization(std::move(data)); - case 739: return new ::Ifc4x3_add2::IfcPHMeasure(std::move(data)); - case 740: return new ::Ifc4x3_add2::IfcPhysicalComplexQuantity(std::move(data)); - case 741: return new ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum(std::move(data)); - case 742: return new ::Ifc4x3_add2::IfcPhysicalQuantity(std::move(data)); - case 743: return new ::Ifc4x3_add2::IfcPhysicalSimpleQuantity(std::move(data)); - case 744: return new ::Ifc4x3_add2::IfcPile(std::move(data)); - case 745: return new ::Ifc4x3_add2::IfcPileConstructionEnum(std::move(data)); - case 746: return new ::Ifc4x3_add2::IfcPileType(std::move(data)); - case 747: return new ::Ifc4x3_add2::IfcPileTypeEnum(std::move(data)); - case 748: return new ::Ifc4x3_add2::IfcPipeFitting(std::move(data)); - case 749: return new ::Ifc4x3_add2::IfcPipeFittingType(std::move(data)); - case 750: return new ::Ifc4x3_add2::IfcPipeFittingTypeEnum(std::move(data)); - case 751: return new ::Ifc4x3_add2::IfcPipeSegment(std::move(data)); - case 752: return new ::Ifc4x3_add2::IfcPipeSegmentType(std::move(data)); - case 753: return new ::Ifc4x3_add2::IfcPipeSegmentTypeEnum(std::move(data)); - case 754: return new ::Ifc4x3_add2::IfcPixelTexture(std::move(data)); - case 755: return new ::Ifc4x3_add2::IfcPlacement(std::move(data)); - case 756: return new ::Ifc4x3_add2::IfcPlanarBox(std::move(data)); - case 757: return new ::Ifc4x3_add2::IfcPlanarExtent(std::move(data)); - case 758: return new ::Ifc4x3_add2::IfcPlanarForceMeasure(std::move(data)); - case 759: return new ::Ifc4x3_add2::IfcPlane(std::move(data)); - case 760: return new ::Ifc4x3_add2::IfcPlaneAngleMeasure(std::move(data)); - case 761: return new ::Ifc4x3_add2::IfcPlate(std::move(data)); - case 762: return new ::Ifc4x3_add2::IfcPlateType(std::move(data)); - case 763: return new ::Ifc4x3_add2::IfcPlateTypeEnum(std::move(data)); - case 764: return new ::Ifc4x3_add2::IfcPoint(std::move(data)); - case 765: return new ::Ifc4x3_add2::IfcPointByDistanceExpression(std::move(data)); - case 766: return new ::Ifc4x3_add2::IfcPointOnCurve(std::move(data)); - case 767: return new ::Ifc4x3_add2::IfcPointOnSurface(std::move(data)); - case 769: return new ::Ifc4x3_add2::IfcPolygonalBoundedHalfSpace(std::move(data)); - case 770: return new ::Ifc4x3_add2::IfcPolygonalFaceSet(std::move(data)); - case 771: return new ::Ifc4x3_add2::IfcPolyline(std::move(data)); - case 772: return new ::Ifc4x3_add2::IfcPolyLoop(std::move(data)); - case 773: return new ::Ifc4x3_add2::IfcPolynomialCurve(std::move(data)); - case 774: return new ::Ifc4x3_add2::IfcPort(std::move(data)); - case 775: return new ::Ifc4x3_add2::IfcPositioningElement(std::move(data)); - case 776: return new ::Ifc4x3_add2::IfcPositiveInteger(std::move(data)); - case 777: return new ::Ifc4x3_add2::IfcPositiveLengthMeasure(std::move(data)); - case 778: return new ::Ifc4x3_add2::IfcPositivePlaneAngleMeasure(std::move(data)); - case 779: return new ::Ifc4x3_add2::IfcPositiveRatioMeasure(std::move(data)); - case 780: return new ::Ifc4x3_add2::IfcPostalAddress(std::move(data)); - case 781: return new ::Ifc4x3_add2::IfcPowerMeasure(std::move(data)); - case 782: return new ::Ifc4x3_add2::IfcPreDefinedColour(std::move(data)); - case 783: return new ::Ifc4x3_add2::IfcPreDefinedCurveFont(std::move(data)); - case 784: return new ::Ifc4x3_add2::IfcPreDefinedItem(std::move(data)); - case 785: return new ::Ifc4x3_add2::IfcPreDefinedProperties(std::move(data)); - case 786: return new ::Ifc4x3_add2::IfcPreDefinedPropertySet(std::move(data)); - case 787: return new ::Ifc4x3_add2::IfcPreDefinedTextFont(std::move(data)); - case 788: return new ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation(std::move(data)); - case 789: return new ::Ifc4x3_add2::IfcPresentableText(std::move(data)); - case 790: return new ::Ifc4x3_add2::IfcPresentationItem(std::move(data)); - case 791: return new ::Ifc4x3_add2::IfcPresentationLayerAssignment(std::move(data)); - case 792: return new ::Ifc4x3_add2::IfcPresentationLayerWithStyle(std::move(data)); - case 793: return new ::Ifc4x3_add2::IfcPresentationStyle(std::move(data)); - case 794: return new ::Ifc4x3_add2::IfcPressureMeasure(std::move(data)); - case 795: return new ::Ifc4x3_add2::IfcProcedure(std::move(data)); - case 796: return new ::Ifc4x3_add2::IfcProcedureType(std::move(data)); - case 797: return new ::Ifc4x3_add2::IfcProcedureTypeEnum(std::move(data)); - case 798: return new ::Ifc4x3_add2::IfcProcess(std::move(data)); - case 800: return new ::Ifc4x3_add2::IfcProduct(std::move(data)); - case 801: return new ::Ifc4x3_add2::IfcProductDefinitionShape(std::move(data)); - case 802: return new ::Ifc4x3_add2::IfcProductRepresentation(std::move(data)); - case 805: return new ::Ifc4x3_add2::IfcProfileDef(std::move(data)); - case 806: return new ::Ifc4x3_add2::IfcProfileProperties(std::move(data)); - case 807: return new ::Ifc4x3_add2::IfcProfileTypeEnum(std::move(data)); - case 808: return new ::Ifc4x3_add2::IfcProject(std::move(data)); - case 809: return new ::Ifc4x3_add2::IfcProjectedCRS(std::move(data)); - case 810: return new ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum(std::move(data)); - case 811: return new ::Ifc4x3_add2::IfcProjectionElement(std::move(data)); - case 812: return new ::Ifc4x3_add2::IfcProjectionElementTypeEnum(std::move(data)); - case 813: return new ::Ifc4x3_add2::IfcProjectLibrary(std::move(data)); - case 814: return new ::Ifc4x3_add2::IfcProjectOrder(std::move(data)); - case 815: return new ::Ifc4x3_add2::IfcProjectOrderTypeEnum(std::move(data)); - case 816: return new ::Ifc4x3_add2::IfcProperty(std::move(data)); - case 817: return new ::Ifc4x3_add2::IfcPropertyAbstraction(std::move(data)); - case 818: return new ::Ifc4x3_add2::IfcPropertyBoundedValue(std::move(data)); - case 819: return new ::Ifc4x3_add2::IfcPropertyDefinition(std::move(data)); - case 820: return new ::Ifc4x3_add2::IfcPropertyDependencyRelationship(std::move(data)); - case 821: return new ::Ifc4x3_add2::IfcPropertyEnumeratedValue(std::move(data)); - case 822: return new ::Ifc4x3_add2::IfcPropertyEnumeration(std::move(data)); - case 823: return new ::Ifc4x3_add2::IfcPropertyListValue(std::move(data)); - case 824: return new ::Ifc4x3_add2::IfcPropertyReferenceValue(std::move(data)); - case 825: return new ::Ifc4x3_add2::IfcPropertySet(std::move(data)); - case 826: return new ::Ifc4x3_add2::IfcPropertySetDefinition(std::move(data)); - case 828: return new ::Ifc4x3_add2::IfcPropertySetDefinitionSet(std::move(data)); - case 829: return new ::Ifc4x3_add2::IfcPropertySetTemplate(std::move(data)); - case 830: return new ::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum(std::move(data)); - case 831: return new ::Ifc4x3_add2::IfcPropertySingleValue(std::move(data)); - case 832: return new ::Ifc4x3_add2::IfcPropertyTableValue(std::move(data)); - case 833: return new ::Ifc4x3_add2::IfcPropertyTemplate(std::move(data)); - case 834: return new ::Ifc4x3_add2::IfcPropertyTemplateDefinition(std::move(data)); - case 835: return new ::Ifc4x3_add2::IfcProtectiveDevice(std::move(data)); - case 836: return new ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnit(std::move(data)); - case 837: return new ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitType(std::move(data)); - case 838: return new ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum(std::move(data)); - case 839: return new ::Ifc4x3_add2::IfcProtectiveDeviceType(std::move(data)); - case 840: return new ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum(std::move(data)); - case 841: return new ::Ifc4x3_add2::IfcPump(std::move(data)); - case 842: return new ::Ifc4x3_add2::IfcPumpType(std::move(data)); - case 843: return new ::Ifc4x3_add2::IfcPumpTypeEnum(std::move(data)); - case 844: return new ::Ifc4x3_add2::IfcQuantityArea(std::move(data)); - case 845: return new ::Ifc4x3_add2::IfcQuantityCount(std::move(data)); - case 846: return new ::Ifc4x3_add2::IfcQuantityLength(std::move(data)); - case 847: return new ::Ifc4x3_add2::IfcQuantityNumber(std::move(data)); - case 848: return new ::Ifc4x3_add2::IfcQuantitySet(std::move(data)); - case 849: return new ::Ifc4x3_add2::IfcQuantityTime(std::move(data)); - case 850: return new ::Ifc4x3_add2::IfcQuantityVolume(std::move(data)); - case 851: return new ::Ifc4x3_add2::IfcQuantityWeight(std::move(data)); - case 852: return new ::Ifc4x3_add2::IfcRadioActivityMeasure(std::move(data)); - case 853: return new ::Ifc4x3_add2::IfcRail(std::move(data)); - case 854: return new ::Ifc4x3_add2::IfcRailing(std::move(data)); - case 855: return new ::Ifc4x3_add2::IfcRailingType(std::move(data)); - case 856: return new ::Ifc4x3_add2::IfcRailingTypeEnum(std::move(data)); - case 857: return new ::Ifc4x3_add2::IfcRailType(std::move(data)); - case 858: return new ::Ifc4x3_add2::IfcRailTypeEnum(std::move(data)); - case 859: return new ::Ifc4x3_add2::IfcRailway(std::move(data)); - case 860: return new ::Ifc4x3_add2::IfcRailwayPart(std::move(data)); - case 861: return new ::Ifc4x3_add2::IfcRailwayPartTypeEnum(std::move(data)); - case 862: return new ::Ifc4x3_add2::IfcRailwayTypeEnum(std::move(data)); - case 863: return new ::Ifc4x3_add2::IfcRamp(std::move(data)); - case 864: return new ::Ifc4x3_add2::IfcRampFlight(std::move(data)); - case 865: return new ::Ifc4x3_add2::IfcRampFlightType(std::move(data)); - case 866: return new ::Ifc4x3_add2::IfcRampFlightTypeEnum(std::move(data)); - case 867: return new ::Ifc4x3_add2::IfcRampType(std::move(data)); - case 868: return new ::Ifc4x3_add2::IfcRampTypeEnum(std::move(data)); - case 869: return new ::Ifc4x3_add2::IfcRatioMeasure(std::move(data)); - case 870: return new ::Ifc4x3_add2::IfcRationalBSplineCurveWithKnots(std::move(data)); - case 871: return new ::Ifc4x3_add2::IfcRationalBSplineSurfaceWithKnots(std::move(data)); - case 872: return new ::Ifc4x3_add2::IfcReal(std::move(data)); - case 873: return new ::Ifc4x3_add2::IfcRectangleHollowProfileDef(std::move(data)); - case 874: return new ::Ifc4x3_add2::IfcRectangleProfileDef(std::move(data)); - case 875: return new ::Ifc4x3_add2::IfcRectangularPyramid(std::move(data)); - case 876: return new ::Ifc4x3_add2::IfcRectangularTrimmedSurface(std::move(data)); - case 877: return new ::Ifc4x3_add2::IfcRecurrencePattern(std::move(data)); - case 878: return new ::Ifc4x3_add2::IfcRecurrenceTypeEnum(std::move(data)); - case 879: return new ::Ifc4x3_add2::IfcReference(std::move(data)); - case 880: return new ::Ifc4x3_add2::IfcReferent(std::move(data)); - case 881: return new ::Ifc4x3_add2::IfcReferentTypeEnum(std::move(data)); - case 882: return new ::Ifc4x3_add2::IfcReflectanceMethodEnum(std::move(data)); - case 883: return new ::Ifc4x3_add2::IfcRegularTimeSeries(std::move(data)); - case 884: return new ::Ifc4x3_add2::IfcReinforcedSoil(std::move(data)); - case 885: return new ::Ifc4x3_add2::IfcReinforcedSoilTypeEnum(std::move(data)); - case 886: return new ::Ifc4x3_add2::IfcReinforcementBarProperties(std::move(data)); - case 887: return new ::Ifc4x3_add2::IfcReinforcementDefinitionProperties(std::move(data)); - case 888: return new ::Ifc4x3_add2::IfcReinforcingBar(std::move(data)); - case 889: return new ::Ifc4x3_add2::IfcReinforcingBarRoleEnum(std::move(data)); - case 890: return new ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum(std::move(data)); - case 891: return new ::Ifc4x3_add2::IfcReinforcingBarType(std::move(data)); - case 892: return new ::Ifc4x3_add2::IfcReinforcingBarTypeEnum(std::move(data)); - case 893: return new ::Ifc4x3_add2::IfcReinforcingElement(std::move(data)); - case 894: return new ::Ifc4x3_add2::IfcReinforcingElementType(std::move(data)); - case 895: return new ::Ifc4x3_add2::IfcReinforcingMesh(std::move(data)); - case 896: return new ::Ifc4x3_add2::IfcReinforcingMeshType(std::move(data)); - case 897: return new ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum(std::move(data)); - case 898: return new ::Ifc4x3_add2::IfcRelAdheresToElement(std::move(data)); - case 899: return new ::Ifc4x3_add2::IfcRelAggregates(std::move(data)); - case 900: return new ::Ifc4x3_add2::IfcRelAssigns(std::move(data)); - case 901: return new ::Ifc4x3_add2::IfcRelAssignsToActor(std::move(data)); - case 902: return new ::Ifc4x3_add2::IfcRelAssignsToControl(std::move(data)); - case 903: return new ::Ifc4x3_add2::IfcRelAssignsToGroup(std::move(data)); - case 904: return new ::Ifc4x3_add2::IfcRelAssignsToGroupByFactor(std::move(data)); - case 905: return new ::Ifc4x3_add2::IfcRelAssignsToProcess(std::move(data)); - case 906: return new ::Ifc4x3_add2::IfcRelAssignsToProduct(std::move(data)); - case 907: return new ::Ifc4x3_add2::IfcRelAssignsToResource(std::move(data)); - case 908: return new ::Ifc4x3_add2::IfcRelAssociates(std::move(data)); - case 909: return new ::Ifc4x3_add2::IfcRelAssociatesApproval(std::move(data)); - case 910: return new ::Ifc4x3_add2::IfcRelAssociatesClassification(std::move(data)); - case 911: return new ::Ifc4x3_add2::IfcRelAssociatesConstraint(std::move(data)); - case 912: return new ::Ifc4x3_add2::IfcRelAssociatesDocument(std::move(data)); - case 913: return new ::Ifc4x3_add2::IfcRelAssociatesLibrary(std::move(data)); - case 914: return new ::Ifc4x3_add2::IfcRelAssociatesMaterial(std::move(data)); - case 915: return new ::Ifc4x3_add2::IfcRelAssociatesProfileDef(std::move(data)); - case 916: return new ::Ifc4x3_add2::IfcRelationship(std::move(data)); - case 917: return new ::Ifc4x3_add2::IfcRelConnects(std::move(data)); - case 918: return new ::Ifc4x3_add2::IfcRelConnectsElements(std::move(data)); - case 919: return new ::Ifc4x3_add2::IfcRelConnectsPathElements(std::move(data)); - case 920: return new ::Ifc4x3_add2::IfcRelConnectsPorts(std::move(data)); - case 921: return new ::Ifc4x3_add2::IfcRelConnectsPortToElement(std::move(data)); - case 922: return new ::Ifc4x3_add2::IfcRelConnectsStructuralActivity(std::move(data)); - case 923: return new ::Ifc4x3_add2::IfcRelConnectsStructuralMember(std::move(data)); - case 924: return new ::Ifc4x3_add2::IfcRelConnectsWithEccentricity(std::move(data)); - case 925: return new ::Ifc4x3_add2::IfcRelConnectsWithRealizingElements(std::move(data)); - case 926: return new ::Ifc4x3_add2::IfcRelContainedInSpatialStructure(std::move(data)); - case 927: return new ::Ifc4x3_add2::IfcRelCoversBldgElements(std::move(data)); - case 928: return new ::Ifc4x3_add2::IfcRelCoversSpaces(std::move(data)); - case 929: return new ::Ifc4x3_add2::IfcRelDeclares(std::move(data)); - case 930: return new ::Ifc4x3_add2::IfcRelDecomposes(std::move(data)); - case 931: return new ::Ifc4x3_add2::IfcRelDefines(std::move(data)); - case 932: return new ::Ifc4x3_add2::IfcRelDefinesByObject(std::move(data)); - case 933: return new ::Ifc4x3_add2::IfcRelDefinesByProperties(std::move(data)); - case 934: return new ::Ifc4x3_add2::IfcRelDefinesByTemplate(std::move(data)); - case 935: return new ::Ifc4x3_add2::IfcRelDefinesByType(std::move(data)); - case 936: return new ::Ifc4x3_add2::IfcRelFillsElement(std::move(data)); - case 937: return new ::Ifc4x3_add2::IfcRelFlowControlElements(std::move(data)); - case 938: return new ::Ifc4x3_add2::IfcRelInterferesElements(std::move(data)); - case 939: return new ::Ifc4x3_add2::IfcRelNests(std::move(data)); - case 940: return new ::Ifc4x3_add2::IfcRelPositions(std::move(data)); - case 941: return new ::Ifc4x3_add2::IfcRelProjectsElement(std::move(data)); - case 942: return new ::Ifc4x3_add2::IfcRelReferencedInSpatialStructure(std::move(data)); - case 943: return new ::Ifc4x3_add2::IfcRelSequence(std::move(data)); - case 944: return new ::Ifc4x3_add2::IfcRelServicesBuildings(std::move(data)); - case 945: return new ::Ifc4x3_add2::IfcRelSpaceBoundary(std::move(data)); - case 946: return new ::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel(std::move(data)); - case 947: return new ::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel(std::move(data)); - case 948: return new ::Ifc4x3_add2::IfcRelVoidsElement(std::move(data)); - case 949: return new ::Ifc4x3_add2::IfcReparametrisedCompositeCurveSegment(std::move(data)); - case 950: return new ::Ifc4x3_add2::IfcRepresentation(std::move(data)); - case 951: return new ::Ifc4x3_add2::IfcRepresentationContext(std::move(data)); - case 952: return new ::Ifc4x3_add2::IfcRepresentationItem(std::move(data)); - case 953: return new ::Ifc4x3_add2::IfcRepresentationMap(std::move(data)); - case 954: return new ::Ifc4x3_add2::IfcResource(std::move(data)); - case 955: return new ::Ifc4x3_add2::IfcResourceApprovalRelationship(std::move(data)); - case 956: return new ::Ifc4x3_add2::IfcResourceConstraintRelationship(std::move(data)); - case 957: return new ::Ifc4x3_add2::IfcResourceLevelRelationship(std::move(data)); - case 960: return new ::Ifc4x3_add2::IfcResourceTime(std::move(data)); - case 961: return new ::Ifc4x3_add2::IfcRevolvedAreaSolid(std::move(data)); - case 962: return new ::Ifc4x3_add2::IfcRevolvedAreaSolidTapered(std::move(data)); - case 963: return new ::Ifc4x3_add2::IfcRightCircularCone(std::move(data)); - case 964: return new ::Ifc4x3_add2::IfcRightCircularCylinder(std::move(data)); - case 965: return new ::Ifc4x3_add2::IfcRigidOperation(std::move(data)); - case 966: return new ::Ifc4x3_add2::IfcRoad(std::move(data)); - case 967: return new ::Ifc4x3_add2::IfcRoadPart(std::move(data)); - case 968: return new ::Ifc4x3_add2::IfcRoadPartTypeEnum(std::move(data)); - case 969: return new ::Ifc4x3_add2::IfcRoadTypeEnum(std::move(data)); - case 970: return new ::Ifc4x3_add2::IfcRoleEnum(std::move(data)); - case 971: return new ::Ifc4x3_add2::IfcRoof(std::move(data)); - case 972: return new ::Ifc4x3_add2::IfcRoofType(std::move(data)); - case 973: return new ::Ifc4x3_add2::IfcRoofTypeEnum(std::move(data)); - case 974: return new ::Ifc4x3_add2::IfcRoot(std::move(data)); - case 975: return new ::Ifc4x3_add2::IfcRotationalFrequencyMeasure(std::move(data)); - case 976: return new ::Ifc4x3_add2::IfcRotationalMassMeasure(std::move(data)); - case 977: return new ::Ifc4x3_add2::IfcRotationalStiffnessMeasure(std::move(data)); - case 979: return new ::Ifc4x3_add2::IfcRoundedRectangleProfileDef(std::move(data)); - case 980: return new ::Ifc4x3_add2::IfcSanitaryTerminal(std::move(data)); - case 981: return new ::Ifc4x3_add2::IfcSanitaryTerminalType(std::move(data)); - case 982: return new ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum(std::move(data)); - case 983: return new ::Ifc4x3_add2::IfcSchedulingTime(std::move(data)); - case 984: return new ::Ifc4x3_add2::IfcSeamCurve(std::move(data)); - case 985: return new ::Ifc4x3_add2::IfcSecondOrderPolynomialSpiral(std::move(data)); - case 986: return new ::Ifc4x3_add2::IfcSectionalAreaIntegralMeasure(std::move(data)); - case 987: return new ::Ifc4x3_add2::IfcSectionedSolid(std::move(data)); - case 988: return new ::Ifc4x3_add2::IfcSectionedSolidHorizontal(std::move(data)); - case 989: return new ::Ifc4x3_add2::IfcSectionedSpine(std::move(data)); - case 990: return new ::Ifc4x3_add2::IfcSectionedSurface(std::move(data)); - case 991: return new ::Ifc4x3_add2::IfcSectionModulusMeasure(std::move(data)); - case 992: return new ::Ifc4x3_add2::IfcSectionProperties(std::move(data)); - case 993: return new ::Ifc4x3_add2::IfcSectionReinforcementProperties(std::move(data)); - case 994: return new ::Ifc4x3_add2::IfcSectionTypeEnum(std::move(data)); - case 995: return new ::Ifc4x3_add2::IfcSegment(std::move(data)); - case 996: return new ::Ifc4x3_add2::IfcSegmentedReferenceCurve(std::move(data)); - case 998: return new ::Ifc4x3_add2::IfcSensor(std::move(data)); - case 999: return new ::Ifc4x3_add2::IfcSensorType(std::move(data)); - case 1000: return new ::Ifc4x3_add2::IfcSensorTypeEnum(std::move(data)); - case 1001: return new ::Ifc4x3_add2::IfcSequenceEnum(std::move(data)); - case 1002: return new ::Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral(std::move(data)); - case 1003: return new ::Ifc4x3_add2::IfcShadingDevice(std::move(data)); - case 1004: return new ::Ifc4x3_add2::IfcShadingDeviceType(std::move(data)); - case 1005: return new ::Ifc4x3_add2::IfcShadingDeviceTypeEnum(std::move(data)); - case 1006: return new ::Ifc4x3_add2::IfcShapeAspect(std::move(data)); - case 1007: return new ::Ifc4x3_add2::IfcShapeModel(std::move(data)); - case 1008: return new ::Ifc4x3_add2::IfcShapeRepresentation(std::move(data)); - case 1009: return new ::Ifc4x3_add2::IfcShearModulusMeasure(std::move(data)); - case 1011: return new ::Ifc4x3_add2::IfcShellBasedSurfaceModel(std::move(data)); - case 1012: return new ::Ifc4x3_add2::IfcSign(std::move(data)); - case 1013: return new ::Ifc4x3_add2::IfcSignal(std::move(data)); - case 1014: return new ::Ifc4x3_add2::IfcSignalType(std::move(data)); - case 1015: return new ::Ifc4x3_add2::IfcSignalTypeEnum(std::move(data)); - case 1016: return new ::Ifc4x3_add2::IfcSignType(std::move(data)); - case 1017: return new ::Ifc4x3_add2::IfcSignTypeEnum(std::move(data)); - case 1018: return new ::Ifc4x3_add2::IfcSimpleProperty(std::move(data)); - case 1019: return new ::Ifc4x3_add2::IfcSimplePropertyTemplate(std::move(data)); - case 1020: return new ::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum(std::move(data)); - case 1022: return new ::Ifc4x3_add2::IfcSineSpiral(std::move(data)); - case 1023: return new ::Ifc4x3_add2::IfcSIPrefix(std::move(data)); - case 1024: return new ::Ifc4x3_add2::IfcSite(std::move(data)); - case 1025: return new ::Ifc4x3_add2::IfcSIUnit(std::move(data)); - case 1026: return new ::Ifc4x3_add2::IfcSIUnitName(std::move(data)); - case 1028: return new ::Ifc4x3_add2::IfcSlab(std::move(data)); - case 1029: return new ::Ifc4x3_add2::IfcSlabType(std::move(data)); - case 1030: return new ::Ifc4x3_add2::IfcSlabTypeEnum(std::move(data)); - case 1031: return new ::Ifc4x3_add2::IfcSlippageConnectionCondition(std::move(data)); - case 1032: return new ::Ifc4x3_add2::IfcSolarDevice(std::move(data)); - case 1033: return new ::Ifc4x3_add2::IfcSolarDeviceType(std::move(data)); - case 1034: return new ::Ifc4x3_add2::IfcSolarDeviceTypeEnum(std::move(data)); - case 1035: return new ::Ifc4x3_add2::IfcSolidAngleMeasure(std::move(data)); - case 1036: return new ::Ifc4x3_add2::IfcSolidModel(std::move(data)); - case 1038: return new ::Ifc4x3_add2::IfcSoundPowerLevelMeasure(std::move(data)); - case 1039: return new ::Ifc4x3_add2::IfcSoundPowerMeasure(std::move(data)); - case 1040: return new ::Ifc4x3_add2::IfcSoundPressureLevelMeasure(std::move(data)); - case 1041: return new ::Ifc4x3_add2::IfcSoundPressureMeasure(std::move(data)); - case 1042: return new ::Ifc4x3_add2::IfcSpace(std::move(data)); - case 1044: return new ::Ifc4x3_add2::IfcSpaceHeater(std::move(data)); - case 1045: return new ::Ifc4x3_add2::IfcSpaceHeaterType(std::move(data)); - case 1046: return new ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum(std::move(data)); - case 1047: return new ::Ifc4x3_add2::IfcSpaceType(std::move(data)); - case 1048: return new ::Ifc4x3_add2::IfcSpaceTypeEnum(std::move(data)); - case 1049: return new ::Ifc4x3_add2::IfcSpatialElement(std::move(data)); - case 1050: return new ::Ifc4x3_add2::IfcSpatialElementType(std::move(data)); - case 1052: return new ::Ifc4x3_add2::IfcSpatialStructureElement(std::move(data)); - case 1053: return new ::Ifc4x3_add2::IfcSpatialStructureElementType(std::move(data)); - case 1054: return new ::Ifc4x3_add2::IfcSpatialZone(std::move(data)); - case 1055: return new ::Ifc4x3_add2::IfcSpatialZoneType(std::move(data)); - case 1056: return new ::Ifc4x3_add2::IfcSpatialZoneTypeEnum(std::move(data)); - case 1057: return new ::Ifc4x3_add2::IfcSpecificHeatCapacityMeasure(std::move(data)); - case 1058: return new ::Ifc4x3_add2::IfcSpecularExponent(std::move(data)); - case 1060: return new ::Ifc4x3_add2::IfcSpecularRoughness(std::move(data)); - case 1061: return new ::Ifc4x3_add2::IfcSphere(std::move(data)); - case 1062: return new ::Ifc4x3_add2::IfcSphericalSurface(std::move(data)); - case 1063: return new ::Ifc4x3_add2::IfcSpiral(std::move(data)); - case 1064: return new ::Ifc4x3_add2::IfcStackTerminal(std::move(data)); - case 1065: return new ::Ifc4x3_add2::IfcStackTerminalType(std::move(data)); - case 1066: return new ::Ifc4x3_add2::IfcStackTerminalTypeEnum(std::move(data)); - case 1067: return new ::Ifc4x3_add2::IfcStair(std::move(data)); - case 1068: return new ::Ifc4x3_add2::IfcStairFlight(std::move(data)); - case 1069: return new ::Ifc4x3_add2::IfcStairFlightType(std::move(data)); - case 1070: return new ::Ifc4x3_add2::IfcStairFlightTypeEnum(std::move(data)); - case 1071: return new ::Ifc4x3_add2::IfcStairType(std::move(data)); - case 1072: return new ::Ifc4x3_add2::IfcStairTypeEnum(std::move(data)); - case 1073: return new ::Ifc4x3_add2::IfcStateEnum(std::move(data)); - case 1074: return new ::Ifc4x3_add2::IfcStrippedOptional(std::move(data)); - case 1075: return new ::Ifc4x3_add2::IfcStructuralAction(std::move(data)); - case 1076: return new ::Ifc4x3_add2::IfcStructuralActivity(std::move(data)); - case 1078: return new ::Ifc4x3_add2::IfcStructuralAnalysisModel(std::move(data)); - case 1079: return new ::Ifc4x3_add2::IfcStructuralConnection(std::move(data)); - case 1080: return new ::Ifc4x3_add2::IfcStructuralConnectionCondition(std::move(data)); - case 1081: return new ::Ifc4x3_add2::IfcStructuralCurveAction(std::move(data)); - case 1082: return new ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum(std::move(data)); - case 1083: return new ::Ifc4x3_add2::IfcStructuralCurveConnection(std::move(data)); - case 1084: return new ::Ifc4x3_add2::IfcStructuralCurveMember(std::move(data)); - case 1085: return new ::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum(std::move(data)); - case 1086: return new ::Ifc4x3_add2::IfcStructuralCurveMemberVarying(std::move(data)); - case 1087: return new ::Ifc4x3_add2::IfcStructuralCurveReaction(std::move(data)); - case 1088: return new ::Ifc4x3_add2::IfcStructuralItem(std::move(data)); - case 1089: return new ::Ifc4x3_add2::IfcStructuralLinearAction(std::move(data)); - case 1090: return new ::Ifc4x3_add2::IfcStructuralLoad(std::move(data)); - case 1091: return new ::Ifc4x3_add2::IfcStructuralLoadCase(std::move(data)); - case 1092: return new ::Ifc4x3_add2::IfcStructuralLoadConfiguration(std::move(data)); - case 1093: return new ::Ifc4x3_add2::IfcStructuralLoadGroup(std::move(data)); - case 1094: return new ::Ifc4x3_add2::IfcStructuralLoadLinearForce(std::move(data)); - case 1095: return new ::Ifc4x3_add2::IfcStructuralLoadOrResult(std::move(data)); - case 1096: return new ::Ifc4x3_add2::IfcStructuralLoadPlanarForce(std::move(data)); - case 1097: return new ::Ifc4x3_add2::IfcStructuralLoadSingleDisplacement(std::move(data)); - case 1098: return new ::Ifc4x3_add2::IfcStructuralLoadSingleDisplacementDistortion(std::move(data)); - case 1099: return new ::Ifc4x3_add2::IfcStructuralLoadSingleForce(std::move(data)); - case 1100: return new ::Ifc4x3_add2::IfcStructuralLoadSingleForceWarping(std::move(data)); - case 1101: return new ::Ifc4x3_add2::IfcStructuralLoadStatic(std::move(data)); - case 1102: return new ::Ifc4x3_add2::IfcStructuralLoadTemperature(std::move(data)); - case 1103: return new ::Ifc4x3_add2::IfcStructuralMember(std::move(data)); - case 1104: return new ::Ifc4x3_add2::IfcStructuralPlanarAction(std::move(data)); - case 1105: return new ::Ifc4x3_add2::IfcStructuralPointAction(std::move(data)); - case 1106: return new ::Ifc4x3_add2::IfcStructuralPointConnection(std::move(data)); - case 1107: return new ::Ifc4x3_add2::IfcStructuralPointReaction(std::move(data)); - case 1108: return new ::Ifc4x3_add2::IfcStructuralReaction(std::move(data)); - case 1109: return new ::Ifc4x3_add2::IfcStructuralResultGroup(std::move(data)); - case 1110: return new ::Ifc4x3_add2::IfcStructuralSurfaceAction(std::move(data)); - case 1111: return new ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum(std::move(data)); - case 1112: return new ::Ifc4x3_add2::IfcStructuralSurfaceConnection(std::move(data)); - case 1113: return new ::Ifc4x3_add2::IfcStructuralSurfaceMember(std::move(data)); - case 1114: return new ::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum(std::move(data)); - case 1115: return new ::Ifc4x3_add2::IfcStructuralSurfaceMemberVarying(std::move(data)); - case 1116: return new ::Ifc4x3_add2::IfcStructuralSurfaceReaction(std::move(data)); - case 1117: return new ::Ifc4x3_add2::IfcStyledItem(std::move(data)); - case 1118: return new ::Ifc4x3_add2::IfcStyledRepresentation(std::move(data)); - case 1119: return new ::Ifc4x3_add2::IfcStyleModel(std::move(data)); - case 1120: return new ::Ifc4x3_add2::IfcSubContractResource(std::move(data)); - case 1121: return new ::Ifc4x3_add2::IfcSubContractResourceType(std::move(data)); - case 1122: return new ::Ifc4x3_add2::IfcSubContractResourceTypeEnum(std::move(data)); - case 1123: return new ::Ifc4x3_add2::IfcSubedge(std::move(data)); - case 1124: return new ::Ifc4x3_add2::IfcSurface(std::move(data)); - case 1125: return new ::Ifc4x3_add2::IfcSurfaceCurve(std::move(data)); - case 1126: return new ::Ifc4x3_add2::IfcSurfaceCurveSweptAreaSolid(std::move(data)); - case 1127: return new ::Ifc4x3_add2::IfcSurfaceFeature(std::move(data)); - case 1128: return new ::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum(std::move(data)); - case 1129: return new ::Ifc4x3_add2::IfcSurfaceOfLinearExtrusion(std::move(data)); - case 1130: return new ::Ifc4x3_add2::IfcSurfaceOfRevolution(std::move(data)); - case 1132: return new ::Ifc4x3_add2::IfcSurfaceReinforcementArea(std::move(data)); - case 1133: return new ::Ifc4x3_add2::IfcSurfaceSide(std::move(data)); - case 1134: return new ::Ifc4x3_add2::IfcSurfaceStyle(std::move(data)); - case 1136: return new ::Ifc4x3_add2::IfcSurfaceStyleLighting(std::move(data)); - case 1137: return new ::Ifc4x3_add2::IfcSurfaceStyleRefraction(std::move(data)); - case 1138: return new ::Ifc4x3_add2::IfcSurfaceStyleRendering(std::move(data)); - case 1139: return new ::Ifc4x3_add2::IfcSurfaceStyleShading(std::move(data)); - case 1140: return new ::Ifc4x3_add2::IfcSurfaceStyleWithTextures(std::move(data)); - case 1141: return new ::Ifc4x3_add2::IfcSurfaceTexture(std::move(data)); - case 1142: return new ::Ifc4x3_add2::IfcSweptAreaSolid(std::move(data)); - case 1143: return new ::Ifc4x3_add2::IfcSweptDiskSolid(std::move(data)); - case 1144: return new ::Ifc4x3_add2::IfcSweptDiskSolidPolygonal(std::move(data)); - case 1145: return new ::Ifc4x3_add2::IfcSweptSurface(std::move(data)); - case 1146: return new ::Ifc4x3_add2::IfcSwitchingDevice(std::move(data)); - case 1147: return new ::Ifc4x3_add2::IfcSwitchingDeviceType(std::move(data)); - case 1148: return new ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum(std::move(data)); - case 1149: return new ::Ifc4x3_add2::IfcSystem(std::move(data)); - case 1150: return new ::Ifc4x3_add2::IfcSystemFurnitureElement(std::move(data)); - case 1151: return new ::Ifc4x3_add2::IfcSystemFurnitureElementType(std::move(data)); - case 1152: return new ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum(std::move(data)); - case 1153: return new ::Ifc4x3_add2::IfcTable(std::move(data)); - case 1154: return new ::Ifc4x3_add2::IfcTableColumn(std::move(data)); - case 1155: return new ::Ifc4x3_add2::IfcTableRow(std::move(data)); - case 1156: return new ::Ifc4x3_add2::IfcTank(std::move(data)); - case 1157: return new ::Ifc4x3_add2::IfcTankType(std::move(data)); - case 1158: return new ::Ifc4x3_add2::IfcTankTypeEnum(std::move(data)); - case 1159: return new ::Ifc4x3_add2::IfcTask(std::move(data)); - case 1160: return new ::Ifc4x3_add2::IfcTaskDurationEnum(std::move(data)); - case 1161: return new ::Ifc4x3_add2::IfcTaskTime(std::move(data)); - case 1162: return new ::Ifc4x3_add2::IfcTaskTimeRecurring(std::move(data)); - case 1163: return new ::Ifc4x3_add2::IfcTaskType(std::move(data)); - case 1164: return new ::Ifc4x3_add2::IfcTaskTypeEnum(std::move(data)); - case 1165: return new ::Ifc4x3_add2::IfcTelecomAddress(std::move(data)); - case 1166: return new ::Ifc4x3_add2::IfcTemperatureGradientMeasure(std::move(data)); - case 1167: return new ::Ifc4x3_add2::IfcTemperatureRateOfChangeMeasure(std::move(data)); - case 1168: return new ::Ifc4x3_add2::IfcTendon(std::move(data)); - case 1169: return new ::Ifc4x3_add2::IfcTendonAnchor(std::move(data)); - case 1170: return new ::Ifc4x3_add2::IfcTendonAnchorType(std::move(data)); - case 1171: return new ::Ifc4x3_add2::IfcTendonAnchorTypeEnum(std::move(data)); - case 1172: return new ::Ifc4x3_add2::IfcTendonConduit(std::move(data)); - case 1173: return new ::Ifc4x3_add2::IfcTendonConduitType(std::move(data)); - case 1174: return new ::Ifc4x3_add2::IfcTendonConduitTypeEnum(std::move(data)); - case 1175: return new ::Ifc4x3_add2::IfcTendonType(std::move(data)); - case 1176: return new ::Ifc4x3_add2::IfcTendonTypeEnum(std::move(data)); - case 1177: return new ::Ifc4x3_add2::IfcTessellatedFaceSet(std::move(data)); - case 1178: return new ::Ifc4x3_add2::IfcTessellatedItem(std::move(data)); - case 1179: return new ::Ifc4x3_add2::IfcText(std::move(data)); - case 1180: return new ::Ifc4x3_add2::IfcTextAlignment(std::move(data)); - case 1181: return new ::Ifc4x3_add2::IfcTextDecoration(std::move(data)); - case 1182: return new ::Ifc4x3_add2::IfcTextFontName(std::move(data)); - case 1184: return new ::Ifc4x3_add2::IfcTextLiteral(std::move(data)); - case 1185: return new ::Ifc4x3_add2::IfcTextLiteralWithExtent(std::move(data)); - case 1186: return new ::Ifc4x3_add2::IfcTextPath(std::move(data)); - case 1187: return new ::Ifc4x3_add2::IfcTextStyle(std::move(data)); - case 1188: return new ::Ifc4x3_add2::IfcTextStyleFontModel(std::move(data)); - case 1189: return new ::Ifc4x3_add2::IfcTextStyleForDefinedFont(std::move(data)); - case 1190: return new ::Ifc4x3_add2::IfcTextStyleTextModel(std::move(data)); - case 1191: return new ::Ifc4x3_add2::IfcTextTransformation(std::move(data)); - case 1192: return new ::Ifc4x3_add2::IfcTextureCoordinate(std::move(data)); - case 1193: return new ::Ifc4x3_add2::IfcTextureCoordinateGenerator(std::move(data)); - case 1194: return new ::Ifc4x3_add2::IfcTextureCoordinateIndices(std::move(data)); - case 1195: return new ::Ifc4x3_add2::IfcTextureCoordinateIndicesWithVoids(std::move(data)); - case 1196: return new ::Ifc4x3_add2::IfcTextureMap(std::move(data)); - case 1197: return new ::Ifc4x3_add2::IfcTextureVertex(std::move(data)); - case 1198: return new ::Ifc4x3_add2::IfcTextureVertexList(std::move(data)); - case 1199: return new ::Ifc4x3_add2::IfcThermalAdmittanceMeasure(std::move(data)); - case 1200: return new ::Ifc4x3_add2::IfcThermalConductivityMeasure(std::move(data)); - case 1201: return new ::Ifc4x3_add2::IfcThermalExpansionCoefficientMeasure(std::move(data)); - case 1202: return new ::Ifc4x3_add2::IfcThermalResistanceMeasure(std::move(data)); - case 1203: return new ::Ifc4x3_add2::IfcThermalTransmittanceMeasure(std::move(data)); - case 1204: return new ::Ifc4x3_add2::IfcThermodynamicTemperatureMeasure(std::move(data)); - case 1205: return new ::Ifc4x3_add2::IfcThirdOrderPolynomialSpiral(std::move(data)); - case 1206: return new ::Ifc4x3_add2::IfcTime(std::move(data)); - case 1207: return new ::Ifc4x3_add2::IfcTimeMeasure(std::move(data)); - case 1209: return new ::Ifc4x3_add2::IfcTimePeriod(std::move(data)); - case 1210: return new ::Ifc4x3_add2::IfcTimeSeries(std::move(data)); - case 1211: return new ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum(std::move(data)); - case 1212: return new ::Ifc4x3_add2::IfcTimeSeriesValue(std::move(data)); - case 1213: return new ::Ifc4x3_add2::IfcTimeStamp(std::move(data)); - case 1214: return new ::Ifc4x3_add2::IfcTopologicalRepresentationItem(std::move(data)); - case 1215: return new ::Ifc4x3_add2::IfcTopologyRepresentation(std::move(data)); - case 1216: return new ::Ifc4x3_add2::IfcToroidalSurface(std::move(data)); - case 1217: return new ::Ifc4x3_add2::IfcTorqueMeasure(std::move(data)); - case 1218: return new ::Ifc4x3_add2::IfcTrackElement(std::move(data)); - case 1219: return new ::Ifc4x3_add2::IfcTrackElementType(std::move(data)); - case 1220: return new ::Ifc4x3_add2::IfcTrackElementTypeEnum(std::move(data)); - case 1221: return new ::Ifc4x3_add2::IfcTransformer(std::move(data)); - case 1222: return new ::Ifc4x3_add2::IfcTransformerType(std::move(data)); - case 1223: return new ::Ifc4x3_add2::IfcTransformerTypeEnum(std::move(data)); - case 1224: return new ::Ifc4x3_add2::IfcTransitionCode(std::move(data)); - case 1226: return new ::Ifc4x3_add2::IfcTransportationDevice(std::move(data)); - case 1227: return new ::Ifc4x3_add2::IfcTransportationDeviceType(std::move(data)); - case 1228: return new ::Ifc4x3_add2::IfcTransportElement(std::move(data)); - case 1229: return new ::Ifc4x3_add2::IfcTransportElementType(std::move(data)); - case 1230: return new ::Ifc4x3_add2::IfcTransportElementTypeEnum(std::move(data)); - case 1231: return new ::Ifc4x3_add2::IfcTrapeziumProfileDef(std::move(data)); - case 1232: return new ::Ifc4x3_add2::IfcTriangulatedFaceSet(std::move(data)); - case 1233: return new ::Ifc4x3_add2::IfcTriangulatedIrregularNetwork(std::move(data)); - case 1234: return new ::Ifc4x3_add2::IfcTrimmedCurve(std::move(data)); - case 1235: return new ::Ifc4x3_add2::IfcTrimmingPreference(std::move(data)); - case 1237: return new ::Ifc4x3_add2::IfcTShapeProfileDef(std::move(data)); - case 1238: return new ::Ifc4x3_add2::IfcTubeBundle(std::move(data)); - case 1239: return new ::Ifc4x3_add2::IfcTubeBundleType(std::move(data)); - case 1240: return new ::Ifc4x3_add2::IfcTubeBundleTypeEnum(std::move(data)); - case 1241: return new ::Ifc4x3_add2::IfcTypeObject(std::move(data)); - case 1242: return new ::Ifc4x3_add2::IfcTypeProcess(std::move(data)); - case 1243: return new ::Ifc4x3_add2::IfcTypeProduct(std::move(data)); - case 1244: return new ::Ifc4x3_add2::IfcTypeResource(std::move(data)); - case 1246: return new ::Ifc4x3_add2::IfcUnitaryControlElement(std::move(data)); - case 1247: return new ::Ifc4x3_add2::IfcUnitaryControlElementType(std::move(data)); - case 1248: return new ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum(std::move(data)); - case 1249: return new ::Ifc4x3_add2::IfcUnitaryEquipment(std::move(data)); - case 1250: return new ::Ifc4x3_add2::IfcUnitaryEquipmentType(std::move(data)); - case 1251: return new ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum(std::move(data)); - case 1252: return new ::Ifc4x3_add2::IfcUnitAssignment(std::move(data)); - case 1253: return new ::Ifc4x3_add2::IfcUnitEnum(std::move(data)); - case 1254: return new ::Ifc4x3_add2::IfcURIReference(std::move(data)); - case 1255: return new ::Ifc4x3_add2::IfcUShapeProfileDef(std::move(data)); - case 1257: return new ::Ifc4x3_add2::IfcValve(std::move(data)); - case 1258: return new ::Ifc4x3_add2::IfcValveType(std::move(data)); - case 1259: return new ::Ifc4x3_add2::IfcValveTypeEnum(std::move(data)); - case 1260: return new ::Ifc4x3_add2::IfcVaporPermeabilityMeasure(std::move(data)); - case 1261: return new ::Ifc4x3_add2::IfcVector(std::move(data)); - case 1263: return new ::Ifc4x3_add2::IfcVehicle(std::move(data)); - case 1264: return new ::Ifc4x3_add2::IfcVehicleType(std::move(data)); - case 1265: return new ::Ifc4x3_add2::IfcVehicleTypeEnum(std::move(data)); - case 1266: return new ::Ifc4x3_add2::IfcVertex(std::move(data)); - case 1267: return new ::Ifc4x3_add2::IfcVertexLoop(std::move(data)); - case 1268: return new ::Ifc4x3_add2::IfcVertexPoint(std::move(data)); - case 1269: return new ::Ifc4x3_add2::IfcVibrationDamper(std::move(data)); - case 1270: return new ::Ifc4x3_add2::IfcVibrationDamperType(std::move(data)); - case 1271: return new ::Ifc4x3_add2::IfcVibrationDamperTypeEnum(std::move(data)); - case 1272: return new ::Ifc4x3_add2::IfcVibrationIsolator(std::move(data)); - case 1273: return new ::Ifc4x3_add2::IfcVibrationIsolatorType(std::move(data)); - case 1274: return new ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum(std::move(data)); - case 1275: return new ::Ifc4x3_add2::IfcVirtualElement(std::move(data)); - case 1276: return new ::Ifc4x3_add2::IfcVirtualElementTypeEnum(std::move(data)); - case 1277: return new ::Ifc4x3_add2::IfcVirtualGridIntersection(std::move(data)); - case 1278: return new ::Ifc4x3_add2::IfcVoidingFeature(std::move(data)); - case 1279: return new ::Ifc4x3_add2::IfcVoidingFeatureTypeEnum(std::move(data)); - case 1280: return new ::Ifc4x3_add2::IfcVolumeMeasure(std::move(data)); - case 1281: return new ::Ifc4x3_add2::IfcVolumetricFlowRateMeasure(std::move(data)); - case 1282: return new ::Ifc4x3_add2::IfcWall(std::move(data)); - case 1283: return new ::Ifc4x3_add2::IfcWallStandardCase(std::move(data)); - case 1284: return new ::Ifc4x3_add2::IfcWallType(std::move(data)); - case 1285: return new ::Ifc4x3_add2::IfcWallTypeEnum(std::move(data)); - case 1286: return new ::Ifc4x3_add2::IfcWarpingConstantMeasure(std::move(data)); - case 1287: return new ::Ifc4x3_add2::IfcWarpingMomentMeasure(std::move(data)); - case 1289: return new ::Ifc4x3_add2::IfcWasteTerminal(std::move(data)); - case 1290: return new ::Ifc4x3_add2::IfcWasteTerminalType(std::move(data)); - case 1291: return new ::Ifc4x3_add2::IfcWasteTerminalTypeEnum(std::move(data)); - case 1292: return new ::Ifc4x3_add2::IfcWellKnownText(std::move(data)); - case 1293: return new ::Ifc4x3_add2::IfcWellKnownTextLiteral(std::move(data)); - case 1294: return new ::Ifc4x3_add2::IfcWindow(std::move(data)); - case 1295: return new ::Ifc4x3_add2::IfcWindowLiningProperties(std::move(data)); - case 1296: return new ::Ifc4x3_add2::IfcWindowPanelOperationEnum(std::move(data)); - case 1297: return new ::Ifc4x3_add2::IfcWindowPanelPositionEnum(std::move(data)); - case 1298: return new ::Ifc4x3_add2::IfcWindowPanelProperties(std::move(data)); - case 1299: return new ::Ifc4x3_add2::IfcWindowType(std::move(data)); - case 1300: return new ::Ifc4x3_add2::IfcWindowTypeEnum(std::move(data)); - case 1301: return new ::Ifc4x3_add2::IfcWindowTypePartitioningEnum(std::move(data)); - case 1302: return new ::Ifc4x3_add2::IfcWorkCalendar(std::move(data)); - case 1303: return new ::Ifc4x3_add2::IfcWorkCalendarTypeEnum(std::move(data)); - case 1304: return new ::Ifc4x3_add2::IfcWorkControl(std::move(data)); - case 1305: return new ::Ifc4x3_add2::IfcWorkPlan(std::move(data)); - case 1306: return new ::Ifc4x3_add2::IfcWorkPlanTypeEnum(std::move(data)); - case 1307: return new ::Ifc4x3_add2::IfcWorkSchedule(std::move(data)); - case 1308: return new ::Ifc4x3_add2::IfcWorkScheduleTypeEnum(std::move(data)); - case 1309: return new ::Ifc4x3_add2::IfcWorkTime(std::move(data)); - case 1310: return new ::Ifc4x3_add2::IfcZone(std::move(data)); - case 1311: return new ::Ifc4x3_add2::IfcZShapeProfileDef(std::move(data)); - default: throw IfcParse::IfcException(decl->name() + " cannot be instantiated"); - } - - } -}; - -IfcParse::schema_definition* IFC4X3_ADD2_populate_schema() { IFC4X3_ADD2_types[0] = new type_declaration(strings[0], 0, new simple_type(simple_type::real_type)); IFC4X3_ADD2_types[1] = new type_declaration(strings[1], 1, new simple_type(simple_type::real_type)); IFC4X3_ADD2_types[3] = new enumeration_type(strings[2], 3, {strings[3],strings[4],strings[5],strings[6],strings[7],strings[8],strings[9]}); @@ -3793,7 +2532,7 @@ IfcParse::schema_definition* IFC4X3_ADD2_populate_schema() { ((entity*) IFC4X3_ADD2_types[1266])->set_subtypes({((entity*) IFC4X3_ADD2_types[1268])}); ((entity*) IFC4X3_ADD2_types[1282])->set_subtypes({((entity*) IFC4X3_ADD2_types[1283])}); ((entity*) IFC4X3_ADD2_types[1304])->set_subtypes({((entity*) IFC4X3_ADD2_types[1305]),((entity*) IFC4X3_ADD2_types[1307])}); - return new schema_definition(strings[3915], {IFC4X3_ADD2_types[0],IFC4X3_ADD2_types[1],IFC4X3_ADD2_types[2],IFC4X3_ADD2_types[3],IFC4X3_ADD2_types[4],IFC4X3_ADD2_types[5],IFC4X3_ADD2_types[6],IFC4X3_ADD2_types[7],IFC4X3_ADD2_types[8],IFC4X3_ADD2_types[9],IFC4X3_ADD2_types[10],IFC4X3_ADD2_types[11],IFC4X3_ADD2_types[12],IFC4X3_ADD2_types[13],IFC4X3_ADD2_types[14],IFC4X3_ADD2_types[15],IFC4X3_ADD2_types[16],IFC4X3_ADD2_types[17],IFC4X3_ADD2_types[18],IFC4X3_ADD2_types[19],IFC4X3_ADD2_types[20],IFC4X3_ADD2_types[21],IFC4X3_ADD2_types[22],IFC4X3_ADD2_types[23],IFC4X3_ADD2_types[24],IFC4X3_ADD2_types[25],IFC4X3_ADD2_types[26],IFC4X3_ADD2_types[27],IFC4X3_ADD2_types[28],IFC4X3_ADD2_types[29],IFC4X3_ADD2_types[30],IFC4X3_ADD2_types[31],IFC4X3_ADD2_types[32],IFC4X3_ADD2_types[33],IFC4X3_ADD2_types[34],IFC4X3_ADD2_types[35],IFC4X3_ADD2_types[36],IFC4X3_ADD2_types[37],IFC4X3_ADD2_types[38],IFC4X3_ADD2_types[39],IFC4X3_ADD2_types[40],IFC4X3_ADD2_types[41],IFC4X3_ADD2_types[42],IFC4X3_ADD2_types[43],IFC4X3_ADD2_types[44],IFC4X3_ADD2_types[45],IFC4X3_ADD2_types[46],IFC4X3_ADD2_types[47],IFC4X3_ADD2_types[48],IFC4X3_ADD2_types[49],IFC4X3_ADD2_types[50],IFC4X3_ADD2_types[51],IFC4X3_ADD2_types[52],IFC4X3_ADD2_types[53],IFC4X3_ADD2_types[54],IFC4X3_ADD2_types[55],IFC4X3_ADD2_types[56],IFC4X3_ADD2_types[57],IFC4X3_ADD2_types[58],IFC4X3_ADD2_types[59],IFC4X3_ADD2_types[60],IFC4X3_ADD2_types[61],IFC4X3_ADD2_types[62],IFC4X3_ADD2_types[63],IFC4X3_ADD2_types[64],IFC4X3_ADD2_types[65],IFC4X3_ADD2_types[66],IFC4X3_ADD2_types[67],IFC4X3_ADD2_types[68],IFC4X3_ADD2_types[69],IFC4X3_ADD2_types[70],IFC4X3_ADD2_types[71],IFC4X3_ADD2_types[72],IFC4X3_ADD2_types[73],IFC4X3_ADD2_types[74],IFC4X3_ADD2_types[75],IFC4X3_ADD2_types[76],IFC4X3_ADD2_types[77],IFC4X3_ADD2_types[78],IFC4X3_ADD2_types[79],IFC4X3_ADD2_types[80],IFC4X3_ADD2_types[81],IFC4X3_ADD2_types[82],IFC4X3_ADD2_types[83],IFC4X3_ADD2_types[84],IFC4X3_ADD2_types[85],IFC4X3_ADD2_types[86],IFC4X3_ADD2_types[87],IFC4X3_ADD2_types[88],IFC4X3_ADD2_types[89],IFC4X3_ADD2_types[90],IFC4X3_ADD2_types[91],IFC4X3_ADD2_types[92],IFC4X3_ADD2_types[93],IFC4X3_ADD2_types[94],IFC4X3_ADD2_types[95],IFC4X3_ADD2_types[96],IFC4X3_ADD2_types[97],IFC4X3_ADD2_types[98],IFC4X3_ADD2_types[99],IFC4X3_ADD2_types[100],IFC4X3_ADD2_types[101],IFC4X3_ADD2_types[102],IFC4X3_ADD2_types[103],IFC4X3_ADD2_types[104],IFC4X3_ADD2_types[105],IFC4X3_ADD2_types[106],IFC4X3_ADD2_types[107],IFC4X3_ADD2_types[108],IFC4X3_ADD2_types[109],IFC4X3_ADD2_types[110],IFC4X3_ADD2_types[111],IFC4X3_ADD2_types[112],IFC4X3_ADD2_types[113],IFC4X3_ADD2_types[114],IFC4X3_ADD2_types[115],IFC4X3_ADD2_types[116],IFC4X3_ADD2_types[117],IFC4X3_ADD2_types[118],IFC4X3_ADD2_types[119],IFC4X3_ADD2_types[120],IFC4X3_ADD2_types[121],IFC4X3_ADD2_types[122],IFC4X3_ADD2_types[123],IFC4X3_ADD2_types[124],IFC4X3_ADD2_types[125],IFC4X3_ADD2_types[126],IFC4X3_ADD2_types[127],IFC4X3_ADD2_types[128],IFC4X3_ADD2_types[129],IFC4X3_ADD2_types[130],IFC4X3_ADD2_types[131],IFC4X3_ADD2_types[132],IFC4X3_ADD2_types[133],IFC4X3_ADD2_types[134],IFC4X3_ADD2_types[135],IFC4X3_ADD2_types[136],IFC4X3_ADD2_types[137],IFC4X3_ADD2_types[138],IFC4X3_ADD2_types[139],IFC4X3_ADD2_types[140],IFC4X3_ADD2_types[141],IFC4X3_ADD2_types[142],IFC4X3_ADD2_types[143],IFC4X3_ADD2_types[144],IFC4X3_ADD2_types[145],IFC4X3_ADD2_types[146],IFC4X3_ADD2_types[147],IFC4X3_ADD2_types[148],IFC4X3_ADD2_types[149],IFC4X3_ADD2_types[150],IFC4X3_ADD2_types[151],IFC4X3_ADD2_types[152],IFC4X3_ADD2_types[153],IFC4X3_ADD2_types[154],IFC4X3_ADD2_types[155],IFC4X3_ADD2_types[156],IFC4X3_ADD2_types[157],IFC4X3_ADD2_types[158],IFC4X3_ADD2_types[159],IFC4X3_ADD2_types[160],IFC4X3_ADD2_types[161],IFC4X3_ADD2_types[162],IFC4X3_ADD2_types[163],IFC4X3_ADD2_types[164],IFC4X3_ADD2_types[165],IFC4X3_ADD2_types[166],IFC4X3_ADD2_types[167],IFC4X3_ADD2_types[168],IFC4X3_ADD2_types[169],IFC4X3_ADD2_types[170],IFC4X3_ADD2_types[171],IFC4X3_ADD2_types[172],IFC4X3_ADD2_types[173],IFC4X3_ADD2_types[174],IFC4X3_ADD2_types[175],IFC4X3_ADD2_types[176],IFC4X3_ADD2_types[177],IFC4X3_ADD2_types[178],IFC4X3_ADD2_types[179],IFC4X3_ADD2_types[180],IFC4X3_ADD2_types[181],IFC4X3_ADD2_types[182],IFC4X3_ADD2_types[183],IFC4X3_ADD2_types[184],IFC4X3_ADD2_types[185],IFC4X3_ADD2_types[186],IFC4X3_ADD2_types[187],IFC4X3_ADD2_types[188],IFC4X3_ADD2_types[189],IFC4X3_ADD2_types[190],IFC4X3_ADD2_types[191],IFC4X3_ADD2_types[192],IFC4X3_ADD2_types[193],IFC4X3_ADD2_types[194],IFC4X3_ADD2_types[195],IFC4X3_ADD2_types[196],IFC4X3_ADD2_types[197],IFC4X3_ADD2_types[198],IFC4X3_ADD2_types[199],IFC4X3_ADD2_types[200],IFC4X3_ADD2_types[201],IFC4X3_ADD2_types[202],IFC4X3_ADD2_types[203],IFC4X3_ADD2_types[204],IFC4X3_ADD2_types[205],IFC4X3_ADD2_types[206],IFC4X3_ADD2_types[207],IFC4X3_ADD2_types[208],IFC4X3_ADD2_types[209],IFC4X3_ADD2_types[210],IFC4X3_ADD2_types[211],IFC4X3_ADD2_types[212],IFC4X3_ADD2_types[213],IFC4X3_ADD2_types[214],IFC4X3_ADD2_types[215],IFC4X3_ADD2_types[216],IFC4X3_ADD2_types[217],IFC4X3_ADD2_types[218],IFC4X3_ADD2_types[219],IFC4X3_ADD2_types[220],IFC4X3_ADD2_types[221],IFC4X3_ADD2_types[222],IFC4X3_ADD2_types[223],IFC4X3_ADD2_types[224],IFC4X3_ADD2_types[225],IFC4X3_ADD2_types[226],IFC4X3_ADD2_types[227],IFC4X3_ADD2_types[228],IFC4X3_ADD2_types[229],IFC4X3_ADD2_types[230],IFC4X3_ADD2_types[231],IFC4X3_ADD2_types[232],IFC4X3_ADD2_types[233],IFC4X3_ADD2_types[234],IFC4X3_ADD2_types[235],IFC4X3_ADD2_types[236],IFC4X3_ADD2_types[237],IFC4X3_ADD2_types[238],IFC4X3_ADD2_types[239],IFC4X3_ADD2_types[240],IFC4X3_ADD2_types[241],IFC4X3_ADD2_types[242],IFC4X3_ADD2_types[243],IFC4X3_ADD2_types[244],IFC4X3_ADD2_types[245],IFC4X3_ADD2_types[246],IFC4X3_ADD2_types[247],IFC4X3_ADD2_types[248],IFC4X3_ADD2_types[249],IFC4X3_ADD2_types[250],IFC4X3_ADD2_types[251],IFC4X3_ADD2_types[252],IFC4X3_ADD2_types[253],IFC4X3_ADD2_types[254],IFC4X3_ADD2_types[255],IFC4X3_ADD2_types[256],IFC4X3_ADD2_types[257],IFC4X3_ADD2_types[258],IFC4X3_ADD2_types[259],IFC4X3_ADD2_types[260],IFC4X3_ADD2_types[261],IFC4X3_ADD2_types[262],IFC4X3_ADD2_types[263],IFC4X3_ADD2_types[264],IFC4X3_ADD2_types[265],IFC4X3_ADD2_types[266],IFC4X3_ADD2_types[267],IFC4X3_ADD2_types[268],IFC4X3_ADD2_types[269],IFC4X3_ADD2_types[270],IFC4X3_ADD2_types[271],IFC4X3_ADD2_types[272],IFC4X3_ADD2_types[273],IFC4X3_ADD2_types[274],IFC4X3_ADD2_types[275],IFC4X3_ADD2_types[276],IFC4X3_ADD2_types[277],IFC4X3_ADD2_types[278],IFC4X3_ADD2_types[279],IFC4X3_ADD2_types[280],IFC4X3_ADD2_types[281],IFC4X3_ADD2_types[282],IFC4X3_ADD2_types[283],IFC4X3_ADD2_types[284],IFC4X3_ADD2_types[285],IFC4X3_ADD2_types[286],IFC4X3_ADD2_types[287],IFC4X3_ADD2_types[288],IFC4X3_ADD2_types[289],IFC4X3_ADD2_types[290],IFC4X3_ADD2_types[291],IFC4X3_ADD2_types[292],IFC4X3_ADD2_types[293],IFC4X3_ADD2_types[294],IFC4X3_ADD2_types[295],IFC4X3_ADD2_types[296],IFC4X3_ADD2_types[297],IFC4X3_ADD2_types[298],IFC4X3_ADD2_types[299],IFC4X3_ADD2_types[300],IFC4X3_ADD2_types[301],IFC4X3_ADD2_types[302],IFC4X3_ADD2_types[303],IFC4X3_ADD2_types[304],IFC4X3_ADD2_types[305],IFC4X3_ADD2_types[306],IFC4X3_ADD2_types[307],IFC4X3_ADD2_types[308],IFC4X3_ADD2_types[309],IFC4X3_ADD2_types[310],IFC4X3_ADD2_types[311],IFC4X3_ADD2_types[312],IFC4X3_ADD2_types[313],IFC4X3_ADD2_types[314],IFC4X3_ADD2_types[315],IFC4X3_ADD2_types[316],IFC4X3_ADD2_types[317],IFC4X3_ADD2_types[318],IFC4X3_ADD2_types[319],IFC4X3_ADD2_types[320],IFC4X3_ADD2_types[321],IFC4X3_ADD2_types[322],IFC4X3_ADD2_types[323],IFC4X3_ADD2_types[324],IFC4X3_ADD2_types[325],IFC4X3_ADD2_types[326],IFC4X3_ADD2_types[327],IFC4X3_ADD2_types[328],IFC4X3_ADD2_types[329],IFC4X3_ADD2_types[330],IFC4X3_ADD2_types[331],IFC4X3_ADD2_types[332],IFC4X3_ADD2_types[333],IFC4X3_ADD2_types[334],IFC4X3_ADD2_types[335],IFC4X3_ADD2_types[336],IFC4X3_ADD2_types[337],IFC4X3_ADD2_types[338],IFC4X3_ADD2_types[339],IFC4X3_ADD2_types[340],IFC4X3_ADD2_types[341],IFC4X3_ADD2_types[342],IFC4X3_ADD2_types[343],IFC4X3_ADD2_types[344],IFC4X3_ADD2_types[345],IFC4X3_ADD2_types[346],IFC4X3_ADD2_types[347],IFC4X3_ADD2_types[348],IFC4X3_ADD2_types[349],IFC4X3_ADD2_types[350],IFC4X3_ADD2_types[351],IFC4X3_ADD2_types[352],IFC4X3_ADD2_types[353],IFC4X3_ADD2_types[354],IFC4X3_ADD2_types[355],IFC4X3_ADD2_types[356],IFC4X3_ADD2_types[357],IFC4X3_ADD2_types[358],IFC4X3_ADD2_types[359],IFC4X3_ADD2_types[360],IFC4X3_ADD2_types[361],IFC4X3_ADD2_types[362],IFC4X3_ADD2_types[363],IFC4X3_ADD2_types[364],IFC4X3_ADD2_types[365],IFC4X3_ADD2_types[366],IFC4X3_ADD2_types[367],IFC4X3_ADD2_types[368],IFC4X3_ADD2_types[369],IFC4X3_ADD2_types[370],IFC4X3_ADD2_types[371],IFC4X3_ADD2_types[372],IFC4X3_ADD2_types[373],IFC4X3_ADD2_types[374],IFC4X3_ADD2_types[375],IFC4X3_ADD2_types[376],IFC4X3_ADD2_types[377],IFC4X3_ADD2_types[378],IFC4X3_ADD2_types[379],IFC4X3_ADD2_types[380],IFC4X3_ADD2_types[381],IFC4X3_ADD2_types[382],IFC4X3_ADD2_types[383],IFC4X3_ADD2_types[384],IFC4X3_ADD2_types[385],IFC4X3_ADD2_types[386],IFC4X3_ADD2_types[387],IFC4X3_ADD2_types[388],IFC4X3_ADD2_types[389],IFC4X3_ADD2_types[390],IFC4X3_ADD2_types[391],IFC4X3_ADD2_types[392],IFC4X3_ADD2_types[393],IFC4X3_ADD2_types[394],IFC4X3_ADD2_types[395],IFC4X3_ADD2_types[396],IFC4X3_ADD2_types[397],IFC4X3_ADD2_types[398],IFC4X3_ADD2_types[399],IFC4X3_ADD2_types[400],IFC4X3_ADD2_types[401],IFC4X3_ADD2_types[402],IFC4X3_ADD2_types[403],IFC4X3_ADD2_types[404],IFC4X3_ADD2_types[405],IFC4X3_ADD2_types[406],IFC4X3_ADD2_types[407],IFC4X3_ADD2_types[408],IFC4X3_ADD2_types[409],IFC4X3_ADD2_types[410],IFC4X3_ADD2_types[411],IFC4X3_ADD2_types[412],IFC4X3_ADD2_types[413],IFC4X3_ADD2_types[414],IFC4X3_ADD2_types[415],IFC4X3_ADD2_types[416],IFC4X3_ADD2_types[417],IFC4X3_ADD2_types[418],IFC4X3_ADD2_types[419],IFC4X3_ADD2_types[420],IFC4X3_ADD2_types[421],IFC4X3_ADD2_types[422],IFC4X3_ADD2_types[423],IFC4X3_ADD2_types[424],IFC4X3_ADD2_types[425],IFC4X3_ADD2_types[426],IFC4X3_ADD2_types[427],IFC4X3_ADD2_types[428],IFC4X3_ADD2_types[429],IFC4X3_ADD2_types[430],IFC4X3_ADD2_types[431],IFC4X3_ADD2_types[432],IFC4X3_ADD2_types[433],IFC4X3_ADD2_types[434],IFC4X3_ADD2_types[435],IFC4X3_ADD2_types[436],IFC4X3_ADD2_types[437],IFC4X3_ADD2_types[438],IFC4X3_ADD2_types[439],IFC4X3_ADD2_types[440],IFC4X3_ADD2_types[441],IFC4X3_ADD2_types[442],IFC4X3_ADD2_types[443],IFC4X3_ADD2_types[444],IFC4X3_ADD2_types[445],IFC4X3_ADD2_types[446],IFC4X3_ADD2_types[447],IFC4X3_ADD2_types[448],IFC4X3_ADD2_types[449],IFC4X3_ADD2_types[450],IFC4X3_ADD2_types[451],IFC4X3_ADD2_types[452],IFC4X3_ADD2_types[453],IFC4X3_ADD2_types[454],IFC4X3_ADD2_types[455],IFC4X3_ADD2_types[456],IFC4X3_ADD2_types[457],IFC4X3_ADD2_types[458],IFC4X3_ADD2_types[459],IFC4X3_ADD2_types[460],IFC4X3_ADD2_types[461],IFC4X3_ADD2_types[462],IFC4X3_ADD2_types[463],IFC4X3_ADD2_types[464],IFC4X3_ADD2_types[465],IFC4X3_ADD2_types[466],IFC4X3_ADD2_types[467],IFC4X3_ADD2_types[468],IFC4X3_ADD2_types[469],IFC4X3_ADD2_types[470],IFC4X3_ADD2_types[471],IFC4X3_ADD2_types[472],IFC4X3_ADD2_types[473],IFC4X3_ADD2_types[474],IFC4X3_ADD2_types[475],IFC4X3_ADD2_types[476],IFC4X3_ADD2_types[477],IFC4X3_ADD2_types[478],IFC4X3_ADD2_types[479],IFC4X3_ADD2_types[480],IFC4X3_ADD2_types[481],IFC4X3_ADD2_types[482],IFC4X3_ADD2_types[483],IFC4X3_ADD2_types[484],IFC4X3_ADD2_types[485],IFC4X3_ADD2_types[486],IFC4X3_ADD2_types[487],IFC4X3_ADD2_types[488],IFC4X3_ADD2_types[489],IFC4X3_ADD2_types[490],IFC4X3_ADD2_types[491],IFC4X3_ADD2_types[492],IFC4X3_ADD2_types[493],IFC4X3_ADD2_types[494],IFC4X3_ADD2_types[495],IFC4X3_ADD2_types[496],IFC4X3_ADD2_types[497],IFC4X3_ADD2_types[498],IFC4X3_ADD2_types[499],IFC4X3_ADD2_types[500],IFC4X3_ADD2_types[501],IFC4X3_ADD2_types[502],IFC4X3_ADD2_types[503],IFC4X3_ADD2_types[504],IFC4X3_ADD2_types[505],IFC4X3_ADD2_types[506],IFC4X3_ADD2_types[507],IFC4X3_ADD2_types[508],IFC4X3_ADD2_types[509],IFC4X3_ADD2_types[510],IFC4X3_ADD2_types[511],IFC4X3_ADD2_types[512],IFC4X3_ADD2_types[513],IFC4X3_ADD2_types[514],IFC4X3_ADD2_types[515],IFC4X3_ADD2_types[516],IFC4X3_ADD2_types[517],IFC4X3_ADD2_types[518],IFC4X3_ADD2_types[519],IFC4X3_ADD2_types[520],IFC4X3_ADD2_types[521],IFC4X3_ADD2_types[522],IFC4X3_ADD2_types[523],IFC4X3_ADD2_types[524],IFC4X3_ADD2_types[525],IFC4X3_ADD2_types[526],IFC4X3_ADD2_types[527],IFC4X3_ADD2_types[528],IFC4X3_ADD2_types[529],IFC4X3_ADD2_types[530],IFC4X3_ADD2_types[531],IFC4X3_ADD2_types[532],IFC4X3_ADD2_types[533],IFC4X3_ADD2_types[534],IFC4X3_ADD2_types[535],IFC4X3_ADD2_types[536],IFC4X3_ADD2_types[537],IFC4X3_ADD2_types[538],IFC4X3_ADD2_types[539],IFC4X3_ADD2_types[540],IFC4X3_ADD2_types[541],IFC4X3_ADD2_types[542],IFC4X3_ADD2_types[543],IFC4X3_ADD2_types[544],IFC4X3_ADD2_types[545],IFC4X3_ADD2_types[546],IFC4X3_ADD2_types[547],IFC4X3_ADD2_types[548],IFC4X3_ADD2_types[549],IFC4X3_ADD2_types[550],IFC4X3_ADD2_types[551],IFC4X3_ADD2_types[552],IFC4X3_ADD2_types[553],IFC4X3_ADD2_types[554],IFC4X3_ADD2_types[555],IFC4X3_ADD2_types[556],IFC4X3_ADD2_types[557],IFC4X3_ADD2_types[558],IFC4X3_ADD2_types[559],IFC4X3_ADD2_types[560],IFC4X3_ADD2_types[561],IFC4X3_ADD2_types[562],IFC4X3_ADD2_types[563],IFC4X3_ADD2_types[564],IFC4X3_ADD2_types[565],IFC4X3_ADD2_types[566],IFC4X3_ADD2_types[567],IFC4X3_ADD2_types[568],IFC4X3_ADD2_types[569],IFC4X3_ADD2_types[570],IFC4X3_ADD2_types[571],IFC4X3_ADD2_types[572],IFC4X3_ADD2_types[573],IFC4X3_ADD2_types[574],IFC4X3_ADD2_types[575],IFC4X3_ADD2_types[576],IFC4X3_ADD2_types[577],IFC4X3_ADD2_types[578],IFC4X3_ADD2_types[579],IFC4X3_ADD2_types[580],IFC4X3_ADD2_types[581],IFC4X3_ADD2_types[582],IFC4X3_ADD2_types[583],IFC4X3_ADD2_types[584],IFC4X3_ADD2_types[585],IFC4X3_ADD2_types[586],IFC4X3_ADD2_types[587],IFC4X3_ADD2_types[588],IFC4X3_ADD2_types[589],IFC4X3_ADD2_types[590],IFC4X3_ADD2_types[591],IFC4X3_ADD2_types[592],IFC4X3_ADD2_types[593],IFC4X3_ADD2_types[594],IFC4X3_ADD2_types[595],IFC4X3_ADD2_types[596],IFC4X3_ADD2_types[597],IFC4X3_ADD2_types[598],IFC4X3_ADD2_types[599],IFC4X3_ADD2_types[600],IFC4X3_ADD2_types[601],IFC4X3_ADD2_types[602],IFC4X3_ADD2_types[603],IFC4X3_ADD2_types[604],IFC4X3_ADD2_types[605],IFC4X3_ADD2_types[606],IFC4X3_ADD2_types[607],IFC4X3_ADD2_types[608],IFC4X3_ADD2_types[609],IFC4X3_ADD2_types[610],IFC4X3_ADD2_types[611],IFC4X3_ADD2_types[612],IFC4X3_ADD2_types[613],IFC4X3_ADD2_types[614],IFC4X3_ADD2_types[615],IFC4X3_ADD2_types[616],IFC4X3_ADD2_types[617],IFC4X3_ADD2_types[618],IFC4X3_ADD2_types[619],IFC4X3_ADD2_types[620],IFC4X3_ADD2_types[621],IFC4X3_ADD2_types[622],IFC4X3_ADD2_types[623],IFC4X3_ADD2_types[624],IFC4X3_ADD2_types[625],IFC4X3_ADD2_types[626],IFC4X3_ADD2_types[627],IFC4X3_ADD2_types[628],IFC4X3_ADD2_types[629],IFC4X3_ADD2_types[630],IFC4X3_ADD2_types[631],IFC4X3_ADD2_types[632],IFC4X3_ADD2_types[633],IFC4X3_ADD2_types[634],IFC4X3_ADD2_types[635],IFC4X3_ADD2_types[636],IFC4X3_ADD2_types[637],IFC4X3_ADD2_types[638],IFC4X3_ADD2_types[639],IFC4X3_ADD2_types[640],IFC4X3_ADD2_types[641],IFC4X3_ADD2_types[642],IFC4X3_ADD2_types[643],IFC4X3_ADD2_types[644],IFC4X3_ADD2_types[645],IFC4X3_ADD2_types[646],IFC4X3_ADD2_types[647],IFC4X3_ADD2_types[648],IFC4X3_ADD2_types[649],IFC4X3_ADD2_types[650],IFC4X3_ADD2_types[651],IFC4X3_ADD2_types[652],IFC4X3_ADD2_types[653],IFC4X3_ADD2_types[654],IFC4X3_ADD2_types[655],IFC4X3_ADD2_types[656],IFC4X3_ADD2_types[657],IFC4X3_ADD2_types[658],IFC4X3_ADD2_types[659],IFC4X3_ADD2_types[660],IFC4X3_ADD2_types[661],IFC4X3_ADD2_types[662],IFC4X3_ADD2_types[663],IFC4X3_ADD2_types[664],IFC4X3_ADD2_types[665],IFC4X3_ADD2_types[666],IFC4X3_ADD2_types[667],IFC4X3_ADD2_types[668],IFC4X3_ADD2_types[669],IFC4X3_ADD2_types[670],IFC4X3_ADD2_types[671],IFC4X3_ADD2_types[672],IFC4X3_ADD2_types[673],IFC4X3_ADD2_types[674],IFC4X3_ADD2_types[675],IFC4X3_ADD2_types[676],IFC4X3_ADD2_types[677],IFC4X3_ADD2_types[678],IFC4X3_ADD2_types[679],IFC4X3_ADD2_types[680],IFC4X3_ADD2_types[681],IFC4X3_ADD2_types[682],IFC4X3_ADD2_types[683],IFC4X3_ADD2_types[684],IFC4X3_ADD2_types[685],IFC4X3_ADD2_types[686],IFC4X3_ADD2_types[687],IFC4X3_ADD2_types[688],IFC4X3_ADD2_types[689],IFC4X3_ADD2_types[690],IFC4X3_ADD2_types[691],IFC4X3_ADD2_types[692],IFC4X3_ADD2_types[693],IFC4X3_ADD2_types[694],IFC4X3_ADD2_types[695],IFC4X3_ADD2_types[696],IFC4X3_ADD2_types[697],IFC4X3_ADD2_types[698],IFC4X3_ADD2_types[699],IFC4X3_ADD2_types[700],IFC4X3_ADD2_types[701],IFC4X3_ADD2_types[702],IFC4X3_ADD2_types[703],IFC4X3_ADD2_types[704],IFC4X3_ADD2_types[705],IFC4X3_ADD2_types[706],IFC4X3_ADD2_types[707],IFC4X3_ADD2_types[708],IFC4X3_ADD2_types[709],IFC4X3_ADD2_types[710],IFC4X3_ADD2_types[711],IFC4X3_ADD2_types[712],IFC4X3_ADD2_types[713],IFC4X3_ADD2_types[714],IFC4X3_ADD2_types[715],IFC4X3_ADD2_types[716],IFC4X3_ADD2_types[717],IFC4X3_ADD2_types[718],IFC4X3_ADD2_types[719],IFC4X3_ADD2_types[720],IFC4X3_ADD2_types[721],IFC4X3_ADD2_types[722],IFC4X3_ADD2_types[723],IFC4X3_ADD2_types[724],IFC4X3_ADD2_types[725],IFC4X3_ADD2_types[726],IFC4X3_ADD2_types[727],IFC4X3_ADD2_types[728],IFC4X3_ADD2_types[729],IFC4X3_ADD2_types[730],IFC4X3_ADD2_types[731],IFC4X3_ADD2_types[732],IFC4X3_ADD2_types[733],IFC4X3_ADD2_types[734],IFC4X3_ADD2_types[735],IFC4X3_ADD2_types[736],IFC4X3_ADD2_types[737],IFC4X3_ADD2_types[738],IFC4X3_ADD2_types[739],IFC4X3_ADD2_types[740],IFC4X3_ADD2_types[741],IFC4X3_ADD2_types[742],IFC4X3_ADD2_types[743],IFC4X3_ADD2_types[744],IFC4X3_ADD2_types[745],IFC4X3_ADD2_types[746],IFC4X3_ADD2_types[747],IFC4X3_ADD2_types[748],IFC4X3_ADD2_types[749],IFC4X3_ADD2_types[750],IFC4X3_ADD2_types[751],IFC4X3_ADD2_types[752],IFC4X3_ADD2_types[753],IFC4X3_ADD2_types[754],IFC4X3_ADD2_types[755],IFC4X3_ADD2_types[756],IFC4X3_ADD2_types[757],IFC4X3_ADD2_types[758],IFC4X3_ADD2_types[759],IFC4X3_ADD2_types[760],IFC4X3_ADD2_types[761],IFC4X3_ADD2_types[762],IFC4X3_ADD2_types[763],IFC4X3_ADD2_types[764],IFC4X3_ADD2_types[765],IFC4X3_ADD2_types[766],IFC4X3_ADD2_types[767],IFC4X3_ADD2_types[768],IFC4X3_ADD2_types[769],IFC4X3_ADD2_types[770],IFC4X3_ADD2_types[771],IFC4X3_ADD2_types[772],IFC4X3_ADD2_types[773],IFC4X3_ADD2_types[774],IFC4X3_ADD2_types[775],IFC4X3_ADD2_types[776],IFC4X3_ADD2_types[777],IFC4X3_ADD2_types[778],IFC4X3_ADD2_types[779],IFC4X3_ADD2_types[780],IFC4X3_ADD2_types[781],IFC4X3_ADD2_types[782],IFC4X3_ADD2_types[783],IFC4X3_ADD2_types[784],IFC4X3_ADD2_types[785],IFC4X3_ADD2_types[786],IFC4X3_ADD2_types[787],IFC4X3_ADD2_types[788],IFC4X3_ADD2_types[789],IFC4X3_ADD2_types[790],IFC4X3_ADD2_types[791],IFC4X3_ADD2_types[792],IFC4X3_ADD2_types[793],IFC4X3_ADD2_types[794],IFC4X3_ADD2_types[795],IFC4X3_ADD2_types[796],IFC4X3_ADD2_types[797],IFC4X3_ADD2_types[798],IFC4X3_ADD2_types[799],IFC4X3_ADD2_types[800],IFC4X3_ADD2_types[801],IFC4X3_ADD2_types[802],IFC4X3_ADD2_types[803],IFC4X3_ADD2_types[804],IFC4X3_ADD2_types[805],IFC4X3_ADD2_types[806],IFC4X3_ADD2_types[807],IFC4X3_ADD2_types[808],IFC4X3_ADD2_types[809],IFC4X3_ADD2_types[810],IFC4X3_ADD2_types[811],IFC4X3_ADD2_types[812],IFC4X3_ADD2_types[813],IFC4X3_ADD2_types[814],IFC4X3_ADD2_types[815],IFC4X3_ADD2_types[816],IFC4X3_ADD2_types[817],IFC4X3_ADD2_types[818],IFC4X3_ADD2_types[819],IFC4X3_ADD2_types[820],IFC4X3_ADD2_types[821],IFC4X3_ADD2_types[822],IFC4X3_ADD2_types[823],IFC4X3_ADD2_types[824],IFC4X3_ADD2_types[825],IFC4X3_ADD2_types[826],IFC4X3_ADD2_types[827],IFC4X3_ADD2_types[828],IFC4X3_ADD2_types[829],IFC4X3_ADD2_types[830],IFC4X3_ADD2_types[831],IFC4X3_ADD2_types[832],IFC4X3_ADD2_types[833],IFC4X3_ADD2_types[834],IFC4X3_ADD2_types[835],IFC4X3_ADD2_types[836],IFC4X3_ADD2_types[837],IFC4X3_ADD2_types[838],IFC4X3_ADD2_types[839],IFC4X3_ADD2_types[840],IFC4X3_ADD2_types[841],IFC4X3_ADD2_types[842],IFC4X3_ADD2_types[843],IFC4X3_ADD2_types[844],IFC4X3_ADD2_types[845],IFC4X3_ADD2_types[846],IFC4X3_ADD2_types[847],IFC4X3_ADD2_types[848],IFC4X3_ADD2_types[849],IFC4X3_ADD2_types[850],IFC4X3_ADD2_types[851],IFC4X3_ADD2_types[852],IFC4X3_ADD2_types[853],IFC4X3_ADD2_types[854],IFC4X3_ADD2_types[855],IFC4X3_ADD2_types[856],IFC4X3_ADD2_types[857],IFC4X3_ADD2_types[858],IFC4X3_ADD2_types[859],IFC4X3_ADD2_types[860],IFC4X3_ADD2_types[861],IFC4X3_ADD2_types[862],IFC4X3_ADD2_types[863],IFC4X3_ADD2_types[864],IFC4X3_ADD2_types[865],IFC4X3_ADD2_types[866],IFC4X3_ADD2_types[867],IFC4X3_ADD2_types[868],IFC4X3_ADD2_types[869],IFC4X3_ADD2_types[870],IFC4X3_ADD2_types[871],IFC4X3_ADD2_types[872],IFC4X3_ADD2_types[873],IFC4X3_ADD2_types[874],IFC4X3_ADD2_types[875],IFC4X3_ADD2_types[876],IFC4X3_ADD2_types[877],IFC4X3_ADD2_types[878],IFC4X3_ADD2_types[879],IFC4X3_ADD2_types[880],IFC4X3_ADD2_types[881],IFC4X3_ADD2_types[882],IFC4X3_ADD2_types[883],IFC4X3_ADD2_types[884],IFC4X3_ADD2_types[885],IFC4X3_ADD2_types[886],IFC4X3_ADD2_types[887],IFC4X3_ADD2_types[888],IFC4X3_ADD2_types[889],IFC4X3_ADD2_types[890],IFC4X3_ADD2_types[891],IFC4X3_ADD2_types[892],IFC4X3_ADD2_types[893],IFC4X3_ADD2_types[894],IFC4X3_ADD2_types[895],IFC4X3_ADD2_types[896],IFC4X3_ADD2_types[897],IFC4X3_ADD2_types[898],IFC4X3_ADD2_types[899],IFC4X3_ADD2_types[900],IFC4X3_ADD2_types[901],IFC4X3_ADD2_types[902],IFC4X3_ADD2_types[903],IFC4X3_ADD2_types[904],IFC4X3_ADD2_types[905],IFC4X3_ADD2_types[906],IFC4X3_ADD2_types[907],IFC4X3_ADD2_types[908],IFC4X3_ADD2_types[909],IFC4X3_ADD2_types[910],IFC4X3_ADD2_types[911],IFC4X3_ADD2_types[912],IFC4X3_ADD2_types[913],IFC4X3_ADD2_types[914],IFC4X3_ADD2_types[915],IFC4X3_ADD2_types[916],IFC4X3_ADD2_types[917],IFC4X3_ADD2_types[918],IFC4X3_ADD2_types[919],IFC4X3_ADD2_types[920],IFC4X3_ADD2_types[921],IFC4X3_ADD2_types[922],IFC4X3_ADD2_types[923],IFC4X3_ADD2_types[924],IFC4X3_ADD2_types[925],IFC4X3_ADD2_types[926],IFC4X3_ADD2_types[927],IFC4X3_ADD2_types[928],IFC4X3_ADD2_types[929],IFC4X3_ADD2_types[930],IFC4X3_ADD2_types[931],IFC4X3_ADD2_types[932],IFC4X3_ADD2_types[933],IFC4X3_ADD2_types[934],IFC4X3_ADD2_types[935],IFC4X3_ADD2_types[936],IFC4X3_ADD2_types[937],IFC4X3_ADD2_types[938],IFC4X3_ADD2_types[939],IFC4X3_ADD2_types[940],IFC4X3_ADD2_types[941],IFC4X3_ADD2_types[942],IFC4X3_ADD2_types[943],IFC4X3_ADD2_types[944],IFC4X3_ADD2_types[945],IFC4X3_ADD2_types[946],IFC4X3_ADD2_types[947],IFC4X3_ADD2_types[948],IFC4X3_ADD2_types[949],IFC4X3_ADD2_types[950],IFC4X3_ADD2_types[951],IFC4X3_ADD2_types[952],IFC4X3_ADD2_types[953],IFC4X3_ADD2_types[954],IFC4X3_ADD2_types[955],IFC4X3_ADD2_types[956],IFC4X3_ADD2_types[957],IFC4X3_ADD2_types[958],IFC4X3_ADD2_types[959],IFC4X3_ADD2_types[960],IFC4X3_ADD2_types[961],IFC4X3_ADD2_types[962],IFC4X3_ADD2_types[963],IFC4X3_ADD2_types[964],IFC4X3_ADD2_types[965],IFC4X3_ADD2_types[966],IFC4X3_ADD2_types[967],IFC4X3_ADD2_types[968],IFC4X3_ADD2_types[969],IFC4X3_ADD2_types[970],IFC4X3_ADD2_types[971],IFC4X3_ADD2_types[972],IFC4X3_ADD2_types[973],IFC4X3_ADD2_types[974],IFC4X3_ADD2_types[975],IFC4X3_ADD2_types[976],IFC4X3_ADD2_types[977],IFC4X3_ADD2_types[978],IFC4X3_ADD2_types[979],IFC4X3_ADD2_types[980],IFC4X3_ADD2_types[981],IFC4X3_ADD2_types[982],IFC4X3_ADD2_types[983],IFC4X3_ADD2_types[984],IFC4X3_ADD2_types[985],IFC4X3_ADD2_types[986],IFC4X3_ADD2_types[987],IFC4X3_ADD2_types[988],IFC4X3_ADD2_types[989],IFC4X3_ADD2_types[990],IFC4X3_ADD2_types[991],IFC4X3_ADD2_types[992],IFC4X3_ADD2_types[993],IFC4X3_ADD2_types[994],IFC4X3_ADD2_types[995],IFC4X3_ADD2_types[996],IFC4X3_ADD2_types[997],IFC4X3_ADD2_types[998],IFC4X3_ADD2_types[999],IFC4X3_ADD2_types[1000],IFC4X3_ADD2_types[1001],IFC4X3_ADD2_types[1002],IFC4X3_ADD2_types[1003],IFC4X3_ADD2_types[1004],IFC4X3_ADD2_types[1005],IFC4X3_ADD2_types[1006],IFC4X3_ADD2_types[1007],IFC4X3_ADD2_types[1008],IFC4X3_ADD2_types[1009],IFC4X3_ADD2_types[1010],IFC4X3_ADD2_types[1011],IFC4X3_ADD2_types[1012],IFC4X3_ADD2_types[1013],IFC4X3_ADD2_types[1014],IFC4X3_ADD2_types[1015],IFC4X3_ADD2_types[1016],IFC4X3_ADD2_types[1017],IFC4X3_ADD2_types[1018],IFC4X3_ADD2_types[1019],IFC4X3_ADD2_types[1020],IFC4X3_ADD2_types[1021],IFC4X3_ADD2_types[1022],IFC4X3_ADD2_types[1023],IFC4X3_ADD2_types[1024],IFC4X3_ADD2_types[1025],IFC4X3_ADD2_types[1026],IFC4X3_ADD2_types[1027],IFC4X3_ADD2_types[1028],IFC4X3_ADD2_types[1029],IFC4X3_ADD2_types[1030],IFC4X3_ADD2_types[1031],IFC4X3_ADD2_types[1032],IFC4X3_ADD2_types[1033],IFC4X3_ADD2_types[1034],IFC4X3_ADD2_types[1035],IFC4X3_ADD2_types[1036],IFC4X3_ADD2_types[1037],IFC4X3_ADD2_types[1038],IFC4X3_ADD2_types[1039],IFC4X3_ADD2_types[1040],IFC4X3_ADD2_types[1041],IFC4X3_ADD2_types[1042],IFC4X3_ADD2_types[1043],IFC4X3_ADD2_types[1044],IFC4X3_ADD2_types[1045],IFC4X3_ADD2_types[1046],IFC4X3_ADD2_types[1047],IFC4X3_ADD2_types[1048],IFC4X3_ADD2_types[1049],IFC4X3_ADD2_types[1050],IFC4X3_ADD2_types[1051],IFC4X3_ADD2_types[1052],IFC4X3_ADD2_types[1053],IFC4X3_ADD2_types[1054],IFC4X3_ADD2_types[1055],IFC4X3_ADD2_types[1056],IFC4X3_ADD2_types[1057],IFC4X3_ADD2_types[1058],IFC4X3_ADD2_types[1059],IFC4X3_ADD2_types[1060],IFC4X3_ADD2_types[1061],IFC4X3_ADD2_types[1062],IFC4X3_ADD2_types[1063],IFC4X3_ADD2_types[1064],IFC4X3_ADD2_types[1065],IFC4X3_ADD2_types[1066],IFC4X3_ADD2_types[1067],IFC4X3_ADD2_types[1068],IFC4X3_ADD2_types[1069],IFC4X3_ADD2_types[1070],IFC4X3_ADD2_types[1071],IFC4X3_ADD2_types[1072],IFC4X3_ADD2_types[1073],IFC4X3_ADD2_types[1074],IFC4X3_ADD2_types[1075],IFC4X3_ADD2_types[1076],IFC4X3_ADD2_types[1077],IFC4X3_ADD2_types[1078],IFC4X3_ADD2_types[1079],IFC4X3_ADD2_types[1080],IFC4X3_ADD2_types[1081],IFC4X3_ADD2_types[1082],IFC4X3_ADD2_types[1083],IFC4X3_ADD2_types[1084],IFC4X3_ADD2_types[1085],IFC4X3_ADD2_types[1086],IFC4X3_ADD2_types[1087],IFC4X3_ADD2_types[1088],IFC4X3_ADD2_types[1089],IFC4X3_ADD2_types[1090],IFC4X3_ADD2_types[1091],IFC4X3_ADD2_types[1092],IFC4X3_ADD2_types[1093],IFC4X3_ADD2_types[1094],IFC4X3_ADD2_types[1095],IFC4X3_ADD2_types[1096],IFC4X3_ADD2_types[1097],IFC4X3_ADD2_types[1098],IFC4X3_ADD2_types[1099],IFC4X3_ADD2_types[1100],IFC4X3_ADD2_types[1101],IFC4X3_ADD2_types[1102],IFC4X3_ADD2_types[1103],IFC4X3_ADD2_types[1104],IFC4X3_ADD2_types[1105],IFC4X3_ADD2_types[1106],IFC4X3_ADD2_types[1107],IFC4X3_ADD2_types[1108],IFC4X3_ADD2_types[1109],IFC4X3_ADD2_types[1110],IFC4X3_ADD2_types[1111],IFC4X3_ADD2_types[1112],IFC4X3_ADD2_types[1113],IFC4X3_ADD2_types[1114],IFC4X3_ADD2_types[1115],IFC4X3_ADD2_types[1116],IFC4X3_ADD2_types[1117],IFC4X3_ADD2_types[1118],IFC4X3_ADD2_types[1119],IFC4X3_ADD2_types[1120],IFC4X3_ADD2_types[1121],IFC4X3_ADD2_types[1122],IFC4X3_ADD2_types[1123],IFC4X3_ADD2_types[1124],IFC4X3_ADD2_types[1125],IFC4X3_ADD2_types[1126],IFC4X3_ADD2_types[1127],IFC4X3_ADD2_types[1128],IFC4X3_ADD2_types[1129],IFC4X3_ADD2_types[1130],IFC4X3_ADD2_types[1131],IFC4X3_ADD2_types[1132],IFC4X3_ADD2_types[1133],IFC4X3_ADD2_types[1134],IFC4X3_ADD2_types[1135],IFC4X3_ADD2_types[1136],IFC4X3_ADD2_types[1137],IFC4X3_ADD2_types[1138],IFC4X3_ADD2_types[1139],IFC4X3_ADD2_types[1140],IFC4X3_ADD2_types[1141],IFC4X3_ADD2_types[1142],IFC4X3_ADD2_types[1143],IFC4X3_ADD2_types[1144],IFC4X3_ADD2_types[1145],IFC4X3_ADD2_types[1146],IFC4X3_ADD2_types[1147],IFC4X3_ADD2_types[1148],IFC4X3_ADD2_types[1149],IFC4X3_ADD2_types[1150],IFC4X3_ADD2_types[1151],IFC4X3_ADD2_types[1152],IFC4X3_ADD2_types[1153],IFC4X3_ADD2_types[1154],IFC4X3_ADD2_types[1155],IFC4X3_ADD2_types[1156],IFC4X3_ADD2_types[1157],IFC4X3_ADD2_types[1158],IFC4X3_ADD2_types[1159],IFC4X3_ADD2_types[1160],IFC4X3_ADD2_types[1161],IFC4X3_ADD2_types[1162],IFC4X3_ADD2_types[1163],IFC4X3_ADD2_types[1164],IFC4X3_ADD2_types[1165],IFC4X3_ADD2_types[1166],IFC4X3_ADD2_types[1167],IFC4X3_ADD2_types[1168],IFC4X3_ADD2_types[1169],IFC4X3_ADD2_types[1170],IFC4X3_ADD2_types[1171],IFC4X3_ADD2_types[1172],IFC4X3_ADD2_types[1173],IFC4X3_ADD2_types[1174],IFC4X3_ADD2_types[1175],IFC4X3_ADD2_types[1176],IFC4X3_ADD2_types[1177],IFC4X3_ADD2_types[1178],IFC4X3_ADD2_types[1179],IFC4X3_ADD2_types[1180],IFC4X3_ADD2_types[1181],IFC4X3_ADD2_types[1182],IFC4X3_ADD2_types[1183],IFC4X3_ADD2_types[1184],IFC4X3_ADD2_types[1185],IFC4X3_ADD2_types[1186],IFC4X3_ADD2_types[1187],IFC4X3_ADD2_types[1188],IFC4X3_ADD2_types[1189],IFC4X3_ADD2_types[1190],IFC4X3_ADD2_types[1191],IFC4X3_ADD2_types[1192],IFC4X3_ADD2_types[1193],IFC4X3_ADD2_types[1194],IFC4X3_ADD2_types[1195],IFC4X3_ADD2_types[1196],IFC4X3_ADD2_types[1197],IFC4X3_ADD2_types[1198],IFC4X3_ADD2_types[1199],IFC4X3_ADD2_types[1200],IFC4X3_ADD2_types[1201],IFC4X3_ADD2_types[1202],IFC4X3_ADD2_types[1203],IFC4X3_ADD2_types[1204],IFC4X3_ADD2_types[1205],IFC4X3_ADD2_types[1206],IFC4X3_ADD2_types[1207],IFC4X3_ADD2_types[1208],IFC4X3_ADD2_types[1209],IFC4X3_ADD2_types[1210],IFC4X3_ADD2_types[1211],IFC4X3_ADD2_types[1212],IFC4X3_ADD2_types[1213],IFC4X3_ADD2_types[1214],IFC4X3_ADD2_types[1215],IFC4X3_ADD2_types[1216],IFC4X3_ADD2_types[1217],IFC4X3_ADD2_types[1218],IFC4X3_ADD2_types[1219],IFC4X3_ADD2_types[1220],IFC4X3_ADD2_types[1221],IFC4X3_ADD2_types[1222],IFC4X3_ADD2_types[1223],IFC4X3_ADD2_types[1224],IFC4X3_ADD2_types[1225],IFC4X3_ADD2_types[1226],IFC4X3_ADD2_types[1227],IFC4X3_ADD2_types[1228],IFC4X3_ADD2_types[1229],IFC4X3_ADD2_types[1230],IFC4X3_ADD2_types[1231],IFC4X3_ADD2_types[1232],IFC4X3_ADD2_types[1233],IFC4X3_ADD2_types[1234],IFC4X3_ADD2_types[1235],IFC4X3_ADD2_types[1236],IFC4X3_ADD2_types[1237],IFC4X3_ADD2_types[1238],IFC4X3_ADD2_types[1239],IFC4X3_ADD2_types[1240],IFC4X3_ADD2_types[1241],IFC4X3_ADD2_types[1242],IFC4X3_ADD2_types[1243],IFC4X3_ADD2_types[1244],IFC4X3_ADD2_types[1245],IFC4X3_ADD2_types[1246],IFC4X3_ADD2_types[1247],IFC4X3_ADD2_types[1248],IFC4X3_ADD2_types[1249],IFC4X3_ADD2_types[1250],IFC4X3_ADD2_types[1251],IFC4X3_ADD2_types[1252],IFC4X3_ADD2_types[1253],IFC4X3_ADD2_types[1254],IFC4X3_ADD2_types[1255],IFC4X3_ADD2_types[1256],IFC4X3_ADD2_types[1257],IFC4X3_ADD2_types[1258],IFC4X3_ADD2_types[1259],IFC4X3_ADD2_types[1260],IFC4X3_ADD2_types[1261],IFC4X3_ADD2_types[1262],IFC4X3_ADD2_types[1263],IFC4X3_ADD2_types[1264],IFC4X3_ADD2_types[1265],IFC4X3_ADD2_types[1266],IFC4X3_ADD2_types[1267],IFC4X3_ADD2_types[1268],IFC4X3_ADD2_types[1269],IFC4X3_ADD2_types[1270],IFC4X3_ADD2_types[1271],IFC4X3_ADD2_types[1272],IFC4X3_ADD2_types[1273],IFC4X3_ADD2_types[1274],IFC4X3_ADD2_types[1275],IFC4X3_ADD2_types[1276],IFC4X3_ADD2_types[1277],IFC4X3_ADD2_types[1278],IFC4X3_ADD2_types[1279],IFC4X3_ADD2_types[1280],IFC4X3_ADD2_types[1281],IFC4X3_ADD2_types[1282],IFC4X3_ADD2_types[1283],IFC4X3_ADD2_types[1284],IFC4X3_ADD2_types[1285],IFC4X3_ADD2_types[1286],IFC4X3_ADD2_types[1287],IFC4X3_ADD2_types[1288],IFC4X3_ADD2_types[1289],IFC4X3_ADD2_types[1290],IFC4X3_ADD2_types[1291],IFC4X3_ADD2_types[1292],IFC4X3_ADD2_types[1293],IFC4X3_ADD2_types[1294],IFC4X3_ADD2_types[1295],IFC4X3_ADD2_types[1296],IFC4X3_ADD2_types[1297],IFC4X3_ADD2_types[1298],IFC4X3_ADD2_types[1299],IFC4X3_ADD2_types[1300],IFC4X3_ADD2_types[1301],IFC4X3_ADD2_types[1302],IFC4X3_ADD2_types[1303],IFC4X3_ADD2_types[1304],IFC4X3_ADD2_types[1305],IFC4X3_ADD2_types[1306],IFC4X3_ADD2_types[1307],IFC4X3_ADD2_types[1308],IFC4X3_ADD2_types[1309],IFC4X3_ADD2_types[1310],IFC4X3_ADD2_types[1311]}, new IFC4X3_ADD2_instance_factory()); + return new schema_definition(strings[3915], {IFC4X3_ADD2_types[0],IFC4X3_ADD2_types[1],IFC4X3_ADD2_types[2],IFC4X3_ADD2_types[3],IFC4X3_ADD2_types[4],IFC4X3_ADD2_types[5],IFC4X3_ADD2_types[6],IFC4X3_ADD2_types[7],IFC4X3_ADD2_types[8],IFC4X3_ADD2_types[9],IFC4X3_ADD2_types[10],IFC4X3_ADD2_types[11],IFC4X3_ADD2_types[12],IFC4X3_ADD2_types[13],IFC4X3_ADD2_types[14],IFC4X3_ADD2_types[15],IFC4X3_ADD2_types[16],IFC4X3_ADD2_types[17],IFC4X3_ADD2_types[18],IFC4X3_ADD2_types[19],IFC4X3_ADD2_types[20],IFC4X3_ADD2_types[21],IFC4X3_ADD2_types[22],IFC4X3_ADD2_types[23],IFC4X3_ADD2_types[24],IFC4X3_ADD2_types[25],IFC4X3_ADD2_types[26],IFC4X3_ADD2_types[27],IFC4X3_ADD2_types[28],IFC4X3_ADD2_types[29],IFC4X3_ADD2_types[30],IFC4X3_ADD2_types[31],IFC4X3_ADD2_types[32],IFC4X3_ADD2_types[33],IFC4X3_ADD2_types[34],IFC4X3_ADD2_types[35],IFC4X3_ADD2_types[36],IFC4X3_ADD2_types[37],IFC4X3_ADD2_types[38],IFC4X3_ADD2_types[39],IFC4X3_ADD2_types[40],IFC4X3_ADD2_types[41],IFC4X3_ADD2_types[42],IFC4X3_ADD2_types[43],IFC4X3_ADD2_types[44],IFC4X3_ADD2_types[45],IFC4X3_ADD2_types[46],IFC4X3_ADD2_types[47],IFC4X3_ADD2_types[48],IFC4X3_ADD2_types[49],IFC4X3_ADD2_types[50],IFC4X3_ADD2_types[51],IFC4X3_ADD2_types[52],IFC4X3_ADD2_types[53],IFC4X3_ADD2_types[54],IFC4X3_ADD2_types[55],IFC4X3_ADD2_types[56],IFC4X3_ADD2_types[57],IFC4X3_ADD2_types[58],IFC4X3_ADD2_types[59],IFC4X3_ADD2_types[60],IFC4X3_ADD2_types[61],IFC4X3_ADD2_types[62],IFC4X3_ADD2_types[63],IFC4X3_ADD2_types[64],IFC4X3_ADD2_types[65],IFC4X3_ADD2_types[66],IFC4X3_ADD2_types[67],IFC4X3_ADD2_types[68],IFC4X3_ADD2_types[69],IFC4X3_ADD2_types[70],IFC4X3_ADD2_types[71],IFC4X3_ADD2_types[72],IFC4X3_ADD2_types[73],IFC4X3_ADD2_types[74],IFC4X3_ADD2_types[75],IFC4X3_ADD2_types[76],IFC4X3_ADD2_types[77],IFC4X3_ADD2_types[78],IFC4X3_ADD2_types[79],IFC4X3_ADD2_types[80],IFC4X3_ADD2_types[81],IFC4X3_ADD2_types[82],IFC4X3_ADD2_types[83],IFC4X3_ADD2_types[84],IFC4X3_ADD2_types[85],IFC4X3_ADD2_types[86],IFC4X3_ADD2_types[87],IFC4X3_ADD2_types[88],IFC4X3_ADD2_types[89],IFC4X3_ADD2_types[90],IFC4X3_ADD2_types[91],IFC4X3_ADD2_types[92],IFC4X3_ADD2_types[93],IFC4X3_ADD2_types[94],IFC4X3_ADD2_types[95],IFC4X3_ADD2_types[96],IFC4X3_ADD2_types[97],IFC4X3_ADD2_types[98],IFC4X3_ADD2_types[99],IFC4X3_ADD2_types[100],IFC4X3_ADD2_types[101],IFC4X3_ADD2_types[102],IFC4X3_ADD2_types[103],IFC4X3_ADD2_types[104],IFC4X3_ADD2_types[105],IFC4X3_ADD2_types[106],IFC4X3_ADD2_types[107],IFC4X3_ADD2_types[108],IFC4X3_ADD2_types[109],IFC4X3_ADD2_types[110],IFC4X3_ADD2_types[111],IFC4X3_ADD2_types[112],IFC4X3_ADD2_types[113],IFC4X3_ADD2_types[114],IFC4X3_ADD2_types[115],IFC4X3_ADD2_types[116],IFC4X3_ADD2_types[117],IFC4X3_ADD2_types[118],IFC4X3_ADD2_types[119],IFC4X3_ADD2_types[120],IFC4X3_ADD2_types[121],IFC4X3_ADD2_types[122],IFC4X3_ADD2_types[123],IFC4X3_ADD2_types[124],IFC4X3_ADD2_types[125],IFC4X3_ADD2_types[126],IFC4X3_ADD2_types[127],IFC4X3_ADD2_types[128],IFC4X3_ADD2_types[129],IFC4X3_ADD2_types[130],IFC4X3_ADD2_types[131],IFC4X3_ADD2_types[132],IFC4X3_ADD2_types[133],IFC4X3_ADD2_types[134],IFC4X3_ADD2_types[135],IFC4X3_ADD2_types[136],IFC4X3_ADD2_types[137],IFC4X3_ADD2_types[138],IFC4X3_ADD2_types[139],IFC4X3_ADD2_types[140],IFC4X3_ADD2_types[141],IFC4X3_ADD2_types[142],IFC4X3_ADD2_types[143],IFC4X3_ADD2_types[144],IFC4X3_ADD2_types[145],IFC4X3_ADD2_types[146],IFC4X3_ADD2_types[147],IFC4X3_ADD2_types[148],IFC4X3_ADD2_types[149],IFC4X3_ADD2_types[150],IFC4X3_ADD2_types[151],IFC4X3_ADD2_types[152],IFC4X3_ADD2_types[153],IFC4X3_ADD2_types[154],IFC4X3_ADD2_types[155],IFC4X3_ADD2_types[156],IFC4X3_ADD2_types[157],IFC4X3_ADD2_types[158],IFC4X3_ADD2_types[159],IFC4X3_ADD2_types[160],IFC4X3_ADD2_types[161],IFC4X3_ADD2_types[162],IFC4X3_ADD2_types[163],IFC4X3_ADD2_types[164],IFC4X3_ADD2_types[165],IFC4X3_ADD2_types[166],IFC4X3_ADD2_types[167],IFC4X3_ADD2_types[168],IFC4X3_ADD2_types[169],IFC4X3_ADD2_types[170],IFC4X3_ADD2_types[171],IFC4X3_ADD2_types[172],IFC4X3_ADD2_types[173],IFC4X3_ADD2_types[174],IFC4X3_ADD2_types[175],IFC4X3_ADD2_types[176],IFC4X3_ADD2_types[177],IFC4X3_ADD2_types[178],IFC4X3_ADD2_types[179],IFC4X3_ADD2_types[180],IFC4X3_ADD2_types[181],IFC4X3_ADD2_types[182],IFC4X3_ADD2_types[183],IFC4X3_ADD2_types[184],IFC4X3_ADD2_types[185],IFC4X3_ADD2_types[186],IFC4X3_ADD2_types[187],IFC4X3_ADD2_types[188],IFC4X3_ADD2_types[189],IFC4X3_ADD2_types[190],IFC4X3_ADD2_types[191],IFC4X3_ADD2_types[192],IFC4X3_ADD2_types[193],IFC4X3_ADD2_types[194],IFC4X3_ADD2_types[195],IFC4X3_ADD2_types[196],IFC4X3_ADD2_types[197],IFC4X3_ADD2_types[198],IFC4X3_ADD2_types[199],IFC4X3_ADD2_types[200],IFC4X3_ADD2_types[201],IFC4X3_ADD2_types[202],IFC4X3_ADD2_types[203],IFC4X3_ADD2_types[204],IFC4X3_ADD2_types[205],IFC4X3_ADD2_types[206],IFC4X3_ADD2_types[207],IFC4X3_ADD2_types[208],IFC4X3_ADD2_types[209],IFC4X3_ADD2_types[210],IFC4X3_ADD2_types[211],IFC4X3_ADD2_types[212],IFC4X3_ADD2_types[213],IFC4X3_ADD2_types[214],IFC4X3_ADD2_types[215],IFC4X3_ADD2_types[216],IFC4X3_ADD2_types[217],IFC4X3_ADD2_types[218],IFC4X3_ADD2_types[219],IFC4X3_ADD2_types[220],IFC4X3_ADD2_types[221],IFC4X3_ADD2_types[222],IFC4X3_ADD2_types[223],IFC4X3_ADD2_types[224],IFC4X3_ADD2_types[225],IFC4X3_ADD2_types[226],IFC4X3_ADD2_types[227],IFC4X3_ADD2_types[228],IFC4X3_ADD2_types[229],IFC4X3_ADD2_types[230],IFC4X3_ADD2_types[231],IFC4X3_ADD2_types[232],IFC4X3_ADD2_types[233],IFC4X3_ADD2_types[234],IFC4X3_ADD2_types[235],IFC4X3_ADD2_types[236],IFC4X3_ADD2_types[237],IFC4X3_ADD2_types[238],IFC4X3_ADD2_types[239],IFC4X3_ADD2_types[240],IFC4X3_ADD2_types[241],IFC4X3_ADD2_types[242],IFC4X3_ADD2_types[243],IFC4X3_ADD2_types[244],IFC4X3_ADD2_types[245],IFC4X3_ADD2_types[246],IFC4X3_ADD2_types[247],IFC4X3_ADD2_types[248],IFC4X3_ADD2_types[249],IFC4X3_ADD2_types[250],IFC4X3_ADD2_types[251],IFC4X3_ADD2_types[252],IFC4X3_ADD2_types[253],IFC4X3_ADD2_types[254],IFC4X3_ADD2_types[255],IFC4X3_ADD2_types[256],IFC4X3_ADD2_types[257],IFC4X3_ADD2_types[258],IFC4X3_ADD2_types[259],IFC4X3_ADD2_types[260],IFC4X3_ADD2_types[261],IFC4X3_ADD2_types[262],IFC4X3_ADD2_types[263],IFC4X3_ADD2_types[264],IFC4X3_ADD2_types[265],IFC4X3_ADD2_types[266],IFC4X3_ADD2_types[267],IFC4X3_ADD2_types[268],IFC4X3_ADD2_types[269],IFC4X3_ADD2_types[270],IFC4X3_ADD2_types[271],IFC4X3_ADD2_types[272],IFC4X3_ADD2_types[273],IFC4X3_ADD2_types[274],IFC4X3_ADD2_types[275],IFC4X3_ADD2_types[276],IFC4X3_ADD2_types[277],IFC4X3_ADD2_types[278],IFC4X3_ADD2_types[279],IFC4X3_ADD2_types[280],IFC4X3_ADD2_types[281],IFC4X3_ADD2_types[282],IFC4X3_ADD2_types[283],IFC4X3_ADD2_types[284],IFC4X3_ADD2_types[285],IFC4X3_ADD2_types[286],IFC4X3_ADD2_types[287],IFC4X3_ADD2_types[288],IFC4X3_ADD2_types[289],IFC4X3_ADD2_types[290],IFC4X3_ADD2_types[291],IFC4X3_ADD2_types[292],IFC4X3_ADD2_types[293],IFC4X3_ADD2_types[294],IFC4X3_ADD2_types[295],IFC4X3_ADD2_types[296],IFC4X3_ADD2_types[297],IFC4X3_ADD2_types[298],IFC4X3_ADD2_types[299],IFC4X3_ADD2_types[300],IFC4X3_ADD2_types[301],IFC4X3_ADD2_types[302],IFC4X3_ADD2_types[303],IFC4X3_ADD2_types[304],IFC4X3_ADD2_types[305],IFC4X3_ADD2_types[306],IFC4X3_ADD2_types[307],IFC4X3_ADD2_types[308],IFC4X3_ADD2_types[309],IFC4X3_ADD2_types[310],IFC4X3_ADD2_types[311],IFC4X3_ADD2_types[312],IFC4X3_ADD2_types[313],IFC4X3_ADD2_types[314],IFC4X3_ADD2_types[315],IFC4X3_ADD2_types[316],IFC4X3_ADD2_types[317],IFC4X3_ADD2_types[318],IFC4X3_ADD2_types[319],IFC4X3_ADD2_types[320],IFC4X3_ADD2_types[321],IFC4X3_ADD2_types[322],IFC4X3_ADD2_types[323],IFC4X3_ADD2_types[324],IFC4X3_ADD2_types[325],IFC4X3_ADD2_types[326],IFC4X3_ADD2_types[327],IFC4X3_ADD2_types[328],IFC4X3_ADD2_types[329],IFC4X3_ADD2_types[330],IFC4X3_ADD2_types[331],IFC4X3_ADD2_types[332],IFC4X3_ADD2_types[333],IFC4X3_ADD2_types[334],IFC4X3_ADD2_types[335],IFC4X3_ADD2_types[336],IFC4X3_ADD2_types[337],IFC4X3_ADD2_types[338],IFC4X3_ADD2_types[339],IFC4X3_ADD2_types[340],IFC4X3_ADD2_types[341],IFC4X3_ADD2_types[342],IFC4X3_ADD2_types[343],IFC4X3_ADD2_types[344],IFC4X3_ADD2_types[345],IFC4X3_ADD2_types[346],IFC4X3_ADD2_types[347],IFC4X3_ADD2_types[348],IFC4X3_ADD2_types[349],IFC4X3_ADD2_types[350],IFC4X3_ADD2_types[351],IFC4X3_ADD2_types[352],IFC4X3_ADD2_types[353],IFC4X3_ADD2_types[354],IFC4X3_ADD2_types[355],IFC4X3_ADD2_types[356],IFC4X3_ADD2_types[357],IFC4X3_ADD2_types[358],IFC4X3_ADD2_types[359],IFC4X3_ADD2_types[360],IFC4X3_ADD2_types[361],IFC4X3_ADD2_types[362],IFC4X3_ADD2_types[363],IFC4X3_ADD2_types[364],IFC4X3_ADD2_types[365],IFC4X3_ADD2_types[366],IFC4X3_ADD2_types[367],IFC4X3_ADD2_types[368],IFC4X3_ADD2_types[369],IFC4X3_ADD2_types[370],IFC4X3_ADD2_types[371],IFC4X3_ADD2_types[372],IFC4X3_ADD2_types[373],IFC4X3_ADD2_types[374],IFC4X3_ADD2_types[375],IFC4X3_ADD2_types[376],IFC4X3_ADD2_types[377],IFC4X3_ADD2_types[378],IFC4X3_ADD2_types[379],IFC4X3_ADD2_types[380],IFC4X3_ADD2_types[381],IFC4X3_ADD2_types[382],IFC4X3_ADD2_types[383],IFC4X3_ADD2_types[384],IFC4X3_ADD2_types[385],IFC4X3_ADD2_types[386],IFC4X3_ADD2_types[387],IFC4X3_ADD2_types[388],IFC4X3_ADD2_types[389],IFC4X3_ADD2_types[390],IFC4X3_ADD2_types[391],IFC4X3_ADD2_types[392],IFC4X3_ADD2_types[393],IFC4X3_ADD2_types[394],IFC4X3_ADD2_types[395],IFC4X3_ADD2_types[396],IFC4X3_ADD2_types[397],IFC4X3_ADD2_types[398],IFC4X3_ADD2_types[399],IFC4X3_ADD2_types[400],IFC4X3_ADD2_types[401],IFC4X3_ADD2_types[402],IFC4X3_ADD2_types[403],IFC4X3_ADD2_types[404],IFC4X3_ADD2_types[405],IFC4X3_ADD2_types[406],IFC4X3_ADD2_types[407],IFC4X3_ADD2_types[408],IFC4X3_ADD2_types[409],IFC4X3_ADD2_types[410],IFC4X3_ADD2_types[411],IFC4X3_ADD2_types[412],IFC4X3_ADD2_types[413],IFC4X3_ADD2_types[414],IFC4X3_ADD2_types[415],IFC4X3_ADD2_types[416],IFC4X3_ADD2_types[417],IFC4X3_ADD2_types[418],IFC4X3_ADD2_types[419],IFC4X3_ADD2_types[420],IFC4X3_ADD2_types[421],IFC4X3_ADD2_types[422],IFC4X3_ADD2_types[423],IFC4X3_ADD2_types[424],IFC4X3_ADD2_types[425],IFC4X3_ADD2_types[426],IFC4X3_ADD2_types[427],IFC4X3_ADD2_types[428],IFC4X3_ADD2_types[429],IFC4X3_ADD2_types[430],IFC4X3_ADD2_types[431],IFC4X3_ADD2_types[432],IFC4X3_ADD2_types[433],IFC4X3_ADD2_types[434],IFC4X3_ADD2_types[435],IFC4X3_ADD2_types[436],IFC4X3_ADD2_types[437],IFC4X3_ADD2_types[438],IFC4X3_ADD2_types[439],IFC4X3_ADD2_types[440],IFC4X3_ADD2_types[441],IFC4X3_ADD2_types[442],IFC4X3_ADD2_types[443],IFC4X3_ADD2_types[444],IFC4X3_ADD2_types[445],IFC4X3_ADD2_types[446],IFC4X3_ADD2_types[447],IFC4X3_ADD2_types[448],IFC4X3_ADD2_types[449],IFC4X3_ADD2_types[450],IFC4X3_ADD2_types[451],IFC4X3_ADD2_types[452],IFC4X3_ADD2_types[453],IFC4X3_ADD2_types[454],IFC4X3_ADD2_types[455],IFC4X3_ADD2_types[456],IFC4X3_ADD2_types[457],IFC4X3_ADD2_types[458],IFC4X3_ADD2_types[459],IFC4X3_ADD2_types[460],IFC4X3_ADD2_types[461],IFC4X3_ADD2_types[462],IFC4X3_ADD2_types[463],IFC4X3_ADD2_types[464],IFC4X3_ADD2_types[465],IFC4X3_ADD2_types[466],IFC4X3_ADD2_types[467],IFC4X3_ADD2_types[468],IFC4X3_ADD2_types[469],IFC4X3_ADD2_types[470],IFC4X3_ADD2_types[471],IFC4X3_ADD2_types[472],IFC4X3_ADD2_types[473],IFC4X3_ADD2_types[474],IFC4X3_ADD2_types[475],IFC4X3_ADD2_types[476],IFC4X3_ADD2_types[477],IFC4X3_ADD2_types[478],IFC4X3_ADD2_types[479],IFC4X3_ADD2_types[480],IFC4X3_ADD2_types[481],IFC4X3_ADD2_types[482],IFC4X3_ADD2_types[483],IFC4X3_ADD2_types[484],IFC4X3_ADD2_types[485],IFC4X3_ADD2_types[486],IFC4X3_ADD2_types[487],IFC4X3_ADD2_types[488],IFC4X3_ADD2_types[489],IFC4X3_ADD2_types[490],IFC4X3_ADD2_types[491],IFC4X3_ADD2_types[492],IFC4X3_ADD2_types[493],IFC4X3_ADD2_types[494],IFC4X3_ADD2_types[495],IFC4X3_ADD2_types[496],IFC4X3_ADD2_types[497],IFC4X3_ADD2_types[498],IFC4X3_ADD2_types[499],IFC4X3_ADD2_types[500],IFC4X3_ADD2_types[501],IFC4X3_ADD2_types[502],IFC4X3_ADD2_types[503],IFC4X3_ADD2_types[504],IFC4X3_ADD2_types[505],IFC4X3_ADD2_types[506],IFC4X3_ADD2_types[507],IFC4X3_ADD2_types[508],IFC4X3_ADD2_types[509],IFC4X3_ADD2_types[510],IFC4X3_ADD2_types[511],IFC4X3_ADD2_types[512],IFC4X3_ADD2_types[513],IFC4X3_ADD2_types[514],IFC4X3_ADD2_types[515],IFC4X3_ADD2_types[516],IFC4X3_ADD2_types[517],IFC4X3_ADD2_types[518],IFC4X3_ADD2_types[519],IFC4X3_ADD2_types[520],IFC4X3_ADD2_types[521],IFC4X3_ADD2_types[522],IFC4X3_ADD2_types[523],IFC4X3_ADD2_types[524],IFC4X3_ADD2_types[525],IFC4X3_ADD2_types[526],IFC4X3_ADD2_types[527],IFC4X3_ADD2_types[528],IFC4X3_ADD2_types[529],IFC4X3_ADD2_types[530],IFC4X3_ADD2_types[531],IFC4X3_ADD2_types[532],IFC4X3_ADD2_types[533],IFC4X3_ADD2_types[534],IFC4X3_ADD2_types[535],IFC4X3_ADD2_types[536],IFC4X3_ADD2_types[537],IFC4X3_ADD2_types[538],IFC4X3_ADD2_types[539],IFC4X3_ADD2_types[540],IFC4X3_ADD2_types[541],IFC4X3_ADD2_types[542],IFC4X3_ADD2_types[543],IFC4X3_ADD2_types[544],IFC4X3_ADD2_types[545],IFC4X3_ADD2_types[546],IFC4X3_ADD2_types[547],IFC4X3_ADD2_types[548],IFC4X3_ADD2_types[549],IFC4X3_ADD2_types[550],IFC4X3_ADD2_types[551],IFC4X3_ADD2_types[552],IFC4X3_ADD2_types[553],IFC4X3_ADD2_types[554],IFC4X3_ADD2_types[555],IFC4X3_ADD2_types[556],IFC4X3_ADD2_types[557],IFC4X3_ADD2_types[558],IFC4X3_ADD2_types[559],IFC4X3_ADD2_types[560],IFC4X3_ADD2_types[561],IFC4X3_ADD2_types[562],IFC4X3_ADD2_types[563],IFC4X3_ADD2_types[564],IFC4X3_ADD2_types[565],IFC4X3_ADD2_types[566],IFC4X3_ADD2_types[567],IFC4X3_ADD2_types[568],IFC4X3_ADD2_types[569],IFC4X3_ADD2_types[570],IFC4X3_ADD2_types[571],IFC4X3_ADD2_types[572],IFC4X3_ADD2_types[573],IFC4X3_ADD2_types[574],IFC4X3_ADD2_types[575],IFC4X3_ADD2_types[576],IFC4X3_ADD2_types[577],IFC4X3_ADD2_types[578],IFC4X3_ADD2_types[579],IFC4X3_ADD2_types[580],IFC4X3_ADD2_types[581],IFC4X3_ADD2_types[582],IFC4X3_ADD2_types[583],IFC4X3_ADD2_types[584],IFC4X3_ADD2_types[585],IFC4X3_ADD2_types[586],IFC4X3_ADD2_types[587],IFC4X3_ADD2_types[588],IFC4X3_ADD2_types[589],IFC4X3_ADD2_types[590],IFC4X3_ADD2_types[591],IFC4X3_ADD2_types[592],IFC4X3_ADD2_types[593],IFC4X3_ADD2_types[594],IFC4X3_ADD2_types[595],IFC4X3_ADD2_types[596],IFC4X3_ADD2_types[597],IFC4X3_ADD2_types[598],IFC4X3_ADD2_types[599],IFC4X3_ADD2_types[600],IFC4X3_ADD2_types[601],IFC4X3_ADD2_types[602],IFC4X3_ADD2_types[603],IFC4X3_ADD2_types[604],IFC4X3_ADD2_types[605],IFC4X3_ADD2_types[606],IFC4X3_ADD2_types[607],IFC4X3_ADD2_types[608],IFC4X3_ADD2_types[609],IFC4X3_ADD2_types[610],IFC4X3_ADD2_types[611],IFC4X3_ADD2_types[612],IFC4X3_ADD2_types[613],IFC4X3_ADD2_types[614],IFC4X3_ADD2_types[615],IFC4X3_ADD2_types[616],IFC4X3_ADD2_types[617],IFC4X3_ADD2_types[618],IFC4X3_ADD2_types[619],IFC4X3_ADD2_types[620],IFC4X3_ADD2_types[621],IFC4X3_ADD2_types[622],IFC4X3_ADD2_types[623],IFC4X3_ADD2_types[624],IFC4X3_ADD2_types[625],IFC4X3_ADD2_types[626],IFC4X3_ADD2_types[627],IFC4X3_ADD2_types[628],IFC4X3_ADD2_types[629],IFC4X3_ADD2_types[630],IFC4X3_ADD2_types[631],IFC4X3_ADD2_types[632],IFC4X3_ADD2_types[633],IFC4X3_ADD2_types[634],IFC4X3_ADD2_types[635],IFC4X3_ADD2_types[636],IFC4X3_ADD2_types[637],IFC4X3_ADD2_types[638],IFC4X3_ADD2_types[639],IFC4X3_ADD2_types[640],IFC4X3_ADD2_types[641],IFC4X3_ADD2_types[642],IFC4X3_ADD2_types[643],IFC4X3_ADD2_types[644],IFC4X3_ADD2_types[645],IFC4X3_ADD2_types[646],IFC4X3_ADD2_types[647],IFC4X3_ADD2_types[648],IFC4X3_ADD2_types[649],IFC4X3_ADD2_types[650],IFC4X3_ADD2_types[651],IFC4X3_ADD2_types[652],IFC4X3_ADD2_types[653],IFC4X3_ADD2_types[654],IFC4X3_ADD2_types[655],IFC4X3_ADD2_types[656],IFC4X3_ADD2_types[657],IFC4X3_ADD2_types[658],IFC4X3_ADD2_types[659],IFC4X3_ADD2_types[660],IFC4X3_ADD2_types[661],IFC4X3_ADD2_types[662],IFC4X3_ADD2_types[663],IFC4X3_ADD2_types[664],IFC4X3_ADD2_types[665],IFC4X3_ADD2_types[666],IFC4X3_ADD2_types[667],IFC4X3_ADD2_types[668],IFC4X3_ADD2_types[669],IFC4X3_ADD2_types[670],IFC4X3_ADD2_types[671],IFC4X3_ADD2_types[672],IFC4X3_ADD2_types[673],IFC4X3_ADD2_types[674],IFC4X3_ADD2_types[675],IFC4X3_ADD2_types[676],IFC4X3_ADD2_types[677],IFC4X3_ADD2_types[678],IFC4X3_ADD2_types[679],IFC4X3_ADD2_types[680],IFC4X3_ADD2_types[681],IFC4X3_ADD2_types[682],IFC4X3_ADD2_types[683],IFC4X3_ADD2_types[684],IFC4X3_ADD2_types[685],IFC4X3_ADD2_types[686],IFC4X3_ADD2_types[687],IFC4X3_ADD2_types[688],IFC4X3_ADD2_types[689],IFC4X3_ADD2_types[690],IFC4X3_ADD2_types[691],IFC4X3_ADD2_types[692],IFC4X3_ADD2_types[693],IFC4X3_ADD2_types[694],IFC4X3_ADD2_types[695],IFC4X3_ADD2_types[696],IFC4X3_ADD2_types[697],IFC4X3_ADD2_types[698],IFC4X3_ADD2_types[699],IFC4X3_ADD2_types[700],IFC4X3_ADD2_types[701],IFC4X3_ADD2_types[702],IFC4X3_ADD2_types[703],IFC4X3_ADD2_types[704],IFC4X3_ADD2_types[705],IFC4X3_ADD2_types[706],IFC4X3_ADD2_types[707],IFC4X3_ADD2_types[708],IFC4X3_ADD2_types[709],IFC4X3_ADD2_types[710],IFC4X3_ADD2_types[711],IFC4X3_ADD2_types[712],IFC4X3_ADD2_types[713],IFC4X3_ADD2_types[714],IFC4X3_ADD2_types[715],IFC4X3_ADD2_types[716],IFC4X3_ADD2_types[717],IFC4X3_ADD2_types[718],IFC4X3_ADD2_types[719],IFC4X3_ADD2_types[720],IFC4X3_ADD2_types[721],IFC4X3_ADD2_types[722],IFC4X3_ADD2_types[723],IFC4X3_ADD2_types[724],IFC4X3_ADD2_types[725],IFC4X3_ADD2_types[726],IFC4X3_ADD2_types[727],IFC4X3_ADD2_types[728],IFC4X3_ADD2_types[729],IFC4X3_ADD2_types[730],IFC4X3_ADD2_types[731],IFC4X3_ADD2_types[732],IFC4X3_ADD2_types[733],IFC4X3_ADD2_types[734],IFC4X3_ADD2_types[735],IFC4X3_ADD2_types[736],IFC4X3_ADD2_types[737],IFC4X3_ADD2_types[738],IFC4X3_ADD2_types[739],IFC4X3_ADD2_types[740],IFC4X3_ADD2_types[741],IFC4X3_ADD2_types[742],IFC4X3_ADD2_types[743],IFC4X3_ADD2_types[744],IFC4X3_ADD2_types[745],IFC4X3_ADD2_types[746],IFC4X3_ADD2_types[747],IFC4X3_ADD2_types[748],IFC4X3_ADD2_types[749],IFC4X3_ADD2_types[750],IFC4X3_ADD2_types[751],IFC4X3_ADD2_types[752],IFC4X3_ADD2_types[753],IFC4X3_ADD2_types[754],IFC4X3_ADD2_types[755],IFC4X3_ADD2_types[756],IFC4X3_ADD2_types[757],IFC4X3_ADD2_types[758],IFC4X3_ADD2_types[759],IFC4X3_ADD2_types[760],IFC4X3_ADD2_types[761],IFC4X3_ADD2_types[762],IFC4X3_ADD2_types[763],IFC4X3_ADD2_types[764],IFC4X3_ADD2_types[765],IFC4X3_ADD2_types[766],IFC4X3_ADD2_types[767],IFC4X3_ADD2_types[768],IFC4X3_ADD2_types[769],IFC4X3_ADD2_types[770],IFC4X3_ADD2_types[771],IFC4X3_ADD2_types[772],IFC4X3_ADD2_types[773],IFC4X3_ADD2_types[774],IFC4X3_ADD2_types[775],IFC4X3_ADD2_types[776],IFC4X3_ADD2_types[777],IFC4X3_ADD2_types[778],IFC4X3_ADD2_types[779],IFC4X3_ADD2_types[780],IFC4X3_ADD2_types[781],IFC4X3_ADD2_types[782],IFC4X3_ADD2_types[783],IFC4X3_ADD2_types[784],IFC4X3_ADD2_types[785],IFC4X3_ADD2_types[786],IFC4X3_ADD2_types[787],IFC4X3_ADD2_types[788],IFC4X3_ADD2_types[789],IFC4X3_ADD2_types[790],IFC4X3_ADD2_types[791],IFC4X3_ADD2_types[792],IFC4X3_ADD2_types[793],IFC4X3_ADD2_types[794],IFC4X3_ADD2_types[795],IFC4X3_ADD2_types[796],IFC4X3_ADD2_types[797],IFC4X3_ADD2_types[798],IFC4X3_ADD2_types[799],IFC4X3_ADD2_types[800],IFC4X3_ADD2_types[801],IFC4X3_ADD2_types[802],IFC4X3_ADD2_types[803],IFC4X3_ADD2_types[804],IFC4X3_ADD2_types[805],IFC4X3_ADD2_types[806],IFC4X3_ADD2_types[807],IFC4X3_ADD2_types[808],IFC4X3_ADD2_types[809],IFC4X3_ADD2_types[810],IFC4X3_ADD2_types[811],IFC4X3_ADD2_types[812],IFC4X3_ADD2_types[813],IFC4X3_ADD2_types[814],IFC4X3_ADD2_types[815],IFC4X3_ADD2_types[816],IFC4X3_ADD2_types[817],IFC4X3_ADD2_types[818],IFC4X3_ADD2_types[819],IFC4X3_ADD2_types[820],IFC4X3_ADD2_types[821],IFC4X3_ADD2_types[822],IFC4X3_ADD2_types[823],IFC4X3_ADD2_types[824],IFC4X3_ADD2_types[825],IFC4X3_ADD2_types[826],IFC4X3_ADD2_types[827],IFC4X3_ADD2_types[828],IFC4X3_ADD2_types[829],IFC4X3_ADD2_types[830],IFC4X3_ADD2_types[831],IFC4X3_ADD2_types[832],IFC4X3_ADD2_types[833],IFC4X3_ADD2_types[834],IFC4X3_ADD2_types[835],IFC4X3_ADD2_types[836],IFC4X3_ADD2_types[837],IFC4X3_ADD2_types[838],IFC4X3_ADD2_types[839],IFC4X3_ADD2_types[840],IFC4X3_ADD2_types[841],IFC4X3_ADD2_types[842],IFC4X3_ADD2_types[843],IFC4X3_ADD2_types[844],IFC4X3_ADD2_types[845],IFC4X3_ADD2_types[846],IFC4X3_ADD2_types[847],IFC4X3_ADD2_types[848],IFC4X3_ADD2_types[849],IFC4X3_ADD2_types[850],IFC4X3_ADD2_types[851],IFC4X3_ADD2_types[852],IFC4X3_ADD2_types[853],IFC4X3_ADD2_types[854],IFC4X3_ADD2_types[855],IFC4X3_ADD2_types[856],IFC4X3_ADD2_types[857],IFC4X3_ADD2_types[858],IFC4X3_ADD2_types[859],IFC4X3_ADD2_types[860],IFC4X3_ADD2_types[861],IFC4X3_ADD2_types[862],IFC4X3_ADD2_types[863],IFC4X3_ADD2_types[864],IFC4X3_ADD2_types[865],IFC4X3_ADD2_types[866],IFC4X3_ADD2_types[867],IFC4X3_ADD2_types[868],IFC4X3_ADD2_types[869],IFC4X3_ADD2_types[870],IFC4X3_ADD2_types[871],IFC4X3_ADD2_types[872],IFC4X3_ADD2_types[873],IFC4X3_ADD2_types[874],IFC4X3_ADD2_types[875],IFC4X3_ADD2_types[876],IFC4X3_ADD2_types[877],IFC4X3_ADD2_types[878],IFC4X3_ADD2_types[879],IFC4X3_ADD2_types[880],IFC4X3_ADD2_types[881],IFC4X3_ADD2_types[882],IFC4X3_ADD2_types[883],IFC4X3_ADD2_types[884],IFC4X3_ADD2_types[885],IFC4X3_ADD2_types[886],IFC4X3_ADD2_types[887],IFC4X3_ADD2_types[888],IFC4X3_ADD2_types[889],IFC4X3_ADD2_types[890],IFC4X3_ADD2_types[891],IFC4X3_ADD2_types[892],IFC4X3_ADD2_types[893],IFC4X3_ADD2_types[894],IFC4X3_ADD2_types[895],IFC4X3_ADD2_types[896],IFC4X3_ADD2_types[897],IFC4X3_ADD2_types[898],IFC4X3_ADD2_types[899],IFC4X3_ADD2_types[900],IFC4X3_ADD2_types[901],IFC4X3_ADD2_types[902],IFC4X3_ADD2_types[903],IFC4X3_ADD2_types[904],IFC4X3_ADD2_types[905],IFC4X3_ADD2_types[906],IFC4X3_ADD2_types[907],IFC4X3_ADD2_types[908],IFC4X3_ADD2_types[909],IFC4X3_ADD2_types[910],IFC4X3_ADD2_types[911],IFC4X3_ADD2_types[912],IFC4X3_ADD2_types[913],IFC4X3_ADD2_types[914],IFC4X3_ADD2_types[915],IFC4X3_ADD2_types[916],IFC4X3_ADD2_types[917],IFC4X3_ADD2_types[918],IFC4X3_ADD2_types[919],IFC4X3_ADD2_types[920],IFC4X3_ADD2_types[921],IFC4X3_ADD2_types[922],IFC4X3_ADD2_types[923],IFC4X3_ADD2_types[924],IFC4X3_ADD2_types[925],IFC4X3_ADD2_types[926],IFC4X3_ADD2_types[927],IFC4X3_ADD2_types[928],IFC4X3_ADD2_types[929],IFC4X3_ADD2_types[930],IFC4X3_ADD2_types[931],IFC4X3_ADD2_types[932],IFC4X3_ADD2_types[933],IFC4X3_ADD2_types[934],IFC4X3_ADD2_types[935],IFC4X3_ADD2_types[936],IFC4X3_ADD2_types[937],IFC4X3_ADD2_types[938],IFC4X3_ADD2_types[939],IFC4X3_ADD2_types[940],IFC4X3_ADD2_types[941],IFC4X3_ADD2_types[942],IFC4X3_ADD2_types[943],IFC4X3_ADD2_types[944],IFC4X3_ADD2_types[945],IFC4X3_ADD2_types[946],IFC4X3_ADD2_types[947],IFC4X3_ADD2_types[948],IFC4X3_ADD2_types[949],IFC4X3_ADD2_types[950],IFC4X3_ADD2_types[951],IFC4X3_ADD2_types[952],IFC4X3_ADD2_types[953],IFC4X3_ADD2_types[954],IFC4X3_ADD2_types[955],IFC4X3_ADD2_types[956],IFC4X3_ADD2_types[957],IFC4X3_ADD2_types[958],IFC4X3_ADD2_types[959],IFC4X3_ADD2_types[960],IFC4X3_ADD2_types[961],IFC4X3_ADD2_types[962],IFC4X3_ADD2_types[963],IFC4X3_ADD2_types[964],IFC4X3_ADD2_types[965],IFC4X3_ADD2_types[966],IFC4X3_ADD2_types[967],IFC4X3_ADD2_types[968],IFC4X3_ADD2_types[969],IFC4X3_ADD2_types[970],IFC4X3_ADD2_types[971],IFC4X3_ADD2_types[972],IFC4X3_ADD2_types[973],IFC4X3_ADD2_types[974],IFC4X3_ADD2_types[975],IFC4X3_ADD2_types[976],IFC4X3_ADD2_types[977],IFC4X3_ADD2_types[978],IFC4X3_ADD2_types[979],IFC4X3_ADD2_types[980],IFC4X3_ADD2_types[981],IFC4X3_ADD2_types[982],IFC4X3_ADD2_types[983],IFC4X3_ADD2_types[984],IFC4X3_ADD2_types[985],IFC4X3_ADD2_types[986],IFC4X3_ADD2_types[987],IFC4X3_ADD2_types[988],IFC4X3_ADD2_types[989],IFC4X3_ADD2_types[990],IFC4X3_ADD2_types[991],IFC4X3_ADD2_types[992],IFC4X3_ADD2_types[993],IFC4X3_ADD2_types[994],IFC4X3_ADD2_types[995],IFC4X3_ADD2_types[996],IFC4X3_ADD2_types[997],IFC4X3_ADD2_types[998],IFC4X3_ADD2_types[999],IFC4X3_ADD2_types[1000],IFC4X3_ADD2_types[1001],IFC4X3_ADD2_types[1002],IFC4X3_ADD2_types[1003],IFC4X3_ADD2_types[1004],IFC4X3_ADD2_types[1005],IFC4X3_ADD2_types[1006],IFC4X3_ADD2_types[1007],IFC4X3_ADD2_types[1008],IFC4X3_ADD2_types[1009],IFC4X3_ADD2_types[1010],IFC4X3_ADD2_types[1011],IFC4X3_ADD2_types[1012],IFC4X3_ADD2_types[1013],IFC4X3_ADD2_types[1014],IFC4X3_ADD2_types[1015],IFC4X3_ADD2_types[1016],IFC4X3_ADD2_types[1017],IFC4X3_ADD2_types[1018],IFC4X3_ADD2_types[1019],IFC4X3_ADD2_types[1020],IFC4X3_ADD2_types[1021],IFC4X3_ADD2_types[1022],IFC4X3_ADD2_types[1023],IFC4X3_ADD2_types[1024],IFC4X3_ADD2_types[1025],IFC4X3_ADD2_types[1026],IFC4X3_ADD2_types[1027],IFC4X3_ADD2_types[1028],IFC4X3_ADD2_types[1029],IFC4X3_ADD2_types[1030],IFC4X3_ADD2_types[1031],IFC4X3_ADD2_types[1032],IFC4X3_ADD2_types[1033],IFC4X3_ADD2_types[1034],IFC4X3_ADD2_types[1035],IFC4X3_ADD2_types[1036],IFC4X3_ADD2_types[1037],IFC4X3_ADD2_types[1038],IFC4X3_ADD2_types[1039],IFC4X3_ADD2_types[1040],IFC4X3_ADD2_types[1041],IFC4X3_ADD2_types[1042],IFC4X3_ADD2_types[1043],IFC4X3_ADD2_types[1044],IFC4X3_ADD2_types[1045],IFC4X3_ADD2_types[1046],IFC4X3_ADD2_types[1047],IFC4X3_ADD2_types[1048],IFC4X3_ADD2_types[1049],IFC4X3_ADD2_types[1050],IFC4X3_ADD2_types[1051],IFC4X3_ADD2_types[1052],IFC4X3_ADD2_types[1053],IFC4X3_ADD2_types[1054],IFC4X3_ADD2_types[1055],IFC4X3_ADD2_types[1056],IFC4X3_ADD2_types[1057],IFC4X3_ADD2_types[1058],IFC4X3_ADD2_types[1059],IFC4X3_ADD2_types[1060],IFC4X3_ADD2_types[1061],IFC4X3_ADD2_types[1062],IFC4X3_ADD2_types[1063],IFC4X3_ADD2_types[1064],IFC4X3_ADD2_types[1065],IFC4X3_ADD2_types[1066],IFC4X3_ADD2_types[1067],IFC4X3_ADD2_types[1068],IFC4X3_ADD2_types[1069],IFC4X3_ADD2_types[1070],IFC4X3_ADD2_types[1071],IFC4X3_ADD2_types[1072],IFC4X3_ADD2_types[1073],IFC4X3_ADD2_types[1074],IFC4X3_ADD2_types[1075],IFC4X3_ADD2_types[1076],IFC4X3_ADD2_types[1077],IFC4X3_ADD2_types[1078],IFC4X3_ADD2_types[1079],IFC4X3_ADD2_types[1080],IFC4X3_ADD2_types[1081],IFC4X3_ADD2_types[1082],IFC4X3_ADD2_types[1083],IFC4X3_ADD2_types[1084],IFC4X3_ADD2_types[1085],IFC4X3_ADD2_types[1086],IFC4X3_ADD2_types[1087],IFC4X3_ADD2_types[1088],IFC4X3_ADD2_types[1089],IFC4X3_ADD2_types[1090],IFC4X3_ADD2_types[1091],IFC4X3_ADD2_types[1092],IFC4X3_ADD2_types[1093],IFC4X3_ADD2_types[1094],IFC4X3_ADD2_types[1095],IFC4X3_ADD2_types[1096],IFC4X3_ADD2_types[1097],IFC4X3_ADD2_types[1098],IFC4X3_ADD2_types[1099],IFC4X3_ADD2_types[1100],IFC4X3_ADD2_types[1101],IFC4X3_ADD2_types[1102],IFC4X3_ADD2_types[1103],IFC4X3_ADD2_types[1104],IFC4X3_ADD2_types[1105],IFC4X3_ADD2_types[1106],IFC4X3_ADD2_types[1107],IFC4X3_ADD2_types[1108],IFC4X3_ADD2_types[1109],IFC4X3_ADD2_types[1110],IFC4X3_ADD2_types[1111],IFC4X3_ADD2_types[1112],IFC4X3_ADD2_types[1113],IFC4X3_ADD2_types[1114],IFC4X3_ADD2_types[1115],IFC4X3_ADD2_types[1116],IFC4X3_ADD2_types[1117],IFC4X3_ADD2_types[1118],IFC4X3_ADD2_types[1119],IFC4X3_ADD2_types[1120],IFC4X3_ADD2_types[1121],IFC4X3_ADD2_types[1122],IFC4X3_ADD2_types[1123],IFC4X3_ADD2_types[1124],IFC4X3_ADD2_types[1125],IFC4X3_ADD2_types[1126],IFC4X3_ADD2_types[1127],IFC4X3_ADD2_types[1128],IFC4X3_ADD2_types[1129],IFC4X3_ADD2_types[1130],IFC4X3_ADD2_types[1131],IFC4X3_ADD2_types[1132],IFC4X3_ADD2_types[1133],IFC4X3_ADD2_types[1134],IFC4X3_ADD2_types[1135],IFC4X3_ADD2_types[1136],IFC4X3_ADD2_types[1137],IFC4X3_ADD2_types[1138],IFC4X3_ADD2_types[1139],IFC4X3_ADD2_types[1140],IFC4X3_ADD2_types[1141],IFC4X3_ADD2_types[1142],IFC4X3_ADD2_types[1143],IFC4X3_ADD2_types[1144],IFC4X3_ADD2_types[1145],IFC4X3_ADD2_types[1146],IFC4X3_ADD2_types[1147],IFC4X3_ADD2_types[1148],IFC4X3_ADD2_types[1149],IFC4X3_ADD2_types[1150],IFC4X3_ADD2_types[1151],IFC4X3_ADD2_types[1152],IFC4X3_ADD2_types[1153],IFC4X3_ADD2_types[1154],IFC4X3_ADD2_types[1155],IFC4X3_ADD2_types[1156],IFC4X3_ADD2_types[1157],IFC4X3_ADD2_types[1158],IFC4X3_ADD2_types[1159],IFC4X3_ADD2_types[1160],IFC4X3_ADD2_types[1161],IFC4X3_ADD2_types[1162],IFC4X3_ADD2_types[1163],IFC4X3_ADD2_types[1164],IFC4X3_ADD2_types[1165],IFC4X3_ADD2_types[1166],IFC4X3_ADD2_types[1167],IFC4X3_ADD2_types[1168],IFC4X3_ADD2_types[1169],IFC4X3_ADD2_types[1170],IFC4X3_ADD2_types[1171],IFC4X3_ADD2_types[1172],IFC4X3_ADD2_types[1173],IFC4X3_ADD2_types[1174],IFC4X3_ADD2_types[1175],IFC4X3_ADD2_types[1176],IFC4X3_ADD2_types[1177],IFC4X3_ADD2_types[1178],IFC4X3_ADD2_types[1179],IFC4X3_ADD2_types[1180],IFC4X3_ADD2_types[1181],IFC4X3_ADD2_types[1182],IFC4X3_ADD2_types[1183],IFC4X3_ADD2_types[1184],IFC4X3_ADD2_types[1185],IFC4X3_ADD2_types[1186],IFC4X3_ADD2_types[1187],IFC4X3_ADD2_types[1188],IFC4X3_ADD2_types[1189],IFC4X3_ADD2_types[1190],IFC4X3_ADD2_types[1191],IFC4X3_ADD2_types[1192],IFC4X3_ADD2_types[1193],IFC4X3_ADD2_types[1194],IFC4X3_ADD2_types[1195],IFC4X3_ADD2_types[1196],IFC4X3_ADD2_types[1197],IFC4X3_ADD2_types[1198],IFC4X3_ADD2_types[1199],IFC4X3_ADD2_types[1200],IFC4X3_ADD2_types[1201],IFC4X3_ADD2_types[1202],IFC4X3_ADD2_types[1203],IFC4X3_ADD2_types[1204],IFC4X3_ADD2_types[1205],IFC4X3_ADD2_types[1206],IFC4X3_ADD2_types[1207],IFC4X3_ADD2_types[1208],IFC4X3_ADD2_types[1209],IFC4X3_ADD2_types[1210],IFC4X3_ADD2_types[1211],IFC4X3_ADD2_types[1212],IFC4X3_ADD2_types[1213],IFC4X3_ADD2_types[1214],IFC4X3_ADD2_types[1215],IFC4X3_ADD2_types[1216],IFC4X3_ADD2_types[1217],IFC4X3_ADD2_types[1218],IFC4X3_ADD2_types[1219],IFC4X3_ADD2_types[1220],IFC4X3_ADD2_types[1221],IFC4X3_ADD2_types[1222],IFC4X3_ADD2_types[1223],IFC4X3_ADD2_types[1224],IFC4X3_ADD2_types[1225],IFC4X3_ADD2_types[1226],IFC4X3_ADD2_types[1227],IFC4X3_ADD2_types[1228],IFC4X3_ADD2_types[1229],IFC4X3_ADD2_types[1230],IFC4X3_ADD2_types[1231],IFC4X3_ADD2_types[1232],IFC4X3_ADD2_types[1233],IFC4X3_ADD2_types[1234],IFC4X3_ADD2_types[1235],IFC4X3_ADD2_types[1236],IFC4X3_ADD2_types[1237],IFC4X3_ADD2_types[1238],IFC4X3_ADD2_types[1239],IFC4X3_ADD2_types[1240],IFC4X3_ADD2_types[1241],IFC4X3_ADD2_types[1242],IFC4X3_ADD2_types[1243],IFC4X3_ADD2_types[1244],IFC4X3_ADD2_types[1245],IFC4X3_ADD2_types[1246],IFC4X3_ADD2_types[1247],IFC4X3_ADD2_types[1248],IFC4X3_ADD2_types[1249],IFC4X3_ADD2_types[1250],IFC4X3_ADD2_types[1251],IFC4X3_ADD2_types[1252],IFC4X3_ADD2_types[1253],IFC4X3_ADD2_types[1254],IFC4X3_ADD2_types[1255],IFC4X3_ADD2_types[1256],IFC4X3_ADD2_types[1257],IFC4X3_ADD2_types[1258],IFC4X3_ADD2_types[1259],IFC4X3_ADD2_types[1260],IFC4X3_ADD2_types[1261],IFC4X3_ADD2_types[1262],IFC4X3_ADD2_types[1263],IFC4X3_ADD2_types[1264],IFC4X3_ADD2_types[1265],IFC4X3_ADD2_types[1266],IFC4X3_ADD2_types[1267],IFC4X3_ADD2_types[1268],IFC4X3_ADD2_types[1269],IFC4X3_ADD2_types[1270],IFC4X3_ADD2_types[1271],IFC4X3_ADD2_types[1272],IFC4X3_ADD2_types[1273],IFC4X3_ADD2_types[1274],IFC4X3_ADD2_types[1275],IFC4X3_ADD2_types[1276],IFC4X3_ADD2_types[1277],IFC4X3_ADD2_types[1278],IFC4X3_ADD2_types[1279],IFC4X3_ADD2_types[1280],IFC4X3_ADD2_types[1281],IFC4X3_ADD2_types[1282],IFC4X3_ADD2_types[1283],IFC4X3_ADD2_types[1284],IFC4X3_ADD2_types[1285],IFC4X3_ADD2_types[1286],IFC4X3_ADD2_types[1287],IFC4X3_ADD2_types[1288],IFC4X3_ADD2_types[1289],IFC4X3_ADD2_types[1290],IFC4X3_ADD2_types[1291],IFC4X3_ADD2_types[1292],IFC4X3_ADD2_types[1293],IFC4X3_ADD2_types[1294],IFC4X3_ADD2_types[1295],IFC4X3_ADD2_types[1296],IFC4X3_ADD2_types[1297],IFC4X3_ADD2_types[1298],IFC4X3_ADD2_types[1299],IFC4X3_ADD2_types[1300],IFC4X3_ADD2_types[1301],IFC4X3_ADD2_types[1302],IFC4X3_ADD2_types[1303],IFC4X3_ADD2_types[1304],IFC4X3_ADD2_types[1305],IFC4X3_ADD2_types[1306],IFC4X3_ADD2_types[1307],IFC4X3_ADD2_types[1308],IFC4X3_ADD2_types[1309],IFC4X3_ADD2_types[1310],IFC4X3_ADD2_types[1311]}); } static std::unique_ptr schema; diff --git a/src/ifcparse/Ifc4x3_add2.cpp b/src/ifcparse/Ifc4x3_add2.cpp index c77e3b3883..9cf1c5c54f 100644 --- a/src/ifcparse/Ifc4x3_add2.cpp +++ b/src/ifcparse/Ifc4x3_add2.cpp @@ -39,20 +39,22 @@ using namespace IfcParse; extern declaration* IFC4X3_ADD2_types[1312]; -const IfcParse::enumeration_type& Ifc4x3_add2::IfcActionRequestTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[3]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcActionRequestTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[3]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcActionRequestTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[3]); } -Ifc4x3_add2::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcActionRequestTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum::Class().lookup_enum_value((size_t)v); @@ -66,20 +68,22 @@ Ifc4x3_add2::IfcActionRequestTypeEnum::operator Ifc4x3_add2::IfcActionRequestTyp return (Ifc4x3_add2::IfcActionRequestTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcActionSourceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[4]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcActionSourceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[4]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcActionSourceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[4]); } -Ifc4x3_add2::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcActionSourceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -93,20 +97,22 @@ Ifc4x3_add2::IfcActionSourceTypeEnum::operator Ifc4x3_add2::IfcActionSourceTypeE return (Ifc4x3_add2::IfcActionSourceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcActionTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[5]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcActionTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[5]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcActionTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[5]); } -Ifc4x3_add2::IfcActionTypeEnum::IfcActionTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcActionTypeEnum::IfcActionTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcActionTypeEnum::IfcActionTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcActionTypeEnum::IfcActionTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcActionTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcActionTypeEnum::IfcActionTypeEnum::Class().lookup_enum_value((size_t)v); @@ -120,20 +126,22 @@ Ifc4x3_add2::IfcActionTypeEnum::operator Ifc4x3_add2::IfcActionTypeEnum::Value() return (Ifc4x3_add2::IfcActionTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcActuatorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[11]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcActuatorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[11]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcActuatorTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[11]); } -Ifc4x3_add2::IfcActuatorTypeEnum::IfcActuatorTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcActuatorTypeEnum::IfcActuatorTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcActuatorTypeEnum::IfcActuatorTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcActuatorTypeEnum::IfcActuatorTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcActuatorTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcActuatorTypeEnum::IfcActuatorTypeEnum::Class().lookup_enum_value((size_t)v); @@ -147,20 +155,22 @@ Ifc4x3_add2::IfcActuatorTypeEnum::operator Ifc4x3_add2::IfcActuatorTypeEnum::Val return (Ifc4x3_add2::IfcActuatorTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcAddressTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[13]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcAddressTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[13]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcAddressTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[13]); } -Ifc4x3_add2::IfcAddressTypeEnum::IfcAddressTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcAddressTypeEnum::IfcAddressTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcAddressTypeEnum::IfcAddressTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcAddressTypeEnum::IfcAddressTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcAddressTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcAddressTypeEnum::IfcAddressTypeEnum::Class().lookup_enum_value((size_t)v); @@ -174,20 +184,22 @@ Ifc4x3_add2::IfcAddressTypeEnum::operator Ifc4x3_add2::IfcAddressTypeEnum::Value return (Ifc4x3_add2::IfcAddressTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[20]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[20]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[20]); } -Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum::Class().lookup_enum_value((size_t)v); @@ -201,20 +213,22 @@ Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::operator Ifc4x3_add2::IfcAirTerminalBoxT return (Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcAirTerminalTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[22]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcAirTerminalTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[22]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcAirTerminalTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[22]); } -Ifc4x3_add2::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcAirTerminalTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum::Class().lookup_enum_value((size_t)v); @@ -228,20 +242,22 @@ Ifc4x3_add2::IfcAirTerminalTypeEnum::operator Ifc4x3_add2::IfcAirTerminalTypeEnu return (Ifc4x3_add2::IfcAirTerminalTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[25]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[25]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[25]); } -Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum::Class().lookup_enum_value((size_t)v); @@ -255,20 +271,22 @@ Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::operator Ifc4x3_add2::IfcAirToAirH return (Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcAlarmTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[28]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcAlarmTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[28]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcAlarmTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[28]); } -Ifc4x3_add2::IfcAlarmTypeEnum::IfcAlarmTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcAlarmTypeEnum::IfcAlarmTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcAlarmTypeEnum::IfcAlarmTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcAlarmTypeEnum::IfcAlarmTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcAlarmTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcAlarmTypeEnum::IfcAlarmTypeEnum::Class().lookup_enum_value((size_t)v); @@ -282,20 +300,22 @@ Ifc4x3_add2::IfcAlarmTypeEnum::operator Ifc4x3_add2::IfcAlarmTypeEnum::Value() c return (Ifc4x3_add2::IfcAlarmTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[32]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[32]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[32]); } -Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentTypeEnum::Class().lookup_enum_value((size_t)v); @@ -309,20 +329,22 @@ Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::operator Ifc4x3_add2::IfcAlignment return (Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[35]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[35]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[35]); } -Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentTypeEnum::Class().lookup_enum_value((size_t)v); @@ -336,20 +358,22 @@ Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::operator Ifc4x3_add2::IfcAli return (Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcAlignmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[38]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcAlignmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[38]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcAlignmentTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[38]); } -Ifc4x3_add2::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcAlignmentTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum::Class().lookup_enum_value((size_t)v); @@ -363,20 +387,22 @@ Ifc4x3_add2::IfcAlignmentTypeEnum::operator Ifc4x3_add2::IfcAlignmentTypeEnum::V return (Ifc4x3_add2::IfcAlignmentTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[41]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[41]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[41]); } -Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentTypeEnum::Class().lookup_enum_value((size_t)v); @@ -390,20 +416,22 @@ Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::operator Ifc4x3_add2::IfcAlign return (Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcAnalysisModelTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[43]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcAnalysisModelTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[43]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcAnalysisModelTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[43]); } -Ifc4x3_add2::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcAnalysisModelTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum::Class().lookup_enum_value((size_t)v); @@ -417,20 +445,22 @@ Ifc4x3_add2::IfcAnalysisModelTypeEnum::operator Ifc4x3_add2::IfcAnalysisModelTyp return (Ifc4x3_add2::IfcAnalysisModelTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[44]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[44]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[44]); } -Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum::Class().lookup_enum_value((size_t)v); @@ -444,20 +474,22 @@ Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::operator Ifc4x3_add2::IfcAnalysisTheoryT return (Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcAnnotationTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[48]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcAnnotationTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[48]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcAnnotationTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[48]); } -Ifc4x3_add2::IfcAnnotationTypeEnum::IfcAnnotationTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcAnnotationTypeEnum::IfcAnnotationTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcAnnotationTypeEnum::IfcAnnotationTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcAnnotationTypeEnum::IfcAnnotationTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcAnnotationTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcAnnotationTypeEnum::IfcAnnotationTypeEnum::Class().lookup_enum_value((size_t)v); @@ -471,20 +503,22 @@ Ifc4x3_add2::IfcAnnotationTypeEnum::operator Ifc4x3_add2::IfcAnnotationTypeEnum: return (Ifc4x3_add2::IfcAnnotationTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcArithmeticOperatorEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[60]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcArithmeticOperatorEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[60]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcArithmeticOperatorEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[60]); } -Ifc4x3_add2::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcArithmeticOperatorEnum::ToString(Value v) { return Ifc4x3_add2::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum::Class().lookup_enum_value((size_t)v); @@ -498,20 +532,22 @@ Ifc4x3_add2::IfcArithmeticOperatorEnum::operator Ifc4x3_add2::IfcArithmeticOpera return (Ifc4x3_add2::IfcArithmeticOperatorEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcAssemblyPlaceEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[61]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcAssemblyPlaceEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[61]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcAssemblyPlaceEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[61]); } -Ifc4x3_add2::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcAssemblyPlaceEnum::ToString(Value v) { return Ifc4x3_add2::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum::Class().lookup_enum_value((size_t)v); @@ -525,20 +561,22 @@ Ifc4x3_add2::IfcAssemblyPlaceEnum::operator Ifc4x3_add2::IfcAssemblyPlaceEnum::V return (Ifc4x3_add2::IfcAssemblyPlaceEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[66]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[66]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[66]); } -Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -552,20 +590,22 @@ Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::operator Ifc4x3_add2::IfcAudioVisu return (Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcBSplineCurveForm::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[108]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcBSplineCurveForm::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[108]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcBSplineCurveForm::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[108]); } -Ifc4x3_add2::IfcBSplineCurveForm::IfcBSplineCurveForm(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcBSplineCurveForm::IfcBSplineCurveForm(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcBSplineCurveForm::IfcBSplineCurveForm(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcBSplineCurveForm::IfcBSplineCurveForm(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcBSplineCurveForm::ToString(Value v) { return Ifc4x3_add2::IfcBSplineCurveForm::IfcBSplineCurveForm::Class().lookup_enum_value((size_t)v); @@ -579,20 +619,22 @@ Ifc4x3_add2::IfcBSplineCurveForm::operator Ifc4x3_add2::IfcBSplineCurveForm::Val return (Ifc4x3_add2::IfcBSplineCurveForm::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcBSplineSurfaceForm::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[111]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcBSplineSurfaceForm::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[111]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcBSplineSurfaceForm::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[111]); } -Ifc4x3_add2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcBSplineSurfaceForm::ToString(Value v) { return Ifc4x3_add2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm::Class().lookup_enum_value((size_t)v); @@ -606,20 +648,22 @@ Ifc4x3_add2::IfcBSplineSurfaceForm::operator Ifc4x3_add2::IfcBSplineSurfaceForm: return (Ifc4x3_add2::IfcBSplineSurfaceForm::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcBeamTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[74]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcBeamTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[74]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcBeamTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[74]); } -Ifc4x3_add2::IfcBeamTypeEnum::IfcBeamTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcBeamTypeEnum::IfcBeamTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcBeamTypeEnum::IfcBeamTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcBeamTypeEnum::IfcBeamTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcBeamTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcBeamTypeEnum::IfcBeamTypeEnum::Class().lookup_enum_value((size_t)v); @@ -633,20 +677,22 @@ Ifc4x3_add2::IfcBeamTypeEnum::operator Ifc4x3_add2::IfcBeamTypeEnum::Value() con return (Ifc4x3_add2::IfcBeamTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcBearingTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[77]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcBearingTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[77]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcBearingTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[77]); } -Ifc4x3_add2::IfcBearingTypeEnum::IfcBearingTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcBearingTypeEnum::IfcBearingTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcBearingTypeEnum::IfcBearingTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcBearingTypeEnum::IfcBearingTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcBearingTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcBearingTypeEnum::IfcBearingTypeEnum::Class().lookup_enum_value((size_t)v); @@ -660,20 +706,22 @@ Ifc4x3_add2::IfcBearingTypeEnum::operator Ifc4x3_add2::IfcBearingTypeEnum::Value return (Ifc4x3_add2::IfcBearingTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcBenchmarkEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[78]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcBenchmarkEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[78]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcBenchmarkEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[78]); } -Ifc4x3_add2::IfcBenchmarkEnum::IfcBenchmarkEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcBenchmarkEnum::IfcBenchmarkEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcBenchmarkEnum::IfcBenchmarkEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcBenchmarkEnum::IfcBenchmarkEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcBenchmarkEnum::ToString(Value v) { return Ifc4x3_add2::IfcBenchmarkEnum::IfcBenchmarkEnum::Class().lookup_enum_value((size_t)v); @@ -687,20 +735,22 @@ Ifc4x3_add2::IfcBenchmarkEnum::operator Ifc4x3_add2::IfcBenchmarkEnum::Value() c return (Ifc4x3_add2::IfcBenchmarkEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcBoilerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[85]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcBoilerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[85]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcBoilerTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[85]); } -Ifc4x3_add2::IfcBoilerTypeEnum::IfcBoilerTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcBoilerTypeEnum::IfcBoilerTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcBoilerTypeEnum::IfcBoilerTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcBoilerTypeEnum::IfcBoilerTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcBoilerTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcBoilerTypeEnum::IfcBoilerTypeEnum::Class().lookup_enum_value((size_t)v); @@ -714,20 +764,22 @@ Ifc4x3_add2::IfcBoilerTypeEnum::operator Ifc4x3_add2::IfcBoilerTypeEnum::Value() return (Ifc4x3_add2::IfcBoilerTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcBooleanOperator::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[89]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcBooleanOperator::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[89]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcBooleanOperator::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[89]); } -Ifc4x3_add2::IfcBooleanOperator::IfcBooleanOperator(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcBooleanOperator::IfcBooleanOperator(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcBooleanOperator::IfcBooleanOperator(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcBooleanOperator::IfcBooleanOperator(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcBooleanOperator::ToString(Value v) { return Ifc4x3_add2::IfcBooleanOperator::IfcBooleanOperator::Class().lookup_enum_value((size_t)v); @@ -741,20 +793,22 @@ Ifc4x3_add2::IfcBooleanOperator::operator Ifc4x3_add2::IfcBooleanOperator::Value return (Ifc4x3_add2::IfcBooleanOperator::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcBridgePartTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[105]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcBridgePartTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[105]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcBridgePartTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[105]); } -Ifc4x3_add2::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcBridgePartTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum::Class().lookup_enum_value((size_t)v); @@ -768,20 +822,22 @@ Ifc4x3_add2::IfcBridgePartTypeEnum::operator Ifc4x3_add2::IfcBridgePartTypeEnum: return (Ifc4x3_add2::IfcBridgePartTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcBridgeTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[106]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcBridgeTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[106]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcBridgeTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[106]); } -Ifc4x3_add2::IfcBridgeTypeEnum::IfcBridgeTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcBridgeTypeEnum::IfcBridgeTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcBridgeTypeEnum::IfcBridgeTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcBridgeTypeEnum::IfcBridgeTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcBridgeTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcBridgeTypeEnum::IfcBridgeTypeEnum::Class().lookup_enum_value((size_t)v); @@ -795,20 +851,22 @@ Ifc4x3_add2::IfcBridgeTypeEnum::operator Ifc4x3_add2::IfcBridgeTypeEnum::Value() return (Ifc4x3_add2::IfcBridgeTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcBuildingElementPartTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[116]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcBuildingElementPartTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[116]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[116]); } -Ifc4x3_add2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcBuildingElementPartTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum::Class().lookup_enum_value((size_t)v); @@ -822,20 +880,22 @@ Ifc4x3_add2::IfcBuildingElementPartTypeEnum::operator Ifc4x3_add2::IfcBuildingEl return (Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[119]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[119]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[119]); } -Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum::Class().lookup_enum_value((size_t)v); @@ -849,20 +909,22 @@ Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::operator Ifc4x3_add2::IfcBuildingE return (Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcBuildingSystemTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[122]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcBuildingSystemTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[122]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcBuildingSystemTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[122]); } -Ifc4x3_add2::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcBuildingSystemTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum::Class().lookup_enum_value((size_t)v); @@ -876,20 +938,22 @@ Ifc4x3_add2::IfcBuildingSystemTypeEnum::operator Ifc4x3_add2::IfcBuildingSystemT return (Ifc4x3_add2::IfcBuildingSystemTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcBuiltSystemTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[126]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcBuiltSystemTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[126]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcBuiltSystemTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[126]); } -Ifc4x3_add2::IfcBuiltSystemTypeEnum::IfcBuiltSystemTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcBuiltSystemTypeEnum::IfcBuiltSystemTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcBuiltSystemTypeEnum::IfcBuiltSystemTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcBuiltSystemTypeEnum::IfcBuiltSystemTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcBuiltSystemTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcBuiltSystemTypeEnum::IfcBuiltSystemTypeEnum::Class().lookup_enum_value((size_t)v); @@ -903,20 +967,22 @@ Ifc4x3_add2::IfcBuiltSystemTypeEnum::operator Ifc4x3_add2::IfcBuiltSystemTypeEnu return (Ifc4x3_add2::IfcBuiltSystemTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcBurnerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[129]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcBurnerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[129]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcBurnerTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[129]); } -Ifc4x3_add2::IfcBurnerTypeEnum::IfcBurnerTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcBurnerTypeEnum::IfcBurnerTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcBurnerTypeEnum::IfcBurnerTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcBurnerTypeEnum::IfcBurnerTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcBurnerTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcBurnerTypeEnum::IfcBurnerTypeEnum::Class().lookup_enum_value((size_t)v); @@ -930,20 +996,22 @@ Ifc4x3_add2::IfcBurnerTypeEnum::operator Ifc4x3_add2::IfcBurnerTypeEnum::Value() return (Ifc4x3_add2::IfcBurnerTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[132]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[132]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[132]); } -Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum::Class().lookup_enum_value((size_t)v); @@ -957,20 +1025,22 @@ Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::operator Ifc4x3_add2::IfcCableCarri return (Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[135]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[135]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[135]); } -Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum::Class().lookup_enum_value((size_t)v); @@ -984,20 +1054,22 @@ Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::operator Ifc4x3_add2::IfcCableCarri return (Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCableFittingTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[138]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCableFittingTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[138]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCableFittingTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[138]); } -Ifc4x3_add2::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCableFittingTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1011,20 +1083,22 @@ Ifc4x3_add2::IfcCableFittingTypeEnum::operator Ifc4x3_add2::IfcCableFittingTypeE return (Ifc4x3_add2::IfcCableFittingTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCableSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[141]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCableSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[141]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCableSegmentTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[141]); } -Ifc4x3_add2::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCableSegmentTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1038,20 +1112,22 @@ Ifc4x3_add2::IfcCableSegmentTypeEnum::operator Ifc4x3_add2::IfcCableSegmentTypeE return (Ifc4x3_add2::IfcCableSegmentTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCaissonFoundationTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[144]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCaissonFoundationTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[144]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[144]); } -Ifc4x3_add2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCaissonFoundationTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1065,20 +1141,22 @@ Ifc4x3_add2::IfcCaissonFoundationTypeEnum::operator Ifc4x3_add2::IfcCaissonFound return (Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcChangeActionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[156]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcChangeActionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[156]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcChangeActionEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[156]); } -Ifc4x3_add2::IfcChangeActionEnum::IfcChangeActionEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcChangeActionEnum::IfcChangeActionEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcChangeActionEnum::IfcChangeActionEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcChangeActionEnum::IfcChangeActionEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcChangeActionEnum::ToString(Value v) { return Ifc4x3_add2::IfcChangeActionEnum::IfcChangeActionEnum::Class().lookup_enum_value((size_t)v); @@ -1092,20 +1170,22 @@ Ifc4x3_add2::IfcChangeActionEnum::operator Ifc4x3_add2::IfcChangeActionEnum::Val return (Ifc4x3_add2::IfcChangeActionEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcChillerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[159]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcChillerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[159]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcChillerTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[159]); } -Ifc4x3_add2::IfcChillerTypeEnum::IfcChillerTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcChillerTypeEnum::IfcChillerTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcChillerTypeEnum::IfcChillerTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcChillerTypeEnum::IfcChillerTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcChillerTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcChillerTypeEnum::IfcChillerTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1119,20 +1199,22 @@ Ifc4x3_add2::IfcChillerTypeEnum::operator Ifc4x3_add2::IfcChillerTypeEnum::Value return (Ifc4x3_add2::IfcChillerTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcChimneyTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[162]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcChimneyTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[162]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcChimneyTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[162]); } -Ifc4x3_add2::IfcChimneyTypeEnum::IfcChimneyTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcChimneyTypeEnum::IfcChimneyTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcChimneyTypeEnum::IfcChimneyTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcChimneyTypeEnum::IfcChimneyTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcChimneyTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcChimneyTypeEnum::IfcChimneyTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1146,20 +1228,22 @@ Ifc4x3_add2::IfcChimneyTypeEnum::operator Ifc4x3_add2::IfcChimneyTypeEnum::Value return (Ifc4x3_add2::IfcChimneyTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCoilTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[176]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCoilTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[176]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCoilTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[176]); } -Ifc4x3_add2::IfcCoilTypeEnum::IfcCoilTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCoilTypeEnum::IfcCoilTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCoilTypeEnum::IfcCoilTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCoilTypeEnum::IfcCoilTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCoilTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCoilTypeEnum::IfcCoilTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1173,20 +1257,22 @@ Ifc4x3_add2::IfcCoilTypeEnum::operator Ifc4x3_add2::IfcCoilTypeEnum::Value() con return (Ifc4x3_add2::IfcCoilTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcColumnTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[184]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcColumnTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[184]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcColumnTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[184]); } -Ifc4x3_add2::IfcColumnTypeEnum::IfcColumnTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcColumnTypeEnum::IfcColumnTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcColumnTypeEnum::IfcColumnTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcColumnTypeEnum::IfcColumnTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcColumnTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcColumnTypeEnum::IfcColumnTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1200,20 +1286,22 @@ Ifc4x3_add2::IfcColumnTypeEnum::operator Ifc4x3_add2::IfcColumnTypeEnum::Value() return (Ifc4x3_add2::IfcColumnTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[187]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[187]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[187]); } -Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1227,20 +1315,22 @@ Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::operator Ifc4x3_add2::IfcCommun return (Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[191]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[191]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[191]); } -Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1254,20 +1344,22 @@ Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::operator Ifc4x3_add2::IfcComple return (Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCompressorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[199]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCompressorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[199]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCompressorTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[199]); } -Ifc4x3_add2::IfcCompressorTypeEnum::IfcCompressorTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCompressorTypeEnum::IfcCompressorTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCompressorTypeEnum::IfcCompressorTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCompressorTypeEnum::IfcCompressorTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCompressorTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCompressorTypeEnum::IfcCompressorTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1281,20 +1373,22 @@ Ifc4x3_add2::IfcCompressorTypeEnum::operator Ifc4x3_add2::IfcCompressorTypeEnum: return (Ifc4x3_add2::IfcCompressorTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCondenserTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[202]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCondenserTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[202]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCondenserTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[202]); } -Ifc4x3_add2::IfcCondenserTypeEnum::IfcCondenserTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCondenserTypeEnum::IfcCondenserTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCondenserTypeEnum::IfcCondenserTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCondenserTypeEnum::IfcCondenserTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCondenserTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCondenserTypeEnum::IfcCondenserTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1308,20 +1402,22 @@ Ifc4x3_add2::IfcCondenserTypeEnum::operator Ifc4x3_add2::IfcCondenserTypeEnum::V return (Ifc4x3_add2::IfcCondenserTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcConnectionTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[210]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcConnectionTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[210]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcConnectionTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[210]); } -Ifc4x3_add2::IfcConnectionTypeEnum::IfcConnectionTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcConnectionTypeEnum::IfcConnectionTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcConnectionTypeEnum::IfcConnectionTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcConnectionTypeEnum::IfcConnectionTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcConnectionTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcConnectionTypeEnum::IfcConnectionTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1335,20 +1431,22 @@ Ifc4x3_add2::IfcConnectionTypeEnum::operator Ifc4x3_add2::IfcConnectionTypeEnum: return (Ifc4x3_add2::IfcConnectionTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcConstraintEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[213]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcConstraintEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[213]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcConstraintEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[213]); } -Ifc4x3_add2::IfcConstraintEnum::IfcConstraintEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcConstraintEnum::IfcConstraintEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcConstraintEnum::IfcConstraintEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcConstraintEnum::IfcConstraintEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcConstraintEnum::ToString(Value v) { return Ifc4x3_add2::IfcConstraintEnum::IfcConstraintEnum::Class().lookup_enum_value((size_t)v); @@ -1362,20 +1460,22 @@ Ifc4x3_add2::IfcConstraintEnum::operator Ifc4x3_add2::IfcConstraintEnum::Value() return (Ifc4x3_add2::IfcConstraintEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[216]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[216]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[216]); } -Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1389,20 +1489,22 @@ Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::operator Ifc4x3_add2::Ifc return (Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[219]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[219]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[219]); } -Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1416,20 +1518,22 @@ Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::operator Ifc4x3_add2::IfcC return (Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[222]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[222]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[222]); } -Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1443,20 +1547,22 @@ Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::operator Ifc4x3_add2::IfcCo return (Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcControllerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[231]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcControllerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[231]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcControllerTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[231]); } -Ifc4x3_add2::IfcControllerTypeEnum::IfcControllerTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcControllerTypeEnum::IfcControllerTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcControllerTypeEnum::IfcControllerTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcControllerTypeEnum::IfcControllerTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcControllerTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcControllerTypeEnum::IfcControllerTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1470,20 +1576,22 @@ Ifc4x3_add2::IfcControllerTypeEnum::operator Ifc4x3_add2::IfcControllerTypeEnum: return (Ifc4x3_add2::IfcControllerTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcConveyorSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[236]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcConveyorSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[236]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[236]); } -Ifc4x3_add2::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcConveyorSegmentTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1497,20 +1605,22 @@ Ifc4x3_add2::IfcConveyorSegmentTypeEnum::operator Ifc4x3_add2::IfcConveyorSegmen return (Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCooledBeamTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[239]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCooledBeamTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[239]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCooledBeamTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[239]); } -Ifc4x3_add2::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCooledBeamTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1524,20 +1634,22 @@ Ifc4x3_add2::IfcCooledBeamTypeEnum::operator Ifc4x3_add2::IfcCooledBeamTypeEnum: return (Ifc4x3_add2::IfcCooledBeamTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCoolingTowerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[242]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCoolingTowerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[242]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCoolingTowerTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[242]); } -Ifc4x3_add2::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCoolingTowerTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1551,20 +1663,22 @@ Ifc4x3_add2::IfcCoolingTowerTypeEnum::operator Ifc4x3_add2::IfcCoolingTowerTypeE return (Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCostItemTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[248]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCostItemTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[248]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCostItemTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[248]); } -Ifc4x3_add2::IfcCostItemTypeEnum::IfcCostItemTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCostItemTypeEnum::IfcCostItemTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCostItemTypeEnum::IfcCostItemTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCostItemTypeEnum::IfcCostItemTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCostItemTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCostItemTypeEnum::IfcCostItemTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1578,20 +1692,22 @@ Ifc4x3_add2::IfcCostItemTypeEnum::operator Ifc4x3_add2::IfcCostItemTypeEnum::Val return (Ifc4x3_add2::IfcCostItemTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCostScheduleTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[250]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCostScheduleTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[250]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCostScheduleTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[250]); } -Ifc4x3_add2::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCostScheduleTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1605,20 +1721,22 @@ Ifc4x3_add2::IfcCostScheduleTypeEnum::operator Ifc4x3_add2::IfcCostScheduleTypeE return (Ifc4x3_add2::IfcCostScheduleTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCourseTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[255]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCourseTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[255]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCourseTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[255]); } -Ifc4x3_add2::IfcCourseTypeEnum::IfcCourseTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCourseTypeEnum::IfcCourseTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCourseTypeEnum::IfcCourseTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCourseTypeEnum::IfcCourseTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCourseTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCourseTypeEnum::IfcCourseTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1632,20 +1750,22 @@ Ifc4x3_add2::IfcCourseTypeEnum::operator Ifc4x3_add2::IfcCourseTypeEnum::Value() return (Ifc4x3_add2::IfcCourseTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCoveringTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[258]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCoveringTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[258]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCoveringTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[258]); } -Ifc4x3_add2::IfcCoveringTypeEnum::IfcCoveringTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCoveringTypeEnum::IfcCoveringTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCoveringTypeEnum::IfcCoveringTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCoveringTypeEnum::IfcCoveringTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCoveringTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCoveringTypeEnum::IfcCoveringTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1659,20 +1779,22 @@ Ifc4x3_add2::IfcCoveringTypeEnum::operator Ifc4x3_add2::IfcCoveringTypeEnum::Val return (Ifc4x3_add2::IfcCoveringTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCrewResourceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[261]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCrewResourceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[261]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCrewResourceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[261]); } -Ifc4x3_add2::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCrewResourceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1686,20 +1808,22 @@ Ifc4x3_add2::IfcCrewResourceTypeEnum::operator Ifc4x3_add2::IfcCrewResourceTypeE return (Ifc4x3_add2::IfcCrewResourceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCurtainWallTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[269]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCurtainWallTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[269]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCurtainWallTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[269]); } -Ifc4x3_add2::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCurtainWallTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1713,20 +1837,22 @@ Ifc4x3_add2::IfcCurtainWallTypeEnum::operator Ifc4x3_add2::IfcCurtainWallTypeEnu return (Ifc4x3_add2::IfcCurtainWallTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcCurveInterpolationEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[275]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcCurveInterpolationEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[275]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcCurveInterpolationEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[275]); } -Ifc4x3_add2::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcCurveInterpolationEnum::ToString(Value v) { return Ifc4x3_add2::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum::Class().lookup_enum_value((size_t)v); @@ -1740,20 +1866,22 @@ Ifc4x3_add2::IfcCurveInterpolationEnum::operator Ifc4x3_add2::IfcCurveInterpolat return (Ifc4x3_add2::IfcCurveInterpolationEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDamperTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[288]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDamperTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[288]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDamperTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[288]); } -Ifc4x3_add2::IfcDamperTypeEnum::IfcDamperTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDamperTypeEnum::IfcDamperTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDamperTypeEnum::IfcDamperTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDamperTypeEnum::IfcDamperTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDamperTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcDamperTypeEnum::IfcDamperTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1767,20 +1895,22 @@ Ifc4x3_add2::IfcDamperTypeEnum::operator Ifc4x3_add2::IfcDamperTypeEnum::Value() return (Ifc4x3_add2::IfcDamperTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDataOriginEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[289]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDataOriginEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[289]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDataOriginEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[289]); } -Ifc4x3_add2::IfcDataOriginEnum::IfcDataOriginEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDataOriginEnum::IfcDataOriginEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDataOriginEnum::IfcDataOriginEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDataOriginEnum::IfcDataOriginEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDataOriginEnum::ToString(Value v) { return Ifc4x3_add2::IfcDataOriginEnum::IfcDataOriginEnum::Class().lookup_enum_value((size_t)v); @@ -1794,20 +1924,22 @@ Ifc4x3_add2::IfcDataOriginEnum::operator Ifc4x3_add2::IfcDataOriginEnum::Value() return (Ifc4x3_add2::IfcDataOriginEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDerivedUnitEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[301]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDerivedUnitEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[301]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDerivedUnitEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[301]); } -Ifc4x3_add2::IfcDerivedUnitEnum::IfcDerivedUnitEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDerivedUnitEnum::IfcDerivedUnitEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDerivedUnitEnum::IfcDerivedUnitEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDerivedUnitEnum::IfcDerivedUnitEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDerivedUnitEnum::ToString(Value v) { return Ifc4x3_add2::IfcDerivedUnitEnum::IfcDerivedUnitEnum::Class().lookup_enum_value((size_t)v); @@ -1821,20 +1953,22 @@ Ifc4x3_add2::IfcDerivedUnitEnum::operator Ifc4x3_add2::IfcDerivedUnitEnum::Value return (Ifc4x3_add2::IfcDerivedUnitEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDirectionSenseEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[306]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDirectionSenseEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[306]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDirectionSenseEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[306]); } -Ifc4x3_add2::IfcDirectionSenseEnum::IfcDirectionSenseEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDirectionSenseEnum::IfcDirectionSenseEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDirectionSenseEnum::IfcDirectionSenseEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDirectionSenseEnum::IfcDirectionSenseEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDirectionSenseEnum::ToString(Value v) { return Ifc4x3_add2::IfcDirectionSenseEnum::IfcDirectionSenseEnum::Class().lookup_enum_value((size_t)v); @@ -1848,20 +1982,22 @@ Ifc4x3_add2::IfcDirectionSenseEnum::operator Ifc4x3_add2::IfcDirectionSenseEnum: return (Ifc4x3_add2::IfcDirectionSenseEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[311]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[311]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[311]); } -Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1875,20 +2011,22 @@ Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::operator Ifc4x3_add2::IfcDiscreteAcce return (Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDistributionBoardTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[314]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDistributionBoardTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[314]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDistributionBoardTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[314]); } -Ifc4x3_add2::IfcDistributionBoardTypeEnum::IfcDistributionBoardTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDistributionBoardTypeEnum::IfcDistributionBoardTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDistributionBoardTypeEnum::IfcDistributionBoardTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDistributionBoardTypeEnum::IfcDistributionBoardTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDistributionBoardTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcDistributionBoardTypeEnum::IfcDistributionBoardTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1902,20 +2040,22 @@ Ifc4x3_add2::IfcDistributionBoardTypeEnum::operator Ifc4x3_add2::IfcDistribution return (Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[317]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[317]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[317]); } -Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1929,20 +2069,22 @@ Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::operator Ifc4x3_add2::IfcDis return (Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDistributionPortTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[326]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDistributionPortTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[326]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDistributionPortTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[326]); } -Ifc4x3_add2::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDistributionPortTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum::Class().lookup_enum_value((size_t)v); @@ -1956,20 +2098,22 @@ Ifc4x3_add2::IfcDistributionPortTypeEnum::operator Ifc4x3_add2::IfcDistributionP return (Ifc4x3_add2::IfcDistributionPortTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDistributionSystemEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[328]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDistributionSystemEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[328]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDistributionSystemEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[328]); } -Ifc4x3_add2::IfcDistributionSystemEnum::IfcDistributionSystemEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDistributionSystemEnum::IfcDistributionSystemEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDistributionSystemEnum::IfcDistributionSystemEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDistributionSystemEnum::IfcDistributionSystemEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDistributionSystemEnum::ToString(Value v) { return Ifc4x3_add2::IfcDistributionSystemEnum::IfcDistributionSystemEnum::Class().lookup_enum_value((size_t)v); @@ -1983,20 +2127,22 @@ Ifc4x3_add2::IfcDistributionSystemEnum::operator Ifc4x3_add2::IfcDistributionSys return (Ifc4x3_add2::IfcDistributionSystemEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDocumentConfidentialityEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[329]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDocumentConfidentialityEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[329]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDocumentConfidentialityEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[329]); } -Ifc4x3_add2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDocumentConfidentialityEnum::ToString(Value v) { return Ifc4x3_add2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum::Class().lookup_enum_value((size_t)v); @@ -2010,20 +2156,22 @@ Ifc4x3_add2::IfcDocumentConfidentialityEnum::operator Ifc4x3_add2::IfcDocumentCo return (Ifc4x3_add2::IfcDocumentConfidentialityEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDocumentStatusEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[334]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDocumentStatusEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[334]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDocumentStatusEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[334]); } -Ifc4x3_add2::IfcDocumentStatusEnum::IfcDocumentStatusEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDocumentStatusEnum::IfcDocumentStatusEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDocumentStatusEnum::IfcDocumentStatusEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDocumentStatusEnum::IfcDocumentStatusEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDocumentStatusEnum::ToString(Value v) { return Ifc4x3_add2::IfcDocumentStatusEnum::IfcDocumentStatusEnum::Class().lookup_enum_value((size_t)v); @@ -2037,20 +2185,22 @@ Ifc4x3_add2::IfcDocumentStatusEnum::operator Ifc4x3_add2::IfcDocumentStatusEnum: return (Ifc4x3_add2::IfcDocumentStatusEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDoorPanelOperationEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[337]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDoorPanelOperationEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[337]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDoorPanelOperationEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[337]); } -Ifc4x3_add2::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDoorPanelOperationEnum::ToString(Value v) { return Ifc4x3_add2::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum::Class().lookup_enum_value((size_t)v); @@ -2064,20 +2214,22 @@ Ifc4x3_add2::IfcDoorPanelOperationEnum::operator Ifc4x3_add2::IfcDoorPanelOperat return (Ifc4x3_add2::IfcDoorPanelOperationEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDoorPanelPositionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[338]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDoorPanelPositionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[338]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDoorPanelPositionEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[338]); } -Ifc4x3_add2::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDoorPanelPositionEnum::ToString(Value v) { return Ifc4x3_add2::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum::Class().lookup_enum_value((size_t)v); @@ -2091,20 +2243,22 @@ Ifc4x3_add2::IfcDoorPanelPositionEnum::operator Ifc4x3_add2::IfcDoorPanelPositio return (Ifc4x3_add2::IfcDoorPanelPositionEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDoorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[341]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDoorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[341]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDoorTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[341]); } -Ifc4x3_add2::IfcDoorTypeEnum::IfcDoorTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDoorTypeEnum::IfcDoorTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDoorTypeEnum::IfcDoorTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDoorTypeEnum::IfcDoorTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDoorTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcDoorTypeEnum::IfcDoorTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2118,20 +2272,22 @@ Ifc4x3_add2::IfcDoorTypeEnum::operator Ifc4x3_add2::IfcDoorTypeEnum::Value() con return (Ifc4x3_add2::IfcDoorTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDoorTypeOperationEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[342]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDoorTypeOperationEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[342]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDoorTypeOperationEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[342]); } -Ifc4x3_add2::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDoorTypeOperationEnum::ToString(Value v) { return Ifc4x3_add2::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum::Class().lookup_enum_value((size_t)v); @@ -2145,20 +2301,22 @@ Ifc4x3_add2::IfcDoorTypeOperationEnum::operator Ifc4x3_add2::IfcDoorTypeOperatio return (Ifc4x3_add2::IfcDoorTypeOperationEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDuctFittingTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[348]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDuctFittingTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[348]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDuctFittingTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[348]); } -Ifc4x3_add2::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDuctFittingTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2172,20 +2330,22 @@ Ifc4x3_add2::IfcDuctFittingTypeEnum::operator Ifc4x3_add2::IfcDuctFittingTypeEnu return (Ifc4x3_add2::IfcDuctFittingTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDuctSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[351]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDuctSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[351]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDuctSegmentTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[351]); } -Ifc4x3_add2::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDuctSegmentTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2199,20 +2359,22 @@ Ifc4x3_add2::IfcDuctSegmentTypeEnum::operator Ifc4x3_add2::IfcDuctSegmentTypeEnu return (Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcDuctSilencerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[354]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcDuctSilencerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[354]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcDuctSilencerTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[354]); } -Ifc4x3_add2::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcDuctSilencerTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2226,20 +2388,22 @@ Ifc4x3_add2::IfcDuctSilencerTypeEnum::operator Ifc4x3_add2::IfcDuctSilencerTypeE return (Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcEarthworksCutTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[358]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcEarthworksCutTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[358]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcEarthworksCutTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[358]); } -Ifc4x3_add2::IfcEarthworksCutTypeEnum::IfcEarthworksCutTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcEarthworksCutTypeEnum::IfcEarthworksCutTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcEarthworksCutTypeEnum::IfcEarthworksCutTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcEarthworksCutTypeEnum::IfcEarthworksCutTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcEarthworksCutTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcEarthworksCutTypeEnum::IfcEarthworksCutTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2253,20 +2417,22 @@ Ifc4x3_add2::IfcEarthworksCutTypeEnum::operator Ifc4x3_add2::IfcEarthworksCutTyp return (Ifc4x3_add2::IfcEarthworksCutTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcEarthworksFillTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[361]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcEarthworksFillTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[361]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcEarthworksFillTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[361]); } -Ifc4x3_add2::IfcEarthworksFillTypeEnum::IfcEarthworksFillTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcEarthworksFillTypeEnum::IfcEarthworksFillTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcEarthworksFillTypeEnum::IfcEarthworksFillTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcEarthworksFillTypeEnum::IfcEarthworksFillTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcEarthworksFillTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcEarthworksFillTypeEnum::IfcEarthworksFillTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2280,20 +2446,22 @@ Ifc4x3_add2::IfcEarthworksFillTypeEnum::operator Ifc4x3_add2::IfcEarthworksFillT return (Ifc4x3_add2::IfcEarthworksFillTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricApplianceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[367]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricApplianceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[367]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricApplianceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[367]); } -Ifc4x3_add2::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcElectricApplianceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2307,20 +2475,22 @@ Ifc4x3_add2::IfcElectricApplianceTypeEnum::operator Ifc4x3_add2::IfcElectricAppl return (Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[374]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[374]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[374]); } -Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2334,20 +2504,22 @@ Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::operator Ifc4x3_add2::IfcElec return (Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[377]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[377]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[377]); } -Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2361,20 +2533,22 @@ Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::operator Ifc4x3_add2::IfcElec return (Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[380]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[380]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[380]); } -Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2388,20 +2562,22 @@ Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::operator Ifc4x3_add2::IfcEl return (Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricGeneratorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[383]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricGeneratorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[383]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[383]); } -Ifc4x3_add2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcElectricGeneratorTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2415,20 +2591,22 @@ Ifc4x3_add2::IfcElectricGeneratorTypeEnum::operator Ifc4x3_add2::IfcElectricGene return (Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricMotorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[386]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricMotorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[386]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricMotorTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[386]); } -Ifc4x3_add2::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcElectricMotorTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2442,20 +2620,22 @@ Ifc4x3_add2::IfcElectricMotorTypeEnum::operator Ifc4x3_add2::IfcElectricMotorTyp return (Ifc4x3_add2::IfcElectricMotorTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricTimeControlTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[390]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricTimeControlTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[390]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[390]); } -Ifc4x3_add2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcElectricTimeControlTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2469,20 +2649,22 @@ Ifc4x3_add2::IfcElectricTimeControlTypeEnum::operator Ifc4x3_add2::IfcElectricTi return (Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcElementAssemblyTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[396]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcElementAssemblyTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[396]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcElementAssemblyTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[396]); } -Ifc4x3_add2::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcElementAssemblyTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2496,20 +2678,22 @@ Ifc4x3_add2::IfcElementAssemblyTypeEnum::operator Ifc4x3_add2::IfcElementAssembl return (Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcElementCompositionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[399]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcElementCompositionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[399]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcElementCompositionEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[399]); } -Ifc4x3_add2::IfcElementCompositionEnum::IfcElementCompositionEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcElementCompositionEnum::IfcElementCompositionEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcElementCompositionEnum::IfcElementCompositionEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcElementCompositionEnum::IfcElementCompositionEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcElementCompositionEnum::ToString(Value v) { return Ifc4x3_add2::IfcElementCompositionEnum::IfcElementCompositionEnum::Class().lookup_enum_value((size_t)v); @@ -2523,20 +2707,22 @@ Ifc4x3_add2::IfcElementCompositionEnum::operator Ifc4x3_add2::IfcElementComposit return (Ifc4x3_add2::IfcElementCompositionEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcEngineTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[409]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcEngineTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[409]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcEngineTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[409]); } -Ifc4x3_add2::IfcEngineTypeEnum::IfcEngineTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcEngineTypeEnum::IfcEngineTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcEngineTypeEnum::IfcEngineTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcEngineTypeEnum::IfcEngineTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcEngineTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcEngineTypeEnum::IfcEngineTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2550,20 +2736,22 @@ Ifc4x3_add2::IfcEngineTypeEnum::operator Ifc4x3_add2::IfcEngineTypeEnum::Value() return (Ifc4x3_add2::IfcEngineTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[412]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[412]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[412]); } -Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2577,20 +2765,22 @@ Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::operator Ifc4x3_add2::IfcEvaporativeC return (Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcEvaporatorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[415]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcEvaporatorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[415]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcEvaporatorTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[415]); } -Ifc4x3_add2::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcEvaporatorTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2604,20 +2794,22 @@ Ifc4x3_add2::IfcEvaporatorTypeEnum::operator Ifc4x3_add2::IfcEvaporatorTypeEnum: return (Ifc4x3_add2::IfcEvaporatorTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcEventTriggerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[418]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcEventTriggerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[418]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcEventTriggerTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[418]); } -Ifc4x3_add2::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcEventTriggerTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2631,20 +2823,22 @@ Ifc4x3_add2::IfcEventTriggerTypeEnum::operator Ifc4x3_add2::IfcEventTriggerTypeE return (Ifc4x3_add2::IfcEventTriggerTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcEventTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[420]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcEventTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[420]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcEventTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[420]); } -Ifc4x3_add2::IfcEventTypeEnum::IfcEventTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcEventTypeEnum::IfcEventTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcEventTypeEnum::IfcEventTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcEventTypeEnum::IfcEventTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcEventTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcEventTypeEnum::IfcEventTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2658,20 +2852,22 @@ Ifc4x3_add2::IfcEventTypeEnum::operator Ifc4x3_add2::IfcEventTypeEnum::Value() c return (Ifc4x3_add2::IfcEventTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[429]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[429]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[429]); } -Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2685,20 +2881,22 @@ Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::operator Ifc4x3_add2::IfcExterna return (Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[443]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[443]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[443]); } -Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2712,20 +2910,22 @@ Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::operator Ifc4x3_add2::IfcFacilityPar return (Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcFacilityUsageEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[444]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcFacilityUsageEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[444]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcFacilityUsageEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[444]); } -Ifc4x3_add2::IfcFacilityUsageEnum::IfcFacilityUsageEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcFacilityUsageEnum::IfcFacilityUsageEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcFacilityUsageEnum::IfcFacilityUsageEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcFacilityUsageEnum::IfcFacilityUsageEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcFacilityUsageEnum::ToString(Value v) { return Ifc4x3_add2::IfcFacilityUsageEnum::IfcFacilityUsageEnum::Class().lookup_enum_value((size_t)v); @@ -2739,20 +2939,22 @@ Ifc4x3_add2::IfcFacilityUsageEnum::operator Ifc4x3_add2::IfcFacilityUsageEnum::V return (Ifc4x3_add2::IfcFacilityUsageEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcFanTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[448]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcFanTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[448]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcFanTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[448]); } -Ifc4x3_add2::IfcFanTypeEnum::IfcFanTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcFanTypeEnum::IfcFanTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcFanTypeEnum::IfcFanTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcFanTypeEnum::IfcFanTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcFanTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcFanTypeEnum::IfcFanTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2766,20 +2968,22 @@ Ifc4x3_add2::IfcFanTypeEnum::operator Ifc4x3_add2::IfcFanTypeEnum::Value() const return (Ifc4x3_add2::IfcFanTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcFastenerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[451]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcFastenerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[451]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcFastenerTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[451]); } -Ifc4x3_add2::IfcFastenerTypeEnum::IfcFastenerTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcFastenerTypeEnum::IfcFastenerTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcFastenerTypeEnum::IfcFastenerTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcFastenerTypeEnum::IfcFastenerTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcFastenerTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcFastenerTypeEnum::IfcFastenerTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2793,20 +2997,22 @@ Ifc4x3_add2::IfcFastenerTypeEnum::operator Ifc4x3_add2::IfcFastenerTypeEnum::Val return (Ifc4x3_add2::IfcFastenerTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcFilterTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[461]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcFilterTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[461]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcFilterTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[461]); } -Ifc4x3_add2::IfcFilterTypeEnum::IfcFilterTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcFilterTypeEnum::IfcFilterTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcFilterTypeEnum::IfcFilterTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcFilterTypeEnum::IfcFilterTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcFilterTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcFilterTypeEnum::IfcFilterTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2820,20 +3026,22 @@ Ifc4x3_add2::IfcFilterTypeEnum::operator Ifc4x3_add2::IfcFilterTypeEnum::Value() return (Ifc4x3_add2::IfcFilterTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[464]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[464]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[464]); } -Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2847,20 +3055,22 @@ Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::operator Ifc4x3_add2::IfcFireSu return (Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcFlowDirectionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[468]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcFlowDirectionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[468]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcFlowDirectionEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[468]); } -Ifc4x3_add2::IfcFlowDirectionEnum::IfcFlowDirectionEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcFlowDirectionEnum::IfcFlowDirectionEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcFlowDirectionEnum::IfcFlowDirectionEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcFlowDirectionEnum::IfcFlowDirectionEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcFlowDirectionEnum::ToString(Value v) { return Ifc4x3_add2::IfcFlowDirectionEnum::IfcFlowDirectionEnum::Class().lookup_enum_value((size_t)v); @@ -2874,20 +3084,22 @@ Ifc4x3_add2::IfcFlowDirectionEnum::operator Ifc4x3_add2::IfcFlowDirectionEnum::V return (Ifc4x3_add2::IfcFlowDirectionEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcFlowInstrumentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[473]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcFlowInstrumentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[473]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[473]); } -Ifc4x3_add2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcFlowInstrumentTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2901,20 +3113,22 @@ Ifc4x3_add2::IfcFlowInstrumentTypeEnum::operator Ifc4x3_add2::IfcFlowInstrumentT return (Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcFlowMeterTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[476]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcFlowMeterTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[476]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcFlowMeterTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[476]); } -Ifc4x3_add2::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcFlowMeterTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2928,20 +3142,22 @@ Ifc4x3_add2::IfcFlowMeterTypeEnum::operator Ifc4x3_add2::IfcFlowMeterTypeEnum::V return (Ifc4x3_add2::IfcFlowMeterTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcFootingTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[492]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcFootingTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[492]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcFootingTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[492]); } -Ifc4x3_add2::IfcFootingTypeEnum::IfcFootingTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcFootingTypeEnum::IfcFootingTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcFootingTypeEnum::IfcFootingTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcFootingTypeEnum::IfcFootingTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcFootingTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcFootingTypeEnum::IfcFootingTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2955,20 +3171,22 @@ Ifc4x3_add2::IfcFootingTypeEnum::operator Ifc4x3_add2::IfcFootingTypeEnum::Value return (Ifc4x3_add2::IfcFootingTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcFurnitureTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[499]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcFurnitureTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[499]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcFurnitureTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[499]); } -Ifc4x3_add2::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcFurnitureTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum::Class().lookup_enum_value((size_t)v); @@ -2982,20 +3200,22 @@ Ifc4x3_add2::IfcFurnitureTypeEnum::operator Ifc4x3_add2::IfcFurnitureTypeEnum::V return (Ifc4x3_add2::IfcFurnitureTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcGeographicElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[503]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcGeographicElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[503]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcGeographicElementTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[503]); } -Ifc4x3_add2::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcGeographicElementTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3009,20 +3229,22 @@ Ifc4x3_add2::IfcGeographicElementTypeEnum::operator Ifc4x3_add2::IfcGeographicEl return (Ifc4x3_add2::IfcGeographicElementTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcGeometricProjectionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[505]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcGeometricProjectionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[505]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcGeometricProjectionEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[505]); } -Ifc4x3_add2::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcGeometricProjectionEnum::ToString(Value v) { return Ifc4x3_add2::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum::Class().lookup_enum_value((size_t)v); @@ -3036,20 +3258,22 @@ Ifc4x3_add2::IfcGeometricProjectionEnum::operator Ifc4x3_add2::IfcGeometricProje return (Ifc4x3_add2::IfcGeometricProjectionEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[516]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[516]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[516]); } -Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::IfcGeotechnicalStratumTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::IfcGeotechnicalStratumTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::IfcGeotechnicalStratumTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::IfcGeotechnicalStratumTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::IfcGeotechnicalStratumTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3063,20 +3287,22 @@ Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::operator Ifc4x3_add2::IfcGeotechnic return (Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcGlobalOrLocalEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[518]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcGlobalOrLocalEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[518]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcGlobalOrLocalEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[518]); } -Ifc4x3_add2::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcGlobalOrLocalEnum::ToString(Value v) { return Ifc4x3_add2::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum::Class().lookup_enum_value((size_t)v); @@ -3090,20 +3316,22 @@ Ifc4x3_add2::IfcGlobalOrLocalEnum::operator Ifc4x3_add2::IfcGlobalOrLocalEnum::V return (Ifc4x3_add2::IfcGlobalOrLocalEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcGridTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[524]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcGridTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[524]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcGridTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[524]); } -Ifc4x3_add2::IfcGridTypeEnum::IfcGridTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcGridTypeEnum::IfcGridTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcGridTypeEnum::IfcGridTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcGridTypeEnum::IfcGridTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcGridTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcGridTypeEnum::IfcGridTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3117,20 +3345,22 @@ Ifc4x3_add2::IfcGridTypeEnum::operator Ifc4x3_add2::IfcGridTypeEnum::Value() con return (Ifc4x3_add2::IfcGridTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcHeatExchangerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[530]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcHeatExchangerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[530]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcHeatExchangerTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[530]); } -Ifc4x3_add2::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcHeatExchangerTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3144,20 +3374,22 @@ Ifc4x3_add2::IfcHeatExchangerTypeEnum::operator Ifc4x3_add2::IfcHeatExchangerTyp return (Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcHumidifierTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[535]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcHumidifierTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[535]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcHumidifierTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[535]); } -Ifc4x3_add2::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcHumidifierTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3171,20 +3403,22 @@ Ifc4x3_add2::IfcHumidifierTypeEnum::operator Ifc4x3_add2::IfcHumidifierTypeEnum: return (Ifc4x3_add2::IfcHumidifierTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[541]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[541]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[541]); } -Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3198,20 +3432,22 @@ Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::operator Ifc4x3_add2::IfcImpactP return (Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcInterceptorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[554]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcInterceptorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[554]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcInterceptorTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[554]); } -Ifc4x3_add2::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcInterceptorTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3225,20 +3461,22 @@ Ifc4x3_add2::IfcInterceptorTypeEnum::operator Ifc4x3_add2::IfcInterceptorTypeEnu return (Ifc4x3_add2::IfcInterceptorTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcInternalOrExternalEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[556]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcInternalOrExternalEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[556]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcInternalOrExternalEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[556]); } -Ifc4x3_add2::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcInternalOrExternalEnum::ToString(Value v) { return Ifc4x3_add2::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum::Class().lookup_enum_value((size_t)v); @@ -3252,20 +3490,22 @@ Ifc4x3_add2::IfcInternalOrExternalEnum::operator Ifc4x3_add2::IfcInternalOrExter return (Ifc4x3_add2::IfcInternalOrExternalEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcInventoryTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[559]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcInventoryTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[559]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcInventoryTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[559]); } -Ifc4x3_add2::IfcInventoryTypeEnum::IfcInventoryTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcInventoryTypeEnum::IfcInventoryTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcInventoryTypeEnum::IfcInventoryTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcInventoryTypeEnum::IfcInventoryTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcInventoryTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcInventoryTypeEnum::IfcInventoryTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3279,20 +3519,22 @@ Ifc4x3_add2::IfcInventoryTypeEnum::operator Ifc4x3_add2::IfcInventoryTypeEnum::V return (Ifc4x3_add2::IfcInventoryTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcJunctionBoxTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[567]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcJunctionBoxTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[567]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcJunctionBoxTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[567]); } -Ifc4x3_add2::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcJunctionBoxTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3306,20 +3548,22 @@ Ifc4x3_add2::IfcJunctionBoxTypeEnum::operator Ifc4x3_add2::IfcJunctionBoxTypeEnu return (Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcKerbTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[570]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcKerbTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[570]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcKerbTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[570]); } -Ifc4x3_add2::IfcKerbTypeEnum::IfcKerbTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcKerbTypeEnum::IfcKerbTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcKerbTypeEnum::IfcKerbTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcKerbTypeEnum::IfcKerbTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcKerbTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcKerbTypeEnum::IfcKerbTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3333,20 +3577,22 @@ Ifc4x3_add2::IfcKerbTypeEnum::operator Ifc4x3_add2::IfcKerbTypeEnum::Value() con return (Ifc4x3_add2::IfcKerbTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcKnotType::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[572]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcKnotType::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[572]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcKnotType::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[572]); } -Ifc4x3_add2::IfcKnotType::IfcKnotType(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcKnotType::IfcKnotType(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcKnotType::IfcKnotType(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcKnotType::IfcKnotType(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcKnotType::ToString(Value v) { return Ifc4x3_add2::IfcKnotType::IfcKnotType::Class().lookup_enum_value((size_t)v); @@ -3360,20 +3606,22 @@ Ifc4x3_add2::IfcKnotType::operator Ifc4x3_add2::IfcKnotType::Value() const { return (Ifc4x3_add2::IfcKnotType::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcLaborResourceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[576]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcLaborResourceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[576]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcLaborResourceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[576]); } -Ifc4x3_add2::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcLaborResourceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3387,20 +3635,22 @@ Ifc4x3_add2::IfcLaborResourceTypeEnum::operator Ifc4x3_add2::IfcLaborResourceTyp return (Ifc4x3_add2::IfcLaborResourceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcLampTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[580]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcLampTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[580]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcLampTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[580]); } -Ifc4x3_add2::IfcLampTypeEnum::IfcLampTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcLampTypeEnum::IfcLampTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcLampTypeEnum::IfcLampTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcLampTypeEnum::IfcLampTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcLampTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcLampTypeEnum::IfcLampTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3414,20 +3664,22 @@ Ifc4x3_add2::IfcLampTypeEnum::operator Ifc4x3_add2::IfcLampTypeEnum::Value() con return (Ifc4x3_add2::IfcLampTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcLayerSetDirectionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[583]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcLayerSetDirectionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[583]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcLayerSetDirectionEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[583]); } -Ifc4x3_add2::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcLayerSetDirectionEnum::ToString(Value v) { return Ifc4x3_add2::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum::Class().lookup_enum_value((size_t)v); @@ -3441,20 +3693,22 @@ Ifc4x3_add2::IfcLayerSetDirectionEnum::operator Ifc4x3_add2::IfcLayerSetDirectio return (Ifc4x3_add2::IfcLayerSetDirectionEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcLightDistributionCurveEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[588]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcLightDistributionCurveEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[588]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcLightDistributionCurveEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[588]); } -Ifc4x3_add2::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcLightDistributionCurveEnum::ToString(Value v) { return Ifc4x3_add2::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum::Class().lookup_enum_value((size_t)v); @@ -3468,20 +3722,22 @@ Ifc4x3_add2::IfcLightDistributionCurveEnum::operator Ifc4x3_add2::IfcLightDistri return (Ifc4x3_add2::IfcLightDistributionCurveEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcLightEmissionSourceEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[591]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcLightEmissionSourceEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[591]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcLightEmissionSourceEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[591]); } -Ifc4x3_add2::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcLightEmissionSourceEnum::ToString(Value v) { return Ifc4x3_add2::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum::Class().lookup_enum_value((size_t)v); @@ -3495,20 +3751,22 @@ Ifc4x3_add2::IfcLightEmissionSourceEnum::operator Ifc4x3_add2::IfcLightEmissionS return (Ifc4x3_add2::IfcLightEmissionSourceEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcLightFixtureTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[594]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcLightFixtureTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[594]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcLightFixtureTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[594]); } -Ifc4x3_add2::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcLightFixtureTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3522,20 +3780,22 @@ Ifc4x3_add2::IfcLightFixtureTypeEnum::operator Ifc4x3_add2::IfcLightFixtureTypeE return (Ifc4x3_add2::IfcLightFixtureTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcLiquidTerminalTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[613]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcLiquidTerminalTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[613]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[613]); } -Ifc4x3_add2::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcLiquidTerminalTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3549,20 +3809,22 @@ Ifc4x3_add2::IfcLiquidTerminalTypeEnum::operator Ifc4x3_add2::IfcLiquidTerminalT return (Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcLoadGroupTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[614]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcLoadGroupTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[614]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcLoadGroupTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[614]); } -Ifc4x3_add2::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcLoadGroupTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3576,20 +3838,22 @@ Ifc4x3_add2::IfcLoadGroupTypeEnum::operator Ifc4x3_add2::IfcLoadGroupTypeEnum::V return (Ifc4x3_add2::IfcLoadGroupTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcLogicalOperatorEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[617]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcLogicalOperatorEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[617]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcLogicalOperatorEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[617]); } -Ifc4x3_add2::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcLogicalOperatorEnum::ToString(Value v) { return Ifc4x3_add2::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum::Class().lookup_enum_value((size_t)v); @@ -3603,20 +3867,22 @@ Ifc4x3_add2::IfcLogicalOperatorEnum::operator Ifc4x3_add2::IfcLogicalOperatorEnu return (Ifc4x3_add2::IfcLogicalOperatorEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcMarineFacilityTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[630]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcMarineFacilityTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[630]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcMarineFacilityTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[630]); } -Ifc4x3_add2::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcMarineFacilityTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3630,20 +3896,22 @@ Ifc4x3_add2::IfcMarineFacilityTypeEnum::operator Ifc4x3_add2::IfcMarineFacilityT return (Ifc4x3_add2::IfcMarineFacilityTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcMarinePartTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[632]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcMarinePartTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[632]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcMarinePartTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[632]); } -Ifc4x3_add2::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcMarinePartTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3657,20 +3925,22 @@ Ifc4x3_add2::IfcMarinePartTypeEnum::operator Ifc4x3_add2::IfcMarinePartTypeEnum: return (Ifc4x3_add2::IfcMarinePartTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[661]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[661]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[661]); } -Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3684,20 +3954,22 @@ Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::operator Ifc4x3_add2::IfcMechanicalF return (Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcMedicalDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[664]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcMedicalDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[664]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[664]); } -Ifc4x3_add2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcMedicalDeviceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3711,20 +3983,22 @@ Ifc4x3_add2::IfcMedicalDeviceTypeEnum::operator Ifc4x3_add2::IfcMedicalDeviceTyp return (Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcMemberTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[667]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcMemberTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[667]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcMemberTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[667]); } -Ifc4x3_add2::IfcMemberTypeEnum::IfcMemberTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcMemberTypeEnum::IfcMemberTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcMemberTypeEnum::IfcMemberTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcMemberTypeEnum::IfcMemberTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcMemberTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcMemberTypeEnum::IfcMemberTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3738,20 +4012,22 @@ Ifc4x3_add2::IfcMemberTypeEnum::operator Ifc4x3_add2::IfcMemberTypeEnum::Value() return (Ifc4x3_add2::IfcMemberTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[673]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[673]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[673]); } -Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3765,20 +4041,22 @@ Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::operator Ifc4x3_add2: return (Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcMooringDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[689]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcMooringDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[689]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcMooringDeviceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[689]); } -Ifc4x3_add2::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcMooringDeviceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3792,20 +4070,22 @@ Ifc4x3_add2::IfcMooringDeviceTypeEnum::operator Ifc4x3_add2::IfcMooringDeviceTyp return (Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcMotorConnectionTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[692]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcMotorConnectionTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[692]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcMotorConnectionTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[692]); } -Ifc4x3_add2::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcMotorConnectionTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3819,20 +4099,22 @@ Ifc4x3_add2::IfcMotorConnectionTypeEnum::operator Ifc4x3_add2::IfcMotorConnectio return (Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcNavigationElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[696]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcNavigationElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[696]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcNavigationElementTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[696]); } -Ifc4x3_add2::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcNavigationElementTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3846,20 +4128,22 @@ Ifc4x3_add2::IfcNavigationElementTypeEnum::operator Ifc4x3_add2::IfcNavigationEl return (Ifc4x3_add2::IfcNavigationElementTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcObjectiveEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[703]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcObjectiveEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[703]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcObjectiveEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[703]); } -Ifc4x3_add2::IfcObjectiveEnum::IfcObjectiveEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcObjectiveEnum::IfcObjectiveEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcObjectiveEnum::IfcObjectiveEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcObjectiveEnum::IfcObjectiveEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcObjectiveEnum::ToString(Value v) { return Ifc4x3_add2::IfcObjectiveEnum::IfcObjectiveEnum::Class().lookup_enum_value((size_t)v); @@ -3873,20 +4157,22 @@ Ifc4x3_add2::IfcObjectiveEnum::operator Ifc4x3_add2::IfcObjectiveEnum::Value() c return (Ifc4x3_add2::IfcObjectiveEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcOccupantTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[707]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcOccupantTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[707]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcOccupantTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[707]); } -Ifc4x3_add2::IfcOccupantTypeEnum::IfcOccupantTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcOccupantTypeEnum::IfcOccupantTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcOccupantTypeEnum::IfcOccupantTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcOccupantTypeEnum::IfcOccupantTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcOccupantTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcOccupantTypeEnum::IfcOccupantTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3900,20 +4186,22 @@ Ifc4x3_add2::IfcOccupantTypeEnum::operator Ifc4x3_add2::IfcOccupantTypeEnum::Val return (Ifc4x3_add2::IfcOccupantTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcOpeningElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[714]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcOpeningElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[714]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcOpeningElementTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[714]); } -Ifc4x3_add2::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcOpeningElementTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3927,20 +4215,22 @@ Ifc4x3_add2::IfcOpeningElementTypeEnum::operator Ifc4x3_add2::IfcOpeningElementT return (Ifc4x3_add2::IfcOpeningElementTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcOutletTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[722]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcOutletTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[722]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcOutletTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[722]); } -Ifc4x3_add2::IfcOutletTypeEnum::IfcOutletTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcOutletTypeEnum::IfcOutletTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcOutletTypeEnum::IfcOutletTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcOutletTypeEnum::IfcOutletTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcOutletTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcOutletTypeEnum::IfcOutletTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3954,20 +4244,22 @@ Ifc4x3_add2::IfcOutletTypeEnum::operator Ifc4x3_add2::IfcOutletTypeEnum::Value() return (Ifc4x3_add2::IfcOutletTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcPavementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[729]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcPavementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[729]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcPavementTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[729]); } -Ifc4x3_add2::IfcPavementTypeEnum::IfcPavementTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcPavementTypeEnum::IfcPavementTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcPavementTypeEnum::IfcPavementTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcPavementTypeEnum::IfcPavementTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcPavementTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcPavementTypeEnum::IfcPavementTypeEnum::Class().lookup_enum_value((size_t)v); @@ -3981,20 +4273,22 @@ Ifc4x3_add2::IfcPavementTypeEnum::operator Ifc4x3_add2::IfcPavementTypeEnum::Val return (Ifc4x3_add2::IfcPavementTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[732]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[732]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[732]); } -Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4008,20 +4302,22 @@ Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::operator Ifc4x3_add2::IfcPerformance return (Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcPermeableCoveringOperationEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[733]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcPermeableCoveringOperationEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[733]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[733]); } -Ifc4x3_add2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcPermeableCoveringOperationEnum::ToString(Value v) { return Ifc4x3_add2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum::Class().lookup_enum_value((size_t)v); @@ -4035,20 +4331,22 @@ Ifc4x3_add2::IfcPermeableCoveringOperationEnum::operator Ifc4x3_add2::IfcPermeab return (Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcPermitTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[736]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcPermitTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[736]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcPermitTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[736]); } -Ifc4x3_add2::IfcPermitTypeEnum::IfcPermitTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcPermitTypeEnum::IfcPermitTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcPermitTypeEnum::IfcPermitTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcPermitTypeEnum::IfcPermitTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcPermitTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcPermitTypeEnum::IfcPermitTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4062,20 +4360,22 @@ Ifc4x3_add2::IfcPermitTypeEnum::operator Ifc4x3_add2::IfcPermitTypeEnum::Value() return (Ifc4x3_add2::IfcPermitTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcPhysicalOrVirtualEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[741]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcPhysicalOrVirtualEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[741]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[741]); } -Ifc4x3_add2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcPhysicalOrVirtualEnum::ToString(Value v) { return Ifc4x3_add2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum::Class().lookup_enum_value((size_t)v); @@ -4089,20 +4389,22 @@ Ifc4x3_add2::IfcPhysicalOrVirtualEnum::operator Ifc4x3_add2::IfcPhysicalOrVirtua return (Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcPileConstructionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[745]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcPileConstructionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[745]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcPileConstructionEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[745]); } -Ifc4x3_add2::IfcPileConstructionEnum::IfcPileConstructionEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcPileConstructionEnum::IfcPileConstructionEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcPileConstructionEnum::IfcPileConstructionEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcPileConstructionEnum::IfcPileConstructionEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcPileConstructionEnum::ToString(Value v) { return Ifc4x3_add2::IfcPileConstructionEnum::IfcPileConstructionEnum::Class().lookup_enum_value((size_t)v); @@ -4116,20 +4418,22 @@ Ifc4x3_add2::IfcPileConstructionEnum::operator Ifc4x3_add2::IfcPileConstructionE return (Ifc4x3_add2::IfcPileConstructionEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcPileTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[747]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcPileTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[747]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcPileTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[747]); } -Ifc4x3_add2::IfcPileTypeEnum::IfcPileTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcPileTypeEnum::IfcPileTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcPileTypeEnum::IfcPileTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcPileTypeEnum::IfcPileTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcPileTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcPileTypeEnum::IfcPileTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4143,20 +4447,22 @@ Ifc4x3_add2::IfcPileTypeEnum::operator Ifc4x3_add2::IfcPileTypeEnum::Value() con return (Ifc4x3_add2::IfcPileTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcPipeFittingTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[750]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcPipeFittingTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[750]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcPipeFittingTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[750]); } -Ifc4x3_add2::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcPipeFittingTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4170,20 +4476,22 @@ Ifc4x3_add2::IfcPipeFittingTypeEnum::operator Ifc4x3_add2::IfcPipeFittingTypeEnu return (Ifc4x3_add2::IfcPipeFittingTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcPipeSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[753]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcPipeSegmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[753]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcPipeSegmentTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[753]); } -Ifc4x3_add2::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcPipeSegmentTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4197,20 +4505,22 @@ Ifc4x3_add2::IfcPipeSegmentTypeEnum::operator Ifc4x3_add2::IfcPipeSegmentTypeEnu return (Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcPlateTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[763]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcPlateTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[763]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcPlateTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[763]); } -Ifc4x3_add2::IfcPlateTypeEnum::IfcPlateTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcPlateTypeEnum::IfcPlateTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcPlateTypeEnum::IfcPlateTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcPlateTypeEnum::IfcPlateTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcPlateTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcPlateTypeEnum::IfcPlateTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4224,20 +4534,22 @@ Ifc4x3_add2::IfcPlateTypeEnum::operator Ifc4x3_add2::IfcPlateTypeEnum::Value() c return (Ifc4x3_add2::IfcPlateTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[788]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[788]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[788]); } -Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::ToString(Value v) { return Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation::Class().lookup_enum_value((size_t)v); @@ -4251,20 +4563,22 @@ Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::operator Ifc4x3_add2::IfcPr return (Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcProcedureTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[797]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcProcedureTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[797]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcProcedureTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[797]); } -Ifc4x3_add2::IfcProcedureTypeEnum::IfcProcedureTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcProcedureTypeEnum::IfcProcedureTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcProcedureTypeEnum::IfcProcedureTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcProcedureTypeEnum::IfcProcedureTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcProcedureTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcProcedureTypeEnum::IfcProcedureTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4278,20 +4592,22 @@ Ifc4x3_add2::IfcProcedureTypeEnum::operator Ifc4x3_add2::IfcProcedureTypeEnum::V return (Ifc4x3_add2::IfcProcedureTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcProfileTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[807]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcProfileTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[807]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcProfileTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[807]); } -Ifc4x3_add2::IfcProfileTypeEnum::IfcProfileTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcProfileTypeEnum::IfcProfileTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcProfileTypeEnum::IfcProfileTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcProfileTypeEnum::IfcProfileTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcProfileTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcProfileTypeEnum::IfcProfileTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4305,20 +4621,22 @@ Ifc4x3_add2::IfcProfileTypeEnum::operator Ifc4x3_add2::IfcProfileTypeEnum::Value return (Ifc4x3_add2::IfcProfileTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcProjectOrderTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[815]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcProjectOrderTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[815]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcProjectOrderTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[815]); } -Ifc4x3_add2::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcProjectOrderTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4332,20 +4650,22 @@ Ifc4x3_add2::IfcProjectOrderTypeEnum::operator Ifc4x3_add2::IfcProjectOrderTypeE return (Ifc4x3_add2::IfcProjectOrderTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[810]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[810]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[810]); } -Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::ToString(Value v) { return Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum::Class().lookup_enum_value((size_t)v); @@ -4359,20 +4679,22 @@ Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::operator Ifc4x3_add2::IfcProjectedOrT return (Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcProjectionElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[812]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcProjectionElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[812]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcProjectionElementTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[812]); } -Ifc4x3_add2::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcProjectionElementTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4386,20 +4708,22 @@ Ifc4x3_add2::IfcProjectionElementTypeEnum::operator Ifc4x3_add2::IfcProjectionEl return (Ifc4x3_add2::IfcProjectionElementTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[830]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[830]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[830]); } -Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4413,20 +4737,22 @@ Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::operator Ifc4x3_add2::IfcPropertySe return (Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[838]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[838]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[838]); } -Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4440,20 +4766,22 @@ Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::operator Ifc4x3_add2::IfcP return (Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[840]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[840]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[840]); } -Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4467,20 +4795,22 @@ Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::operator Ifc4x3_add2::IfcProtectiveDev return (Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcPumpTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[843]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcPumpTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[843]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcPumpTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[843]); } -Ifc4x3_add2::IfcPumpTypeEnum::IfcPumpTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcPumpTypeEnum::IfcPumpTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcPumpTypeEnum::IfcPumpTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcPumpTypeEnum::IfcPumpTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcPumpTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcPumpTypeEnum::IfcPumpTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4494,20 +4824,22 @@ Ifc4x3_add2::IfcPumpTypeEnum::operator Ifc4x3_add2::IfcPumpTypeEnum::Value() con return (Ifc4x3_add2::IfcPumpTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcRailTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[858]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcRailTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[858]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcRailTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[858]); } -Ifc4x3_add2::IfcRailTypeEnum::IfcRailTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcRailTypeEnum::IfcRailTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcRailTypeEnum::IfcRailTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcRailTypeEnum::IfcRailTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcRailTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcRailTypeEnum::IfcRailTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4521,20 +4853,22 @@ Ifc4x3_add2::IfcRailTypeEnum::operator Ifc4x3_add2::IfcRailTypeEnum::Value() con return (Ifc4x3_add2::IfcRailTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcRailingTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[856]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcRailingTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[856]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcRailingTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[856]); } -Ifc4x3_add2::IfcRailingTypeEnum::IfcRailingTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcRailingTypeEnum::IfcRailingTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcRailingTypeEnum::IfcRailingTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcRailingTypeEnum::IfcRailingTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcRailingTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcRailingTypeEnum::IfcRailingTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4548,20 +4882,22 @@ Ifc4x3_add2::IfcRailingTypeEnum::operator Ifc4x3_add2::IfcRailingTypeEnum::Value return (Ifc4x3_add2::IfcRailingTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcRailwayPartTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[861]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcRailwayPartTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[861]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcRailwayPartTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[861]); } -Ifc4x3_add2::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcRailwayPartTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4575,20 +4911,22 @@ Ifc4x3_add2::IfcRailwayPartTypeEnum::operator Ifc4x3_add2::IfcRailwayPartTypeEnu return (Ifc4x3_add2::IfcRailwayPartTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcRailwayTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[862]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcRailwayTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[862]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcRailwayTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[862]); } -Ifc4x3_add2::IfcRailwayTypeEnum::IfcRailwayTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcRailwayTypeEnum::IfcRailwayTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcRailwayTypeEnum::IfcRailwayTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcRailwayTypeEnum::IfcRailwayTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcRailwayTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcRailwayTypeEnum::IfcRailwayTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4602,20 +4940,22 @@ Ifc4x3_add2::IfcRailwayTypeEnum::operator Ifc4x3_add2::IfcRailwayTypeEnum::Value return (Ifc4x3_add2::IfcRailwayTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcRampFlightTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[866]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcRampFlightTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[866]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcRampFlightTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[866]); } -Ifc4x3_add2::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcRampFlightTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4629,20 +4969,22 @@ Ifc4x3_add2::IfcRampFlightTypeEnum::operator Ifc4x3_add2::IfcRampFlightTypeEnum: return (Ifc4x3_add2::IfcRampFlightTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcRampTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[868]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcRampTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[868]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcRampTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[868]); } -Ifc4x3_add2::IfcRampTypeEnum::IfcRampTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcRampTypeEnum::IfcRampTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcRampTypeEnum::IfcRampTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcRampTypeEnum::IfcRampTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcRampTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcRampTypeEnum::IfcRampTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4656,20 +4998,22 @@ Ifc4x3_add2::IfcRampTypeEnum::operator Ifc4x3_add2::IfcRampTypeEnum::Value() con return (Ifc4x3_add2::IfcRampTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcRecurrenceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[878]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcRecurrenceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[878]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcRecurrenceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[878]); } -Ifc4x3_add2::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcRecurrenceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4683,20 +5027,22 @@ Ifc4x3_add2::IfcRecurrenceTypeEnum::operator Ifc4x3_add2::IfcRecurrenceTypeEnum: return (Ifc4x3_add2::IfcRecurrenceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcReferentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[881]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcReferentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[881]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcReferentTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[881]); } -Ifc4x3_add2::IfcReferentTypeEnum::IfcReferentTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcReferentTypeEnum::IfcReferentTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcReferentTypeEnum::IfcReferentTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcReferentTypeEnum::IfcReferentTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcReferentTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcReferentTypeEnum::IfcReferentTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4710,20 +5056,22 @@ Ifc4x3_add2::IfcReferentTypeEnum::operator Ifc4x3_add2::IfcReferentTypeEnum::Val return (Ifc4x3_add2::IfcReferentTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcReflectanceMethodEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[882]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcReflectanceMethodEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[882]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcReflectanceMethodEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[882]); } -Ifc4x3_add2::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcReflectanceMethodEnum::ToString(Value v) { return Ifc4x3_add2::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum::Class().lookup_enum_value((size_t)v); @@ -4737,20 +5085,22 @@ Ifc4x3_add2::IfcReflectanceMethodEnum::operator Ifc4x3_add2::IfcReflectanceMetho return (Ifc4x3_add2::IfcReflectanceMethodEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcReinforcedSoilTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[885]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcReinforcedSoilTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[885]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[885]); } -Ifc4x3_add2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcReinforcedSoilTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4764,20 +5114,22 @@ Ifc4x3_add2::IfcReinforcedSoilTypeEnum::operator Ifc4x3_add2::IfcReinforcedSoilT return (Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcReinforcingBarRoleEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[889]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcReinforcingBarRoleEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[889]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcReinforcingBarRoleEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[889]); } -Ifc4x3_add2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcReinforcingBarRoleEnum::ToString(Value v) { return Ifc4x3_add2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum::Class().lookup_enum_value((size_t)v); @@ -4791,20 +5143,22 @@ Ifc4x3_add2::IfcReinforcingBarRoleEnum::operator Ifc4x3_add2::IfcReinforcingBarR return (Ifc4x3_add2::IfcReinforcingBarRoleEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[890]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[890]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[890]); } -Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::ToString(Value v) { return Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum::Class().lookup_enum_value((size_t)v); @@ -4818,20 +5172,22 @@ Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::operator Ifc4x3_add2::IfcReinforcingB return (Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcReinforcingBarTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[892]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcReinforcingBarTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[892]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcReinforcingBarTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[892]); } -Ifc4x3_add2::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcReinforcingBarTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4845,20 +5201,22 @@ Ifc4x3_add2::IfcReinforcingBarTypeEnum::operator Ifc4x3_add2::IfcReinforcingBarT return (Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcReinforcingMeshTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[897]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcReinforcingMeshTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[897]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[897]); } -Ifc4x3_add2::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcReinforcingMeshTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4872,20 +5230,22 @@ Ifc4x3_add2::IfcReinforcingMeshTypeEnum::operator Ifc4x3_add2::IfcReinforcingMes return (Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcRoadPartTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[968]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcRoadPartTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[968]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcRoadPartTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[968]); } -Ifc4x3_add2::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcRoadPartTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4899,20 +5259,22 @@ Ifc4x3_add2::IfcRoadPartTypeEnum::operator Ifc4x3_add2::IfcRoadPartTypeEnum::Val return (Ifc4x3_add2::IfcRoadPartTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcRoadTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[969]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcRoadTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[969]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcRoadTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[969]); } -Ifc4x3_add2::IfcRoadTypeEnum::IfcRoadTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcRoadTypeEnum::IfcRoadTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcRoadTypeEnum::IfcRoadTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcRoadTypeEnum::IfcRoadTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcRoadTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcRoadTypeEnum::IfcRoadTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4926,20 +5288,22 @@ Ifc4x3_add2::IfcRoadTypeEnum::operator Ifc4x3_add2::IfcRoadTypeEnum::Value() con return (Ifc4x3_add2::IfcRoadTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcRoleEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[970]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcRoleEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[970]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcRoleEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[970]); } -Ifc4x3_add2::IfcRoleEnum::IfcRoleEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcRoleEnum::IfcRoleEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcRoleEnum::IfcRoleEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcRoleEnum::IfcRoleEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcRoleEnum::ToString(Value v) { return Ifc4x3_add2::IfcRoleEnum::IfcRoleEnum::Class().lookup_enum_value((size_t)v); @@ -4953,20 +5317,22 @@ Ifc4x3_add2::IfcRoleEnum::operator Ifc4x3_add2::IfcRoleEnum::Value() const { return (Ifc4x3_add2::IfcRoleEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcRoofTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[973]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcRoofTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[973]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcRoofTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[973]); } -Ifc4x3_add2::IfcRoofTypeEnum::IfcRoofTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcRoofTypeEnum::IfcRoofTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcRoofTypeEnum::IfcRoofTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcRoofTypeEnum::IfcRoofTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcRoofTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcRoofTypeEnum::IfcRoofTypeEnum::Class().lookup_enum_value((size_t)v); @@ -4980,20 +5346,22 @@ Ifc4x3_add2::IfcRoofTypeEnum::operator Ifc4x3_add2::IfcRoofTypeEnum::Value() con return (Ifc4x3_add2::IfcRoofTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSIPrefix::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1023]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSIPrefix::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1023]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSIPrefix::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1023]); } -Ifc4x3_add2::IfcSIPrefix::IfcSIPrefix(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSIPrefix::IfcSIPrefix(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSIPrefix::IfcSIPrefix(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSIPrefix::IfcSIPrefix(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSIPrefix::ToString(Value v) { return Ifc4x3_add2::IfcSIPrefix::IfcSIPrefix::Class().lookup_enum_value((size_t)v); @@ -5007,20 +5375,22 @@ Ifc4x3_add2::IfcSIPrefix::operator Ifc4x3_add2::IfcSIPrefix::Value() const { return (Ifc4x3_add2::IfcSIPrefix::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSIUnitName::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1026]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSIUnitName::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1026]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSIUnitName::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1026]); } -Ifc4x3_add2::IfcSIUnitName::IfcSIUnitName(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSIUnitName::IfcSIUnitName(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSIUnitName::IfcSIUnitName(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSIUnitName::IfcSIUnitName(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSIUnitName::ToString(Value v) { return Ifc4x3_add2::IfcSIUnitName::IfcSIUnitName::Class().lookup_enum_value((size_t)v); @@ -5034,20 +5404,22 @@ Ifc4x3_add2::IfcSIUnitName::operator Ifc4x3_add2::IfcSIUnitName::Value() const { return (Ifc4x3_add2::IfcSIUnitName::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[982]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[982]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[982]); } -Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5061,20 +5433,22 @@ Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::operator Ifc4x3_add2::IfcSanitaryTermi return (Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSectionTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[994]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSectionTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[994]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSectionTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[994]); } -Ifc4x3_add2::IfcSectionTypeEnum::IfcSectionTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSectionTypeEnum::IfcSectionTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSectionTypeEnum::IfcSectionTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSectionTypeEnum::IfcSectionTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSectionTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcSectionTypeEnum::IfcSectionTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5088,20 +5462,22 @@ Ifc4x3_add2::IfcSectionTypeEnum::operator Ifc4x3_add2::IfcSectionTypeEnum::Value return (Ifc4x3_add2::IfcSectionTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSensorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1000]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSensorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1000]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSensorTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1000]); } -Ifc4x3_add2::IfcSensorTypeEnum::IfcSensorTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSensorTypeEnum::IfcSensorTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSensorTypeEnum::IfcSensorTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSensorTypeEnum::IfcSensorTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSensorTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcSensorTypeEnum::IfcSensorTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5115,20 +5491,22 @@ Ifc4x3_add2::IfcSensorTypeEnum::operator Ifc4x3_add2::IfcSensorTypeEnum::Value() return (Ifc4x3_add2::IfcSensorTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSequenceEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1001]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSequenceEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1001]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSequenceEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1001]); } -Ifc4x3_add2::IfcSequenceEnum::IfcSequenceEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSequenceEnum::IfcSequenceEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSequenceEnum::IfcSequenceEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSequenceEnum::IfcSequenceEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSequenceEnum::ToString(Value v) { return Ifc4x3_add2::IfcSequenceEnum::IfcSequenceEnum::Class().lookup_enum_value((size_t)v); @@ -5142,20 +5520,22 @@ Ifc4x3_add2::IfcSequenceEnum::operator Ifc4x3_add2::IfcSequenceEnum::Value() con return (Ifc4x3_add2::IfcSequenceEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcShadingDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1005]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcShadingDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1005]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcShadingDeviceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1005]); } -Ifc4x3_add2::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcShadingDeviceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5169,20 +5549,22 @@ Ifc4x3_add2::IfcShadingDeviceTypeEnum::operator Ifc4x3_add2::IfcShadingDeviceTyp return (Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSignTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1017]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSignTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1017]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSignTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1017]); } -Ifc4x3_add2::IfcSignTypeEnum::IfcSignTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSignTypeEnum::IfcSignTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSignTypeEnum::IfcSignTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSignTypeEnum::IfcSignTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSignTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcSignTypeEnum::IfcSignTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5196,20 +5578,22 @@ Ifc4x3_add2::IfcSignTypeEnum::operator Ifc4x3_add2::IfcSignTypeEnum::Value() con return (Ifc4x3_add2::IfcSignTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSignalTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1015]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSignalTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1015]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSignalTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1015]); } -Ifc4x3_add2::IfcSignalTypeEnum::IfcSignalTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSignalTypeEnum::IfcSignalTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSignalTypeEnum::IfcSignalTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSignalTypeEnum::IfcSignalTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSignalTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcSignalTypeEnum::IfcSignalTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5223,20 +5607,22 @@ Ifc4x3_add2::IfcSignalTypeEnum::operator Ifc4x3_add2::IfcSignalTypeEnum::Value() return (Ifc4x3_add2::IfcSignalTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1020]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1020]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1020]); } -Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5250,20 +5636,22 @@ Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::operator Ifc4x3_add2::IfcSimpleP return (Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSlabTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1030]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSlabTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1030]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSlabTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1030]); } -Ifc4x3_add2::IfcSlabTypeEnum::IfcSlabTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSlabTypeEnum::IfcSlabTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSlabTypeEnum::IfcSlabTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSlabTypeEnum::IfcSlabTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSlabTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcSlabTypeEnum::IfcSlabTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5277,20 +5665,22 @@ Ifc4x3_add2::IfcSlabTypeEnum::operator Ifc4x3_add2::IfcSlabTypeEnum::Value() con return (Ifc4x3_add2::IfcSlabTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSolarDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1034]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSolarDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1034]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSolarDeviceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1034]); } -Ifc4x3_add2::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSolarDeviceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5304,20 +5694,22 @@ Ifc4x3_add2::IfcSolarDeviceTypeEnum::operator Ifc4x3_add2::IfcSolarDeviceTypeEnu return (Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSpaceHeaterTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1046]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSpaceHeaterTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1046]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1046]); } -Ifc4x3_add2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSpaceHeaterTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5331,20 +5723,22 @@ Ifc4x3_add2::IfcSpaceHeaterTypeEnum::operator Ifc4x3_add2::IfcSpaceHeaterTypeEnu return (Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSpaceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1048]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSpaceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1048]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSpaceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1048]); } -Ifc4x3_add2::IfcSpaceTypeEnum::IfcSpaceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSpaceTypeEnum::IfcSpaceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSpaceTypeEnum::IfcSpaceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSpaceTypeEnum::IfcSpaceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSpaceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcSpaceTypeEnum::IfcSpaceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5358,20 +5752,22 @@ Ifc4x3_add2::IfcSpaceTypeEnum::operator Ifc4x3_add2::IfcSpaceTypeEnum::Value() c return (Ifc4x3_add2::IfcSpaceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSpatialZoneTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1056]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSpatialZoneTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1056]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSpatialZoneTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1056]); } -Ifc4x3_add2::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSpatialZoneTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5385,20 +5781,22 @@ Ifc4x3_add2::IfcSpatialZoneTypeEnum::operator Ifc4x3_add2::IfcSpatialZoneTypeEnu return (Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcStackTerminalTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1066]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcStackTerminalTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1066]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcStackTerminalTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1066]); } -Ifc4x3_add2::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcStackTerminalTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5412,20 +5810,22 @@ Ifc4x3_add2::IfcStackTerminalTypeEnum::operator Ifc4x3_add2::IfcStackTerminalTyp return (Ifc4x3_add2::IfcStackTerminalTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcStairFlightTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1070]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcStairFlightTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1070]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcStairFlightTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1070]); } -Ifc4x3_add2::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcStairFlightTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5439,20 +5839,22 @@ Ifc4x3_add2::IfcStairFlightTypeEnum::operator Ifc4x3_add2::IfcStairFlightTypeEnu return (Ifc4x3_add2::IfcStairFlightTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcStairTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1072]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcStairTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1072]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcStairTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1072]); } -Ifc4x3_add2::IfcStairTypeEnum::IfcStairTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcStairTypeEnum::IfcStairTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcStairTypeEnum::IfcStairTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcStairTypeEnum::IfcStairTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcStairTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcStairTypeEnum::IfcStairTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5466,20 +5868,22 @@ Ifc4x3_add2::IfcStairTypeEnum::operator Ifc4x3_add2::IfcStairTypeEnum::Value() c return (Ifc4x3_add2::IfcStairTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcStateEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1073]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcStateEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1073]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcStateEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1073]); } -Ifc4x3_add2::IfcStateEnum::IfcStateEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcStateEnum::IfcStateEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcStateEnum::IfcStateEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcStateEnum::IfcStateEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcStateEnum::ToString(Value v) { return Ifc4x3_add2::IfcStateEnum::IfcStateEnum::Class().lookup_enum_value((size_t)v); @@ -5493,20 +5897,22 @@ Ifc4x3_add2::IfcStateEnum::operator Ifc4x3_add2::IfcStateEnum::Value() const { return (Ifc4x3_add2::IfcStateEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1082]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1082]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1082]); } -Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5520,20 +5926,22 @@ Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::operator Ifc4x3_add2::IfcStruct return (Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1085]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1085]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1085]); } -Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5547,20 +5955,22 @@ Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::operator Ifc4x3_add2::IfcStructur return (Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1111]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1111]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1111]); } -Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5574,20 +5984,22 @@ Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::operator Ifc4x3_add2::IfcStru return (Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1114]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1114]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1114]); } -Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5601,20 +6013,22 @@ Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::operator Ifc4x3_add2::IfcStruct return (Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSubContractResourceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1122]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSubContractResourceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1122]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSubContractResourceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1122]); } -Ifc4x3_add2::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSubContractResourceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5628,20 +6042,22 @@ Ifc4x3_add2::IfcSubContractResourceTypeEnum::operator Ifc4x3_add2::IfcSubContrac return (Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1128]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1128]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1128]); } -Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5655,20 +6071,22 @@ Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::operator Ifc4x3_add2::IfcSurfaceFeatureT return (Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSurfaceSide::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1133]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSurfaceSide::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1133]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSurfaceSide::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1133]); } -Ifc4x3_add2::IfcSurfaceSide::IfcSurfaceSide(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSurfaceSide::IfcSurfaceSide(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSurfaceSide::IfcSurfaceSide(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSurfaceSide::IfcSurfaceSide(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSurfaceSide::ToString(Value v) { return Ifc4x3_add2::IfcSurfaceSide::IfcSurfaceSide::Class().lookup_enum_value((size_t)v); @@ -5682,20 +6100,22 @@ Ifc4x3_add2::IfcSurfaceSide::operator Ifc4x3_add2::IfcSurfaceSide::Value() const return (Ifc4x3_add2::IfcSurfaceSide::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1148]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1148]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1148]); } -Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5709,20 +6129,22 @@ Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::operator Ifc4x3_add2::IfcSwitchingDevic return (Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1152]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1152]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1152]); } -Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5736,20 +6158,22 @@ Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::operator Ifc4x3_add2::IfcSystemF return (Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcTankTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1158]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcTankTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1158]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcTankTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1158]); } -Ifc4x3_add2::IfcTankTypeEnum::IfcTankTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcTankTypeEnum::IfcTankTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcTankTypeEnum::IfcTankTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcTankTypeEnum::IfcTankTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcTankTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcTankTypeEnum::IfcTankTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5763,20 +6187,22 @@ Ifc4x3_add2::IfcTankTypeEnum::operator Ifc4x3_add2::IfcTankTypeEnum::Value() con return (Ifc4x3_add2::IfcTankTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcTaskDurationEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1160]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcTaskDurationEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1160]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcTaskDurationEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1160]); } -Ifc4x3_add2::IfcTaskDurationEnum::IfcTaskDurationEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcTaskDurationEnum::IfcTaskDurationEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcTaskDurationEnum::IfcTaskDurationEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcTaskDurationEnum::IfcTaskDurationEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcTaskDurationEnum::ToString(Value v) { return Ifc4x3_add2::IfcTaskDurationEnum::IfcTaskDurationEnum::Class().lookup_enum_value((size_t)v); @@ -5790,20 +6216,22 @@ Ifc4x3_add2::IfcTaskDurationEnum::operator Ifc4x3_add2::IfcTaskDurationEnum::Val return (Ifc4x3_add2::IfcTaskDurationEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcTaskTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1164]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcTaskTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1164]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcTaskTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1164]); } -Ifc4x3_add2::IfcTaskTypeEnum::IfcTaskTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcTaskTypeEnum::IfcTaskTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcTaskTypeEnum::IfcTaskTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcTaskTypeEnum::IfcTaskTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcTaskTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcTaskTypeEnum::IfcTaskTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5817,20 +6245,22 @@ Ifc4x3_add2::IfcTaskTypeEnum::operator Ifc4x3_add2::IfcTaskTypeEnum::Value() con return (Ifc4x3_add2::IfcTaskTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcTendonAnchorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1171]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcTendonAnchorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1171]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcTendonAnchorTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1171]); } -Ifc4x3_add2::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcTendonAnchorTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5844,20 +6274,22 @@ Ifc4x3_add2::IfcTendonAnchorTypeEnum::operator Ifc4x3_add2::IfcTendonAnchorTypeE return (Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcTendonConduitTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1174]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcTendonConduitTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1174]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcTendonConduitTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1174]); } -Ifc4x3_add2::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcTendonConduitTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5871,20 +6303,22 @@ Ifc4x3_add2::IfcTendonConduitTypeEnum::operator Ifc4x3_add2::IfcTendonConduitTyp return (Ifc4x3_add2::IfcTendonConduitTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcTendonTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1176]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcTendonTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1176]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcTendonTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1176]); } -Ifc4x3_add2::IfcTendonTypeEnum::IfcTendonTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcTendonTypeEnum::IfcTendonTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcTendonTypeEnum::IfcTendonTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcTendonTypeEnum::IfcTendonTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcTendonTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcTendonTypeEnum::IfcTendonTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5898,20 +6332,22 @@ Ifc4x3_add2::IfcTendonTypeEnum::operator Ifc4x3_add2::IfcTendonTypeEnum::Value() return (Ifc4x3_add2::IfcTendonTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcTextPath::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1186]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcTextPath::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1186]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcTextPath::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1186]); } -Ifc4x3_add2::IfcTextPath::IfcTextPath(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcTextPath::IfcTextPath(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcTextPath::IfcTextPath(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcTextPath::IfcTextPath(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcTextPath::ToString(Value v) { return Ifc4x3_add2::IfcTextPath::IfcTextPath::Class().lookup_enum_value((size_t)v); @@ -5925,20 +6361,22 @@ Ifc4x3_add2::IfcTextPath::operator Ifc4x3_add2::IfcTextPath::Value() const { return (Ifc4x3_add2::IfcTextPath::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1211]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1211]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1211]); } -Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5952,20 +6390,22 @@ Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::operator Ifc4x3_add2::IfcTimeSeriesDataT return (Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcTrackElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1220]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcTrackElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1220]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcTrackElementTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1220]); } -Ifc4x3_add2::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcTrackElementTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum::Class().lookup_enum_value((size_t)v); @@ -5979,20 +6419,22 @@ Ifc4x3_add2::IfcTrackElementTypeEnum::operator Ifc4x3_add2::IfcTrackElementTypeE return (Ifc4x3_add2::IfcTrackElementTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcTransformerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1223]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcTransformerTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1223]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcTransformerTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1223]); } -Ifc4x3_add2::IfcTransformerTypeEnum::IfcTransformerTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcTransformerTypeEnum::IfcTransformerTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcTransformerTypeEnum::IfcTransformerTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcTransformerTypeEnum::IfcTransformerTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcTransformerTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcTransformerTypeEnum::IfcTransformerTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6006,20 +6448,22 @@ Ifc4x3_add2::IfcTransformerTypeEnum::operator Ifc4x3_add2::IfcTransformerTypeEnu return (Ifc4x3_add2::IfcTransformerTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcTransitionCode::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1224]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcTransitionCode::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1224]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcTransitionCode::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1224]); } -Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcTransitionCode::ToString(Value v) { return Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode::Class().lookup_enum_value((size_t)v); @@ -6033,20 +6477,22 @@ Ifc4x3_add2::IfcTransitionCode::operator Ifc4x3_add2::IfcTransitionCode::Value() return (Ifc4x3_add2::IfcTransitionCode::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcTransportElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1230]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcTransportElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1230]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcTransportElementTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1230]); } -Ifc4x3_add2::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcTransportElementTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcTransportElementTypeEnum::IfcTransportElementTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6060,20 +6506,22 @@ Ifc4x3_add2::IfcTransportElementTypeEnum::operator Ifc4x3_add2::IfcTransportElem return (Ifc4x3_add2::IfcTransportElementTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcTrimmingPreference::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1235]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcTrimmingPreference::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1235]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcTrimmingPreference::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1235]); } -Ifc4x3_add2::IfcTrimmingPreference::IfcTrimmingPreference(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcTrimmingPreference::IfcTrimmingPreference(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcTrimmingPreference::IfcTrimmingPreference(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcTrimmingPreference::IfcTrimmingPreference(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcTrimmingPreference::ToString(Value v) { return Ifc4x3_add2::IfcTrimmingPreference::IfcTrimmingPreference::Class().lookup_enum_value((size_t)v); @@ -6087,20 +6535,22 @@ Ifc4x3_add2::IfcTrimmingPreference::operator Ifc4x3_add2::IfcTrimmingPreference: return (Ifc4x3_add2::IfcTrimmingPreference::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcTubeBundleTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1240]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcTubeBundleTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1240]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcTubeBundleTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1240]); } -Ifc4x3_add2::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcTubeBundleTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6114,20 +6564,22 @@ Ifc4x3_add2::IfcTubeBundleTypeEnum::operator Ifc4x3_add2::IfcTubeBundleTypeEnum: return (Ifc4x3_add2::IfcTubeBundleTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcUnitEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1253]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcUnitEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1253]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcUnitEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1253]); } -Ifc4x3_add2::IfcUnitEnum::IfcUnitEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcUnitEnum::IfcUnitEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcUnitEnum::IfcUnitEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcUnitEnum::IfcUnitEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcUnitEnum::ToString(Value v) { return Ifc4x3_add2::IfcUnitEnum::IfcUnitEnum::Class().lookup_enum_value((size_t)v); @@ -6141,20 +6593,22 @@ Ifc4x3_add2::IfcUnitEnum::operator Ifc4x3_add2::IfcUnitEnum::Value() const { return (Ifc4x3_add2::IfcUnitEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1248]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1248]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1248]); } -Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6168,20 +6622,22 @@ Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::operator Ifc4x3_add2::IfcUnitaryC return (Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1251]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1251]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1251]); } -Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6195,20 +6651,22 @@ Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::operator Ifc4x3_add2::IfcUnitaryEquipm return (Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcValveTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1259]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcValveTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1259]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcValveTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1259]); } -Ifc4x3_add2::IfcValveTypeEnum::IfcValveTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcValveTypeEnum::IfcValveTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcValveTypeEnum::IfcValveTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcValveTypeEnum::IfcValveTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcValveTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcValveTypeEnum::IfcValveTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6222,20 +6680,22 @@ Ifc4x3_add2::IfcValveTypeEnum::operator Ifc4x3_add2::IfcValveTypeEnum::Value() c return (Ifc4x3_add2::IfcValveTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcVehicleTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1265]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcVehicleTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1265]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcVehicleTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1265]); } -Ifc4x3_add2::IfcVehicleTypeEnum::IfcVehicleTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcVehicleTypeEnum::IfcVehicleTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcVehicleTypeEnum::IfcVehicleTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcVehicleTypeEnum::IfcVehicleTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcVehicleTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcVehicleTypeEnum::IfcVehicleTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6249,20 +6709,22 @@ Ifc4x3_add2::IfcVehicleTypeEnum::operator Ifc4x3_add2::IfcVehicleTypeEnum::Value return (Ifc4x3_add2::IfcVehicleTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcVibrationDamperTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1271]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcVibrationDamperTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1271]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcVibrationDamperTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1271]); } -Ifc4x3_add2::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcVibrationDamperTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6276,20 +6738,22 @@ Ifc4x3_add2::IfcVibrationDamperTypeEnum::operator Ifc4x3_add2::IfcVibrationDampe return (Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1274]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1274]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1274]); } -Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6303,20 +6767,22 @@ Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::operator Ifc4x3_add2::IfcVibrationIso return (Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcVirtualElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1276]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcVirtualElementTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1276]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcVirtualElementTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1276]); } -Ifc4x3_add2::IfcVirtualElementTypeEnum::IfcVirtualElementTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcVirtualElementTypeEnum::IfcVirtualElementTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcVirtualElementTypeEnum::IfcVirtualElementTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcVirtualElementTypeEnum::IfcVirtualElementTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcVirtualElementTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcVirtualElementTypeEnum::IfcVirtualElementTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6330,20 +6796,22 @@ Ifc4x3_add2::IfcVirtualElementTypeEnum::operator Ifc4x3_add2::IfcVirtualElementT return (Ifc4x3_add2::IfcVirtualElementTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcVoidingFeatureTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1279]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcVoidingFeatureTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1279]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1279]); } -Ifc4x3_add2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcVoidingFeatureTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6357,20 +6825,22 @@ Ifc4x3_add2::IfcVoidingFeatureTypeEnum::operator Ifc4x3_add2::IfcVoidingFeatureT return (Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcWallTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1285]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcWallTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1285]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcWallTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1285]); } -Ifc4x3_add2::IfcWallTypeEnum::IfcWallTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcWallTypeEnum::IfcWallTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcWallTypeEnum::IfcWallTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcWallTypeEnum::IfcWallTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcWallTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcWallTypeEnum::IfcWallTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6384,20 +6854,22 @@ Ifc4x3_add2::IfcWallTypeEnum::operator Ifc4x3_add2::IfcWallTypeEnum::Value() con return (Ifc4x3_add2::IfcWallTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcWasteTerminalTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1291]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcWasteTerminalTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1291]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcWasteTerminalTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1291]); } -Ifc4x3_add2::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcWasteTerminalTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6411,20 +6883,22 @@ Ifc4x3_add2::IfcWasteTerminalTypeEnum::operator Ifc4x3_add2::IfcWasteTerminalTyp return (Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcWindowPanelOperationEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1296]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcWindowPanelOperationEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1296]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcWindowPanelOperationEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1296]); } -Ifc4x3_add2::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcWindowPanelOperationEnum::ToString(Value v) { return Ifc4x3_add2::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum::Class().lookup_enum_value((size_t)v); @@ -6438,20 +6912,22 @@ Ifc4x3_add2::IfcWindowPanelOperationEnum::operator Ifc4x3_add2::IfcWindowPanelOp return (Ifc4x3_add2::IfcWindowPanelOperationEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcWindowPanelPositionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1297]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcWindowPanelPositionEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1297]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcWindowPanelPositionEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1297]); } -Ifc4x3_add2::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcWindowPanelPositionEnum::ToString(Value v) { return Ifc4x3_add2::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum::Class().lookup_enum_value((size_t)v); @@ -6465,20 +6941,22 @@ Ifc4x3_add2::IfcWindowPanelPositionEnum::operator Ifc4x3_add2::IfcWindowPanelPos return (Ifc4x3_add2::IfcWindowPanelPositionEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcWindowTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1300]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcWindowTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1300]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcWindowTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1300]); } -Ifc4x3_add2::IfcWindowTypeEnum::IfcWindowTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcWindowTypeEnum::IfcWindowTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcWindowTypeEnum::IfcWindowTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcWindowTypeEnum::IfcWindowTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcWindowTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcWindowTypeEnum::IfcWindowTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6492,20 +6970,22 @@ Ifc4x3_add2::IfcWindowTypeEnum::operator Ifc4x3_add2::IfcWindowTypeEnum::Value() return (Ifc4x3_add2::IfcWindowTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcWindowTypePartitioningEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1301]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcWindowTypePartitioningEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1301]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcWindowTypePartitioningEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1301]); } -Ifc4x3_add2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcWindowTypePartitioningEnum::ToString(Value v) { return Ifc4x3_add2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum::Class().lookup_enum_value((size_t)v); @@ -6519,20 +6999,22 @@ Ifc4x3_add2::IfcWindowTypePartitioningEnum::operator Ifc4x3_add2::IfcWindowTypeP return (Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcWorkCalendarTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1303]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcWorkCalendarTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1303]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcWorkCalendarTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1303]); } -Ifc4x3_add2::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcWorkCalendarTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6546,20 +7028,22 @@ Ifc4x3_add2::IfcWorkCalendarTypeEnum::operator Ifc4x3_add2::IfcWorkCalendarTypeE return (Ifc4x3_add2::IfcWorkCalendarTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcWorkPlanTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1306]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcWorkPlanTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1306]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcWorkPlanTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1306]); } -Ifc4x3_add2::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcWorkPlanTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6573,20 +7057,22 @@ Ifc4x3_add2::IfcWorkPlanTypeEnum::operator Ifc4x3_add2::IfcWorkPlanTypeEnum::Val return (Ifc4x3_add2::IfcWorkPlanTypeEnum::Value) ((EnumerationReference) get_attribute_value(0)).index(); } -const IfcParse::enumeration_type& Ifc4x3_add2::IfcWorkScheduleTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1308]); } +// const IfcParse::enumeration_type& Ifc4x3_add2::IfcWorkScheduleTypeEnum::declaration() const { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1308]); } const IfcParse::enumeration_type& Ifc4x3_add2::IfcWorkScheduleTypeEnum::Class() { return *((IfcParse::enumeration_type*)IFC4X3_ADD2_types[1308]); } -Ifc4x3_add2::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(IfcEntityInstanceData&& e) - : IfcBaseType(std::move(e)) +/* +Ifc4x3_add2::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(const std::weak_ptr& e) + : express::DeclaredType(e) {} Ifc4x3_add2::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(Value v) { - set_attribute_value(0, EnumerationReference(&declaration(), static_cast(v))); + set_attribute_value(0, EnumerationReference(&Class(), static_cast(v))); } Ifc4x3_add2::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(const std::string& v) { - set_attribute_value(0, EnumerationReference(&declaration(), declaration().lookup_enum_offset(v))); + set_attribute_value(0, EnumerationReference(&Class(), Class().lookup_enum_offset(v))); } +*/ const char* Ifc4x3_add2::IfcWorkScheduleTypeEnum::ToString(Value v) { return Ifc4x3_add2::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum::Class().lookup_enum_value((size_t)v); @@ -6725,11387 +7211,10991 @@ const IfcParse::select_type& Ifc4x3_add2::IfcWarpingStiffnessSelect::Class() { r // Function implementations for IfcAbsorbedDoseMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcAbsorbedDoseMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[0]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcAbsorbedDoseMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[0]); } -Ifc4x3_add2::IfcAbsorbedDoseMeasure::IfcAbsorbedDoseMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcAbsorbedDoseMeasure::IfcAbsorbedDoseMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcAbsorbedDoseMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcAccelerationMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcAccelerationMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcAccelerationMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1]); } -Ifc4x3_add2::IfcAccelerationMeasure::IfcAccelerationMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcAccelerationMeasure::IfcAccelerationMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcAccelerationMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcAmountOfSubstanceMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcAmountOfSubstanceMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[42]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcAmountOfSubstanceMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[42]); } -Ifc4x3_add2::IfcAmountOfSubstanceMeasure::IfcAmountOfSubstanceMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcAmountOfSubstanceMeasure::IfcAmountOfSubstanceMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcAmountOfSubstanceMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcAngularVelocityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcAngularVelocityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[45]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcAngularVelocityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[45]); } -Ifc4x3_add2::IfcAngularVelocityMeasure::IfcAngularVelocityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcAngularVelocityMeasure::IfcAngularVelocityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcAngularVelocityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcArcIndex const IfcParse::type_declaration& Ifc4x3_add2::IfcArcIndex::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[57]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcArcIndex::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[57]); } -Ifc4x3_add2::IfcArcIndex::IfcArcIndex(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcArcIndex::IfcArcIndex(std::vector< int > /*[3:3]*/ v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcArcIndex::operator std::vector< int > /*[3:3]*/() const { return get_attribute_value(0); } // Function implementations for IfcAreaDensityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcAreaDensityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[58]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcAreaDensityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[58]); } -Ifc4x3_add2::IfcAreaDensityMeasure::IfcAreaDensityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcAreaDensityMeasure::IfcAreaDensityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcAreaDensityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcAreaMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcAreaMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[59]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcAreaMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[59]); } -Ifc4x3_add2::IfcAreaMeasure::IfcAreaMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcAreaMeasure::IfcAreaMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcAreaMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcBinary const IfcParse::type_declaration& Ifc4x3_add2::IfcBinary::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[80]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcBinary::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[80]); } -Ifc4x3_add2::IfcBinary::IfcBinary(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcBinary::IfcBinary(boost::dynamic_bitset<> v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcBinary::operator boost::dynamic_bitset<>() const { return get_attribute_value(0); } // Function implementations for IfcBoolean const IfcParse::type_declaration& Ifc4x3_add2::IfcBoolean::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[86]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcBoolean::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[86]); } -Ifc4x3_add2::IfcBoolean::IfcBoolean(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcBoolean::IfcBoolean(bool v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcBoolean::operator bool() const { return get_attribute_value(0); } // Function implementations for IfcBoxAlignment const IfcParse::type_declaration& Ifc4x3_add2::IfcBoxAlignment::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[101]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcBoxAlignment::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[101]); } -Ifc4x3_add2::IfcBoxAlignment::IfcBoxAlignment(IfcEntityInstanceData&& e) : IfcLabel(std::move(e)) { } -Ifc4x3_add2::IfcBoxAlignment::IfcBoxAlignment(std::string v) : IfcLabel(v) { } Ifc4x3_add2::IfcBoxAlignment::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcCardinalPointReference const IfcParse::type_declaration& Ifc4x3_add2::IfcCardinalPointReference::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[145]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcCardinalPointReference::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[145]); } -Ifc4x3_add2::IfcCardinalPointReference::IfcCardinalPointReference(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcCardinalPointReference::IfcCardinalPointReference(int v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcCardinalPointReference::operator int() const { return get_attribute_value(0); } // Function implementations for IfcComplexNumber const IfcParse::type_declaration& Ifc4x3_add2::IfcComplexNumber::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[188]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcComplexNumber::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[188]); } -Ifc4x3_add2::IfcComplexNumber::IfcComplexNumber(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcComplexNumber::IfcComplexNumber(std::vector< double > /*[1:2]*/ v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcComplexNumber::operator std::vector< double > /*[1:2]*/() const { return get_attribute_value(0); } // Function implementations for IfcCompoundPlaneAngleMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcCompoundPlaneAngleMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[196]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcCompoundPlaneAngleMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[196]); } -Ifc4x3_add2::IfcCompoundPlaneAngleMeasure::IfcCompoundPlaneAngleMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcCompoundPlaneAngleMeasure::IfcCompoundPlaneAngleMeasure(std::vector< int > /*[3:4]*/ v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcCompoundPlaneAngleMeasure::operator std::vector< int > /*[3:4]*/() const { return get_attribute_value(0); } // Function implementations for IfcContextDependentMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcContextDependentMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[226]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcContextDependentMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[226]); } -Ifc4x3_add2::IfcContextDependentMeasure::IfcContextDependentMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcContextDependentMeasure::IfcContextDependentMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcContextDependentMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcCountMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcCountMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[252]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcCountMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[252]); } -Ifc4x3_add2::IfcCountMeasure::IfcCountMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcCountMeasure::IfcCountMeasure(int v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcCountMeasure::operator int() const { return get_attribute_value(0); } // Function implementations for IfcCurvatureMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcCurvatureMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[270]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcCurvatureMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[270]); } -Ifc4x3_add2::IfcCurvatureMeasure::IfcCurvatureMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcCurvatureMeasure::IfcCurvatureMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcCurvatureMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcDate const IfcParse::type_declaration& Ifc4x3_add2::IfcDate::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[290]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcDate::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[290]); } -Ifc4x3_add2::IfcDate::IfcDate(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcDate::IfcDate(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcDate::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcDateTime const IfcParse::type_declaration& Ifc4x3_add2::IfcDateTime::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[291]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcDateTime::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[291]); } -Ifc4x3_add2::IfcDateTime::IfcDateTime(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcDateTime::IfcDateTime(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcDateTime::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcDayInMonthNumber const IfcParse::type_declaration& Ifc4x3_add2::IfcDayInMonthNumber::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[292]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcDayInMonthNumber::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[292]); } -Ifc4x3_add2::IfcDayInMonthNumber::IfcDayInMonthNumber(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcDayInMonthNumber::IfcDayInMonthNumber(int v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcDayInMonthNumber::operator int() const { return get_attribute_value(0); } // Function implementations for IfcDayInWeekNumber const IfcParse::type_declaration& Ifc4x3_add2::IfcDayInWeekNumber::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[293]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcDayInWeekNumber::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[293]); } -Ifc4x3_add2::IfcDayInWeekNumber::IfcDayInWeekNumber(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcDayInWeekNumber::IfcDayInWeekNumber(int v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcDayInWeekNumber::operator int() const { return get_attribute_value(0); } // Function implementations for IfcDescriptiveMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcDescriptiveMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[302]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcDescriptiveMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[302]); } -Ifc4x3_add2::IfcDescriptiveMeasure::IfcDescriptiveMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcDescriptiveMeasure::IfcDescriptiveMeasure(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcDescriptiveMeasure::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcDimensionCount const IfcParse::type_declaration& Ifc4x3_add2::IfcDimensionCount::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[304]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcDimensionCount::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[304]); } -Ifc4x3_add2::IfcDimensionCount::IfcDimensionCount(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcDimensionCount::IfcDimensionCount(int v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcDimensionCount::operator int() const { return get_attribute_value(0); } // Function implementations for IfcDoseEquivalentMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcDoseEquivalentMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[343]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcDoseEquivalentMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[343]); } -Ifc4x3_add2::IfcDoseEquivalentMeasure::IfcDoseEquivalentMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcDoseEquivalentMeasure::IfcDoseEquivalentMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcDoseEquivalentMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcDuration const IfcParse::type_declaration& Ifc4x3_add2::IfcDuration::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[355]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcDuration::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[355]); } -Ifc4x3_add2::IfcDuration::IfcDuration(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcDuration::IfcDuration(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcDuration::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcDynamicViscosityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcDynamicViscosityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[356]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcDynamicViscosityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[356]); } -Ifc4x3_add2::IfcDynamicViscosityMeasure::IfcDynamicViscosityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcDynamicViscosityMeasure::IfcDynamicViscosityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcDynamicViscosityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcElectricCapacitanceMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcElectricCapacitanceMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[368]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcElectricCapacitanceMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[368]); } -Ifc4x3_add2::IfcElectricCapacitanceMeasure::IfcElectricCapacitanceMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcElectricCapacitanceMeasure::IfcElectricCapacitanceMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcElectricCapacitanceMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcElectricChargeMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcElectricChargeMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[369]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcElectricChargeMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[369]); } -Ifc4x3_add2::IfcElectricChargeMeasure::IfcElectricChargeMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcElectricChargeMeasure::IfcElectricChargeMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcElectricChargeMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcElectricConductanceMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcElectricConductanceMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[370]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcElectricConductanceMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[370]); } -Ifc4x3_add2::IfcElectricConductanceMeasure::IfcElectricConductanceMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcElectricConductanceMeasure::IfcElectricConductanceMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcElectricConductanceMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcElectricCurrentMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcElectricCurrentMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[371]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcElectricCurrentMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[371]); } -Ifc4x3_add2::IfcElectricCurrentMeasure::IfcElectricCurrentMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcElectricCurrentMeasure::IfcElectricCurrentMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcElectricCurrentMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcElectricResistanceMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcElectricResistanceMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[387]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcElectricResistanceMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[387]); } -Ifc4x3_add2::IfcElectricResistanceMeasure::IfcElectricResistanceMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcElectricResistanceMeasure::IfcElectricResistanceMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcElectricResistanceMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcElectricVoltageMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcElectricVoltageMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[391]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcElectricVoltageMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[391]); } -Ifc4x3_add2::IfcElectricVoltageMeasure::IfcElectricVoltageMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcElectricVoltageMeasure::IfcElectricVoltageMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcElectricVoltageMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcEnergyMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcEnergyMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[406]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcEnergyMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[406]); } -Ifc4x3_add2::IfcEnergyMeasure::IfcEnergyMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcEnergyMeasure::IfcEnergyMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcEnergyMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcFontStyle const IfcParse::type_declaration& Ifc4x3_add2::IfcFontStyle::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[487]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcFontStyle::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[487]); } -Ifc4x3_add2::IfcFontStyle::IfcFontStyle(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcFontStyle::IfcFontStyle(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcFontStyle::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcFontVariant const IfcParse::type_declaration& Ifc4x3_add2::IfcFontVariant::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[488]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcFontVariant::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[488]); } -Ifc4x3_add2::IfcFontVariant::IfcFontVariant(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcFontVariant::IfcFontVariant(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcFontVariant::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcFontWeight const IfcParse::type_declaration& Ifc4x3_add2::IfcFontWeight::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[489]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcFontWeight::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[489]); } -Ifc4x3_add2::IfcFontWeight::IfcFontWeight(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcFontWeight::IfcFontWeight(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcFontWeight::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcForceMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcForceMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[493]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcForceMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[493]); } -Ifc4x3_add2::IfcForceMeasure::IfcForceMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcForceMeasure::IfcForceMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcForceMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcFrequencyMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcFrequencyMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[494]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcFrequencyMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[494]); } -Ifc4x3_add2::IfcFrequencyMeasure::IfcFrequencyMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcFrequencyMeasure::IfcFrequencyMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcFrequencyMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcGloballyUniqueId const IfcParse::type_declaration& Ifc4x3_add2::IfcGloballyUniqueId::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[517]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcGloballyUniqueId::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[517]); } -Ifc4x3_add2::IfcGloballyUniqueId::IfcGloballyUniqueId(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcGloballyUniqueId::IfcGloballyUniqueId(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcGloballyUniqueId::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcHeatFluxDensityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcHeatFluxDensityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[531]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcHeatFluxDensityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[531]); } -Ifc4x3_add2::IfcHeatFluxDensityMeasure::IfcHeatFluxDensityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcHeatFluxDensityMeasure::IfcHeatFluxDensityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcHeatFluxDensityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcHeatingValueMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcHeatingValueMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[532]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcHeatingValueMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[532]); } -Ifc4x3_add2::IfcHeatingValueMeasure::IfcHeatingValueMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcHeatingValueMeasure::IfcHeatingValueMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcHeatingValueMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcIdentifier const IfcParse::type_declaration& Ifc4x3_add2::IfcIdentifier::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[536]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcIdentifier::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[536]); } -Ifc4x3_add2::IfcIdentifier::IfcIdentifier(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcIdentifier::IfcIdentifier(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcIdentifier::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcIlluminanceMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcIlluminanceMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[537]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcIlluminanceMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[537]); } -Ifc4x3_add2::IfcIlluminanceMeasure::IfcIlluminanceMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcIlluminanceMeasure::IfcIlluminanceMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcIlluminanceMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcInductanceMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcInductanceMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[549]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcInductanceMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[549]); } -Ifc4x3_add2::IfcInductanceMeasure::IfcInductanceMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcInductanceMeasure::IfcInductanceMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcInductanceMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcInteger const IfcParse::type_declaration& Ifc4x3_add2::IfcInteger::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[550]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcInteger::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[550]); } -Ifc4x3_add2::IfcInteger::IfcInteger(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcInteger::IfcInteger(int v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcInteger::operator int() const { return get_attribute_value(0); } // Function implementations for IfcIntegerCountRateMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcIntegerCountRateMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[551]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcIntegerCountRateMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[551]); } -Ifc4x3_add2::IfcIntegerCountRateMeasure::IfcIntegerCountRateMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcIntegerCountRateMeasure::IfcIntegerCountRateMeasure(int v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcIntegerCountRateMeasure::operator int() const { return get_attribute_value(0); } // Function implementations for IfcIonConcentrationMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcIonConcentrationMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[560]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcIonConcentrationMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[560]); } -Ifc4x3_add2::IfcIonConcentrationMeasure::IfcIonConcentrationMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcIonConcentrationMeasure::IfcIonConcentrationMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcIonConcentrationMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcIsothermalMoistureCapacityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcIsothermalMoistureCapacityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[564]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcIsothermalMoistureCapacityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[564]); } -Ifc4x3_add2::IfcIsothermalMoistureCapacityMeasure::IfcIsothermalMoistureCapacityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcIsothermalMoistureCapacityMeasure::IfcIsothermalMoistureCapacityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcIsothermalMoistureCapacityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcKinematicViscosityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcKinematicViscosityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[571]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcKinematicViscosityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[571]); } -Ifc4x3_add2::IfcKinematicViscosityMeasure::IfcKinematicViscosityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcKinematicViscosityMeasure::IfcKinematicViscosityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcKinematicViscosityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcLabel const IfcParse::type_declaration& Ifc4x3_add2::IfcLabel::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[573]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcLabel::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[573]); } -Ifc4x3_add2::IfcLabel::IfcLabel(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcLabel::IfcLabel(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcLabel::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcLanguageId const IfcParse::type_declaration& Ifc4x3_add2::IfcLanguageId::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[581]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcLanguageId::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[581]); } -Ifc4x3_add2::IfcLanguageId::IfcLanguageId(IfcEntityInstanceData&& e) : IfcIdentifier(std::move(e)) { } -Ifc4x3_add2::IfcLanguageId::IfcLanguageId(std::string v) : IfcIdentifier(v) { } Ifc4x3_add2::IfcLanguageId::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcLengthMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcLengthMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[584]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcLengthMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[584]); } -Ifc4x3_add2::IfcLengthMeasure::IfcLengthMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcLengthMeasure::IfcLengthMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcLengthMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcLineIndex const IfcParse::type_declaration& Ifc4x3_add2::IfcLineIndex::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[610]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcLineIndex::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[610]); } -Ifc4x3_add2::IfcLineIndex::IfcLineIndex(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcLineIndex::IfcLineIndex(std::vector< int > /*[2:?]*/ v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcLineIndex::operator std::vector< int > /*[2:?]*/() const { return get_attribute_value(0); } // Function implementations for IfcLinearForceMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcLinearForceMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[604]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcLinearForceMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[604]); } -Ifc4x3_add2::IfcLinearForceMeasure::IfcLinearForceMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcLinearForceMeasure::IfcLinearForceMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcLinearForceMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcLinearMomentMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcLinearMomentMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[605]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcLinearMomentMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[605]); } -Ifc4x3_add2::IfcLinearMomentMeasure::IfcLinearMomentMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcLinearMomentMeasure::IfcLinearMomentMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcLinearMomentMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcLinearStiffnessMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcLinearStiffnessMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[608]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcLinearStiffnessMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[608]); } -Ifc4x3_add2::IfcLinearStiffnessMeasure::IfcLinearStiffnessMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcLinearStiffnessMeasure::IfcLinearStiffnessMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcLinearStiffnessMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcLinearVelocityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcLinearVelocityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[609]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcLinearVelocityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[609]); } -Ifc4x3_add2::IfcLinearVelocityMeasure::IfcLinearVelocityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcLinearVelocityMeasure::IfcLinearVelocityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcLinearVelocityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcLogical const IfcParse::type_declaration& Ifc4x3_add2::IfcLogical::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[616]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcLogical::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[616]); } -Ifc4x3_add2::IfcLogical::IfcLogical(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcLogical::IfcLogical(boost::logic::tribool v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcLogical::operator boost::logic::tribool() const { return get_attribute_value(0); } // Function implementations for IfcLuminousFluxMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcLuminousFluxMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[620]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcLuminousFluxMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[620]); } -Ifc4x3_add2::IfcLuminousFluxMeasure::IfcLuminousFluxMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcLuminousFluxMeasure::IfcLuminousFluxMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcLuminousFluxMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcLuminousIntensityDistributionMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcLuminousIntensityDistributionMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[621]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcLuminousIntensityDistributionMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[621]); } -Ifc4x3_add2::IfcLuminousIntensityDistributionMeasure::IfcLuminousIntensityDistributionMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcLuminousIntensityDistributionMeasure::IfcLuminousIntensityDistributionMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcLuminousIntensityDistributionMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcLuminousIntensityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcLuminousIntensityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[622]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcLuminousIntensityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[622]); } -Ifc4x3_add2::IfcLuminousIntensityMeasure::IfcLuminousIntensityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcLuminousIntensityMeasure::IfcLuminousIntensityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcLuminousIntensityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcMagneticFluxDensityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcMagneticFluxDensityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[623]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcMagneticFluxDensityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[623]); } -Ifc4x3_add2::IfcMagneticFluxDensityMeasure::IfcMagneticFluxDensityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcMagneticFluxDensityMeasure::IfcMagneticFluxDensityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcMagneticFluxDensityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcMagneticFluxMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcMagneticFluxMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[624]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcMagneticFluxMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[624]); } -Ifc4x3_add2::IfcMagneticFluxMeasure::IfcMagneticFluxMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcMagneticFluxMeasure::IfcMagneticFluxMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcMagneticFluxMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcMassDensityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcMassDensityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[633]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcMassDensityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[633]); } -Ifc4x3_add2::IfcMassDensityMeasure::IfcMassDensityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcMassDensityMeasure::IfcMassDensityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcMassDensityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcMassFlowRateMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcMassFlowRateMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[634]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcMassFlowRateMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[634]); } -Ifc4x3_add2::IfcMassFlowRateMeasure::IfcMassFlowRateMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcMassFlowRateMeasure::IfcMassFlowRateMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcMassFlowRateMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcMassMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcMassMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[635]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcMassMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[635]); } -Ifc4x3_add2::IfcMassMeasure::IfcMassMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcMassMeasure::IfcMassMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcMassMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcMassPerLengthMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcMassPerLengthMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[636]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcMassPerLengthMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[636]); } -Ifc4x3_add2::IfcMassPerLengthMeasure::IfcMassPerLengthMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcMassPerLengthMeasure::IfcMassPerLengthMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcMassPerLengthMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcModulusOfElasticityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcModulusOfElasticityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[674]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcModulusOfElasticityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[674]); } -Ifc4x3_add2::IfcModulusOfElasticityMeasure::IfcModulusOfElasticityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcModulusOfElasticityMeasure::IfcModulusOfElasticityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcModulusOfElasticityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcModulusOfLinearSubgradeReactionMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcModulusOfLinearSubgradeReactionMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[675]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcModulusOfLinearSubgradeReactionMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[675]); } -Ifc4x3_add2::IfcModulusOfLinearSubgradeReactionMeasure::IfcModulusOfLinearSubgradeReactionMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcModulusOfLinearSubgradeReactionMeasure::IfcModulusOfLinearSubgradeReactionMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcModulusOfLinearSubgradeReactionMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcModulusOfRotationalSubgradeReactionMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[676]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[676]); } -Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionMeasure::IfcModulusOfRotationalSubgradeReactionMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionMeasure::IfcModulusOfRotationalSubgradeReactionMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcModulusOfSubgradeReactionMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcModulusOfSubgradeReactionMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[678]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcModulusOfSubgradeReactionMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[678]); } -Ifc4x3_add2::IfcModulusOfSubgradeReactionMeasure::IfcModulusOfSubgradeReactionMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcModulusOfSubgradeReactionMeasure::IfcModulusOfSubgradeReactionMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcModulusOfSubgradeReactionMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcMoistureDiffusivityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcMoistureDiffusivityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[681]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcMoistureDiffusivityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[681]); } -Ifc4x3_add2::IfcMoistureDiffusivityMeasure::IfcMoistureDiffusivityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcMoistureDiffusivityMeasure::IfcMoistureDiffusivityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcMoistureDiffusivityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcMolecularWeightMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcMolecularWeightMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[682]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcMolecularWeightMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[682]); } -Ifc4x3_add2::IfcMolecularWeightMeasure::IfcMolecularWeightMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcMolecularWeightMeasure::IfcMolecularWeightMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcMolecularWeightMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcMomentOfInertiaMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcMomentOfInertiaMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[683]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcMomentOfInertiaMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[683]); } -Ifc4x3_add2::IfcMomentOfInertiaMeasure::IfcMomentOfInertiaMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcMomentOfInertiaMeasure::IfcMomentOfInertiaMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcMomentOfInertiaMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcMonetaryMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcMonetaryMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[684]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcMonetaryMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[684]); } -Ifc4x3_add2::IfcMonetaryMeasure::IfcMonetaryMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcMonetaryMeasure::IfcMonetaryMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcMonetaryMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcMonthInYearNumber const IfcParse::type_declaration& Ifc4x3_add2::IfcMonthInYearNumber::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[686]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcMonthInYearNumber::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[686]); } -Ifc4x3_add2::IfcMonthInYearNumber::IfcMonthInYearNumber(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcMonthInYearNumber::IfcMonthInYearNumber(int v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcMonthInYearNumber::operator int() const { return get_attribute_value(0); } // Function implementations for IfcNonNegativeLengthMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcNonNegativeLengthMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[697]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcNonNegativeLengthMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[697]); } -Ifc4x3_add2::IfcNonNegativeLengthMeasure::IfcNonNegativeLengthMeasure(IfcEntityInstanceData&& e) : IfcLengthMeasure(std::move(e)) { } -Ifc4x3_add2::IfcNonNegativeLengthMeasure::IfcNonNegativeLengthMeasure(double v) : IfcLengthMeasure(v) { } Ifc4x3_add2::IfcNonNegativeLengthMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcNormalisedRatioMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcNormalisedRatioMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[698]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcNormalisedRatioMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[698]); } -Ifc4x3_add2::IfcNormalisedRatioMeasure::IfcNormalisedRatioMeasure(IfcEntityInstanceData&& e) : IfcRatioMeasure(std::move(e)) { } -Ifc4x3_add2::IfcNormalisedRatioMeasure::IfcNormalisedRatioMeasure(double v) : IfcRatioMeasure(v) { } Ifc4x3_add2::IfcNormalisedRatioMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcNumericMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcNumericMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[699]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcNumericMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[699]); } -Ifc4x3_add2::IfcNumericMeasure::IfcNumericMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcNumericMeasure::IfcNumericMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcNumericMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcPHMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcPHMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[739]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcPHMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[739]); } -Ifc4x3_add2::IfcPHMeasure::IfcPHMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcPHMeasure::IfcPHMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcPHMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcParameterValue const IfcParse::type_declaration& Ifc4x3_add2::IfcParameterValue::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[725]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcParameterValue::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[725]); } -Ifc4x3_add2::IfcParameterValue::IfcParameterValue(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcParameterValue::IfcParameterValue(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcParameterValue::operator double() const { return get_attribute_value(0); } // Function implementations for IfcPlanarForceMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcPlanarForceMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[758]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcPlanarForceMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[758]); } -Ifc4x3_add2::IfcPlanarForceMeasure::IfcPlanarForceMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcPlanarForceMeasure::IfcPlanarForceMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcPlanarForceMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcPlaneAngleMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcPlaneAngleMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[760]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcPlaneAngleMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[760]); } -Ifc4x3_add2::IfcPlaneAngleMeasure::IfcPlaneAngleMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcPlaneAngleMeasure::IfcPlaneAngleMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcPlaneAngleMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcPositiveInteger const IfcParse::type_declaration& Ifc4x3_add2::IfcPositiveInteger::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[776]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcPositiveInteger::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[776]); } -Ifc4x3_add2::IfcPositiveInteger::IfcPositiveInteger(IfcEntityInstanceData&& e) : IfcInteger(std::move(e)) { } -Ifc4x3_add2::IfcPositiveInteger::IfcPositiveInteger(int v) : IfcInteger(v) { } Ifc4x3_add2::IfcPositiveInteger::operator int() const { return get_attribute_value(0); } // Function implementations for IfcPositiveLengthMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcPositiveLengthMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[777]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcPositiveLengthMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[777]); } -Ifc4x3_add2::IfcPositiveLengthMeasure::IfcPositiveLengthMeasure(IfcEntityInstanceData&& e) : IfcLengthMeasure(std::move(e)) { } -Ifc4x3_add2::IfcPositiveLengthMeasure::IfcPositiveLengthMeasure(double v) : IfcLengthMeasure(v) { } Ifc4x3_add2::IfcPositiveLengthMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcPositivePlaneAngleMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcPositivePlaneAngleMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[778]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcPositivePlaneAngleMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[778]); } -Ifc4x3_add2::IfcPositivePlaneAngleMeasure::IfcPositivePlaneAngleMeasure(IfcEntityInstanceData&& e) : IfcPlaneAngleMeasure(std::move(e)) { } -Ifc4x3_add2::IfcPositivePlaneAngleMeasure::IfcPositivePlaneAngleMeasure(double v) : IfcPlaneAngleMeasure(v) { } Ifc4x3_add2::IfcPositivePlaneAngleMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcPositiveRatioMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcPositiveRatioMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[779]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcPositiveRatioMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[779]); } -Ifc4x3_add2::IfcPositiveRatioMeasure::IfcPositiveRatioMeasure(IfcEntityInstanceData&& e) : IfcRatioMeasure(std::move(e)) { } -Ifc4x3_add2::IfcPositiveRatioMeasure::IfcPositiveRatioMeasure(double v) : IfcRatioMeasure(v) { } Ifc4x3_add2::IfcPositiveRatioMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcPowerMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcPowerMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[781]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcPowerMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[781]); } -Ifc4x3_add2::IfcPowerMeasure::IfcPowerMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcPowerMeasure::IfcPowerMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcPowerMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcPresentableText const IfcParse::type_declaration& Ifc4x3_add2::IfcPresentableText::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[789]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcPresentableText::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[789]); } -Ifc4x3_add2::IfcPresentableText::IfcPresentableText(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcPresentableText::IfcPresentableText(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcPresentableText::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcPressureMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcPressureMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[794]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcPressureMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[794]); } -Ifc4x3_add2::IfcPressureMeasure::IfcPressureMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcPressureMeasure::IfcPressureMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcPressureMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcPropertySetDefinitionSet const IfcParse::type_declaration& Ifc4x3_add2::IfcPropertySetDefinitionSet::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[828]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcPropertySetDefinitionSet::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[828]); } -Ifc4x3_add2::IfcPropertySetDefinitionSet::IfcPropertySetDefinitionSet(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcPropertySetDefinitionSet::IfcPropertySetDefinitionSet(aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v->generalize()); } -Ifc4x3_add2::IfcPropertySetDefinitionSet::operator aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcPropertySetDefinition >(); } +Ifc4x3_add2::IfcPropertySetDefinitionSet::operator std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition >() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcPropertySetDefinition>(es); } // Function implementations for IfcRadioActivityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcRadioActivityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[852]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcRadioActivityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[852]); } -Ifc4x3_add2::IfcRadioActivityMeasure::IfcRadioActivityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcRadioActivityMeasure::IfcRadioActivityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcRadioActivityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcRatioMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcRatioMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[869]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcRatioMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[869]); } -Ifc4x3_add2::IfcRatioMeasure::IfcRatioMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcRatioMeasure::IfcRatioMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcRatioMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcReal const IfcParse::type_declaration& Ifc4x3_add2::IfcReal::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[872]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcReal::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[872]); } -Ifc4x3_add2::IfcReal::IfcReal(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcReal::IfcReal(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcReal::operator double() const { return get_attribute_value(0); } // Function implementations for IfcRotationalFrequencyMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcRotationalFrequencyMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[975]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcRotationalFrequencyMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[975]); } -Ifc4x3_add2::IfcRotationalFrequencyMeasure::IfcRotationalFrequencyMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcRotationalFrequencyMeasure::IfcRotationalFrequencyMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcRotationalFrequencyMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcRotationalMassMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcRotationalMassMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[976]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcRotationalMassMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[976]); } -Ifc4x3_add2::IfcRotationalMassMeasure::IfcRotationalMassMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcRotationalMassMeasure::IfcRotationalMassMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcRotationalMassMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcRotationalStiffnessMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcRotationalStiffnessMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[977]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcRotationalStiffnessMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[977]); } -Ifc4x3_add2::IfcRotationalStiffnessMeasure::IfcRotationalStiffnessMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcRotationalStiffnessMeasure::IfcRotationalStiffnessMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcRotationalStiffnessMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcSectionModulusMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcSectionModulusMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[991]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcSectionModulusMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[991]); } -Ifc4x3_add2::IfcSectionModulusMeasure::IfcSectionModulusMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcSectionModulusMeasure::IfcSectionModulusMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcSectionModulusMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcSectionalAreaIntegralMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcSectionalAreaIntegralMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[986]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcSectionalAreaIntegralMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[986]); } -Ifc4x3_add2::IfcSectionalAreaIntegralMeasure::IfcSectionalAreaIntegralMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcSectionalAreaIntegralMeasure::IfcSectionalAreaIntegralMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcSectionalAreaIntegralMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcShearModulusMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcShearModulusMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1009]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcShearModulusMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1009]); } -Ifc4x3_add2::IfcShearModulusMeasure::IfcShearModulusMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcShearModulusMeasure::IfcShearModulusMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcShearModulusMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcSolidAngleMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcSolidAngleMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1035]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcSolidAngleMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1035]); } -Ifc4x3_add2::IfcSolidAngleMeasure::IfcSolidAngleMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcSolidAngleMeasure::IfcSolidAngleMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcSolidAngleMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcSoundPowerLevelMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcSoundPowerLevelMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1038]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcSoundPowerLevelMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1038]); } -Ifc4x3_add2::IfcSoundPowerLevelMeasure::IfcSoundPowerLevelMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcSoundPowerLevelMeasure::IfcSoundPowerLevelMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcSoundPowerLevelMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcSoundPowerMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcSoundPowerMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1039]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcSoundPowerMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1039]); } -Ifc4x3_add2::IfcSoundPowerMeasure::IfcSoundPowerMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcSoundPowerMeasure::IfcSoundPowerMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcSoundPowerMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcSoundPressureLevelMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcSoundPressureLevelMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1040]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcSoundPressureLevelMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1040]); } -Ifc4x3_add2::IfcSoundPressureLevelMeasure::IfcSoundPressureLevelMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcSoundPressureLevelMeasure::IfcSoundPressureLevelMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcSoundPressureLevelMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcSoundPressureMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcSoundPressureMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1041]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcSoundPressureMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1041]); } -Ifc4x3_add2::IfcSoundPressureMeasure::IfcSoundPressureMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcSoundPressureMeasure::IfcSoundPressureMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcSoundPressureMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcSpecificHeatCapacityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcSpecificHeatCapacityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1057]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcSpecificHeatCapacityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1057]); } -Ifc4x3_add2::IfcSpecificHeatCapacityMeasure::IfcSpecificHeatCapacityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcSpecificHeatCapacityMeasure::IfcSpecificHeatCapacityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcSpecificHeatCapacityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcSpecularExponent const IfcParse::type_declaration& Ifc4x3_add2::IfcSpecularExponent::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1058]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcSpecularExponent::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1058]); } -Ifc4x3_add2::IfcSpecularExponent::IfcSpecularExponent(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcSpecularExponent::IfcSpecularExponent(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcSpecularExponent::operator double() const { return get_attribute_value(0); } // Function implementations for IfcSpecularRoughness const IfcParse::type_declaration& Ifc4x3_add2::IfcSpecularRoughness::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1060]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcSpecularRoughness::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1060]); } -Ifc4x3_add2::IfcSpecularRoughness::IfcSpecularRoughness(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcSpecularRoughness::IfcSpecularRoughness(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcSpecularRoughness::operator double() const { return get_attribute_value(0); } // Function implementations for IfcStrippedOptional const IfcParse::type_declaration& Ifc4x3_add2::IfcStrippedOptional::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1074]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcStrippedOptional::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1074]); } -Ifc4x3_add2::IfcStrippedOptional::IfcStrippedOptional(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcStrippedOptional::IfcStrippedOptional(bool v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcStrippedOptional::operator bool() const { return get_attribute_value(0); } // Function implementations for IfcTemperatureGradientMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcTemperatureGradientMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1166]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcTemperatureGradientMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1166]); } -Ifc4x3_add2::IfcTemperatureGradientMeasure::IfcTemperatureGradientMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcTemperatureGradientMeasure::IfcTemperatureGradientMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcTemperatureGradientMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcTemperatureRateOfChangeMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcTemperatureRateOfChangeMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1167]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcTemperatureRateOfChangeMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1167]); } -Ifc4x3_add2::IfcTemperatureRateOfChangeMeasure::IfcTemperatureRateOfChangeMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcTemperatureRateOfChangeMeasure::IfcTemperatureRateOfChangeMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcTemperatureRateOfChangeMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcText const IfcParse::type_declaration& Ifc4x3_add2::IfcText::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1179]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcText::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1179]); } -Ifc4x3_add2::IfcText::IfcText(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcText::IfcText(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcText::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcTextAlignment const IfcParse::type_declaration& Ifc4x3_add2::IfcTextAlignment::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1180]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcTextAlignment::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1180]); } -Ifc4x3_add2::IfcTextAlignment::IfcTextAlignment(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcTextAlignment::IfcTextAlignment(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcTextAlignment::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcTextDecoration const IfcParse::type_declaration& Ifc4x3_add2::IfcTextDecoration::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1181]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcTextDecoration::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1181]); } -Ifc4x3_add2::IfcTextDecoration::IfcTextDecoration(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcTextDecoration::IfcTextDecoration(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcTextDecoration::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcTextFontName const IfcParse::type_declaration& Ifc4x3_add2::IfcTextFontName::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1182]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcTextFontName::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1182]); } -Ifc4x3_add2::IfcTextFontName::IfcTextFontName(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcTextFontName::IfcTextFontName(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcTextFontName::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcTextTransformation const IfcParse::type_declaration& Ifc4x3_add2::IfcTextTransformation::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1191]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcTextTransformation::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1191]); } -Ifc4x3_add2::IfcTextTransformation::IfcTextTransformation(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcTextTransformation::IfcTextTransformation(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcTextTransformation::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcThermalAdmittanceMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcThermalAdmittanceMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1199]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcThermalAdmittanceMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1199]); } -Ifc4x3_add2::IfcThermalAdmittanceMeasure::IfcThermalAdmittanceMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcThermalAdmittanceMeasure::IfcThermalAdmittanceMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcThermalAdmittanceMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcThermalConductivityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcThermalConductivityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1200]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcThermalConductivityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1200]); } -Ifc4x3_add2::IfcThermalConductivityMeasure::IfcThermalConductivityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcThermalConductivityMeasure::IfcThermalConductivityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcThermalConductivityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcThermalExpansionCoefficientMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcThermalExpansionCoefficientMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1201]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcThermalExpansionCoefficientMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1201]); } -Ifc4x3_add2::IfcThermalExpansionCoefficientMeasure::IfcThermalExpansionCoefficientMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcThermalExpansionCoefficientMeasure::IfcThermalExpansionCoefficientMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcThermalExpansionCoefficientMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcThermalResistanceMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcThermalResistanceMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1202]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcThermalResistanceMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1202]); } -Ifc4x3_add2::IfcThermalResistanceMeasure::IfcThermalResistanceMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcThermalResistanceMeasure::IfcThermalResistanceMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcThermalResistanceMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcThermalTransmittanceMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcThermalTransmittanceMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1203]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcThermalTransmittanceMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1203]); } -Ifc4x3_add2::IfcThermalTransmittanceMeasure::IfcThermalTransmittanceMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcThermalTransmittanceMeasure::IfcThermalTransmittanceMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcThermalTransmittanceMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcThermodynamicTemperatureMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcThermodynamicTemperatureMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1204]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcThermodynamicTemperatureMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1204]); } -Ifc4x3_add2::IfcThermodynamicTemperatureMeasure::IfcThermodynamicTemperatureMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcThermodynamicTemperatureMeasure::IfcThermodynamicTemperatureMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcThermodynamicTemperatureMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcTime const IfcParse::type_declaration& Ifc4x3_add2::IfcTime::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1206]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcTime::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1206]); } -Ifc4x3_add2::IfcTime::IfcTime(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcTime::IfcTime(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcTime::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcTimeMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcTimeMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1207]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcTimeMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1207]); } -Ifc4x3_add2::IfcTimeMeasure::IfcTimeMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcTimeMeasure::IfcTimeMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcTimeMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcTimeStamp const IfcParse::type_declaration& Ifc4x3_add2::IfcTimeStamp::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1213]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcTimeStamp::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1213]); } -Ifc4x3_add2::IfcTimeStamp::IfcTimeStamp(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcTimeStamp::IfcTimeStamp(int v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcTimeStamp::operator int() const { return get_attribute_value(0); } // Function implementations for IfcTorqueMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcTorqueMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1217]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcTorqueMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1217]); } -Ifc4x3_add2::IfcTorqueMeasure::IfcTorqueMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcTorqueMeasure::IfcTorqueMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcTorqueMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcURIReference const IfcParse::type_declaration& Ifc4x3_add2::IfcURIReference::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1254]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcURIReference::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1254]); } -Ifc4x3_add2::IfcURIReference::IfcURIReference(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcURIReference::IfcURIReference(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcURIReference::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcVaporPermeabilityMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcVaporPermeabilityMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1260]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcVaporPermeabilityMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1260]); } -Ifc4x3_add2::IfcVaporPermeabilityMeasure::IfcVaporPermeabilityMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcVaporPermeabilityMeasure::IfcVaporPermeabilityMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcVaporPermeabilityMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcVolumeMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcVolumeMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1280]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcVolumeMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1280]); } -Ifc4x3_add2::IfcVolumeMeasure::IfcVolumeMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcVolumeMeasure::IfcVolumeMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcVolumeMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcVolumetricFlowRateMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcVolumetricFlowRateMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1281]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcVolumetricFlowRateMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1281]); } -Ifc4x3_add2::IfcVolumetricFlowRateMeasure::IfcVolumetricFlowRateMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcVolumetricFlowRateMeasure::IfcVolumetricFlowRateMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcVolumetricFlowRateMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcWarpingConstantMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcWarpingConstantMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1286]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcWarpingConstantMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1286]); } -Ifc4x3_add2::IfcWarpingConstantMeasure::IfcWarpingConstantMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcWarpingConstantMeasure::IfcWarpingConstantMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcWarpingConstantMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcWarpingMomentMeasure const IfcParse::type_declaration& Ifc4x3_add2::IfcWarpingMomentMeasure::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1287]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcWarpingMomentMeasure::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1287]); } -Ifc4x3_add2::IfcWarpingMomentMeasure::IfcWarpingMomentMeasure(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcWarpingMomentMeasure::IfcWarpingMomentMeasure(double v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcWarpingMomentMeasure::operator double() const { return get_attribute_value(0); } // Function implementations for IfcWellKnownTextLiteral const IfcParse::type_declaration& Ifc4x3_add2::IfcWellKnownTextLiteral::Class() { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1293]); } -const IfcParse::type_declaration& Ifc4x3_add2::IfcWellKnownTextLiteral::declaration() const { return *((IfcParse::type_declaration*)IFC4X3_ADD2_types[1293]); } -Ifc4x3_add2::IfcWellKnownTextLiteral::IfcWellKnownTextLiteral(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseType(std::move(e)) { } -Ifc4x3_add2::IfcWellKnownTextLiteral::IfcWellKnownTextLiteral(std::string v) : IfcUtil::IfcBaseType() { set_attribute_value(0, v); } Ifc4x3_add2::IfcWellKnownTextLiteral::operator std::string() const { return get_attribute_value(0); } // Function implementations for IfcActionRequest -boost::optional< ::Ifc4x3_add2::IfcActionRequestTypeEnum::Value > Ifc4x3_add2::IfcActionRequest::PredefinedType() const { if(get_attribute_value(6).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcActionRequestTypeEnum::FromString(get_attribute_value(6)); } -void Ifc4x3_add2::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcActionRequestTypeEnum::Value > v) { if (v) {set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcActionRequestTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(6);} } -boost::optional< std::string > Ifc4x3_add2::IfcActionRequest::Status() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcActionRequest::setStatus(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< std::string > Ifc4x3_add2::IfcActionRequest::LongDescription() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcActionRequestTypeEnum::Value > Ifc4x3_add2::IfcActionRequest::PredefinedType() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcActionRequestTypeEnum::FromString(get_attribute_value(6)); } +void Ifc4x3_add2::IfcActionRequest::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcActionRequestTypeEnum::Value >& v) { if (v) {set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcActionRequestTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcActionRequest::Status() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcActionRequest::setStatus(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcActionRequest::LongDescription() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcActionRequest::setLongDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcActionRequest::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[2]); } +// const IfcParse::entity& Ifc4x3_add2::IfcActionRequest::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[2]); } const IfcParse::entity& Ifc4x3_add2::IfcActionRequest::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[2]); } -Ifc4x3_add2::IfcActionRequest::IfcActionRequest(IfcEntityInstanceData&& e) : IfcControl(std::move(e)) { } -Ifc4x3_add2::IfcActionRequest::IfcActionRequest(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< ::Ifc4x3_add2::IfcActionRequestTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription) : IfcControl(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcActionRequestTypeEnum::Class(),(size_t)*v7_PredefinedType))); } if (v8_Status) {set_attribute_value(7, (*v8_Status)); } if (v9_LongDescription) {set_attribute_value(8, (*v9_LongDescription)); }; populate_derived(); } +// Ifc4x3_add2::IfcActionRequest::IfcActionRequest(const std::weak_ptr& e) : IfcControl(e) { } +// Ifc4x3_add2::IfcActionRequest::IfcActionRequest(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< ::Ifc4x3_add2::IfcActionRequestTypeEnum::Value > v7_PredefinedType, std::optional< std::string > v8_Status, std::optional< std::string > v9_LongDescription) : IfcControl(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcActionRequestTypeEnum::Class(),(size_t)*v7_PredefinedType))); } if (v8_Status) {set_attribute_value(7, (*v8_Status)); } if (v9_LongDescription) {set_attribute_value(8, (*v9_LongDescription)); }; populate_derived(); } // Function implementations for IfcActor -::Ifc4x3_add2::IfcActorSelect* Ifc4x3_add2::IfcActor::TheActor() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcActorSelect>(true); } -void Ifc4x3_add2::IfcActor::setTheActor(::Ifc4x3_add2::IfcActorSelect* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcActorSelect Ifc4x3_add2::IfcActor::TheActor() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcActorSelect>(); } +void Ifc4x3_add2::IfcActor::setTheActor(const ::Ifc4x3_add2::IfcActorSelect& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcRelAssignsToActor::list::ptr Ifc4x3_add2::IfcActor::IsActingUpon() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[901], 6)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssignsToActor> Ifc4x3_add2::IfcActor::IsActingUpon() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[901], 6)); } -const IfcParse::entity& Ifc4x3_add2::IfcActor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[6]); } +// const IfcParse::entity& Ifc4x3_add2::IfcActor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[6]); } const IfcParse::entity& Ifc4x3_add2::IfcActor::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[6]); } -Ifc4x3_add2::IfcActor::IfcActor(IfcEntityInstanceData&& e) : IfcObject(std::move(e)) { } -Ifc4x3_add2::IfcActor::IfcActor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcActorSelect* v6_TheActor) : IfcObject(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_TheActor ? v6_TheActor->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcActor::IfcActor(const std::weak_ptr& e) : IfcObject(e) { } +// Ifc4x3_add2::IfcActor::IfcActor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcActorSelect v6_TheActor) : IfcObject(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, (v6_TheActor));; populate_derived(); } // Function implementations for IfcActorRole ::Ifc4x3_add2::IfcRoleEnum::Value Ifc4x3_add2::IfcActorRole::Role() const { return ::Ifc4x3_add2::IfcRoleEnum::FromString(get_attribute_value(0)); } -void Ifc4x3_add2::IfcActorRole::setRole(::Ifc4x3_add2::IfcRoleEnum::Value v) { set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcRoleEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(0); } -boost::optional< std::string > Ifc4x3_add2::IfcActorRole::UserDefinedRole() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::string > Ifc4x3_add2::IfcActorRole::Description() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcActorRole::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +void Ifc4x3_add2::IfcActorRole::setRole(const ::Ifc4x3_add2::IfcRoleEnum::Value& v) { set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcRoleEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(0); } +std::optional< std::string > Ifc4x3_add2::IfcActorRole::UserDefinedRole() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcActorRole::setUserDefinedRole(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcActorRole::Description() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcActorRole::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -::Ifc4x3_add2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_add2::IfcActorRole::HasExternalReference() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[427], 3)->as(); } +std::vector<::Ifc4x3_add2::IfcExternalReferenceRelationship> Ifc4x3_add2::IfcActorRole::HasExternalReference() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[427], 3)); } -const IfcParse::entity& Ifc4x3_add2::IfcActorRole::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[7]); } +// const IfcParse::entity& Ifc4x3_add2::IfcActorRole::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[7]); } const IfcParse::entity& Ifc4x3_add2::IfcActorRole::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[7]); } -Ifc4x3_add2::IfcActorRole::IfcActorRole(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcActorRole::IfcActorRole(::Ifc4x3_add2::IfcRoleEnum::Value v1_Role, boost::optional< std::string > v2_UserDefinedRole, boost::optional< std::string > v3_Description) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcRoleEnum::Class(),(size_t)v1_Role))); if (v2_UserDefinedRole) {set_attribute_value(1, (*v2_UserDefinedRole)); } if (v3_Description) {set_attribute_value(2, (*v3_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcActorRole::IfcActorRole(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcActorRole::IfcActorRole(::Ifc4x3_add2::IfcRoleEnum::Value v1_Role, std::optional< std::string > v2_UserDefinedRole, std::optional< std::string > v3_Description) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcRoleEnum::Class(),(size_t)v1_Role))); if (v2_UserDefinedRole) {set_attribute_value(1, (*v2_UserDefinedRole)); } if (v3_Description) {set_attribute_value(2, (*v3_Description)); }; populate_derived(); } // Function implementations for IfcActuator -boost::optional< ::Ifc4x3_add2::IfcActuatorTypeEnum::Value > Ifc4x3_add2::IfcActuator::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcActuatorTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcActuator::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcActuatorTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcActuatorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcActuatorTypeEnum::Value > Ifc4x3_add2::IfcActuator::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcActuatorTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcActuator::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcActuatorTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcActuatorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcActuator::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[9]); } +// const IfcParse::entity& Ifc4x3_add2::IfcActuator::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[9]); } const IfcParse::entity& Ifc4x3_add2::IfcActuator::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[9]); } -Ifc4x3_add2::IfcActuator::IfcActuator(IfcEntityInstanceData&& e) : IfcDistributionControlElement(std::move(e)) { } -Ifc4x3_add2::IfcActuator::IfcActuator(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcActuatorTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcActuatorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcActuator::IfcActuator(const std::weak_ptr& e) : IfcDistributionControlElement(e) { } +// Ifc4x3_add2::IfcActuator::IfcActuator(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcActuatorTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcActuatorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcActuatorType ::Ifc4x3_add2::IfcActuatorTypeEnum::Value Ifc4x3_add2::IfcActuatorType::PredefinedType() const { return ::Ifc4x3_add2::IfcActuatorTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcActuatorType::setPredefinedType(::Ifc4x3_add2::IfcActuatorTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcActuatorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcActuatorType::setPredefinedType(const ::Ifc4x3_add2::IfcActuatorTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcActuatorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcActuatorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[10]); } +// const IfcParse::entity& Ifc4x3_add2::IfcActuatorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[10]); } const IfcParse::entity& Ifc4x3_add2::IfcActuatorType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[10]); } -Ifc4x3_add2::IfcActuatorType::IfcActuatorType(IfcEntityInstanceData&& e) : IfcDistributionControlElementType(std::move(e)) { } -Ifc4x3_add2::IfcActuatorType::IfcActuatorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcActuatorTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcActuatorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcActuatorType::IfcActuatorType(const std::weak_ptr& e) : IfcDistributionControlElementType(e) { } +// Ifc4x3_add2::IfcActuatorType::IfcActuatorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcActuatorTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcActuatorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcAddress -boost::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > Ifc4x3_add2::IfcAddress::Purpose() const { if(get_attribute_value(0).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcAddressTypeEnum::FromString(get_attribute_value(0)); } -void Ifc4x3_add2::IfcAddress::setPurpose(boost::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > v) { if (v) {set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcAddressTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcAddress::Description() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcAddress::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::string > Ifc4x3_add2::IfcAddress::UserDefinedPurpose() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > Ifc4x3_add2::IfcAddress::Purpose() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcAddressTypeEnum::FromString(get_attribute_value(0)); } +void Ifc4x3_add2::IfcAddress::setPurpose(const std::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value >& v) { if (v) {set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcAddressTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcAddress::Description() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcAddress::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcAddress::UserDefinedPurpose() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcAddress::setUserDefinedPurpose(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -::Ifc4x3_add2::IfcPerson::list::ptr Ifc4x3_add2::IfcAddress::OfPerson() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[737], 7)->as(); } -::Ifc4x3_add2::IfcOrganization::list::ptr Ifc4x3_add2::IfcAddress::OfOrganization() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[716], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcPerson> Ifc4x3_add2::IfcAddress::OfPerson() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[737], 7)); } +std::vector<::Ifc4x3_add2::IfcOrganization> Ifc4x3_add2::IfcAddress::OfOrganization() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[716], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcAddress::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[12]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAddress::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[12]); } const IfcParse::entity& Ifc4x3_add2::IfcAddress::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[12]); } -Ifc4x3_add2::IfcAddress::IfcAddress(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcAddress::IfcAddress(boost::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Purpose) {set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcAddressTypeEnum::Class(),(size_t)*v1_Purpose))); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_UserDefinedPurpose) {set_attribute_value(2, (*v3_UserDefinedPurpose)); }; populate_derived(); } +// Ifc4x3_add2::IfcAddress::IfcAddress(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcAddress::IfcAddress(std::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > v1_Purpose, std::optional< std::string > v2_Description, std::optional< std::string > v3_UserDefinedPurpose) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Purpose) {set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcAddressTypeEnum::Class(),(size_t)*v1_Purpose))); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_UserDefinedPurpose) {set_attribute_value(2, (*v3_UserDefinedPurpose)); }; populate_derived(); } // Function implementations for IfcAdvancedBrep -const IfcParse::entity& Ifc4x3_add2::IfcAdvancedBrep::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[14]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAdvancedBrep::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[14]); } const IfcParse::entity& Ifc4x3_add2::IfcAdvancedBrep::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[14]); } -Ifc4x3_add2::IfcAdvancedBrep::IfcAdvancedBrep(IfcEntityInstanceData&& e) : IfcManifoldSolidBrep(std::move(e)) { } -Ifc4x3_add2::IfcAdvancedBrep::IfcAdvancedBrep(::Ifc4x3_add2::IfcClosedShell* v1_Outer) : IfcManifoldSolidBrep(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, v1_Outer ? v1_Outer->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcAdvancedBrep::IfcAdvancedBrep(const std::weak_ptr& e) : IfcManifoldSolidBrep(e) { } +// Ifc4x3_add2::IfcAdvancedBrep::IfcAdvancedBrep(::Ifc4x3_add2::IfcClosedShell v1_Outer) : IfcManifoldSolidBrep(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Outer));; populate_derived(); } // Function implementations for IfcAdvancedBrepWithVoids -aggregate_of< ::Ifc4x3_add2::IfcClosedShell >::ptr Ifc4x3_add2::IfcAdvancedBrepWithVoids::Voids() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcClosedShell >(); } -void Ifc4x3_add2::IfcAdvancedBrepWithVoids::setVoids(aggregate_of< ::Ifc4x3_add2::IfcClosedShell >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } +std::vector< ::Ifc4x3_add2::IfcClosedShell > Ifc4x3_add2::IfcAdvancedBrepWithVoids::Voids() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcClosedShell>(es); } +void Ifc4x3_add2::IfcAdvancedBrepWithVoids::setVoids(const std::vector< ::Ifc4x3_add2::IfcClosedShell >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcAdvancedBrepWithVoids::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[15]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAdvancedBrepWithVoids::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[15]); } const IfcParse::entity& Ifc4x3_add2::IfcAdvancedBrepWithVoids::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[15]); } -Ifc4x3_add2::IfcAdvancedBrepWithVoids::IfcAdvancedBrepWithVoids(IfcEntityInstanceData&& e) : IfcAdvancedBrep(std::move(e)) { } -Ifc4x3_add2::IfcAdvancedBrepWithVoids::IfcAdvancedBrepWithVoids(::Ifc4x3_add2::IfcClosedShell* v1_Outer, aggregate_of< ::Ifc4x3_add2::IfcClosedShell >::ptr v2_Voids) : IfcAdvancedBrep(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Outer ? v1_Outer->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Voids)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcAdvancedBrepWithVoids::IfcAdvancedBrepWithVoids(const std::weak_ptr& e) : IfcAdvancedBrep(e) { } +// Ifc4x3_add2::IfcAdvancedBrepWithVoids::IfcAdvancedBrepWithVoids(::Ifc4x3_add2::IfcClosedShell v1_Outer, std::vector< ::Ifc4x3_add2::IfcClosedShell > v2_Voids) : IfcAdvancedBrep(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Outer));set_attribute_value(1, (v2_Voids)->generalize());; populate_derived(); } // Function implementations for IfcAdvancedFace -const IfcParse::entity& Ifc4x3_add2::IfcAdvancedFace::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[16]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAdvancedFace::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[16]); } const IfcParse::entity& Ifc4x3_add2::IfcAdvancedFace::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[16]); } -Ifc4x3_add2::IfcAdvancedFace::IfcAdvancedFace(IfcEntityInstanceData&& e) : IfcFaceSurface(std::move(e)) { } -Ifc4x3_add2::IfcAdvancedFace::IfcAdvancedFace(aggregate_of< ::Ifc4x3_add2::IfcFaceBound >::ptr v1_Bounds, ::Ifc4x3_add2::IfcSurface* v2_FaceSurface, bool v3_SameSense) : IfcFaceSurface(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Bounds)->generalize());set_attribute_value(1, v2_FaceSurface ? v2_FaceSurface->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, (v3_SameSense));; populate_derived(); } +// Ifc4x3_add2::IfcAdvancedFace::IfcAdvancedFace(const std::weak_ptr& e) : IfcFaceSurface(e) { } +// Ifc4x3_add2::IfcAdvancedFace::IfcAdvancedFace(std::vector< ::Ifc4x3_add2::IfcFaceBound > v1_Bounds, ::Ifc4x3_add2::IfcSurface v2_FaceSurface, bool v3_SameSense) : IfcFaceSurface(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Bounds)->generalize());set_attribute_value(1, (v2_FaceSurface));set_attribute_value(2, (v3_SameSense));; populate_derived(); } // Function implementations for IfcAirTerminal -boost::optional< ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value > Ifc4x3_add2::IfcAirTerminal::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcAirTerminalTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value > Ifc4x3_add2::IfcAirTerminal::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcAirTerminalTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcAirTerminal::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcAirTerminal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[17]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAirTerminal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[17]); } const IfcParse::entity& Ifc4x3_add2::IfcAirTerminal::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[17]); } -Ifc4x3_add2::IfcAirTerminal::IfcAirTerminal(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcAirTerminal::IfcAirTerminal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcAirTerminal::IfcAirTerminal(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcAirTerminal::IfcAirTerminal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcAirTerminalBox -boost::optional< ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value > Ifc4x3_add2::IfcAirTerminalBox::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value > Ifc4x3_add2::IfcAirTerminalBox::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcAirTerminalBox::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcAirTerminalBox::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[18]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAirTerminalBox::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[18]); } const IfcParse::entity& Ifc4x3_add2::IfcAirTerminalBox::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[18]); } -Ifc4x3_add2::IfcAirTerminalBox::IfcAirTerminalBox(IfcEntityInstanceData&& e) : IfcFlowController(std::move(e)) { } -Ifc4x3_add2::IfcAirTerminalBox::IfcAirTerminalBox(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value > v9_PredefinedType) : IfcFlowController(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcAirTerminalBox::IfcAirTerminalBox(const std::weak_ptr& e) : IfcFlowController(e) { } +// Ifc4x3_add2::IfcAirTerminalBox::IfcAirTerminalBox(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value > v9_PredefinedType) : IfcFlowController(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcAirTerminalBoxType ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value Ifc4x3_add2::IfcAirTerminalBoxType::PredefinedType() const { return ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcAirTerminalBoxType::setPredefinedType(::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcAirTerminalBoxType::setPredefinedType(const ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcAirTerminalBoxType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[19]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAirTerminalBoxType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[19]); } const IfcParse::entity& Ifc4x3_add2::IfcAirTerminalBoxType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[19]); } -Ifc4x3_add2::IfcAirTerminalBoxType::IfcAirTerminalBoxType(IfcEntityInstanceData&& e) : IfcFlowControllerType(std::move(e)) { } -Ifc4x3_add2::IfcAirTerminalBoxType::IfcAirTerminalBoxType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcAirTerminalBoxType::IfcAirTerminalBoxType(const std::weak_ptr& e) : IfcFlowControllerType(e) { } +// Ifc4x3_add2::IfcAirTerminalBoxType::IfcAirTerminalBoxType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcAirTerminalType ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value Ifc4x3_add2::IfcAirTerminalType::PredefinedType() const { return ::Ifc4x3_add2::IfcAirTerminalTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcAirTerminalType::setPredefinedType(::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcAirTerminalType::setPredefinedType(const ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcAirTerminalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[21]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAirTerminalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[21]); } const IfcParse::entity& Ifc4x3_add2::IfcAirTerminalType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[21]); } -Ifc4x3_add2::IfcAirTerminalType::IfcAirTerminalType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcAirTerminalType::IfcAirTerminalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcAirTerminalType::IfcAirTerminalType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcAirTerminalType::IfcAirTerminalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcAirTerminalTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcAirToAirHeatRecovery -boost::optional< ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value > Ifc4x3_add2::IfcAirToAirHeatRecovery::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value > Ifc4x3_add2::IfcAirToAirHeatRecovery::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcAirToAirHeatRecovery::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcAirToAirHeatRecovery::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[23]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAirToAirHeatRecovery::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[23]); } const IfcParse::entity& Ifc4x3_add2::IfcAirToAirHeatRecovery::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[23]); } -Ifc4x3_add2::IfcAirToAirHeatRecovery::IfcAirToAirHeatRecovery(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcAirToAirHeatRecovery::IfcAirToAirHeatRecovery(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcAirToAirHeatRecovery::IfcAirToAirHeatRecovery(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcAirToAirHeatRecovery::IfcAirToAirHeatRecovery(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcAirToAirHeatRecoveryType ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value Ifc4x3_add2::IfcAirToAirHeatRecoveryType::PredefinedType() const { return ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcAirToAirHeatRecoveryType::setPredefinedType(::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcAirToAirHeatRecoveryType::setPredefinedType(const ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcAirToAirHeatRecoveryType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[24]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAirToAirHeatRecoveryType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[24]); } const IfcParse::entity& Ifc4x3_add2::IfcAirToAirHeatRecoveryType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[24]); } -Ifc4x3_add2::IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcAlarm -boost::optional< ::Ifc4x3_add2::IfcAlarmTypeEnum::Value > Ifc4x3_add2::IfcAlarm::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcAlarmTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcAlarmTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAlarmTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcAlarmTypeEnum::Value > Ifc4x3_add2::IfcAlarm::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcAlarmTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcAlarm::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcAlarmTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAlarmTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcAlarm::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[26]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAlarm::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[26]); } const IfcParse::entity& Ifc4x3_add2::IfcAlarm::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[26]); } -Ifc4x3_add2::IfcAlarm::IfcAlarm(IfcEntityInstanceData&& e) : IfcDistributionControlElement(std::move(e)) { } -Ifc4x3_add2::IfcAlarm::IfcAlarm(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcAlarmTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAlarmTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcAlarm::IfcAlarm(const std::weak_ptr& e) : IfcDistributionControlElement(e) { } +// Ifc4x3_add2::IfcAlarm::IfcAlarm(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcAlarmTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAlarmTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcAlarmType ::Ifc4x3_add2::IfcAlarmTypeEnum::Value Ifc4x3_add2::IfcAlarmType::PredefinedType() const { return ::Ifc4x3_add2::IfcAlarmTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcAlarmType::setPredefinedType(::Ifc4x3_add2::IfcAlarmTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcAlarmTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcAlarmType::setPredefinedType(const ::Ifc4x3_add2::IfcAlarmTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcAlarmTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcAlarmType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[27]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAlarmType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[27]); } const IfcParse::entity& Ifc4x3_add2::IfcAlarmType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[27]); } -Ifc4x3_add2::IfcAlarmType::IfcAlarmType(IfcEntityInstanceData&& e) : IfcDistributionControlElementType(std::move(e)) { } -Ifc4x3_add2::IfcAlarmType::IfcAlarmType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAlarmTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcAlarmTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcAlarmType::IfcAlarmType(const std::weak_ptr& e) : IfcDistributionControlElementType(e) { } +// Ifc4x3_add2::IfcAlarmType::IfcAlarmType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAlarmTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcAlarmTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcAlignment -boost::optional< ::Ifc4x3_add2::IfcAlignmentTypeEnum::Value > Ifc4x3_add2::IfcAlignment::PredefinedType() const { if(get_attribute_value(7).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcAlignmentTypeEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcAlignment::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcAlignmentTypeEnum::Value > v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcAlignmentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } +std::optional< ::Ifc4x3_add2::IfcAlignmentTypeEnum::Value > Ifc4x3_add2::IfcAlignment::PredefinedType() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcAlignmentTypeEnum::FromString(get_attribute_value(7)); } +void Ifc4x3_add2::IfcAlignment::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcAlignmentTypeEnum::Value >& v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcAlignmentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } -const IfcParse::entity& Ifc4x3_add2::IfcAlignment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[29]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAlignment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[29]); } const IfcParse::entity& Ifc4x3_add2::IfcAlignment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[29]); } -Ifc4x3_add2::IfcAlignment::IfcAlignment(IfcEntityInstanceData&& e) : IfcLinearPositioningElement(std::move(e)) { } -Ifc4x3_add2::IfcAlignment::IfcAlignment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc4x3_add2::IfcAlignmentTypeEnum::Value > v8_PredefinedType) : IfcLinearPositioningElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_PredefinedType) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcAlignmentTypeEnum::Class(),(size_t)*v8_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcAlignment::IfcAlignment(const std::weak_ptr& e) : IfcLinearPositioningElement(e) { } +// Ifc4x3_add2::IfcAlignment::IfcAlignment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< ::Ifc4x3_add2::IfcAlignmentTypeEnum::Value > v8_PredefinedType) : IfcLinearPositioningElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_PredefinedType) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcAlignmentTypeEnum::Class(),(size_t)*v8_PredefinedType))); }; populate_derived(); } // Function implementations for IfcAlignmentCant double Ifc4x3_add2::IfcAlignmentCant::RailHeadDistance() const { double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcAlignmentCant::setRailHeadDistance(double v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } +void Ifc4x3_add2::IfcAlignmentCant::setRailHeadDistance(const double& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } -const IfcParse::entity& Ifc4x3_add2::IfcAlignmentCant::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[30]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAlignmentCant::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[30]); } const IfcParse::entity& Ifc4x3_add2::IfcAlignmentCant::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[30]); } -Ifc4x3_add2::IfcAlignmentCant::IfcAlignmentCant(IfcEntityInstanceData&& e) : IfcLinearElement(std::move(e)) { } -Ifc4x3_add2::IfcAlignmentCant::IfcAlignmentCant(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, double v8_RailHeadDistance) : IfcLinearElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, (v8_RailHeadDistance));; populate_derived(); } +// Ifc4x3_add2::IfcAlignmentCant::IfcAlignmentCant(const std::weak_ptr& e) : IfcLinearElement(e) { } +// Ifc4x3_add2::IfcAlignmentCant::IfcAlignmentCant(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, double v8_RailHeadDistance) : IfcLinearElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (v8_RailHeadDistance));; populate_derived(); } // Function implementations for IfcAlignmentCantSegment double Ifc4x3_add2::IfcAlignmentCantSegment::StartDistAlong() const { double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcAlignmentCantSegment::setStartDistAlong(double v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcAlignmentCantSegment::setStartDistAlong(const double& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } double Ifc4x3_add2::IfcAlignmentCantSegment::HorizontalLength() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcAlignmentCantSegment::setHorizontalLength(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcAlignmentCantSegment::setHorizontalLength(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcAlignmentCantSegment::StartCantLeft() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcAlignmentCantSegment::setStartCantLeft(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -boost::optional< double > Ifc4x3_add2::IfcAlignmentCantSegment::EndCantLeft() const { if(get_attribute_value(5).isNull()) { return boost::none; } double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcAlignmentCantSegment::setEndCantLeft(boost::optional< double > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +void Ifc4x3_add2::IfcAlignmentCantSegment::setStartCantLeft(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +std::optional< double > Ifc4x3_add2::IfcAlignmentCantSegment::EndCantLeft() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } double v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcAlignmentCantSegment::setEndCantLeft(const std::optional< double >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } double Ifc4x3_add2::IfcAlignmentCantSegment::StartCantRight() const { double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcAlignmentCantSegment::setStartCantRight(double v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -boost::optional< double > Ifc4x3_add2::IfcAlignmentCantSegment::EndCantRight() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcAlignmentCantSegment::setEndCantRight(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +void Ifc4x3_add2::IfcAlignmentCantSegment::setStartCantRight(const double& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< double > Ifc4x3_add2::IfcAlignmentCantSegment::EndCantRight() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcAlignmentCantSegment::setEndCantRight(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } ::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Value Ifc4x3_add2::IfcAlignmentCantSegment::PredefinedType() const { return ::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcAlignmentCantSegment::setPredefinedType(::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Value v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcAlignmentCantSegment::setPredefinedType(const ::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Value& v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcAlignmentCantSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[31]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAlignmentCantSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[31]); } const IfcParse::entity& Ifc4x3_add2::IfcAlignmentCantSegment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[31]); } -Ifc4x3_add2::IfcAlignmentCantSegment::IfcAlignmentCantSegment(IfcEntityInstanceData&& e) : IfcAlignmentParameterSegment(std::move(e)) { } -Ifc4x3_add2::IfcAlignmentCantSegment::IfcAlignmentCantSegment(boost::optional< std::string > v1_StartTag, boost::optional< std::string > v2_EndTag, double v3_StartDistAlong, double v4_HorizontalLength, double v5_StartCantLeft, boost::optional< double > v6_EndCantLeft, double v7_StartCantRight, boost::optional< double > v8_EndCantRight, ::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Value v9_PredefinedType) : IfcAlignmentParameterSegment(IfcEntityInstanceData(in_memory_attribute_storage(9))) { if (v1_StartTag) {set_attribute_value(0, (*v1_StartTag)); } if (v2_EndTag) {set_attribute_value(1, (*v2_EndTag)); }set_attribute_value(2, (v3_StartDistAlong));set_attribute_value(3, (v4_HorizontalLength));set_attribute_value(4, (v5_StartCantLeft)); if (v6_EndCantLeft) {set_attribute_value(5, (*v6_EndCantLeft)); }set_attribute_value(6, (v7_StartCantRight)); if (v8_EndCantRight) {set_attribute_value(7, (*v8_EndCantRight)); }set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Class(),(size_t)v9_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcAlignmentCantSegment::IfcAlignmentCantSegment(const std::weak_ptr& e) : IfcAlignmentParameterSegment(e) { } +// Ifc4x3_add2::IfcAlignmentCantSegment::IfcAlignmentCantSegment(std::optional< std::string > v1_StartTag, std::optional< std::string > v2_EndTag, double v3_StartDistAlong, double v4_HorizontalLength, double v5_StartCantLeft, std::optional< double > v6_EndCantLeft, double v7_StartCantRight, std::optional< double > v8_EndCantRight, ::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Value v9_PredefinedType) : IfcAlignmentParameterSegment(const std::weak_ptr&(in_memory_attribute_storage(9))) { if (v1_StartTag) {set_attribute_value(0, (*v1_StartTag)); } if (v2_EndTag) {set_attribute_value(1, (*v2_EndTag)); }set_attribute_value(2, (v3_StartDistAlong));set_attribute_value(3, (v4_HorizontalLength));set_attribute_value(4, (v5_StartCantLeft)); if (v6_EndCantLeft) {set_attribute_value(5, (*v6_EndCantLeft)); }set_attribute_value(6, (v7_StartCantRight)); if (v8_EndCantRight) {set_attribute_value(7, (*v8_EndCantRight)); }set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Class(),(size_t)v9_PredefinedType)));; populate_derived(); } // Function implementations for IfcAlignmentHorizontal -const IfcParse::entity& Ifc4x3_add2::IfcAlignmentHorizontal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[33]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAlignmentHorizontal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[33]); } const IfcParse::entity& Ifc4x3_add2::IfcAlignmentHorizontal::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[33]); } -Ifc4x3_add2::IfcAlignmentHorizontal::IfcAlignmentHorizontal(IfcEntityInstanceData&& e) : IfcLinearElement(std::move(e)) { } -Ifc4x3_add2::IfcAlignmentHorizontal::IfcAlignmentHorizontal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation) : IfcLinearElement(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcAlignmentHorizontal::IfcAlignmentHorizontal(const std::weak_ptr& e) : IfcLinearElement(e) { } +// Ifc4x3_add2::IfcAlignmentHorizontal::IfcAlignmentHorizontal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation) : IfcLinearElement(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }; populate_derived(); } // Function implementations for IfcAlignmentHorizontalSegment -::Ifc4x3_add2::IfcCartesianPoint* Ifc4x3_add2::IfcAlignmentHorizontalSegment::StartPoint() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcCartesianPoint>(true); } -void Ifc4x3_add2::IfcAlignmentHorizontalSegment::setStartPoint(::Ifc4x3_add2::IfcCartesianPoint* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcCartesianPoint Ifc4x3_add2::IfcAlignmentHorizontalSegment::StartPoint() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcCartesianPoint>(); } +void Ifc4x3_add2::IfcAlignmentHorizontalSegment::setStartPoint(const ::Ifc4x3_add2::IfcCartesianPoint& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } double Ifc4x3_add2::IfcAlignmentHorizontalSegment::StartDirection() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcAlignmentHorizontalSegment::setStartDirection(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcAlignmentHorizontalSegment::setStartDirection(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcAlignmentHorizontalSegment::StartRadiusOfCurvature() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcAlignmentHorizontalSegment::setStartRadiusOfCurvature(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcAlignmentHorizontalSegment::setStartRadiusOfCurvature(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } double Ifc4x3_add2::IfcAlignmentHorizontalSegment::EndRadiusOfCurvature() const { double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcAlignmentHorizontalSegment::setEndRadiusOfCurvature(double v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcAlignmentHorizontalSegment::setEndRadiusOfCurvature(const double& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } double Ifc4x3_add2::IfcAlignmentHorizontalSegment::SegmentLength() const { double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcAlignmentHorizontalSegment::setSegmentLength(double v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -boost::optional< double > Ifc4x3_add2::IfcAlignmentHorizontalSegment::GravityCenterLineHeight() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcAlignmentHorizontalSegment::setGravityCenterLineHeight(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +void Ifc4x3_add2::IfcAlignmentHorizontalSegment::setSegmentLength(const double& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< double > Ifc4x3_add2::IfcAlignmentHorizontalSegment::GravityCenterLineHeight() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcAlignmentHorizontalSegment::setGravityCenterLineHeight(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } ::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Value Ifc4x3_add2::IfcAlignmentHorizontalSegment::PredefinedType() const { return ::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcAlignmentHorizontalSegment::setPredefinedType(::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Value v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcAlignmentHorizontalSegment::setPredefinedType(const ::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Value& v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcAlignmentHorizontalSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[34]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAlignmentHorizontalSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[34]); } const IfcParse::entity& Ifc4x3_add2::IfcAlignmentHorizontalSegment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[34]); } -Ifc4x3_add2::IfcAlignmentHorizontalSegment::IfcAlignmentHorizontalSegment(IfcEntityInstanceData&& e) : IfcAlignmentParameterSegment(std::move(e)) { } -Ifc4x3_add2::IfcAlignmentHorizontalSegment::IfcAlignmentHorizontalSegment(boost::optional< std::string > v1_StartTag, boost::optional< std::string > v2_EndTag, ::Ifc4x3_add2::IfcCartesianPoint* v3_StartPoint, double v4_StartDirection, double v5_StartRadiusOfCurvature, double v6_EndRadiusOfCurvature, double v7_SegmentLength, boost::optional< double > v8_GravityCenterLineHeight, ::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Value v9_PredefinedType) : IfcAlignmentParameterSegment(IfcEntityInstanceData(in_memory_attribute_storage(9))) { if (v1_StartTag) {set_attribute_value(0, (*v1_StartTag)); } if (v2_EndTag) {set_attribute_value(1, (*v2_EndTag)); }set_attribute_value(2, v3_StartPoint ? v3_StartPoint->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_StartDirection));set_attribute_value(4, (v5_StartRadiusOfCurvature));set_attribute_value(5, (v6_EndRadiusOfCurvature));set_attribute_value(6, (v7_SegmentLength)); if (v8_GravityCenterLineHeight) {set_attribute_value(7, (*v8_GravityCenterLineHeight)); }set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Class(),(size_t)v9_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcAlignmentHorizontalSegment::IfcAlignmentHorizontalSegment(const std::weak_ptr& e) : IfcAlignmentParameterSegment(e) { } +// Ifc4x3_add2::IfcAlignmentHorizontalSegment::IfcAlignmentHorizontalSegment(std::optional< std::string > v1_StartTag, std::optional< std::string > v2_EndTag, ::Ifc4x3_add2::IfcCartesianPoint v3_StartPoint, double v4_StartDirection, double v5_StartRadiusOfCurvature, double v6_EndRadiusOfCurvature, double v7_SegmentLength, std::optional< double > v8_GravityCenterLineHeight, ::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Value v9_PredefinedType) : IfcAlignmentParameterSegment(const std::weak_ptr&(in_memory_attribute_storage(9))) { if (v1_StartTag) {set_attribute_value(0, (*v1_StartTag)); } if (v2_EndTag) {set_attribute_value(1, (*v2_EndTag)); }set_attribute_value(2, (v3_StartPoint));set_attribute_value(3, (v4_StartDirection));set_attribute_value(4, (v5_StartRadiusOfCurvature));set_attribute_value(5, (v6_EndRadiusOfCurvature));set_attribute_value(6, (v7_SegmentLength)); if (v8_GravityCenterLineHeight) {set_attribute_value(7, (*v8_GravityCenterLineHeight)); }set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Class(),(size_t)v9_PredefinedType)));; populate_derived(); } // Function implementations for IfcAlignmentParameterSegment -boost::optional< std::string > Ifc4x3_add2::IfcAlignmentParameterSegment::StartTag() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcAlignmentParameterSegment::setStartTag(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcAlignmentParameterSegment::EndTag() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcAlignmentParameterSegment::setEndTag(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcAlignmentParameterSegment::StartTag() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcAlignmentParameterSegment::setStartTag(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcAlignmentParameterSegment::EndTag() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcAlignmentParameterSegment::setEndTag(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -const IfcParse::entity& Ifc4x3_add2::IfcAlignmentParameterSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[36]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAlignmentParameterSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[36]); } const IfcParse::entity& Ifc4x3_add2::IfcAlignmentParameterSegment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[36]); } -Ifc4x3_add2::IfcAlignmentParameterSegment::IfcAlignmentParameterSegment(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcAlignmentParameterSegment::IfcAlignmentParameterSegment(boost::optional< std::string > v1_StartTag, boost::optional< std::string > v2_EndTag) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { if (v1_StartTag) {set_attribute_value(0, (*v1_StartTag)); } if (v2_EndTag) {set_attribute_value(1, (*v2_EndTag)); }; populate_derived(); } +// Ifc4x3_add2::IfcAlignmentParameterSegment::IfcAlignmentParameterSegment(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcAlignmentParameterSegment::IfcAlignmentParameterSegment(std::optional< std::string > v1_StartTag, std::optional< std::string > v2_EndTag) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { if (v1_StartTag) {set_attribute_value(0, (*v1_StartTag)); } if (v2_EndTag) {set_attribute_value(1, (*v2_EndTag)); }; populate_derived(); } // Function implementations for IfcAlignmentSegment -::Ifc4x3_add2::IfcAlignmentParameterSegment* Ifc4x3_add2::IfcAlignmentSegment::DesignParameters() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(7)))->as<::Ifc4x3_add2::IfcAlignmentParameterSegment>(true); } -void Ifc4x3_add2::IfcAlignmentSegment::setDesignParameters(::Ifc4x3_add2::IfcAlignmentParameterSegment* v) { set_attribute_value(7, v->as());if constexpr (false)unset_attribute_value(7); } +::Ifc4x3_add2::IfcAlignmentParameterSegment Ifc4x3_add2::IfcAlignmentSegment::DesignParameters() const { return ((express::Base)(get_attribute_value(7))).as<::Ifc4x3_add2::IfcAlignmentParameterSegment>(); } +void Ifc4x3_add2::IfcAlignmentSegment::setDesignParameters(const ::Ifc4x3_add2::IfcAlignmentParameterSegment& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } -const IfcParse::entity& Ifc4x3_add2::IfcAlignmentSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[37]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAlignmentSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[37]); } const IfcParse::entity& Ifc4x3_add2::IfcAlignmentSegment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[37]); } -Ifc4x3_add2::IfcAlignmentSegment::IfcAlignmentSegment(IfcEntityInstanceData&& e) : IfcLinearElement(std::move(e)) { } -Ifc4x3_add2::IfcAlignmentSegment::IfcAlignmentSegment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcAlignmentParameterSegment* v8_DesignParameters) : IfcLinearElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_DesignParameters ? v8_DesignParameters->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcAlignmentSegment::IfcAlignmentSegment(const std::weak_ptr& e) : IfcLinearElement(e) { } +// Ifc4x3_add2::IfcAlignmentSegment::IfcAlignmentSegment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcAlignmentParameterSegment v8_DesignParameters) : IfcLinearElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (v8_DesignParameters));; populate_derived(); } // Function implementations for IfcAlignmentVertical -const IfcParse::entity& Ifc4x3_add2::IfcAlignmentVertical::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[39]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAlignmentVertical::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[39]); } const IfcParse::entity& Ifc4x3_add2::IfcAlignmentVertical::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[39]); } -Ifc4x3_add2::IfcAlignmentVertical::IfcAlignmentVertical(IfcEntityInstanceData&& e) : IfcLinearElement(std::move(e)) { } -Ifc4x3_add2::IfcAlignmentVertical::IfcAlignmentVertical(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation) : IfcLinearElement(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcAlignmentVertical::IfcAlignmentVertical(const std::weak_ptr& e) : IfcLinearElement(e) { } +// Ifc4x3_add2::IfcAlignmentVertical::IfcAlignmentVertical(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation) : IfcLinearElement(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }; populate_derived(); } // Function implementations for IfcAlignmentVerticalSegment double Ifc4x3_add2::IfcAlignmentVerticalSegment::StartDistAlong() const { double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcAlignmentVerticalSegment::setStartDistAlong(double v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcAlignmentVerticalSegment::setStartDistAlong(const double& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } double Ifc4x3_add2::IfcAlignmentVerticalSegment::HorizontalLength() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcAlignmentVerticalSegment::setHorizontalLength(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcAlignmentVerticalSegment::setHorizontalLength(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcAlignmentVerticalSegment::StartHeight() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcAlignmentVerticalSegment::setStartHeight(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcAlignmentVerticalSegment::setStartHeight(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } double Ifc4x3_add2::IfcAlignmentVerticalSegment::StartGradient() const { double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcAlignmentVerticalSegment::setStartGradient(double v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcAlignmentVerticalSegment::setStartGradient(const double& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } double Ifc4x3_add2::IfcAlignmentVerticalSegment::EndGradient() const { double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcAlignmentVerticalSegment::setEndGradient(double v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -boost::optional< double > Ifc4x3_add2::IfcAlignmentVerticalSegment::RadiusOfCurvature() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcAlignmentVerticalSegment::setRadiusOfCurvature(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +void Ifc4x3_add2::IfcAlignmentVerticalSegment::setEndGradient(const double& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< double > Ifc4x3_add2::IfcAlignmentVerticalSegment::RadiusOfCurvature() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcAlignmentVerticalSegment::setRadiusOfCurvature(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } ::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Value Ifc4x3_add2::IfcAlignmentVerticalSegment::PredefinedType() const { return ::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcAlignmentVerticalSegment::setPredefinedType(::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Value v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcAlignmentVerticalSegment::setPredefinedType(const ::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Value& v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcAlignmentVerticalSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[40]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAlignmentVerticalSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[40]); } const IfcParse::entity& Ifc4x3_add2::IfcAlignmentVerticalSegment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[40]); } -Ifc4x3_add2::IfcAlignmentVerticalSegment::IfcAlignmentVerticalSegment(IfcEntityInstanceData&& e) : IfcAlignmentParameterSegment(std::move(e)) { } -Ifc4x3_add2::IfcAlignmentVerticalSegment::IfcAlignmentVerticalSegment(boost::optional< std::string > v1_StartTag, boost::optional< std::string > v2_EndTag, double v3_StartDistAlong, double v4_HorizontalLength, double v5_StartHeight, double v6_StartGradient, double v7_EndGradient, boost::optional< double > v8_RadiusOfCurvature, ::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Value v9_PredefinedType) : IfcAlignmentParameterSegment(IfcEntityInstanceData(in_memory_attribute_storage(9))) { if (v1_StartTag) {set_attribute_value(0, (*v1_StartTag)); } if (v2_EndTag) {set_attribute_value(1, (*v2_EndTag)); }set_attribute_value(2, (v3_StartDistAlong));set_attribute_value(3, (v4_HorizontalLength));set_attribute_value(4, (v5_StartHeight));set_attribute_value(5, (v6_StartGradient));set_attribute_value(6, (v7_EndGradient)); if (v8_RadiusOfCurvature) {set_attribute_value(7, (*v8_RadiusOfCurvature)); }set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Class(),(size_t)v9_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcAlignmentVerticalSegment::IfcAlignmentVerticalSegment(const std::weak_ptr& e) : IfcAlignmentParameterSegment(e) { } +// Ifc4x3_add2::IfcAlignmentVerticalSegment::IfcAlignmentVerticalSegment(std::optional< std::string > v1_StartTag, std::optional< std::string > v2_EndTag, double v3_StartDistAlong, double v4_HorizontalLength, double v5_StartHeight, double v6_StartGradient, double v7_EndGradient, std::optional< double > v8_RadiusOfCurvature, ::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Value v9_PredefinedType) : IfcAlignmentParameterSegment(const std::weak_ptr&(in_memory_attribute_storage(9))) { if (v1_StartTag) {set_attribute_value(0, (*v1_StartTag)); } if (v2_EndTag) {set_attribute_value(1, (*v2_EndTag)); }set_attribute_value(2, (v3_StartDistAlong));set_attribute_value(3, (v4_HorizontalLength));set_attribute_value(4, (v5_StartHeight));set_attribute_value(5, (v6_StartGradient));set_attribute_value(6, (v7_EndGradient)); if (v8_RadiusOfCurvature) {set_attribute_value(7, (*v8_RadiusOfCurvature)); }set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Class(),(size_t)v9_PredefinedType)));; populate_derived(); } // Function implementations for IfcAnnotation -boost::optional< ::Ifc4x3_add2::IfcAnnotationTypeEnum::Value > Ifc4x3_add2::IfcAnnotation::PredefinedType() const { if(get_attribute_value(7).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcAnnotationTypeEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcAnnotation::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcAnnotationTypeEnum::Value > v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcAnnotationTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } +std::optional< ::Ifc4x3_add2::IfcAnnotationTypeEnum::Value > Ifc4x3_add2::IfcAnnotation::PredefinedType() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcAnnotationTypeEnum::FromString(get_attribute_value(7)); } +void Ifc4x3_add2::IfcAnnotation::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcAnnotationTypeEnum::Value >& v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcAnnotationTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } -::Ifc4x3_add2::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_add2::IfcAnnotation::ContainedInStructure() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[926], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelContainedInSpatialStructure> Ifc4x3_add2::IfcAnnotation::ContainedInStructure() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[926], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcAnnotation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[46]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAnnotation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[46]); } const IfcParse::entity& Ifc4x3_add2::IfcAnnotation::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[46]); } -Ifc4x3_add2::IfcAnnotation::IfcAnnotation(IfcEntityInstanceData&& e) : IfcProduct(std::move(e)) { } -Ifc4x3_add2::IfcAnnotation::IfcAnnotation(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc4x3_add2::IfcAnnotationTypeEnum::Value > v8_PredefinedType) : IfcProduct(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_PredefinedType) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcAnnotationTypeEnum::Class(),(size_t)*v8_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcAnnotation::IfcAnnotation(const std::weak_ptr& e) : IfcProduct(e) { } +// Ifc4x3_add2::IfcAnnotation::IfcAnnotation(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< ::Ifc4x3_add2::IfcAnnotationTypeEnum::Value > v8_PredefinedType) : IfcProduct(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_PredefinedType) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcAnnotationTypeEnum::Class(),(size_t)*v8_PredefinedType))); }; populate_derived(); } // Function implementations for IfcAnnotationFillArea -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcAnnotationFillArea::OuterBoundary() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcAnnotationFillArea::setOuterBoundary(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr > Ifc4x3_add2::IfcAnnotationFillArea::InnerBoundaries() const { if(get_attribute_value(1).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcCurve >(); } -void Ifc4x3_add2::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr > v) { if (v) {set_attribute_value(1, (*v)->generalize());} else {unset_attribute_value(1);} } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcAnnotationFillArea::OuterBoundary() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcAnnotationFillArea::setOuterBoundary(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< std::vector< ::Ifc4x3_add2::IfcCurve > > Ifc4x3_add2::IfcAnnotationFillArea::InnerBoundaries() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcCurve>(es); } +void Ifc4x3_add2::IfcAnnotationFillArea::setInnerBoundaries(const std::optional< std::vector< ::Ifc4x3_add2::IfcCurve > >& v) { if (v) {set_attribute_value(1, cast_vector(*v));} else {unset_attribute_value(1);} } -const IfcParse::entity& Ifc4x3_add2::IfcAnnotationFillArea::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[47]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAnnotationFillArea::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[47]); } const IfcParse::entity& Ifc4x3_add2::IfcAnnotationFillArea::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[47]); } -Ifc4x3_add2::IfcAnnotationFillArea::IfcAnnotationFillArea(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcAnnotationFillArea::IfcAnnotationFillArea(::Ifc4x3_add2::IfcCurve* v1_OuterBoundary, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr > v2_InnerBoundaries) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_OuterBoundary ? v1_OuterBoundary->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_InnerBoundaries) {set_attribute_value(1, (*v2_InnerBoundaries)->generalize()); }; populate_derived(); } +// Ifc4x3_add2::IfcAnnotationFillArea::IfcAnnotationFillArea(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcAnnotationFillArea::IfcAnnotationFillArea(::Ifc4x3_add2::IfcCurve v1_OuterBoundary, std::optional< std::vector< ::Ifc4x3_add2::IfcCurve > > v2_InnerBoundaries) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_OuterBoundary)); if (v2_InnerBoundaries) {set_attribute_value(1, (*v2_InnerBoundaries)->generalize()); }; populate_derived(); } // Function implementations for IfcApplication -::Ifc4x3_add2::IfcOrganization* Ifc4x3_add2::IfcApplication::ApplicationDeveloper() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcOrganization>(true); } -void Ifc4x3_add2::IfcApplication::setApplicationDeveloper(::Ifc4x3_add2::IfcOrganization* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcOrganization Ifc4x3_add2::IfcApplication::ApplicationDeveloper() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcOrganization>(); } +void Ifc4x3_add2::IfcApplication::setApplicationDeveloper(const ::Ifc4x3_add2::IfcOrganization& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } std::string Ifc4x3_add2::IfcApplication::Version() const { std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcApplication::setVersion(std::string v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcApplication::setVersion(const std::string& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } std::string Ifc4x3_add2::IfcApplication::ApplicationFullName() const { std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcApplication::setApplicationFullName(std::string v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcApplication::setApplicationFullName(const std::string& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } std::string Ifc4x3_add2::IfcApplication::ApplicationIdentifier() const { std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcApplication::setApplicationIdentifier(std::string v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcApplication::setApplicationIdentifier(const std::string& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcApplication::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[49]); } +// const IfcParse::entity& Ifc4x3_add2::IfcApplication::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[49]); } const IfcParse::entity& Ifc4x3_add2::IfcApplication::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[49]); } -Ifc4x3_add2::IfcApplication::IfcApplication(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcApplication::IfcApplication(::Ifc4x3_add2::IfcOrganization* v1_ApplicationDeveloper, std::string v2_Version, std::string v3_ApplicationFullName, std::string v4_ApplicationIdentifier) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_ApplicationDeveloper ? v1_ApplicationDeveloper->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Version));set_attribute_value(2, (v3_ApplicationFullName));set_attribute_value(3, (v4_ApplicationIdentifier));; populate_derived(); } +// Ifc4x3_add2::IfcApplication::IfcApplication(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcApplication::IfcApplication(::Ifc4x3_add2::IfcOrganization v1_ApplicationDeveloper, std::string v2_Version, std::string v3_ApplicationFullName, std::string v4_ApplicationIdentifier) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_ApplicationDeveloper));set_attribute_value(1, (v2_Version));set_attribute_value(2, (v3_ApplicationFullName));set_attribute_value(3, (v4_ApplicationIdentifier));; populate_derived(); } // Function implementations for IfcAppliedValue -boost::optional< std::string > Ifc4x3_add2::IfcAppliedValue::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcAppliedValue::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcAppliedValue::Description() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcAppliedValue::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -::Ifc4x3_add2::IfcAppliedValueSelect* Ifc4x3_add2::IfcAppliedValue::AppliedValue() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcAppliedValueSelect>(true); } -void Ifc4x3_add2::IfcAppliedValue::setAppliedValue(::Ifc4x3_add2::IfcAppliedValueSelect* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcMeasureWithUnit* Ifc4x3_add2::IfcAppliedValue::UnitBasis() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcMeasureWithUnit>(true); } -void Ifc4x3_add2::IfcAppliedValue::setUnitBasis(::Ifc4x3_add2::IfcMeasureWithUnit* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcAppliedValue::ApplicableDate() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcAppliedValue::FixedUntilDate() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< std::string > Ifc4x3_add2::IfcAppliedValue::Category() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcAppliedValue::setCategory(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< std::string > Ifc4x3_add2::IfcAppliedValue::Condition() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcAppliedValue::setCondition(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value > Ifc4x3_add2::IfcAppliedValue::ArithmeticOperator() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcArithmeticOperatorEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcArithmeticOperatorEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > Ifc4x3_add2::IfcAppliedValue::Components() const { if(get_attribute_value(9).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(9); return es->as< ::Ifc4x3_add2::IfcAppliedValue >(); } -void Ifc4x3_add2::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v) { if (v) {set_attribute_value(9, (*v)->generalize());} else {unset_attribute_value(9);} } +std::optional< std::string > Ifc4x3_add2::IfcAppliedValue::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcAppliedValue::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcAppliedValue::Description() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcAppliedValue::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +::Ifc4x3_add2::IfcAppliedValueSelect Ifc4x3_add2::IfcAppliedValue::AppliedValue() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcAppliedValueSelect{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcAppliedValueSelect>(); } +void Ifc4x3_add2::IfcAppliedValue::setAppliedValue(const ::Ifc4x3_add2::IfcAppliedValueSelect& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcMeasureWithUnit Ifc4x3_add2::IfcAppliedValue::UnitBasis() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcMeasureWithUnit{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcMeasureWithUnit>(); } +void Ifc4x3_add2::IfcAppliedValue::setUnitBasis(const ::Ifc4x3_add2::IfcMeasureWithUnit& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcAppliedValue::ApplicableDate() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcAppliedValue::setApplicableDate(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcAppliedValue::FixedUntilDate() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcAppliedValue::setFixedUntilDate(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcAppliedValue::Category() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcAppliedValue::setCategory(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcAppliedValue::Condition() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcAppliedValue::setCondition(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value > Ifc4x3_add2::IfcAppliedValue::ArithmeticOperator() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcArithmeticOperatorEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcAppliedValue::setArithmeticOperator(const std::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcArithmeticOperatorEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > Ifc4x3_add2::IfcAppliedValue::Components() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(9); return cast_vector<::Ifc4x3_add2::IfcAppliedValue>(es); } +void Ifc4x3_add2::IfcAppliedValue::setComponents(const std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > >& v) { if (v) {set_attribute_value(9, cast_vector(*v));} else {unset_attribute_value(9);} } -::Ifc4x3_add2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_add2::IfcAppliedValue::HasExternalReference() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[427], 3)->as(); } +std::vector<::Ifc4x3_add2::IfcExternalReferenceRelationship> Ifc4x3_add2::IfcAppliedValue::HasExternalReference() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[427], 3)); } -const IfcParse::entity& Ifc4x3_add2::IfcAppliedValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[50]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAppliedValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[50]); } const IfcParse::entity& Ifc4x3_add2::IfcAppliedValue::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[50]); } -Ifc4x3_add2::IfcAppliedValue::IfcAppliedValue(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcAppliedValue::IfcAppliedValue(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcAppliedValueSelect* v3_AppliedValue, ::Ifc4x3_add2::IfcMeasureWithUnit* v4_UnitBasis, boost::optional< std::string > v5_ApplicableDate, boost::optional< std::string > v6_FixedUntilDate, boost::optional< std::string > v7_Category, boost::optional< std::string > v8_Condition, boost::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value > v9_ArithmeticOperator, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_Components) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(10))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_AppliedValue ? v3_AppliedValue->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_UnitBasis ? v4_UnitBasis->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_ApplicableDate) {set_attribute_value(4, (*v5_ApplicableDate)); } if (v6_FixedUntilDate) {set_attribute_value(5, (*v6_FixedUntilDate)); } if (v7_Category) {set_attribute_value(6, (*v7_Category)); } if (v8_Condition) {set_attribute_value(7, (*v8_Condition)); } if (v9_ArithmeticOperator) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcArithmeticOperatorEnum::Class(),(size_t)*v9_ArithmeticOperator))); } if (v10_Components) {set_attribute_value(9, (*v10_Components)->generalize()); }; populate_derived(); } +// Ifc4x3_add2::IfcAppliedValue::IfcAppliedValue(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcAppliedValue::IfcAppliedValue(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcAppliedValueSelect v3_AppliedValue, ::Ifc4x3_add2::IfcMeasureWithUnit v4_UnitBasis, std::optional< std::string > v5_ApplicableDate, std::optional< std::string > v6_FixedUntilDate, std::optional< std::string > v7_Category, std::optional< std::string > v8_Condition, std::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value > v9_ArithmeticOperator, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_Components) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(10))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_AppliedValue) {set_attribute_value(2, (*v3_AppliedValue)); } if (v4_UnitBasis) {set_attribute_value(3, (*v4_UnitBasis)); } if (v5_ApplicableDate) {set_attribute_value(4, (*v5_ApplicableDate)); } if (v6_FixedUntilDate) {set_attribute_value(5, (*v6_FixedUntilDate)); } if (v7_Category) {set_attribute_value(6, (*v7_Category)); } if (v8_Condition) {set_attribute_value(7, (*v8_Condition)); } if (v9_ArithmeticOperator) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcArithmeticOperatorEnum::Class(),(size_t)*v9_ArithmeticOperator))); } if (v10_Components) {set_attribute_value(9, (*v10_Components)->generalize()); }; populate_derived(); } // Function implementations for IfcApproval -boost::optional< std::string > Ifc4x3_add2::IfcApproval::Identifier() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcApproval::setIdentifier(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcApproval::Name() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcApproval::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::string > Ifc4x3_add2::IfcApproval::Description() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcApproval::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< std::string > Ifc4x3_add2::IfcApproval::TimeOfApproval() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< std::string > Ifc4x3_add2::IfcApproval::Status() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcApproval::setStatus(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcApproval::Level() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcApproval::setLevel(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< std::string > Ifc4x3_add2::IfcApproval::Qualifier() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcApproval::setQualifier(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -::Ifc4x3_add2::IfcActorSelect* Ifc4x3_add2::IfcApproval::RequestingApproval() const { if(get_attribute_value(7).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(7)))->as<::Ifc4x3_add2::IfcActorSelect>(true); } -void Ifc4x3_add2::IfcApproval::setRequestingApproval(::Ifc4x3_add2::IfcActorSelect* v) { set_attribute_value(7, v->as());if constexpr (false)unset_attribute_value(7); } -::Ifc4x3_add2::IfcActorSelect* Ifc4x3_add2::IfcApproval::GivingApproval() const { if(get_attribute_value(8).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(8)))->as<::Ifc4x3_add2::IfcActorSelect>(true); } -void Ifc4x3_add2::IfcApproval::setGivingApproval(::Ifc4x3_add2::IfcActorSelect* v) { set_attribute_value(8, v->as());if constexpr (false)unset_attribute_value(8); } +std::optional< std::string > Ifc4x3_add2::IfcApproval::Identifier() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcApproval::setIdentifier(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcApproval::Name() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcApproval::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcApproval::Description() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcApproval::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::string > Ifc4x3_add2::IfcApproval::TimeOfApproval() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcApproval::setTimeOfApproval(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< std::string > Ifc4x3_add2::IfcApproval::Status() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcApproval::setStatus(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcApproval::Level() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcApproval::setLevel(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcApproval::Qualifier() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcApproval::setQualifier(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +::Ifc4x3_add2::IfcActorSelect Ifc4x3_add2::IfcApproval::RequestingApproval() const { if(get_attribute_value(7).isNull()) { return ::Ifc4x3_add2::IfcActorSelect{}; } return ((express::Base)(get_attribute_value(7))).as<::Ifc4x3_add2::IfcActorSelect>(); } +void Ifc4x3_add2::IfcApproval::setRequestingApproval(const ::Ifc4x3_add2::IfcActorSelect& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } +::Ifc4x3_add2::IfcActorSelect Ifc4x3_add2::IfcApproval::GivingApproval() const { if(get_attribute_value(8).isNull()) { return ::Ifc4x3_add2::IfcActorSelect{}; } return ((express::Base)(get_attribute_value(8))).as<::Ifc4x3_add2::IfcActorSelect>(); } +void Ifc4x3_add2::IfcApproval::setGivingApproval(const ::Ifc4x3_add2::IfcActorSelect& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } -::Ifc4x3_add2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_add2::IfcApproval::HasExternalReferences() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[427], 3)->as(); } -::Ifc4x3_add2::IfcRelAssociatesApproval::list::ptr Ifc4x3_add2::IfcApproval::ApprovedObjects() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[909], 5)->as(); } -::Ifc4x3_add2::IfcResourceApprovalRelationship::list::ptr Ifc4x3_add2::IfcApproval::ApprovedResources() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[955], 3)->as(); } -::Ifc4x3_add2::IfcApprovalRelationship::list::ptr Ifc4x3_add2::IfcApproval::IsRelatedWith() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[53], 3)->as(); } -::Ifc4x3_add2::IfcApprovalRelationship::list::ptr Ifc4x3_add2::IfcApproval::Relates() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[53], 2)->as(); } +std::vector<::Ifc4x3_add2::IfcExternalReferenceRelationship> Ifc4x3_add2::IfcApproval::HasExternalReferences() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[427], 3)); } +std::vector<::Ifc4x3_add2::IfcRelAssociatesApproval> Ifc4x3_add2::IfcApproval::ApprovedObjects() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[909], 5)); } +std::vector<::Ifc4x3_add2::IfcResourceApprovalRelationship> Ifc4x3_add2::IfcApproval::ApprovedResources() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[955], 3)); } +std::vector<::Ifc4x3_add2::IfcApprovalRelationship> Ifc4x3_add2::IfcApproval::IsRelatedWith() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[53], 3)); } +std::vector<::Ifc4x3_add2::IfcApprovalRelationship> Ifc4x3_add2::IfcApproval::Relates() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[53], 2)); } -const IfcParse::entity& Ifc4x3_add2::IfcApproval::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[52]); } +// const IfcParse::entity& Ifc4x3_add2::IfcApproval::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[52]); } const IfcParse::entity& Ifc4x3_add2::IfcApproval::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[52]); } -Ifc4x3_add2::IfcApproval::IfcApproval(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcApproval::IfcApproval(boost::optional< std::string > v1_Identifier, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, boost::optional< std::string > v4_TimeOfApproval, boost::optional< std::string > v5_Status, boost::optional< std::string > v6_Level, boost::optional< std::string > v7_Qualifier, ::Ifc4x3_add2::IfcActorSelect* v8_RequestingApproval, ::Ifc4x3_add2::IfcActorSelect* v9_GivingApproval) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(9))) { if (v1_Identifier) {set_attribute_value(0, (*v1_Identifier)); } if (v2_Name) {set_attribute_value(1, (*v2_Name)); } if (v3_Description) {set_attribute_value(2, (*v3_Description)); } if (v4_TimeOfApproval) {set_attribute_value(3, (*v4_TimeOfApproval)); } if (v5_Status) {set_attribute_value(4, (*v5_Status)); } if (v6_Level) {set_attribute_value(5, (*v6_Level)); } if (v7_Qualifier) {set_attribute_value(6, (*v7_Qualifier)); }set_attribute_value(7, v8_RequestingApproval ? v8_RequestingApproval->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, v9_GivingApproval ? v9_GivingApproval->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcApproval::IfcApproval(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcApproval::IfcApproval(std::optional< std::string > v1_Identifier, std::optional< std::string > v2_Name, std::optional< std::string > v3_Description, std::optional< std::string > v4_TimeOfApproval, std::optional< std::string > v5_Status, std::optional< std::string > v6_Level, std::optional< std::string > v7_Qualifier, ::Ifc4x3_add2::IfcActorSelect v8_RequestingApproval, ::Ifc4x3_add2::IfcActorSelect v9_GivingApproval) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(9))) { if (v1_Identifier) {set_attribute_value(0, (*v1_Identifier)); } if (v2_Name) {set_attribute_value(1, (*v2_Name)); } if (v3_Description) {set_attribute_value(2, (*v3_Description)); } if (v4_TimeOfApproval) {set_attribute_value(3, (*v4_TimeOfApproval)); } if (v5_Status) {set_attribute_value(4, (*v5_Status)); } if (v6_Level) {set_attribute_value(5, (*v6_Level)); } if (v7_Qualifier) {set_attribute_value(6, (*v7_Qualifier)); } if (v8_RequestingApproval) {set_attribute_value(7, (*v8_RequestingApproval)); } if (v9_GivingApproval) {set_attribute_value(8, (*v9_GivingApproval)); }; populate_derived(); } // Function implementations for IfcApprovalRelationship -::Ifc4x3_add2::IfcApproval* Ifc4x3_add2::IfcApprovalRelationship::RelatingApproval() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcApproval>(true); } -void Ifc4x3_add2::IfcApprovalRelationship::setRelatingApproval(::Ifc4x3_add2::IfcApproval* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -aggregate_of< ::Ifc4x3_add2::IfcApproval >::ptr Ifc4x3_add2::IfcApprovalRelationship::RelatedApprovals() const { aggregate_of_instance::ptr es = get_attribute_value(3); return es->as< ::Ifc4x3_add2::IfcApproval >(); } -void Ifc4x3_add2::IfcApprovalRelationship::setRelatedApprovals(aggregate_of< ::Ifc4x3_add2::IfcApproval >::ptr v) { set_attribute_value(3, (v)->generalize());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcApproval Ifc4x3_add2::IfcApprovalRelationship::RelatingApproval() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcApproval>(); } +void Ifc4x3_add2::IfcApprovalRelationship::setRelatingApproval(const ::Ifc4x3_add2::IfcApproval& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +std::vector< ::Ifc4x3_add2::IfcApproval > Ifc4x3_add2::IfcApprovalRelationship::RelatedApprovals() const { std::vector es = get_attribute_value(3); return cast_vector<::Ifc4x3_add2::IfcApproval>(es); } +void Ifc4x3_add2::IfcApprovalRelationship::setRelatedApprovals(const std::vector< ::Ifc4x3_add2::IfcApproval >& v) { set_attribute_value(3, cast_vector(v));if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcApprovalRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[53]); } +// const IfcParse::entity& Ifc4x3_add2::IfcApprovalRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[53]); } const IfcParse::entity& Ifc4x3_add2::IfcApprovalRelationship::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[53]); } -Ifc4x3_add2::IfcApprovalRelationship::IfcApprovalRelationship(IfcEntityInstanceData&& e) : IfcResourceLevelRelationship(std::move(e)) { } -Ifc4x3_add2::IfcApprovalRelationship::IfcApprovalRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcApproval* v3_RelatingApproval, aggregate_of< ::Ifc4x3_add2::IfcApproval >::ptr v4_RelatedApprovals) : IfcResourceLevelRelationship(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_RelatingApproval ? v3_RelatingApproval->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_RelatedApprovals)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcApprovalRelationship::IfcApprovalRelationship(const std::weak_ptr& e) : IfcResourceLevelRelationship(e) { } +// Ifc4x3_add2::IfcApprovalRelationship::IfcApprovalRelationship(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcApproval v3_RelatingApproval, std::vector< ::Ifc4x3_add2::IfcApproval > v4_RelatedApprovals) : IfcResourceLevelRelationship(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_RelatingApproval));set_attribute_value(3, (v4_RelatedApprovals)->generalize());; populate_derived(); } // Function implementations for IfcArbitraryClosedProfileDef -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcArbitraryClosedProfileDef::OuterCurve() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcArbitraryClosedProfileDef::setOuterCurve(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcArbitraryClosedProfileDef::OuterCurve() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcArbitraryClosedProfileDef::setOuterCurve(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcArbitraryClosedProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[54]); } +// const IfcParse::entity& Ifc4x3_add2::IfcArbitraryClosedProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[54]); } const IfcParse::entity& Ifc4x3_add2::IfcArbitraryClosedProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[54]); } -Ifc4x3_add2::IfcArbitraryClosedProfileDef::IfcArbitraryClosedProfileDef(IfcEntityInstanceData&& e) : IfcProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcArbitraryClosedProfileDef::IfcArbitraryClosedProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcCurve* v3_OuterCurve) : IfcProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_OuterCurve ? v3_OuterCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcArbitraryClosedProfileDef::IfcArbitraryClosedProfileDef(const std::weak_ptr& e) : IfcProfileDef(e) { } +// Ifc4x3_add2::IfcArbitraryClosedProfileDef::IfcArbitraryClosedProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcCurve v3_OuterCurve) : IfcProfileDef(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, (v3_OuterCurve));; populate_derived(); } // Function implementations for IfcArbitraryOpenProfileDef -::Ifc4x3_add2::IfcBoundedCurve* Ifc4x3_add2::IfcArbitraryOpenProfileDef::Curve() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcBoundedCurve>(true); } -void Ifc4x3_add2::IfcArbitraryOpenProfileDef::setCurve(::Ifc4x3_add2::IfcBoundedCurve* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcBoundedCurve Ifc4x3_add2::IfcArbitraryOpenProfileDef::Curve() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcBoundedCurve>(); } +void Ifc4x3_add2::IfcArbitraryOpenProfileDef::setCurve(const ::Ifc4x3_add2::IfcBoundedCurve& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcArbitraryOpenProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[55]); } +// const IfcParse::entity& Ifc4x3_add2::IfcArbitraryOpenProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[55]); } const IfcParse::entity& Ifc4x3_add2::IfcArbitraryOpenProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[55]); } -Ifc4x3_add2::IfcArbitraryOpenProfileDef::IfcArbitraryOpenProfileDef(IfcEntityInstanceData&& e) : IfcProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcArbitraryOpenProfileDef::IfcArbitraryOpenProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcBoundedCurve* v3_Curve) : IfcProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Curve ? v3_Curve->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcArbitraryOpenProfileDef::IfcArbitraryOpenProfileDef(const std::weak_ptr& e) : IfcProfileDef(e) { } +// Ifc4x3_add2::IfcArbitraryOpenProfileDef::IfcArbitraryOpenProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcBoundedCurve v3_Curve) : IfcProfileDef(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, (v3_Curve));; populate_derived(); } // Function implementations for IfcArbitraryProfileDefWithVoids -aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr Ifc4x3_add2::IfcArbitraryProfileDefWithVoids::InnerCurves() const { aggregate_of_instance::ptr es = get_attribute_value(3); return es->as< ::Ifc4x3_add2::IfcCurve >(); } -void Ifc4x3_add2::IfcArbitraryProfileDefWithVoids::setInnerCurves(aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr v) { set_attribute_value(3, (v)->generalize());if constexpr (false)unset_attribute_value(3); } +std::vector< ::Ifc4x3_add2::IfcCurve > Ifc4x3_add2::IfcArbitraryProfileDefWithVoids::InnerCurves() const { std::vector es = get_attribute_value(3); return cast_vector<::Ifc4x3_add2::IfcCurve>(es); } +void Ifc4x3_add2::IfcArbitraryProfileDefWithVoids::setInnerCurves(const std::vector< ::Ifc4x3_add2::IfcCurve >& v) { set_attribute_value(3, cast_vector(v));if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcArbitraryProfileDefWithVoids::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[56]); } +// const IfcParse::entity& Ifc4x3_add2::IfcArbitraryProfileDefWithVoids::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[56]); } const IfcParse::entity& Ifc4x3_add2::IfcArbitraryProfileDefWithVoids::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[56]); } -Ifc4x3_add2::IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(IfcEntityInstanceData&& e) : IfcArbitraryClosedProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcCurve* v3_OuterCurve, aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr v4_InnerCurves) : IfcArbitraryClosedProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_OuterCurve ? v3_OuterCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_InnerCurves)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(const std::weak_ptr& e) : IfcArbitraryClosedProfileDef(e) { } +// Ifc4x3_add2::IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcCurve v3_OuterCurve, std::vector< ::Ifc4x3_add2::IfcCurve > v4_InnerCurves) : IfcArbitraryClosedProfileDef(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, (v3_OuterCurve));set_attribute_value(3, (v4_InnerCurves)->generalize());; populate_derived(); } // Function implementations for IfcAsset -boost::optional< std::string > Ifc4x3_add2::IfcAsset::Identification() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcAsset::setIdentification(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -::Ifc4x3_add2::IfcCostValue* Ifc4x3_add2::IfcAsset::OriginalValue() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcCostValue>(true); } -void Ifc4x3_add2::IfcAsset::setOriginalValue(::Ifc4x3_add2::IfcCostValue* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } -::Ifc4x3_add2::IfcCostValue* Ifc4x3_add2::IfcAsset::CurrentValue() const { if(get_attribute_value(7).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(7)))->as<::Ifc4x3_add2::IfcCostValue>(true); } -void Ifc4x3_add2::IfcAsset::setCurrentValue(::Ifc4x3_add2::IfcCostValue* v) { set_attribute_value(7, v->as());if constexpr (false)unset_attribute_value(7); } -::Ifc4x3_add2::IfcCostValue* Ifc4x3_add2::IfcAsset::TotalReplacementCost() const { if(get_attribute_value(8).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(8)))->as<::Ifc4x3_add2::IfcCostValue>(true); } -void Ifc4x3_add2::IfcAsset::setTotalReplacementCost(::Ifc4x3_add2::IfcCostValue* v) { set_attribute_value(8, v->as());if constexpr (false)unset_attribute_value(8); } -::Ifc4x3_add2::IfcActorSelect* Ifc4x3_add2::IfcAsset::Owner() const { if(get_attribute_value(9).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(9)))->as<::Ifc4x3_add2::IfcActorSelect>(true); } -void Ifc4x3_add2::IfcAsset::setOwner(::Ifc4x3_add2::IfcActorSelect* v) { set_attribute_value(9, v->as());if constexpr (false)unset_attribute_value(9); } -::Ifc4x3_add2::IfcActorSelect* Ifc4x3_add2::IfcAsset::User() const { if(get_attribute_value(10).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(10)))->as<::Ifc4x3_add2::IfcActorSelect>(true); } -void Ifc4x3_add2::IfcAsset::setUser(::Ifc4x3_add2::IfcActorSelect* v) { set_attribute_value(10, v->as());if constexpr (false)unset_attribute_value(10); } -::Ifc4x3_add2::IfcPerson* Ifc4x3_add2::IfcAsset::ResponsiblePerson() const { if(get_attribute_value(11).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(11)))->as<::Ifc4x3_add2::IfcPerson>(true); } -void Ifc4x3_add2::IfcAsset::setResponsiblePerson(::Ifc4x3_add2::IfcPerson* v) { set_attribute_value(11, v->as());if constexpr (false)unset_attribute_value(11); } -boost::optional< std::string > Ifc4x3_add2::IfcAsset::IncorporationDate() const { if(get_attribute_value(12).isNull()) { return boost::none; } std::string v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -::Ifc4x3_add2::IfcCostValue* Ifc4x3_add2::IfcAsset::DepreciatedValue() const { if(get_attribute_value(13).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(13)))->as<::Ifc4x3_add2::IfcCostValue>(true); } -void Ifc4x3_add2::IfcAsset::setDepreciatedValue(::Ifc4x3_add2::IfcCostValue* v) { set_attribute_value(13, v->as());if constexpr (false)unset_attribute_value(13); } +std::optional< std::string > Ifc4x3_add2::IfcAsset::Identification() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcAsset::setIdentification(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +::Ifc4x3_add2::IfcCostValue Ifc4x3_add2::IfcAsset::OriginalValue() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcCostValue{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcCostValue>(); } +void Ifc4x3_add2::IfcAsset::setOriginalValue(const ::Ifc4x3_add2::IfcCostValue& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcCostValue Ifc4x3_add2::IfcAsset::CurrentValue() const { if(get_attribute_value(7).isNull()) { return ::Ifc4x3_add2::IfcCostValue{}; } return ((express::Base)(get_attribute_value(7))).as<::Ifc4x3_add2::IfcCostValue>(); } +void Ifc4x3_add2::IfcAsset::setCurrentValue(const ::Ifc4x3_add2::IfcCostValue& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } +::Ifc4x3_add2::IfcCostValue Ifc4x3_add2::IfcAsset::TotalReplacementCost() const { if(get_attribute_value(8).isNull()) { return ::Ifc4x3_add2::IfcCostValue{}; } return ((express::Base)(get_attribute_value(8))).as<::Ifc4x3_add2::IfcCostValue>(); } +void Ifc4x3_add2::IfcAsset::setTotalReplacementCost(const ::Ifc4x3_add2::IfcCostValue& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } +::Ifc4x3_add2::IfcActorSelect Ifc4x3_add2::IfcAsset::Owner() const { if(get_attribute_value(9).isNull()) { return ::Ifc4x3_add2::IfcActorSelect{}; } return ((express::Base)(get_attribute_value(9))).as<::Ifc4x3_add2::IfcActorSelect>(); } +void Ifc4x3_add2::IfcAsset::setOwner(const ::Ifc4x3_add2::IfcActorSelect& v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } +::Ifc4x3_add2::IfcActorSelect Ifc4x3_add2::IfcAsset::User() const { if(get_attribute_value(10).isNull()) { return ::Ifc4x3_add2::IfcActorSelect{}; } return ((express::Base)(get_attribute_value(10))).as<::Ifc4x3_add2::IfcActorSelect>(); } +void Ifc4x3_add2::IfcAsset::setUser(const ::Ifc4x3_add2::IfcActorSelect& v) { set_attribute_value(10, v);if constexpr (false)unset_attribute_value(10); } +::Ifc4x3_add2::IfcPerson Ifc4x3_add2::IfcAsset::ResponsiblePerson() const { if(get_attribute_value(11).isNull()) { return ::Ifc4x3_add2::IfcPerson{}; } return ((express::Base)(get_attribute_value(11))).as<::Ifc4x3_add2::IfcPerson>(); } +void Ifc4x3_add2::IfcAsset::setResponsiblePerson(const ::Ifc4x3_add2::IfcPerson& v) { set_attribute_value(11, v);if constexpr (false)unset_attribute_value(11); } +std::optional< std::string > Ifc4x3_add2::IfcAsset::IncorporationDate() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } std::string v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcAsset::setIncorporationDate(const std::optional< std::string >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +::Ifc4x3_add2::IfcCostValue Ifc4x3_add2::IfcAsset::DepreciatedValue() const { if(get_attribute_value(13).isNull()) { return ::Ifc4x3_add2::IfcCostValue{}; } return ((express::Base)(get_attribute_value(13))).as<::Ifc4x3_add2::IfcCostValue>(); } +void Ifc4x3_add2::IfcAsset::setDepreciatedValue(const ::Ifc4x3_add2::IfcCostValue& v) { set_attribute_value(13, v);if constexpr (false)unset_attribute_value(13); } -const IfcParse::entity& Ifc4x3_add2::IfcAsset::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[62]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAsset::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[62]); } const IfcParse::entity& Ifc4x3_add2::IfcAsset::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[62]); } -Ifc4x3_add2::IfcAsset::IfcAsset(IfcEntityInstanceData&& e) : IfcGroup(std::move(e)) { } -Ifc4x3_add2::IfcAsset::IfcAsset(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, ::Ifc4x3_add2::IfcCostValue* v7_OriginalValue, ::Ifc4x3_add2::IfcCostValue* v8_CurrentValue, ::Ifc4x3_add2::IfcCostValue* v9_TotalReplacementCost, ::Ifc4x3_add2::IfcActorSelect* v10_Owner, ::Ifc4x3_add2::IfcActorSelect* v11_User, ::Ifc4x3_add2::IfcPerson* v12_ResponsiblePerson, boost::optional< std::string > v13_IncorporationDate, ::Ifc4x3_add2::IfcCostValue* v14_DepreciatedValue) : IfcGroup(IfcEntityInstanceData(in_memory_attribute_storage(14))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); }set_attribute_value(6, v7_OriginalValue ? v7_OriginalValue->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_CurrentValue ? v8_CurrentValue->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, v9_TotalReplacementCost ? v9_TotalReplacementCost->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(9, v10_Owner ? v10_Owner->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(10, v11_User ? v11_User->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(11, v12_ResponsiblePerson ? v12_ResponsiblePerson->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v13_IncorporationDate) {set_attribute_value(12, (*v13_IncorporationDate)); }set_attribute_value(13, v14_DepreciatedValue ? v14_DepreciatedValue->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcAsset::IfcAsset(const std::weak_ptr& e) : IfcGroup(e) { } +// Ifc4x3_add2::IfcAsset::IfcAsset(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, ::Ifc4x3_add2::IfcCostValue v7_OriginalValue, ::Ifc4x3_add2::IfcCostValue v8_CurrentValue, ::Ifc4x3_add2::IfcCostValue v9_TotalReplacementCost, ::Ifc4x3_add2::IfcActorSelect v10_Owner, ::Ifc4x3_add2::IfcActorSelect v11_User, ::Ifc4x3_add2::IfcPerson v12_ResponsiblePerson, std::optional< std::string > v13_IncorporationDate, ::Ifc4x3_add2::IfcCostValue v14_DepreciatedValue) : IfcGroup(const std::weak_ptr&(in_memory_attribute_storage(14))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_OriginalValue) {set_attribute_value(6, (*v7_OriginalValue)); } if (v8_CurrentValue) {set_attribute_value(7, (*v8_CurrentValue)); } if (v9_TotalReplacementCost) {set_attribute_value(8, (*v9_TotalReplacementCost)); } if (v10_Owner) {set_attribute_value(9, (*v10_Owner)); } if (v11_User) {set_attribute_value(10, (*v11_User)); } if (v12_ResponsiblePerson) {set_attribute_value(11, (*v12_ResponsiblePerson)); } if (v13_IncorporationDate) {set_attribute_value(12, (*v13_IncorporationDate)); } if (v14_DepreciatedValue) {set_attribute_value(13, (*v14_DepreciatedValue)); }; populate_derived(); } // Function implementations for IfcAsymmetricIShapeProfileDef double Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::BottomFlangeWidth() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setBottomFlangeWidth(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setBottomFlangeWidth(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::OverallDepth() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setOverallDepth(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setOverallDepth(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } double Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::WebThickness() const { double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setWebThickness(double v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setWebThickness(const double& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } double Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::BottomFlangeThickness() const { double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setBottomFlangeThickness(double v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -boost::optional< double > Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::BottomFlangeFilletRadius() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setBottomFlangeThickness(const double& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< double > Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::BottomFlangeFilletRadius() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } double Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::TopFlangeWidth() const { double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setTopFlangeWidth(double v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } -boost::optional< double > Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::TopFlangeThickness() const { if(get_attribute_value(9).isNull()) { return boost::none; } double v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -boost::optional< double > Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::TopFlangeFilletRadius() const { if(get_attribute_value(10).isNull()) { return boost::none; } double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< double > Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::BottomFlangeEdgeRadius() const { if(get_attribute_value(11).isNull()) { return boost::none; } double v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -boost::optional< double > Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::BottomFlangeSlope() const { if(get_attribute_value(12).isNull()) { return boost::none; } double v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -boost::optional< double > Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::TopFlangeEdgeRadius() const { if(get_attribute_value(13).isNull()) { return boost::none; } double v = get_attribute_value(13); return v; } -void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } -boost::optional< double > Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::TopFlangeSlope() const { if(get_attribute_value(14).isNull()) { return boost::none; } double v = get_attribute_value(14); return v; } -void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } +void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setTopFlangeWidth(const double& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } +std::optional< double > Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::TopFlangeThickness() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } double v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(const std::optional< double >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< double > Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::TopFlangeFilletRadius() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } double v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(const std::optional< double >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< double > Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::BottomFlangeEdgeRadius() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } double v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(const std::optional< double >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +std::optional< double > Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::BottomFlangeSlope() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } double v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(const std::optional< double >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +std::optional< double > Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::TopFlangeEdgeRadius() const { if(get_attribute_value(13).isNull()) { return std::nullopt; } double v = get_attribute_value(13); return v; } +void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(const std::optional< double >& v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } +std::optional< double > Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::TopFlangeSlope() const { if(get_attribute_value(14).isNull()) { return std::nullopt; } double v = get_attribute_value(14); return v; } +void Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(const std::optional< double >& v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } -const IfcParse::entity& Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[63]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[63]); } const IfcParse::entity& Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[63]); } -Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(IfcEntityInstanceData&& e) : IfcParameterizedProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_BottomFlangeWidth, double v5_OverallDepth, double v6_WebThickness, double v7_BottomFlangeThickness, boost::optional< double > v8_BottomFlangeFilletRadius, double v9_TopFlangeWidth, boost::optional< double > v10_TopFlangeThickness, boost::optional< double > v11_TopFlangeFilletRadius, boost::optional< double > v12_BottomFlangeEdgeRadius, boost::optional< double > v13_BottomFlangeSlope, boost::optional< double > v14_TopFlangeEdgeRadius, boost::optional< double > v15_TopFlangeSlope) : IfcParameterizedProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(15))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_BottomFlangeWidth));set_attribute_value(4, (v5_OverallDepth));set_attribute_value(5, (v6_WebThickness));set_attribute_value(6, (v7_BottomFlangeThickness)); if (v8_BottomFlangeFilletRadius) {set_attribute_value(7, (*v8_BottomFlangeFilletRadius)); }set_attribute_value(8, (v9_TopFlangeWidth)); if (v10_TopFlangeThickness) {set_attribute_value(9, (*v10_TopFlangeThickness)); } if (v11_TopFlangeFilletRadius) {set_attribute_value(10, (*v11_TopFlangeFilletRadius)); } if (v12_BottomFlangeEdgeRadius) {set_attribute_value(11, (*v12_BottomFlangeEdgeRadius)); } if (v13_BottomFlangeSlope) {set_attribute_value(12, (*v13_BottomFlangeSlope)); } if (v14_TopFlangeEdgeRadius) {set_attribute_value(13, (*v14_TopFlangeEdgeRadius)); } if (v15_TopFlangeSlope) {set_attribute_value(14, (*v15_TopFlangeSlope)); }; populate_derived(); } +// Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(const std::weak_ptr& e) : IfcParameterizedProfileDef(e) { } +// Ifc4x3_add2::IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_BottomFlangeWidth, double v5_OverallDepth, double v6_WebThickness, double v7_BottomFlangeThickness, std::optional< double > v8_BottomFlangeFilletRadius, double v9_TopFlangeWidth, std::optional< double > v10_TopFlangeThickness, std::optional< double > v11_TopFlangeFilletRadius, std::optional< double > v12_BottomFlangeEdgeRadius, std::optional< double > v13_BottomFlangeSlope, std::optional< double > v14_TopFlangeEdgeRadius, std::optional< double > v15_TopFlangeSlope) : IfcParameterizedProfileDef(const std::weak_ptr&(in_memory_attribute_storage(15))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); } if (v3_Position) {set_attribute_value(2, (*v3_Position)); }set_attribute_value(3, (v4_BottomFlangeWidth));set_attribute_value(4, (v5_OverallDepth));set_attribute_value(5, (v6_WebThickness));set_attribute_value(6, (v7_BottomFlangeThickness)); if (v8_BottomFlangeFilletRadius) {set_attribute_value(7, (*v8_BottomFlangeFilletRadius)); }set_attribute_value(8, (v9_TopFlangeWidth)); if (v10_TopFlangeThickness) {set_attribute_value(9, (*v10_TopFlangeThickness)); } if (v11_TopFlangeFilletRadius) {set_attribute_value(10, (*v11_TopFlangeFilletRadius)); } if (v12_BottomFlangeEdgeRadius) {set_attribute_value(11, (*v12_BottomFlangeEdgeRadius)); } if (v13_BottomFlangeSlope) {set_attribute_value(12, (*v13_BottomFlangeSlope)); } if (v14_TopFlangeEdgeRadius) {set_attribute_value(13, (*v14_TopFlangeEdgeRadius)); } if (v15_TopFlangeSlope) {set_attribute_value(14, (*v15_TopFlangeSlope)); }; populate_derived(); } // Function implementations for IfcAudioVisualAppliance -boost::optional< ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value > Ifc4x3_add2::IfcAudioVisualAppliance::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value > Ifc4x3_add2::IfcAudioVisualAppliance::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcAudioVisualAppliance::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcAudioVisualAppliance::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[64]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAudioVisualAppliance::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[64]); } const IfcParse::entity& Ifc4x3_add2::IfcAudioVisualAppliance::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[64]); } -Ifc4x3_add2::IfcAudioVisualAppliance::IfcAudioVisualAppliance(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcAudioVisualAppliance::IfcAudioVisualAppliance(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcAudioVisualAppliance::IfcAudioVisualAppliance(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcAudioVisualAppliance::IfcAudioVisualAppliance(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcAudioVisualApplianceType ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value Ifc4x3_add2::IfcAudioVisualApplianceType::PredefinedType() const { return ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcAudioVisualApplianceType::setPredefinedType(::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcAudioVisualApplianceType::setPredefinedType(const ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcAudioVisualApplianceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[65]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAudioVisualApplianceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[65]); } const IfcParse::entity& Ifc4x3_add2::IfcAudioVisualApplianceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[65]); } -Ifc4x3_add2::IfcAudioVisualApplianceType::IfcAudioVisualApplianceType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcAudioVisualApplianceType::IfcAudioVisualApplianceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcAudioVisualApplianceType::IfcAudioVisualApplianceType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcAudioVisualApplianceType::IfcAudioVisualApplianceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcAxis1Placement -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcAxis1Placement::Axis() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcAxis1Placement::setAxis(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcAxis1Placement::Axis() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcDirection{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcAxis1Placement::setAxis(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcAxis1Placement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[67]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAxis1Placement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[67]); } const IfcParse::entity& Ifc4x3_add2::IfcAxis1Placement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[67]); } -Ifc4x3_add2::IfcAxis1Placement::IfcAxis1Placement(IfcEntityInstanceData&& e) : IfcPlacement(std::move(e)) { } -Ifc4x3_add2::IfcAxis1Placement::IfcAxis1Placement(::Ifc4x3_add2::IfcPoint* v1_Location, ::Ifc4x3_add2::IfcDirection* v2_Axis) : IfcPlacement(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Location ? v1_Location->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Axis ? v2_Axis->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcAxis1Placement::IfcAxis1Placement(const std::weak_ptr& e) : IfcPlacement(e) { } +// Ifc4x3_add2::IfcAxis1Placement::IfcAxis1Placement(::Ifc4x3_add2::IfcPoint v1_Location, ::Ifc4x3_add2::IfcDirection v2_Axis) : IfcPlacement(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Location)); if (v2_Axis) {set_attribute_value(1, (*v2_Axis)); }; populate_derived(); } // Function implementations for IfcAxis2Placement2D -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcAxis2Placement2D::RefDirection() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcAxis2Placement2D::setRefDirection(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcAxis2Placement2D::RefDirection() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcDirection{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcAxis2Placement2D::setRefDirection(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcAxis2Placement2D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[69]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAxis2Placement2D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[69]); } const IfcParse::entity& Ifc4x3_add2::IfcAxis2Placement2D::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[69]); } -Ifc4x3_add2::IfcAxis2Placement2D::IfcAxis2Placement2D(IfcEntityInstanceData&& e) : IfcPlacement(std::move(e)) { } -Ifc4x3_add2::IfcAxis2Placement2D::IfcAxis2Placement2D(::Ifc4x3_add2::IfcPoint* v1_Location, ::Ifc4x3_add2::IfcDirection* v2_RefDirection) : IfcPlacement(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Location ? v1_Location->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_RefDirection ? v2_RefDirection->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcAxis2Placement2D::IfcAxis2Placement2D(const std::weak_ptr& e) : IfcPlacement(e) { } +// Ifc4x3_add2::IfcAxis2Placement2D::IfcAxis2Placement2D(::Ifc4x3_add2::IfcPoint v1_Location, ::Ifc4x3_add2::IfcDirection v2_RefDirection) : IfcPlacement(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Location)); if (v2_RefDirection) {set_attribute_value(1, (*v2_RefDirection)); }; populate_derived(); } // Function implementations for IfcAxis2Placement3D -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcAxis2Placement3D::Axis() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcAxis2Placement3D::setAxis(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcAxis2Placement3D::RefDirection() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcAxis2Placement3D::setRefDirection(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcAxis2Placement3D::Axis() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcDirection{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcAxis2Placement3D::setAxis(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcAxis2Placement3D::RefDirection() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcDirection{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcAxis2Placement3D::setRefDirection(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcAxis2Placement3D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[70]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAxis2Placement3D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[70]); } const IfcParse::entity& Ifc4x3_add2::IfcAxis2Placement3D::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[70]); } -Ifc4x3_add2::IfcAxis2Placement3D::IfcAxis2Placement3D(IfcEntityInstanceData&& e) : IfcPlacement(std::move(e)) { } -Ifc4x3_add2::IfcAxis2Placement3D::IfcAxis2Placement3D(::Ifc4x3_add2::IfcPoint* v1_Location, ::Ifc4x3_add2::IfcDirection* v2_Axis, ::Ifc4x3_add2::IfcDirection* v3_RefDirection) : IfcPlacement(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_Location ? v1_Location->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Axis ? v2_Axis->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_RefDirection ? v3_RefDirection->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcAxis2Placement3D::IfcAxis2Placement3D(const std::weak_ptr& e) : IfcPlacement(e) { } +// Ifc4x3_add2::IfcAxis2Placement3D::IfcAxis2Placement3D(::Ifc4x3_add2::IfcPoint v1_Location, ::Ifc4x3_add2::IfcDirection v2_Axis, ::Ifc4x3_add2::IfcDirection v3_RefDirection) : IfcPlacement(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Location)); if (v2_Axis) {set_attribute_value(1, (*v2_Axis)); } if (v3_RefDirection) {set_attribute_value(2, (*v3_RefDirection)); }; populate_derived(); } // Function implementations for IfcAxis2PlacementLinear -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcAxis2PlacementLinear::Axis() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcAxis2PlacementLinear::setAxis(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcAxis2PlacementLinear::RefDirection() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcAxis2PlacementLinear::setRefDirection(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcAxis2PlacementLinear::Axis() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcDirection{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcAxis2PlacementLinear::setAxis(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcAxis2PlacementLinear::RefDirection() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcDirection{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcAxis2PlacementLinear::setRefDirection(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcAxis2PlacementLinear::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[71]); } +// const IfcParse::entity& Ifc4x3_add2::IfcAxis2PlacementLinear::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[71]); } const IfcParse::entity& Ifc4x3_add2::IfcAxis2PlacementLinear::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[71]); } -Ifc4x3_add2::IfcAxis2PlacementLinear::IfcAxis2PlacementLinear(IfcEntityInstanceData&& e) : IfcPlacement(std::move(e)) { } -Ifc4x3_add2::IfcAxis2PlacementLinear::IfcAxis2PlacementLinear(::Ifc4x3_add2::IfcPoint* v1_Location, ::Ifc4x3_add2::IfcDirection* v2_Axis, ::Ifc4x3_add2::IfcDirection* v3_RefDirection) : IfcPlacement(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_Location ? v1_Location->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Axis ? v2_Axis->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_RefDirection ? v3_RefDirection->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcAxis2PlacementLinear::IfcAxis2PlacementLinear(const std::weak_ptr& e) : IfcPlacement(e) { } +// Ifc4x3_add2::IfcAxis2PlacementLinear::IfcAxis2PlacementLinear(::Ifc4x3_add2::IfcPoint v1_Location, ::Ifc4x3_add2::IfcDirection v2_Axis, ::Ifc4x3_add2::IfcDirection v3_RefDirection) : IfcPlacement(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Location)); if (v2_Axis) {set_attribute_value(1, (*v2_Axis)); } if (v3_RefDirection) {set_attribute_value(2, (*v3_RefDirection)); }; populate_derived(); } // Function implementations for IfcBSplineCurve int Ifc4x3_add2::IfcBSplineCurve::Degree() const { int v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcBSplineCurve::setDegree(int v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr Ifc4x3_add2::IfcBSplineCurve::ControlPointsList() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcCartesianPoint >(); } -void Ifc4x3_add2::IfcBSplineCurve::setControlPointsList(aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcBSplineCurve::setDegree(const int& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcCartesianPoint > Ifc4x3_add2::IfcBSplineCurve::ControlPointsList() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcCartesianPoint>(es); } +void Ifc4x3_add2::IfcBSplineCurve::setControlPointsList(const std::vector< ::Ifc4x3_add2::IfcCartesianPoint >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } ::Ifc4x3_add2::IfcBSplineCurveForm::Value Ifc4x3_add2::IfcBSplineCurve::CurveForm() const { return ::Ifc4x3_add2::IfcBSplineCurveForm::FromString(get_attribute_value(2)); } -void Ifc4x3_add2::IfcBSplineCurve::setCurveForm(::Ifc4x3_add2::IfcBSplineCurveForm::Value v) { set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcBSplineCurveForm::Class(), (size_t) v));if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcBSplineCurve::setCurveForm(const ::Ifc4x3_add2::IfcBSplineCurveForm::Value& v) { set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcBSplineCurveForm::Class(), (size_t) v));if constexpr (false)unset_attribute_value(2); } boost::logic::tribool Ifc4x3_add2::IfcBSplineCurve::ClosedCurve() const { boost::logic::tribool v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcBSplineCurve::setClosedCurve(boost::logic::tribool v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcBSplineCurve::setClosedCurve(const boost::logic::tribool& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } boost::logic::tribool Ifc4x3_add2::IfcBSplineCurve::SelfIntersect() const { boost::logic::tribool v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcBSplineCurve::setSelfIntersect(boost::logic::tribool v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcBSplineCurve::setSelfIntersect(const boost::logic::tribool& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcBSplineCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[107]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBSplineCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[107]); } const IfcParse::entity& Ifc4x3_add2::IfcBSplineCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[107]); } -Ifc4x3_add2::IfcBSplineCurve::IfcBSplineCurve(IfcEntityInstanceData&& e) : IfcBoundedCurve(std::move(e)) { } -Ifc4x3_add2::IfcBSplineCurve::IfcBSplineCurve(int v1_Degree, aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc4x3_add2::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect) : IfcBoundedCurve(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Degree));set_attribute_value(1, (v2_ControlPointsList)->generalize());set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcBSplineCurveForm::Class(),(size_t)v3_CurveForm)));set_attribute_value(3, (v4_ClosedCurve));set_attribute_value(4, (v5_SelfIntersect));; populate_derived(); } +// Ifc4x3_add2::IfcBSplineCurve::IfcBSplineCurve(const std::weak_ptr& e) : IfcBoundedCurve(e) { } +// Ifc4x3_add2::IfcBSplineCurve::IfcBSplineCurve(int v1_Degree, std::vector< ::Ifc4x3_add2::IfcCartesianPoint > v2_ControlPointsList, ::Ifc4x3_add2::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect) : IfcBoundedCurve(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Degree));set_attribute_value(1, (v2_ControlPointsList)->generalize());set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcBSplineCurveForm::Class(),(size_t)v3_CurveForm)));set_attribute_value(3, (v4_ClosedCurve));set_attribute_value(4, (v5_SelfIntersect));; populate_derived(); } // Function implementations for IfcBSplineCurveWithKnots std::vector< int > /*[2:?]*/ Ifc4x3_add2::IfcBSplineCurveWithKnots::KnotMultiplicities() const { std::vector< int > /*[2:?]*/ v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcBSplineCurveWithKnots::setKnotMultiplicities(std::vector< int > /*[2:?]*/ v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcBSplineCurveWithKnots::setKnotMultiplicities(const std::vector< int > /*[2:?]*/& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } std::vector< double > /*[2:?]*/ Ifc4x3_add2::IfcBSplineCurveWithKnots::Knots() const { std::vector< double > /*[2:?]*/ v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcBSplineCurveWithKnots::setKnots(std::vector< double > /*[2:?]*/ v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +void Ifc4x3_add2::IfcBSplineCurveWithKnots::setKnots(const std::vector< double > /*[2:?]*/& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } ::Ifc4x3_add2::IfcKnotType::Value Ifc4x3_add2::IfcBSplineCurveWithKnots::KnotSpec() const { return ::Ifc4x3_add2::IfcKnotType::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcBSplineCurveWithKnots::setKnotSpec(::Ifc4x3_add2::IfcKnotType::Value v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcKnotType::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } +void Ifc4x3_add2::IfcBSplineCurveWithKnots::setKnotSpec(const ::Ifc4x3_add2::IfcKnotType::Value& v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcKnotType::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } -const IfcParse::entity& Ifc4x3_add2::IfcBSplineCurveWithKnots::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[109]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBSplineCurveWithKnots::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[109]); } const IfcParse::entity& Ifc4x3_add2::IfcBSplineCurveWithKnots::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[109]); } -Ifc4x3_add2::IfcBSplineCurveWithKnots::IfcBSplineCurveWithKnots(IfcEntityInstanceData&& e) : IfcBSplineCurve(std::move(e)) { } -Ifc4x3_add2::IfcBSplineCurveWithKnots::IfcBSplineCurveWithKnots(int v1_Degree, aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc4x3_add2::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect, std::vector< int > /*[2:?]*/ v6_KnotMultiplicities, std::vector< double > /*[2:?]*/ v7_Knots, ::Ifc4x3_add2::IfcKnotType::Value v8_KnotSpec) : IfcBSplineCurve(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_Degree));set_attribute_value(1, (v2_ControlPointsList)->generalize());set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcBSplineCurveForm::Class(),(size_t)v3_CurveForm)));set_attribute_value(3, (v4_ClosedCurve));set_attribute_value(4, (v5_SelfIntersect));set_attribute_value(5, (v6_KnotMultiplicities));set_attribute_value(6, (v7_Knots));set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcKnotType::Class(),(size_t)v8_KnotSpec)));; populate_derived(); } +// Ifc4x3_add2::IfcBSplineCurveWithKnots::IfcBSplineCurveWithKnots(const std::weak_ptr& e) : IfcBSplineCurve(e) { } +// Ifc4x3_add2::IfcBSplineCurveWithKnots::IfcBSplineCurveWithKnots(int v1_Degree, std::vector< ::Ifc4x3_add2::IfcCartesianPoint > v2_ControlPointsList, ::Ifc4x3_add2::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect, std::vector< int > /*[2:?]*/ v6_KnotMultiplicities, std::vector< double > /*[2:?]*/ v7_Knots, ::Ifc4x3_add2::IfcKnotType::Value v8_KnotSpec) : IfcBSplineCurve(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_Degree));set_attribute_value(1, (v2_ControlPointsList)->generalize());set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcBSplineCurveForm::Class(),(size_t)v3_CurveForm)));set_attribute_value(3, (v4_ClosedCurve));set_attribute_value(4, (v5_SelfIntersect));set_attribute_value(5, (v6_KnotMultiplicities));set_attribute_value(6, (v7_Knots));set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcKnotType::Class(),(size_t)v8_KnotSpec)));; populate_derived(); } // Function implementations for IfcBSplineSurface int Ifc4x3_add2::IfcBSplineSurface::UDegree() const { int v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcBSplineSurface::setUDegree(int v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcBSplineSurface::setUDegree(const int& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } int Ifc4x3_add2::IfcBSplineSurface::VDegree() const { int v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcBSplineSurface::setVDegree(int v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -aggregate_of_aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr Ifc4x3_add2::IfcBSplineSurface::ControlPointsList() const { aggregate_of_aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcCartesianPoint >(); } -void Ifc4x3_add2::IfcBSplineSurface::setControlPointsList(aggregate_of_aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v) { set_attribute_value(2, (v)->generalize());if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcBSplineSurface::setVDegree(const int& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::vector< std::vector< ::Ifc4x3_add2::IfcCartesianPoint > > Ifc4x3_add2::IfcBSplineSurface::ControlPointsList() const { std::vector> es = get_attribute_value(2); return cast_vector_vector<::Ifc4x3_add2::IfcCartesianPoint>(es); } +void Ifc4x3_add2::IfcBSplineSurface::setControlPointsList(const std::vector< std::vector< ::Ifc4x3_add2::IfcCartesianPoint > >& v) { set_attribute_value(2, cast_vector_vector(v));if constexpr (false)unset_attribute_value(2); } ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value Ifc4x3_add2::IfcBSplineSurface::SurfaceForm() const { return ::Ifc4x3_add2::IfcBSplineSurfaceForm::FromString(get_attribute_value(3)); } -void Ifc4x3_add2::IfcBSplineSurface::setSurfaceForm(::Ifc4x3_add2::IfcBSplineSurfaceForm::Value v) { set_attribute_value(3, EnumerationReference(&::Ifc4x3_add2::IfcBSplineSurfaceForm::Class(), (size_t) v));if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcBSplineSurface::setSurfaceForm(const ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value& v) { set_attribute_value(3, EnumerationReference(&::Ifc4x3_add2::IfcBSplineSurfaceForm::Class(), (size_t) v));if constexpr (false)unset_attribute_value(3); } boost::logic::tribool Ifc4x3_add2::IfcBSplineSurface::UClosed() const { boost::logic::tribool v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcBSplineSurface::setUClosed(boost::logic::tribool v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcBSplineSurface::setUClosed(const boost::logic::tribool& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } boost::logic::tribool Ifc4x3_add2::IfcBSplineSurface::VClosed() const { boost::logic::tribool v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcBSplineSurface::setVClosed(boost::logic::tribool v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcBSplineSurface::setVClosed(const boost::logic::tribool& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } boost::logic::tribool Ifc4x3_add2::IfcBSplineSurface::SelfIntersect() const { boost::logic::tribool v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcBSplineSurface::setSelfIntersect(boost::logic::tribool v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +void Ifc4x3_add2::IfcBSplineSurface::setSelfIntersect(const boost::logic::tribool& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcBSplineSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[110]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBSplineSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[110]); } const IfcParse::entity& Ifc4x3_add2::IfcBSplineSurface::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[110]); } -Ifc4x3_add2::IfcBSplineSurface::IfcBSplineSurface(IfcEntityInstanceData&& e) : IfcBoundedSurface(std::move(e)) { } -Ifc4x3_add2::IfcBSplineSurface::IfcBSplineSurface(int v1_UDegree, int v2_VDegree, aggregate_of_aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v3_ControlPointsList, ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect) : IfcBoundedSurface(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_UDegree));set_attribute_value(1, (v2_VDegree));set_attribute_value(2, (v3_ControlPointsList)->generalize());set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcBSplineSurfaceForm::Class(),(size_t)v4_SurfaceForm)));set_attribute_value(4, (v5_UClosed));set_attribute_value(5, (v6_VClosed));set_attribute_value(6, (v7_SelfIntersect));; populate_derived(); } +// Ifc4x3_add2::IfcBSplineSurface::IfcBSplineSurface(const std::weak_ptr& e) : IfcBoundedSurface(e) { } +// Ifc4x3_add2::IfcBSplineSurface::IfcBSplineSurface(int v1_UDegree, int v2_VDegree, std::vector< std::vector< ::Ifc4x3_add2::IfcCartesianPoint > > v3_ControlPointsList, ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect) : IfcBoundedSurface(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_UDegree));set_attribute_value(1, (v2_VDegree));set_attribute_value(2, (v3_ControlPointsList)->generalize());set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcBSplineSurfaceForm::Class(),(size_t)v4_SurfaceForm)));set_attribute_value(4, (v5_UClosed));set_attribute_value(5, (v6_VClosed));set_attribute_value(6, (v7_SelfIntersect));; populate_derived(); } // Function implementations for IfcBSplineSurfaceWithKnots std::vector< int > /*[2:?]*/ Ifc4x3_add2::IfcBSplineSurfaceWithKnots::UMultiplicities() const { std::vector< int > /*[2:?]*/ v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcBSplineSurfaceWithKnots::setUMultiplicities(std::vector< int > /*[2:?]*/ v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } +void Ifc4x3_add2::IfcBSplineSurfaceWithKnots::setUMultiplicities(const std::vector< int > /*[2:?]*/& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } std::vector< int > /*[2:?]*/ Ifc4x3_add2::IfcBSplineSurfaceWithKnots::VMultiplicities() const { std::vector< int > /*[2:?]*/ v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcBSplineSurfaceWithKnots::setVMultiplicities(std::vector< int > /*[2:?]*/ v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcBSplineSurfaceWithKnots::setVMultiplicities(const std::vector< int > /*[2:?]*/& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } std::vector< double > /*[2:?]*/ Ifc4x3_add2::IfcBSplineSurfaceWithKnots::UKnots() const { std::vector< double > /*[2:?]*/ v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcBSplineSurfaceWithKnots::setUKnots(std::vector< double > /*[2:?]*/ v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcBSplineSurfaceWithKnots::setUKnots(const std::vector< double > /*[2:?]*/& v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } std::vector< double > /*[2:?]*/ Ifc4x3_add2::IfcBSplineSurfaceWithKnots::VKnots() const { std::vector< double > /*[2:?]*/ v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcBSplineSurfaceWithKnots::setVKnots(std::vector< double > /*[2:?]*/ v) { set_attribute_value(10, v);if constexpr (false)unset_attribute_value(10); } +void Ifc4x3_add2::IfcBSplineSurfaceWithKnots::setVKnots(const std::vector< double > /*[2:?]*/& v) { set_attribute_value(10, v);if constexpr (false)unset_attribute_value(10); } ::Ifc4x3_add2::IfcKnotType::Value Ifc4x3_add2::IfcBSplineSurfaceWithKnots::KnotSpec() const { return ::Ifc4x3_add2::IfcKnotType::FromString(get_attribute_value(11)); } -void Ifc4x3_add2::IfcBSplineSurfaceWithKnots::setKnotSpec(::Ifc4x3_add2::IfcKnotType::Value v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcKnotType::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } +void Ifc4x3_add2::IfcBSplineSurfaceWithKnots::setKnotSpec(const ::Ifc4x3_add2::IfcKnotType::Value& v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcKnotType::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } -const IfcParse::entity& Ifc4x3_add2::IfcBSplineSurfaceWithKnots::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[112]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBSplineSurfaceWithKnots::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[112]); } const IfcParse::entity& Ifc4x3_add2::IfcBSplineSurfaceWithKnots::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[112]); } -Ifc4x3_add2::IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(IfcEntityInstanceData&& e) : IfcBSplineSurface(std::move(e)) { } -Ifc4x3_add2::IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(int v1_UDegree, int v2_VDegree, aggregate_of_aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v3_ControlPointsList, ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect, std::vector< int > /*[2:?]*/ v8_UMultiplicities, std::vector< int > /*[2:?]*/ v9_VMultiplicities, std::vector< double > /*[2:?]*/ v10_UKnots, std::vector< double > /*[2:?]*/ v11_VKnots, ::Ifc4x3_add2::IfcKnotType::Value v12_KnotSpec) : IfcBSplineSurface(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_UDegree));set_attribute_value(1, (v2_VDegree));set_attribute_value(2, (v3_ControlPointsList)->generalize());set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcBSplineSurfaceForm::Class(),(size_t)v4_SurfaceForm)));set_attribute_value(4, (v5_UClosed));set_attribute_value(5, (v6_VClosed));set_attribute_value(6, (v7_SelfIntersect));set_attribute_value(7, (v8_UMultiplicities));set_attribute_value(8, (v9_VMultiplicities));set_attribute_value(9, (v10_UKnots));set_attribute_value(10, (v11_VKnots));set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcKnotType::Class(),(size_t)v12_KnotSpec)));; populate_derived(); } +// Ifc4x3_add2::IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(const std::weak_ptr& e) : IfcBSplineSurface(e) { } +// Ifc4x3_add2::IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(int v1_UDegree, int v2_VDegree, std::vector< std::vector< ::Ifc4x3_add2::IfcCartesianPoint > > v3_ControlPointsList, ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect, std::vector< int > /*[2:?]*/ v8_UMultiplicities, std::vector< int > /*[2:?]*/ v9_VMultiplicities, std::vector< double > /*[2:?]*/ v10_UKnots, std::vector< double > /*[2:?]*/ v11_VKnots, ::Ifc4x3_add2::IfcKnotType::Value v12_KnotSpec) : IfcBSplineSurface(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_UDegree));set_attribute_value(1, (v2_VDegree));set_attribute_value(2, (v3_ControlPointsList)->generalize());set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcBSplineSurfaceForm::Class(),(size_t)v4_SurfaceForm)));set_attribute_value(4, (v5_UClosed));set_attribute_value(5, (v6_VClosed));set_attribute_value(6, (v7_SelfIntersect));set_attribute_value(7, (v8_UMultiplicities));set_attribute_value(8, (v9_VMultiplicities));set_attribute_value(9, (v10_UKnots));set_attribute_value(10, (v11_VKnots));set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcKnotType::Class(),(size_t)v12_KnotSpec)));; populate_derived(); } // Function implementations for IfcBeam -boost::optional< ::Ifc4x3_add2::IfcBeamTypeEnum::Value > Ifc4x3_add2::IfcBeam::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcBeamTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcBeam::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBeamTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcBeamTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcBeamTypeEnum::Value > Ifc4x3_add2::IfcBeam::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcBeamTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcBeam::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBeamTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcBeamTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcBeam::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[72]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBeam::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[72]); } const IfcParse::entity& Ifc4x3_add2::IfcBeam::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[72]); } -Ifc4x3_add2::IfcBeam::IfcBeam(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcBeam::IfcBeam(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcBeamTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcBeamTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcBeam::IfcBeam(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcBeam::IfcBeam(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcBeamTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcBeamTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcBeamType ::Ifc4x3_add2::IfcBeamTypeEnum::Value Ifc4x3_add2::IfcBeamType::PredefinedType() const { return ::Ifc4x3_add2::IfcBeamTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcBeamType::setPredefinedType(::Ifc4x3_add2::IfcBeamTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcBeamTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcBeamType::setPredefinedType(const ::Ifc4x3_add2::IfcBeamTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcBeamTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcBeamType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[73]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBeamType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[73]); } const IfcParse::entity& Ifc4x3_add2::IfcBeamType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[73]); } -Ifc4x3_add2::IfcBeamType::IfcBeamType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcBeamType::IfcBeamType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBeamTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcBeamTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcBeamType::IfcBeamType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcBeamType::IfcBeamType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBeamTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcBeamTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcBearing -boost::optional< ::Ifc4x3_add2::IfcBearingTypeEnum::Value > Ifc4x3_add2::IfcBearing::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcBearingTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcBearing::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBearingTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcBearingTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcBearingTypeEnum::Value > Ifc4x3_add2::IfcBearing::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcBearingTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcBearing::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBearingTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcBearingTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcBearing::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[75]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBearing::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[75]); } const IfcParse::entity& Ifc4x3_add2::IfcBearing::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[75]); } -Ifc4x3_add2::IfcBearing::IfcBearing(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcBearing::IfcBearing(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcBearingTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcBearingTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcBearing::IfcBearing(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcBearing::IfcBearing(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcBearingTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcBearingTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcBearingType ::Ifc4x3_add2::IfcBearingTypeEnum::Value Ifc4x3_add2::IfcBearingType::PredefinedType() const { return ::Ifc4x3_add2::IfcBearingTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcBearingType::setPredefinedType(::Ifc4x3_add2::IfcBearingTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcBearingTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcBearingType::setPredefinedType(const ::Ifc4x3_add2::IfcBearingTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcBearingTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcBearingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[76]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBearingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[76]); } const IfcParse::entity& Ifc4x3_add2::IfcBearingType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[76]); } -Ifc4x3_add2::IfcBearingType::IfcBearingType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcBearingType::IfcBearingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBearingTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcBearingTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcBearingType::IfcBearingType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcBearingType::IfcBearingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBearingTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcBearingTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcBlobTexture std::string Ifc4x3_add2::IfcBlobTexture::RasterFormat() const { std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcBlobTexture::setRasterFormat(std::string v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcBlobTexture::setRasterFormat(const std::string& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } boost::dynamic_bitset<> Ifc4x3_add2::IfcBlobTexture::RasterCode() const { boost::dynamic_bitset<> v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcBlobTexture::setRasterCode(boost::dynamic_bitset<> v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +void Ifc4x3_add2::IfcBlobTexture::setRasterCode(const boost::dynamic_bitset<>& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcBlobTexture::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[81]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBlobTexture::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[81]); } const IfcParse::entity& Ifc4x3_add2::IfcBlobTexture::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[81]); } -Ifc4x3_add2::IfcBlobTexture::IfcBlobTexture(IfcEntityInstanceData&& e) : IfcSurfaceTexture(std::move(e)) { } -Ifc4x3_add2::IfcBlobTexture::IfcBlobTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, std::string v6_RasterFormat, boost::dynamic_bitset<> v7_RasterCode) : IfcSurfaceTexture(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_RepeatS));set_attribute_value(1, (v2_RepeatT)); if (v3_Mode) {set_attribute_value(2, (*v3_Mode)); }set_attribute_value(3, v4_TextureTransform ? v4_TextureTransform->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_Parameter) {set_attribute_value(4, (*v5_Parameter)); }set_attribute_value(5, (v6_RasterFormat));set_attribute_value(6, (v7_RasterCode));; populate_derived(); } +// Ifc4x3_add2::IfcBlobTexture::IfcBlobTexture(const std::weak_ptr& e) : IfcSurfaceTexture(e) { } +// Ifc4x3_add2::IfcBlobTexture::IfcBlobTexture(bool v1_RepeatS, bool v2_RepeatT, std::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D v4_TextureTransform, std::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, std::string v6_RasterFormat, boost::dynamic_bitset<> v7_RasterCode) : IfcSurfaceTexture(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_RepeatS));set_attribute_value(1, (v2_RepeatT)); if (v3_Mode) {set_attribute_value(2, (*v3_Mode)); } if (v4_TextureTransform) {set_attribute_value(3, (*v4_TextureTransform)); } if (v5_Parameter) {set_attribute_value(4, (*v5_Parameter)); }set_attribute_value(5, (v6_RasterFormat));set_attribute_value(6, (v7_RasterCode));; populate_derived(); } // Function implementations for IfcBlock double Ifc4x3_add2::IfcBlock::XLength() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcBlock::setXLength(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcBlock::setXLength(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } double Ifc4x3_add2::IfcBlock::YLength() const { double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcBlock::setYLength(double v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcBlock::setYLength(const double& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } double Ifc4x3_add2::IfcBlock::ZLength() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcBlock::setZLength(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcBlock::setZLength(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcBlock::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[82]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBlock::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[82]); } const IfcParse::entity& Ifc4x3_add2::IfcBlock::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[82]); } -Ifc4x3_add2::IfcBlock::IfcBlock(IfcEntityInstanceData&& e) : IfcCsgPrimitive3D(std::move(e)) { } -Ifc4x3_add2::IfcBlock::IfcBlock(::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_XLength, double v3_YLength, double v4_ZLength) : IfcCsgPrimitive3D(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_XLength));set_attribute_value(2, (v3_YLength));set_attribute_value(3, (v4_ZLength));; populate_derived(); } +// Ifc4x3_add2::IfcBlock::IfcBlock(const std::weak_ptr& e) : IfcCsgPrimitive3D(e) { } +// Ifc4x3_add2::IfcBlock::IfcBlock(::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_XLength, double v3_YLength, double v4_ZLength) : IfcCsgPrimitive3D(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_XLength));set_attribute_value(2, (v3_YLength));set_attribute_value(3, (v4_ZLength));; populate_derived(); } // Function implementations for IfcBoiler -boost::optional< ::Ifc4x3_add2::IfcBoilerTypeEnum::Value > Ifc4x3_add2::IfcBoiler::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcBoilerTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBoilerTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcBoilerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcBoilerTypeEnum::Value > Ifc4x3_add2::IfcBoiler::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcBoilerTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcBoiler::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBoilerTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcBoilerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcBoiler::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[83]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBoiler::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[83]); } const IfcParse::entity& Ifc4x3_add2::IfcBoiler::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[83]); } -Ifc4x3_add2::IfcBoiler::IfcBoiler(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcBoiler::IfcBoiler(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcBoilerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcBoilerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcBoiler::IfcBoiler(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcBoiler::IfcBoiler(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcBoilerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcBoilerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcBoilerType ::Ifc4x3_add2::IfcBoilerTypeEnum::Value Ifc4x3_add2::IfcBoilerType::PredefinedType() const { return ::Ifc4x3_add2::IfcBoilerTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcBoilerType::setPredefinedType(::Ifc4x3_add2::IfcBoilerTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcBoilerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcBoilerType::setPredefinedType(const ::Ifc4x3_add2::IfcBoilerTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcBoilerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcBoilerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[84]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBoilerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[84]); } const IfcParse::entity& Ifc4x3_add2::IfcBoilerType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[84]); } -Ifc4x3_add2::IfcBoilerType::IfcBoilerType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcBoilerType::IfcBoilerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBoilerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcBoilerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcBoilerType::IfcBoilerType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcBoilerType::IfcBoilerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBoilerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcBoilerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcBooleanClippingResult -const IfcParse::entity& Ifc4x3_add2::IfcBooleanClippingResult::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[87]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBooleanClippingResult::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[87]); } const IfcParse::entity& Ifc4x3_add2::IfcBooleanClippingResult::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[87]); } -Ifc4x3_add2::IfcBooleanClippingResult::IfcBooleanClippingResult(IfcEntityInstanceData&& e) : IfcBooleanResult(std::move(e)) { } -Ifc4x3_add2::IfcBooleanClippingResult::IfcBooleanClippingResult(::Ifc4x3_add2::IfcBooleanOperator::Value v1_Operator, ::Ifc4x3_add2::IfcBooleanOperand* v2_FirstOperand, ::Ifc4x3_add2::IfcBooleanOperand* v3_SecondOperand) : IfcBooleanResult(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcBooleanOperator::Class(),(size_t)v1_Operator)));set_attribute_value(1, v2_FirstOperand ? v2_FirstOperand->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_SecondOperand ? v3_SecondOperand->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcBooleanClippingResult::IfcBooleanClippingResult(const std::weak_ptr& e) : IfcBooleanResult(e) { } +// Ifc4x3_add2::IfcBooleanClippingResult::IfcBooleanClippingResult(::Ifc4x3_add2::IfcBooleanOperator::Value v1_Operator, ::Ifc4x3_add2::IfcBooleanOperand v2_FirstOperand, ::Ifc4x3_add2::IfcBooleanOperand v3_SecondOperand) : IfcBooleanResult(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcBooleanOperator::Class(),(size_t)v1_Operator)));set_attribute_value(1, (v2_FirstOperand));set_attribute_value(2, (v3_SecondOperand));; populate_derived(); } // Function implementations for IfcBooleanResult ::Ifc4x3_add2::IfcBooleanOperator::Value Ifc4x3_add2::IfcBooleanResult::Operator() const { return ::Ifc4x3_add2::IfcBooleanOperator::FromString(get_attribute_value(0)); } -void Ifc4x3_add2::IfcBooleanResult::setOperator(::Ifc4x3_add2::IfcBooleanOperator::Value v) { set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcBooleanOperator::Class(), (size_t) v));if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcBooleanOperand* Ifc4x3_add2::IfcBooleanResult::FirstOperand() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcBooleanOperand>(true); } -void Ifc4x3_add2::IfcBooleanResult::setFirstOperand(::Ifc4x3_add2::IfcBooleanOperand* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcBooleanOperand* Ifc4x3_add2::IfcBooleanResult::SecondOperand() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcBooleanOperand>(true); } -void Ifc4x3_add2::IfcBooleanResult::setSecondOperand(::Ifc4x3_add2::IfcBooleanOperand* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcBooleanResult::setOperator(const ::Ifc4x3_add2::IfcBooleanOperator::Value& v) { set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcBooleanOperator::Class(), (size_t) v));if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcBooleanOperand Ifc4x3_add2::IfcBooleanResult::FirstOperand() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcBooleanOperand>(); } +void Ifc4x3_add2::IfcBooleanResult::setFirstOperand(const ::Ifc4x3_add2::IfcBooleanOperand& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcBooleanOperand Ifc4x3_add2::IfcBooleanResult::SecondOperand() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcBooleanOperand>(); } +void Ifc4x3_add2::IfcBooleanResult::setSecondOperand(const ::Ifc4x3_add2::IfcBooleanOperand& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcBooleanResult::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[90]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBooleanResult::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[90]); } const IfcParse::entity& Ifc4x3_add2::IfcBooleanResult::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[90]); } -Ifc4x3_add2::IfcBooleanResult::IfcBooleanResult(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcBooleanResult::IfcBooleanResult(::Ifc4x3_add2::IfcBooleanOperator::Value v1_Operator, ::Ifc4x3_add2::IfcBooleanOperand* v2_FirstOperand, ::Ifc4x3_add2::IfcBooleanOperand* v3_SecondOperand) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcBooleanOperator::Class(),(size_t)v1_Operator)));set_attribute_value(1, v2_FirstOperand ? v2_FirstOperand->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_SecondOperand ? v3_SecondOperand->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcBooleanResult::IfcBooleanResult(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcBooleanResult::IfcBooleanResult(::Ifc4x3_add2::IfcBooleanOperator::Value v1_Operator, ::Ifc4x3_add2::IfcBooleanOperand v2_FirstOperand, ::Ifc4x3_add2::IfcBooleanOperand v3_SecondOperand) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcBooleanOperator::Class(),(size_t)v1_Operator)));set_attribute_value(1, (v2_FirstOperand));set_attribute_value(2, (v3_SecondOperand));; populate_derived(); } // Function implementations for IfcBorehole -const IfcParse::entity& Ifc4x3_add2::IfcBorehole::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[91]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBorehole::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[91]); } const IfcParse::entity& Ifc4x3_add2::IfcBorehole::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[91]); } -Ifc4x3_add2::IfcBorehole::IfcBorehole(IfcEntityInstanceData&& e) : IfcGeotechnicalAssembly(std::move(e)) { } -Ifc4x3_add2::IfcBorehole::IfcBorehole(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalAssembly(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcBorehole::IfcBorehole(const std::weak_ptr& e) : IfcGeotechnicalAssembly(e) { } +// Ifc4x3_add2::IfcBorehole::IfcBorehole(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcGeotechnicalAssembly(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcBoundaryCondition -boost::optional< std::string > Ifc4x3_add2::IfcBoundaryCondition::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcBoundaryCondition::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcBoundaryCondition::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcBoundaryCondition::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -const IfcParse::entity& Ifc4x3_add2::IfcBoundaryCondition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[92]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBoundaryCondition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[92]); } const IfcParse::entity& Ifc4x3_add2::IfcBoundaryCondition::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[92]); } -Ifc4x3_add2::IfcBoundaryCondition::IfcBoundaryCondition(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcBoundaryCondition::IfcBoundaryCondition(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(1))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }; populate_derived(); } +// Ifc4x3_add2::IfcBoundaryCondition::IfcBoundaryCondition(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcBoundaryCondition::IfcBoundaryCondition(std::optional< std::string > v1_Name) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(1))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }; populate_derived(); } // Function implementations for IfcBoundaryCurve -const IfcParse::entity& Ifc4x3_add2::IfcBoundaryCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[93]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBoundaryCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[93]); } const IfcParse::entity& Ifc4x3_add2::IfcBoundaryCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[93]); } -Ifc4x3_add2::IfcBoundaryCurve::IfcBoundaryCurve(IfcEntityInstanceData&& e) : IfcCompositeCurveOnSurface(std::move(e)) { } -Ifc4x3_add2::IfcBoundaryCurve::IfcBoundaryCurve(aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcCompositeCurveOnSurface(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Segments)->generalize());set_attribute_value(1, (v2_SelfIntersect));; populate_derived(); } +// Ifc4x3_add2::IfcBoundaryCurve::IfcBoundaryCurve(const std::weak_ptr& e) : IfcCompositeCurveOnSurface(e) { } +// Ifc4x3_add2::IfcBoundaryCurve::IfcBoundaryCurve(std::vector< ::Ifc4x3_add2::IfcSegment > v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcCompositeCurveOnSurface(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Segments)->generalize());set_attribute_value(1, (v2_SelfIntersect));; populate_derived(); } // Function implementations for IfcBoundaryEdgeCondition -::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* Ifc4x3_add2::IfcBoundaryEdgeCondition::TranslationalStiffnessByLengthX() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect>(true); } -void Ifc4x3_add2::IfcBoundaryEdgeCondition::setTranslationalStiffnessByLengthX(::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* Ifc4x3_add2::IfcBoundaryEdgeCondition::TranslationalStiffnessByLengthY() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect>(true); } -void Ifc4x3_add2::IfcBoundaryEdgeCondition::setTranslationalStiffnessByLengthY(::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* Ifc4x3_add2::IfcBoundaryEdgeCondition::TranslationalStiffnessByLengthZ() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect>(true); } -void Ifc4x3_add2::IfcBoundaryEdgeCondition::setTranslationalStiffnessByLengthZ(::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* Ifc4x3_add2::IfcBoundaryEdgeCondition::RotationalStiffnessByLengthX() const { if(get_attribute_value(4).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect>(true); } -void Ifc4x3_add2::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthX(::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* Ifc4x3_add2::IfcBoundaryEdgeCondition::RotationalStiffnessByLengthY() const { if(get_attribute_value(5).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect>(true); } -void Ifc4x3_add2::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthY(::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* Ifc4x3_add2::IfcBoundaryEdgeCondition::RotationalStiffnessByLengthZ() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect>(true); } -void Ifc4x3_add2::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthZ(::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect Ifc4x3_add2::IfcBoundaryEdgeCondition::TranslationalStiffnessByLengthX() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect>(); } +void Ifc4x3_add2::IfcBoundaryEdgeCondition::setTranslationalStiffnessByLengthX(const ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect Ifc4x3_add2::IfcBoundaryEdgeCondition::TranslationalStiffnessByLengthY() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect>(); } +void Ifc4x3_add2::IfcBoundaryEdgeCondition::setTranslationalStiffnessByLengthY(const ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect Ifc4x3_add2::IfcBoundaryEdgeCondition::TranslationalStiffnessByLengthZ() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect>(); } +void Ifc4x3_add2::IfcBoundaryEdgeCondition::setTranslationalStiffnessByLengthZ(const ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect Ifc4x3_add2::IfcBoundaryEdgeCondition::RotationalStiffnessByLengthX() const { if(get_attribute_value(4).isNull()) { return ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect{}; } return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect>(); } +void Ifc4x3_add2::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthX(const ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect Ifc4x3_add2::IfcBoundaryEdgeCondition::RotationalStiffnessByLengthY() const { if(get_attribute_value(5).isNull()) { return ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect{}; } return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect>(); } +void Ifc4x3_add2::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthY(const ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect Ifc4x3_add2::IfcBoundaryEdgeCondition::RotationalStiffnessByLengthZ() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect>(); } +void Ifc4x3_add2::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthZ(const ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcBoundaryEdgeCondition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[94]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBoundaryEdgeCondition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[94]); } const IfcParse::entity& Ifc4x3_add2::IfcBoundaryEdgeCondition::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[94]); } -Ifc4x3_add2::IfcBoundaryEdgeCondition::IfcBoundaryEdgeCondition(IfcEntityInstanceData&& e) : IfcBoundaryCondition(std::move(e)) { } -Ifc4x3_add2::IfcBoundaryEdgeCondition::IfcBoundaryEdgeCondition(boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* v2_TranslationalStiffnessByLengthX, ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* v3_TranslationalStiffnessByLengthY, ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* v4_TranslationalStiffnessByLengthZ, ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* v5_RotationalStiffnessByLengthX, ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* v6_RotationalStiffnessByLengthY, ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* v7_RotationalStiffnessByLengthZ) : IfcBoundaryCondition(IfcEntityInstanceData(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, v2_TranslationalStiffnessByLengthX ? v2_TranslationalStiffnessByLengthX->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_TranslationalStiffnessByLengthY ? v3_TranslationalStiffnessByLengthY->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_TranslationalStiffnessByLengthZ ? v4_TranslationalStiffnessByLengthZ->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, v5_RotationalStiffnessByLengthX ? v5_RotationalStiffnessByLengthX->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RotationalStiffnessByLengthY ? v6_RotationalStiffnessByLengthY->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_RotationalStiffnessByLengthZ ? v7_RotationalStiffnessByLengthZ->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcBoundaryEdgeCondition::IfcBoundaryEdgeCondition(const std::weak_ptr& e) : IfcBoundaryCondition(e) { } +// Ifc4x3_add2::IfcBoundaryEdgeCondition::IfcBoundaryEdgeCondition(std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect v2_TranslationalStiffnessByLengthX, ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect v3_TranslationalStiffnessByLengthY, ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect v4_TranslationalStiffnessByLengthZ, ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect v5_RotationalStiffnessByLengthX, ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect v6_RotationalStiffnessByLengthY, ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect v7_RotationalStiffnessByLengthZ) : IfcBoundaryCondition(const std::weak_ptr&(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_TranslationalStiffnessByLengthX) {set_attribute_value(1, (*v2_TranslationalStiffnessByLengthX)); } if (v3_TranslationalStiffnessByLengthY) {set_attribute_value(2, (*v3_TranslationalStiffnessByLengthY)); } if (v4_TranslationalStiffnessByLengthZ) {set_attribute_value(3, (*v4_TranslationalStiffnessByLengthZ)); } if (v5_RotationalStiffnessByLengthX) {set_attribute_value(4, (*v5_RotationalStiffnessByLengthX)); } if (v6_RotationalStiffnessByLengthY) {set_attribute_value(5, (*v6_RotationalStiffnessByLengthY)); } if (v7_RotationalStiffnessByLengthZ) {set_attribute_value(6, (*v7_RotationalStiffnessByLengthZ)); }; populate_derived(); } // Function implementations for IfcBoundaryFaceCondition -::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* Ifc4x3_add2::IfcBoundaryFaceCondition::TranslationalStiffnessByAreaX() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect>(true); } -void Ifc4x3_add2::IfcBoundaryFaceCondition::setTranslationalStiffnessByAreaX(::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* Ifc4x3_add2::IfcBoundaryFaceCondition::TranslationalStiffnessByAreaY() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect>(true); } -void Ifc4x3_add2::IfcBoundaryFaceCondition::setTranslationalStiffnessByAreaY(::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* Ifc4x3_add2::IfcBoundaryFaceCondition::TranslationalStiffnessByAreaZ() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect>(true); } -void Ifc4x3_add2::IfcBoundaryFaceCondition::setTranslationalStiffnessByAreaZ(::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect Ifc4x3_add2::IfcBoundaryFaceCondition::TranslationalStiffnessByAreaX() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect>(); } +void Ifc4x3_add2::IfcBoundaryFaceCondition::setTranslationalStiffnessByAreaX(const ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect Ifc4x3_add2::IfcBoundaryFaceCondition::TranslationalStiffnessByAreaY() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect>(); } +void Ifc4x3_add2::IfcBoundaryFaceCondition::setTranslationalStiffnessByAreaY(const ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect Ifc4x3_add2::IfcBoundaryFaceCondition::TranslationalStiffnessByAreaZ() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect>(); } +void Ifc4x3_add2::IfcBoundaryFaceCondition::setTranslationalStiffnessByAreaZ(const ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcBoundaryFaceCondition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[95]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBoundaryFaceCondition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[95]); } const IfcParse::entity& Ifc4x3_add2::IfcBoundaryFaceCondition::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[95]); } -Ifc4x3_add2::IfcBoundaryFaceCondition::IfcBoundaryFaceCondition(IfcEntityInstanceData&& e) : IfcBoundaryCondition(std::move(e)) { } -Ifc4x3_add2::IfcBoundaryFaceCondition::IfcBoundaryFaceCondition(boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* v2_TranslationalStiffnessByAreaX, ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* v3_TranslationalStiffnessByAreaY, ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* v4_TranslationalStiffnessByAreaZ) : IfcBoundaryCondition(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, v2_TranslationalStiffnessByAreaX ? v2_TranslationalStiffnessByAreaX->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_TranslationalStiffnessByAreaY ? v3_TranslationalStiffnessByAreaY->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_TranslationalStiffnessByAreaZ ? v4_TranslationalStiffnessByAreaZ->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcBoundaryFaceCondition::IfcBoundaryFaceCondition(const std::weak_ptr& e) : IfcBoundaryCondition(e) { } +// Ifc4x3_add2::IfcBoundaryFaceCondition::IfcBoundaryFaceCondition(std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect v2_TranslationalStiffnessByAreaX, ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect v3_TranslationalStiffnessByAreaY, ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect v4_TranslationalStiffnessByAreaZ) : IfcBoundaryCondition(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_TranslationalStiffnessByAreaX) {set_attribute_value(1, (*v2_TranslationalStiffnessByAreaX)); } if (v3_TranslationalStiffnessByAreaY) {set_attribute_value(2, (*v3_TranslationalStiffnessByAreaY)); } if (v4_TranslationalStiffnessByAreaZ) {set_attribute_value(3, (*v4_TranslationalStiffnessByAreaZ)); }; populate_derived(); } // Function implementations for IfcBoundaryNodeCondition -::Ifc4x3_add2::IfcTranslationalStiffnessSelect* Ifc4x3_add2::IfcBoundaryNodeCondition::TranslationalStiffnessX() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcTranslationalStiffnessSelect>(true); } -void Ifc4x3_add2::IfcBoundaryNodeCondition::setTranslationalStiffnessX(::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcTranslationalStiffnessSelect* Ifc4x3_add2::IfcBoundaryNodeCondition::TranslationalStiffnessY() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcTranslationalStiffnessSelect>(true); } -void Ifc4x3_add2::IfcBoundaryNodeCondition::setTranslationalStiffnessY(::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcTranslationalStiffnessSelect* Ifc4x3_add2::IfcBoundaryNodeCondition::TranslationalStiffnessZ() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcTranslationalStiffnessSelect>(true); } -void Ifc4x3_add2::IfcBoundaryNodeCondition::setTranslationalStiffnessZ(::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -::Ifc4x3_add2::IfcRotationalStiffnessSelect* Ifc4x3_add2::IfcBoundaryNodeCondition::RotationalStiffnessX() const { if(get_attribute_value(4).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcRotationalStiffnessSelect>(true); } -void Ifc4x3_add2::IfcBoundaryNodeCondition::setRotationalStiffnessX(::Ifc4x3_add2::IfcRotationalStiffnessSelect* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcRotationalStiffnessSelect* Ifc4x3_add2::IfcBoundaryNodeCondition::RotationalStiffnessY() const { if(get_attribute_value(5).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcRotationalStiffnessSelect>(true); } -void Ifc4x3_add2::IfcBoundaryNodeCondition::setRotationalStiffnessY(::Ifc4x3_add2::IfcRotationalStiffnessSelect* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcRotationalStiffnessSelect* Ifc4x3_add2::IfcBoundaryNodeCondition::RotationalStiffnessZ() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcRotationalStiffnessSelect>(true); } -void Ifc4x3_add2::IfcBoundaryNodeCondition::setRotationalStiffnessZ(::Ifc4x3_add2::IfcRotationalStiffnessSelect* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcTranslationalStiffnessSelect Ifc4x3_add2::IfcBoundaryNodeCondition::TranslationalStiffnessX() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcTranslationalStiffnessSelect{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcTranslationalStiffnessSelect>(); } +void Ifc4x3_add2::IfcBoundaryNodeCondition::setTranslationalStiffnessX(const ::Ifc4x3_add2::IfcTranslationalStiffnessSelect& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcTranslationalStiffnessSelect Ifc4x3_add2::IfcBoundaryNodeCondition::TranslationalStiffnessY() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcTranslationalStiffnessSelect{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcTranslationalStiffnessSelect>(); } +void Ifc4x3_add2::IfcBoundaryNodeCondition::setTranslationalStiffnessY(const ::Ifc4x3_add2::IfcTranslationalStiffnessSelect& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcTranslationalStiffnessSelect Ifc4x3_add2::IfcBoundaryNodeCondition::TranslationalStiffnessZ() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcTranslationalStiffnessSelect{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcTranslationalStiffnessSelect>(); } +void Ifc4x3_add2::IfcBoundaryNodeCondition::setTranslationalStiffnessZ(const ::Ifc4x3_add2::IfcTranslationalStiffnessSelect& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcRotationalStiffnessSelect Ifc4x3_add2::IfcBoundaryNodeCondition::RotationalStiffnessX() const { if(get_attribute_value(4).isNull()) { return ::Ifc4x3_add2::IfcRotationalStiffnessSelect{}; } return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcRotationalStiffnessSelect>(); } +void Ifc4x3_add2::IfcBoundaryNodeCondition::setRotationalStiffnessX(const ::Ifc4x3_add2::IfcRotationalStiffnessSelect& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcRotationalStiffnessSelect Ifc4x3_add2::IfcBoundaryNodeCondition::RotationalStiffnessY() const { if(get_attribute_value(5).isNull()) { return ::Ifc4x3_add2::IfcRotationalStiffnessSelect{}; } return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcRotationalStiffnessSelect>(); } +void Ifc4x3_add2::IfcBoundaryNodeCondition::setRotationalStiffnessY(const ::Ifc4x3_add2::IfcRotationalStiffnessSelect& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcRotationalStiffnessSelect Ifc4x3_add2::IfcBoundaryNodeCondition::RotationalStiffnessZ() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcRotationalStiffnessSelect{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcRotationalStiffnessSelect>(); } +void Ifc4x3_add2::IfcBoundaryNodeCondition::setRotationalStiffnessZ(const ::Ifc4x3_add2::IfcRotationalStiffnessSelect& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcBoundaryNodeCondition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[96]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBoundaryNodeCondition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[96]); } const IfcParse::entity& Ifc4x3_add2::IfcBoundaryNodeCondition::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[96]); } -Ifc4x3_add2::IfcBoundaryNodeCondition::IfcBoundaryNodeCondition(IfcEntityInstanceData&& e) : IfcBoundaryCondition(std::move(e)) { } -Ifc4x3_add2::IfcBoundaryNodeCondition::IfcBoundaryNodeCondition(boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v2_TranslationalStiffnessX, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v3_TranslationalStiffnessY, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v4_TranslationalStiffnessZ, ::Ifc4x3_add2::IfcRotationalStiffnessSelect* v5_RotationalStiffnessX, ::Ifc4x3_add2::IfcRotationalStiffnessSelect* v6_RotationalStiffnessY, ::Ifc4x3_add2::IfcRotationalStiffnessSelect* v7_RotationalStiffnessZ) : IfcBoundaryCondition(IfcEntityInstanceData(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, v2_TranslationalStiffnessX ? v2_TranslationalStiffnessX->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_TranslationalStiffnessY ? v3_TranslationalStiffnessY->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_TranslationalStiffnessZ ? v4_TranslationalStiffnessZ->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, v5_RotationalStiffnessX ? v5_RotationalStiffnessX->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RotationalStiffnessY ? v6_RotationalStiffnessY->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_RotationalStiffnessZ ? v7_RotationalStiffnessZ->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcBoundaryNodeCondition::IfcBoundaryNodeCondition(const std::weak_ptr& e) : IfcBoundaryCondition(e) { } +// Ifc4x3_add2::IfcBoundaryNodeCondition::IfcBoundaryNodeCondition(std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect v2_TranslationalStiffnessX, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect v3_TranslationalStiffnessY, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect v4_TranslationalStiffnessZ, ::Ifc4x3_add2::IfcRotationalStiffnessSelect v5_RotationalStiffnessX, ::Ifc4x3_add2::IfcRotationalStiffnessSelect v6_RotationalStiffnessY, ::Ifc4x3_add2::IfcRotationalStiffnessSelect v7_RotationalStiffnessZ) : IfcBoundaryCondition(const std::weak_ptr&(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_TranslationalStiffnessX) {set_attribute_value(1, (*v2_TranslationalStiffnessX)); } if (v3_TranslationalStiffnessY) {set_attribute_value(2, (*v3_TranslationalStiffnessY)); } if (v4_TranslationalStiffnessZ) {set_attribute_value(3, (*v4_TranslationalStiffnessZ)); } if (v5_RotationalStiffnessX) {set_attribute_value(4, (*v5_RotationalStiffnessX)); } if (v6_RotationalStiffnessY) {set_attribute_value(5, (*v6_RotationalStiffnessY)); } if (v7_RotationalStiffnessZ) {set_attribute_value(6, (*v7_RotationalStiffnessZ)); }; populate_derived(); } // Function implementations for IfcBoundaryNodeConditionWarping -::Ifc4x3_add2::IfcWarpingStiffnessSelect* Ifc4x3_add2::IfcBoundaryNodeConditionWarping::WarpingStiffness() const { if(get_attribute_value(7).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(7)))->as<::Ifc4x3_add2::IfcWarpingStiffnessSelect>(true); } -void Ifc4x3_add2::IfcBoundaryNodeConditionWarping::setWarpingStiffness(::Ifc4x3_add2::IfcWarpingStiffnessSelect* v) { set_attribute_value(7, v->as());if constexpr (false)unset_attribute_value(7); } +::Ifc4x3_add2::IfcWarpingStiffnessSelect Ifc4x3_add2::IfcBoundaryNodeConditionWarping::WarpingStiffness() const { if(get_attribute_value(7).isNull()) { return ::Ifc4x3_add2::IfcWarpingStiffnessSelect{}; } return ((express::Base)(get_attribute_value(7))).as<::Ifc4x3_add2::IfcWarpingStiffnessSelect>(); } +void Ifc4x3_add2::IfcBoundaryNodeConditionWarping::setWarpingStiffness(const ::Ifc4x3_add2::IfcWarpingStiffnessSelect& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } -const IfcParse::entity& Ifc4x3_add2::IfcBoundaryNodeConditionWarping::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[97]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBoundaryNodeConditionWarping::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[97]); } const IfcParse::entity& Ifc4x3_add2::IfcBoundaryNodeConditionWarping::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[97]); } -Ifc4x3_add2::IfcBoundaryNodeConditionWarping::IfcBoundaryNodeConditionWarping(IfcEntityInstanceData&& e) : IfcBoundaryNodeCondition(std::move(e)) { } -Ifc4x3_add2::IfcBoundaryNodeConditionWarping::IfcBoundaryNodeConditionWarping(boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v2_TranslationalStiffnessX, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v3_TranslationalStiffnessY, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v4_TranslationalStiffnessZ, ::Ifc4x3_add2::IfcRotationalStiffnessSelect* v5_RotationalStiffnessX, ::Ifc4x3_add2::IfcRotationalStiffnessSelect* v6_RotationalStiffnessY, ::Ifc4x3_add2::IfcRotationalStiffnessSelect* v7_RotationalStiffnessZ, ::Ifc4x3_add2::IfcWarpingStiffnessSelect* v8_WarpingStiffness) : IfcBoundaryNodeCondition(IfcEntityInstanceData(in_memory_attribute_storage(8))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, v2_TranslationalStiffnessX ? v2_TranslationalStiffnessX->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_TranslationalStiffnessY ? v3_TranslationalStiffnessY->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_TranslationalStiffnessZ ? v4_TranslationalStiffnessZ->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, v5_RotationalStiffnessX ? v5_RotationalStiffnessX->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RotationalStiffnessY ? v6_RotationalStiffnessY->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_RotationalStiffnessZ ? v7_RotationalStiffnessZ->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_WarpingStiffness ? v8_WarpingStiffness->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcBoundaryNodeConditionWarping::IfcBoundaryNodeConditionWarping(const std::weak_ptr& e) : IfcBoundaryNodeCondition(e) { } +// Ifc4x3_add2::IfcBoundaryNodeConditionWarping::IfcBoundaryNodeConditionWarping(std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect v2_TranslationalStiffnessX, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect v3_TranslationalStiffnessY, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect v4_TranslationalStiffnessZ, ::Ifc4x3_add2::IfcRotationalStiffnessSelect v5_RotationalStiffnessX, ::Ifc4x3_add2::IfcRotationalStiffnessSelect v6_RotationalStiffnessY, ::Ifc4x3_add2::IfcRotationalStiffnessSelect v7_RotationalStiffnessZ, ::Ifc4x3_add2::IfcWarpingStiffnessSelect v8_WarpingStiffness) : IfcBoundaryNodeCondition(const std::weak_ptr&(in_memory_attribute_storage(8))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_TranslationalStiffnessX) {set_attribute_value(1, (*v2_TranslationalStiffnessX)); } if (v3_TranslationalStiffnessY) {set_attribute_value(2, (*v3_TranslationalStiffnessY)); } if (v4_TranslationalStiffnessZ) {set_attribute_value(3, (*v4_TranslationalStiffnessZ)); } if (v5_RotationalStiffnessX) {set_attribute_value(4, (*v5_RotationalStiffnessX)); } if (v6_RotationalStiffnessY) {set_attribute_value(5, (*v6_RotationalStiffnessY)); } if (v7_RotationalStiffnessZ) {set_attribute_value(6, (*v7_RotationalStiffnessZ)); } if (v8_WarpingStiffness) {set_attribute_value(7, (*v8_WarpingStiffness)); }; populate_derived(); } // Function implementations for IfcBoundedCurve -const IfcParse::entity& Ifc4x3_add2::IfcBoundedCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[98]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBoundedCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[98]); } const IfcParse::entity& Ifc4x3_add2::IfcBoundedCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[98]); } -Ifc4x3_add2::IfcBoundedCurve::IfcBoundedCurve(IfcEntityInstanceData&& e) : IfcCurve(std::move(e)) { } -Ifc4x3_add2::IfcBoundedCurve::IfcBoundedCurve() : IfcCurve(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcBoundedCurve::IfcBoundedCurve(const std::weak_ptr& e) : IfcCurve(e) { } +// Ifc4x3_add2::IfcBoundedCurve::IfcBoundedCurve() : IfcCurve(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcBoundedSurface -const IfcParse::entity& Ifc4x3_add2::IfcBoundedSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[99]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBoundedSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[99]); } const IfcParse::entity& Ifc4x3_add2::IfcBoundedSurface::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[99]); } -Ifc4x3_add2::IfcBoundedSurface::IfcBoundedSurface(IfcEntityInstanceData&& e) : IfcSurface(std::move(e)) { } -Ifc4x3_add2::IfcBoundedSurface::IfcBoundedSurface() : IfcSurface(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcBoundedSurface::IfcBoundedSurface(const std::weak_ptr& e) : IfcSurface(e) { } +// Ifc4x3_add2::IfcBoundedSurface::IfcBoundedSurface() : IfcSurface(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcBoundingBox -::Ifc4x3_add2::IfcCartesianPoint* Ifc4x3_add2::IfcBoundingBox::Corner() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCartesianPoint>(true); } -void Ifc4x3_add2::IfcBoundingBox::setCorner(::Ifc4x3_add2::IfcCartesianPoint* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcCartesianPoint Ifc4x3_add2::IfcBoundingBox::Corner() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCartesianPoint>(); } +void Ifc4x3_add2::IfcBoundingBox::setCorner(const ::Ifc4x3_add2::IfcCartesianPoint& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } double Ifc4x3_add2::IfcBoundingBox::XDim() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcBoundingBox::setXDim(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcBoundingBox::setXDim(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } double Ifc4x3_add2::IfcBoundingBox::YDim() const { double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcBoundingBox::setYDim(double v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcBoundingBox::setYDim(const double& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } double Ifc4x3_add2::IfcBoundingBox::ZDim() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcBoundingBox::setZDim(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcBoundingBox::setZDim(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcBoundingBox::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[100]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBoundingBox::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[100]); } const IfcParse::entity& Ifc4x3_add2::IfcBoundingBox::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[100]); } -Ifc4x3_add2::IfcBoundingBox::IfcBoundingBox(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcBoundingBox::IfcBoundingBox(::Ifc4x3_add2::IfcCartesianPoint* v1_Corner, double v2_XDim, double v3_YDim, double v4_ZDim) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_Corner ? v1_Corner->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_XDim));set_attribute_value(2, (v3_YDim));set_attribute_value(3, (v4_ZDim));; populate_derived(); } +// Ifc4x3_add2::IfcBoundingBox::IfcBoundingBox(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcBoundingBox::IfcBoundingBox(::Ifc4x3_add2::IfcCartesianPoint v1_Corner, double v2_XDim, double v3_YDim, double v4_ZDim) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Corner));set_attribute_value(1, (v2_XDim));set_attribute_value(2, (v3_YDim));set_attribute_value(3, (v4_ZDim));; populate_derived(); } // Function implementations for IfcBoxedHalfSpace -::Ifc4x3_add2::IfcBoundingBox* Ifc4x3_add2::IfcBoxedHalfSpace::Enclosure() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcBoundingBox>(true); } -void Ifc4x3_add2::IfcBoxedHalfSpace::setEnclosure(::Ifc4x3_add2::IfcBoundingBox* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcBoundingBox Ifc4x3_add2::IfcBoxedHalfSpace::Enclosure() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcBoundingBox>(); } +void Ifc4x3_add2::IfcBoxedHalfSpace::setEnclosure(const ::Ifc4x3_add2::IfcBoundingBox& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcBoxedHalfSpace::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[102]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBoxedHalfSpace::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[102]); } const IfcParse::entity& Ifc4x3_add2::IfcBoxedHalfSpace::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[102]); } -Ifc4x3_add2::IfcBoxedHalfSpace::IfcBoxedHalfSpace(IfcEntityInstanceData&& e) : IfcHalfSpaceSolid(std::move(e)) { } -Ifc4x3_add2::IfcBoxedHalfSpace::IfcBoxedHalfSpace(::Ifc4x3_add2::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag, ::Ifc4x3_add2::IfcBoundingBox* v3_Enclosure) : IfcHalfSpaceSolid(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_BaseSurface ? v1_BaseSurface->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_AgreementFlag));set_attribute_value(2, v3_Enclosure ? v3_Enclosure->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcBoxedHalfSpace::IfcBoxedHalfSpace(const std::weak_ptr& e) : IfcHalfSpaceSolid(e) { } +// Ifc4x3_add2::IfcBoxedHalfSpace::IfcBoxedHalfSpace(::Ifc4x3_add2::IfcSurface v1_BaseSurface, bool v2_AgreementFlag, ::Ifc4x3_add2::IfcBoundingBox v3_Enclosure) : IfcHalfSpaceSolid(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_BaseSurface));set_attribute_value(1, (v2_AgreementFlag));set_attribute_value(2, (v3_Enclosure));; populate_derived(); } // Function implementations for IfcBridge -boost::optional< ::Ifc4x3_add2::IfcBridgeTypeEnum::Value > Ifc4x3_add2::IfcBridge::PredefinedType() const { if(get_attribute_value(9).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcBridgeTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcBridge::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBridgeTypeEnum::Value > v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcBridgeTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } +std::optional< ::Ifc4x3_add2::IfcBridgeTypeEnum::Value > Ifc4x3_add2::IfcBridge::PredefinedType() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcBridgeTypeEnum::FromString(get_attribute_value(9)); } +void Ifc4x3_add2::IfcBridge::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBridgeTypeEnum::Value >& v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcBridgeTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcBridge::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[103]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBridge::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[103]); } const IfcParse::entity& Ifc4x3_add2::IfcBridge::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[103]); } -Ifc4x3_add2::IfcBridge::IfcBridge(IfcEntityInstanceData&& e) : IfcFacility(std::move(e)) { } -Ifc4x3_add2::IfcBridge::IfcBridge(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< ::Ifc4x3_add2::IfcBridgeTypeEnum::Value > v10_PredefinedType) : IfcFacility(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcBridgeTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcBridge::IfcBridge(const std::weak_ptr& e) : IfcFacility(e) { } +// Ifc4x3_add2::IfcBridge::IfcBridge(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< ::Ifc4x3_add2::IfcBridgeTypeEnum::Value > v10_PredefinedType) : IfcFacility(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcBridgeTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } // Function implementations for IfcBridgePart -boost::optional< ::Ifc4x3_add2::IfcBridgePartTypeEnum::Value > Ifc4x3_add2::IfcBridgePart::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcBridgePartTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcBridgePart::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBridgePartTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcBridgePartTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcBridgePartTypeEnum::Value > Ifc4x3_add2::IfcBridgePart::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcBridgePartTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcBridgePart::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBridgePartTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcBridgePartTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcBridgePart::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[104]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBridgePart::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[104]); } const IfcParse::entity& Ifc4x3_add2::IfcBridgePart::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[104]); } -Ifc4x3_add2::IfcBridgePart::IfcBridgePart(IfcEntityInstanceData&& e) : IfcFacilityPart(std::move(e)) { } -Ifc4x3_add2::IfcBridgePart::IfcBridgePart(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, boost::optional< ::Ifc4x3_add2::IfcBridgePartTypeEnum::Value > v11_PredefinedType) : IfcFacilityPart(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFacilityUsageEnum::Class(),(size_t)v10_UsageType))); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcBridgePartTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcBridgePart::IfcBridgePart(const std::weak_ptr& e) : IfcFacilityPart(e) { } +// Ifc4x3_add2::IfcBridgePart::IfcBridgePart(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, std::optional< ::Ifc4x3_add2::IfcBridgePartTypeEnum::Value > v11_PredefinedType) : IfcFacilityPart(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFacilityUsageEnum::Class(),(size_t)v10_UsageType))); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcBridgePartTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } // Function implementations for IfcBuilding -boost::optional< double > Ifc4x3_add2::IfcBuilding::ElevationOfRefHeight() const { if(get_attribute_value(9).isNull()) { return boost::none; } double v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -boost::optional< double > Ifc4x3_add2::IfcBuilding::ElevationOfTerrain() const { if(get_attribute_value(10).isNull()) { return boost::none; } double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -::Ifc4x3_add2::IfcPostalAddress* Ifc4x3_add2::IfcBuilding::BuildingAddress() const { if(get_attribute_value(11).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(11)))->as<::Ifc4x3_add2::IfcPostalAddress>(true); } -void Ifc4x3_add2::IfcBuilding::setBuildingAddress(::Ifc4x3_add2::IfcPostalAddress* v) { set_attribute_value(11, v->as());if constexpr (false)unset_attribute_value(11); } +std::optional< double > Ifc4x3_add2::IfcBuilding::ElevationOfRefHeight() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } double v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcBuilding::setElevationOfRefHeight(const std::optional< double >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< double > Ifc4x3_add2::IfcBuilding::ElevationOfTerrain() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } double v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcBuilding::setElevationOfTerrain(const std::optional< double >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +::Ifc4x3_add2::IfcPostalAddress Ifc4x3_add2::IfcBuilding::BuildingAddress() const { if(get_attribute_value(11).isNull()) { return ::Ifc4x3_add2::IfcPostalAddress{}; } return ((express::Base)(get_attribute_value(11))).as<::Ifc4x3_add2::IfcPostalAddress>(); } +void Ifc4x3_add2::IfcBuilding::setBuildingAddress(const ::Ifc4x3_add2::IfcPostalAddress& v) { set_attribute_value(11, v);if constexpr (false)unset_attribute_value(11); } -const IfcParse::entity& Ifc4x3_add2::IfcBuilding::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[113]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBuilding::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[113]); } const IfcParse::entity& Ifc4x3_add2::IfcBuilding::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[113]); } -Ifc4x3_add2::IfcBuilding::IfcBuilding(IfcEntityInstanceData&& e) : IfcFacility(std::move(e)) { } -Ifc4x3_add2::IfcBuilding::IfcBuilding(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< double > v10_ElevationOfRefHeight, boost::optional< double > v11_ElevationOfTerrain, ::Ifc4x3_add2::IfcPostalAddress* v12_BuildingAddress) : IfcFacility(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_ElevationOfRefHeight) {set_attribute_value(9, (*v10_ElevationOfRefHeight)); } if (v11_ElevationOfTerrain) {set_attribute_value(10, (*v11_ElevationOfTerrain)); }set_attribute_value(11, v12_BuildingAddress ? v12_BuildingAddress->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcBuilding::IfcBuilding(const std::weak_ptr& e) : IfcFacility(e) { } +// Ifc4x3_add2::IfcBuilding::IfcBuilding(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< double > v10_ElevationOfRefHeight, std::optional< double > v11_ElevationOfTerrain, ::Ifc4x3_add2::IfcPostalAddress v12_BuildingAddress) : IfcFacility(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_ElevationOfRefHeight) {set_attribute_value(9, (*v10_ElevationOfRefHeight)); } if (v11_ElevationOfTerrain) {set_attribute_value(10, (*v11_ElevationOfTerrain)); } if (v12_BuildingAddress) {set_attribute_value(11, (*v12_BuildingAddress)); }; populate_derived(); } // Function implementations for IfcBuildingElementPart -boost::optional< ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value > Ifc4x3_add2::IfcBuildingElementPart::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value > Ifc4x3_add2::IfcBuildingElementPart::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcBuildingElementPart::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcBuildingElementPart::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[114]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBuildingElementPart::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[114]); } const IfcParse::entity& Ifc4x3_add2::IfcBuildingElementPart::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[114]); } -Ifc4x3_add2::IfcBuildingElementPart::IfcBuildingElementPart(IfcEntityInstanceData&& e) : IfcElementComponent(std::move(e)) { } -Ifc4x3_add2::IfcBuildingElementPart::IfcBuildingElementPart(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value > v9_PredefinedType) : IfcElementComponent(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcBuildingElementPart::IfcBuildingElementPart(const std::weak_ptr& e) : IfcElementComponent(e) { } +// Ifc4x3_add2::IfcBuildingElementPart::IfcBuildingElementPart(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value > v9_PredefinedType) : IfcElementComponent(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcBuildingElementPartType ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value Ifc4x3_add2::IfcBuildingElementPartType::PredefinedType() const { return ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcBuildingElementPartType::setPredefinedType(::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcBuildingElementPartType::setPredefinedType(const ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcBuildingElementPartType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[115]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBuildingElementPartType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[115]); } const IfcParse::entity& Ifc4x3_add2::IfcBuildingElementPartType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[115]); } -Ifc4x3_add2::IfcBuildingElementPartType::IfcBuildingElementPartType(IfcEntityInstanceData&& e) : IfcElementComponentType(std::move(e)) { } -Ifc4x3_add2::IfcBuildingElementPartType::IfcBuildingElementPartType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value v10_PredefinedType) : IfcElementComponentType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcBuildingElementPartType::IfcBuildingElementPartType(const std::weak_ptr& e) : IfcElementComponentType(e) { } +// Ifc4x3_add2::IfcBuildingElementPartType::IfcBuildingElementPartType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value v10_PredefinedType) : IfcElementComponentType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcBuildingElementProxy -boost::optional< ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value > Ifc4x3_add2::IfcBuildingElementProxy::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value > Ifc4x3_add2::IfcBuildingElementProxy::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcBuildingElementProxy::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcBuildingElementProxy::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[117]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBuildingElementProxy::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[117]); } const IfcParse::entity& Ifc4x3_add2::IfcBuildingElementProxy::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[117]); } -Ifc4x3_add2::IfcBuildingElementProxy::IfcBuildingElementProxy(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcBuildingElementProxy::IfcBuildingElementProxy(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcBuildingElementProxy::IfcBuildingElementProxy(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcBuildingElementProxy::IfcBuildingElementProxy(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcBuildingElementProxyType ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value Ifc4x3_add2::IfcBuildingElementProxyType::PredefinedType() const { return ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcBuildingElementProxyType::setPredefinedType(::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcBuildingElementProxyType::setPredefinedType(const ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcBuildingElementProxyType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[118]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBuildingElementProxyType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[118]); } const IfcParse::entity& Ifc4x3_add2::IfcBuildingElementProxyType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[118]); } -Ifc4x3_add2::IfcBuildingElementProxyType::IfcBuildingElementProxyType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcBuildingElementProxyType::IfcBuildingElementProxyType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcBuildingElementProxyType::IfcBuildingElementProxyType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcBuildingElementProxyType::IfcBuildingElementProxyType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcBuildingStorey -boost::optional< double > Ifc4x3_add2::IfcBuildingStorey::Elevation() const { if(get_attribute_value(9).isNull()) { return boost::none; } double v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcBuildingStorey::setElevation(boost::optional< double > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< double > Ifc4x3_add2::IfcBuildingStorey::Elevation() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } double v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcBuildingStorey::setElevation(const std::optional< double >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcBuildingStorey::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[120]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBuildingStorey::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[120]); } const IfcParse::entity& Ifc4x3_add2::IfcBuildingStorey::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[120]); } -Ifc4x3_add2::IfcBuildingStorey::IfcBuildingStorey(IfcEntityInstanceData&& e) : IfcSpatialStructureElement(std::move(e)) { } -Ifc4x3_add2::IfcBuildingStorey::IfcBuildingStorey(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< double > v10_Elevation) : IfcSpatialStructureElement(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_Elevation) {set_attribute_value(9, (*v10_Elevation)); }; populate_derived(); } +// Ifc4x3_add2::IfcBuildingStorey::IfcBuildingStorey(const std::weak_ptr& e) : IfcSpatialStructureElement(e) { } +// Ifc4x3_add2::IfcBuildingStorey::IfcBuildingStorey(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< double > v10_Elevation) : IfcSpatialStructureElement(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_Elevation) {set_attribute_value(9, (*v10_Elevation)); }; populate_derived(); } // Function implementations for IfcBuildingSystem -boost::optional< ::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Value > Ifc4x3_add2::IfcBuildingSystem::PredefinedType() const { if(get_attribute_value(5).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcBuildingSystemTypeEnum::FromString(get_attribute_value(5)); } -void Ifc4x3_add2::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Value > v) { if (v) {set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(5);} } -boost::optional< std::string > Ifc4x3_add2::IfcBuildingSystem::LongName() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< ::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Value > Ifc4x3_add2::IfcBuildingSystem::PredefinedType() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcBuildingSystemTypeEnum::FromString(get_attribute_value(5)); } +void Ifc4x3_add2::IfcBuildingSystem::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Value >& v) { if (v) {set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcBuildingSystem::LongName() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcBuildingSystem::setLongName(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -const IfcParse::entity& Ifc4x3_add2::IfcBuildingSystem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[121]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBuildingSystem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[121]); } const IfcParse::entity& Ifc4x3_add2::IfcBuildingSystem::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[121]); } -Ifc4x3_add2::IfcBuildingSystem::IfcBuildingSystem(IfcEntityInstanceData&& e) : IfcSystem(std::move(e)) { } -Ifc4x3_add2::IfcBuildingSystem::IfcBuildingSystem(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< ::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Value > v6_PredefinedType, boost::optional< std::string > v7_LongName) : IfcSystem(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_PredefinedType) {set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Class(),(size_t)*v6_PredefinedType))); } if (v7_LongName) {set_attribute_value(6, (*v7_LongName)); }; populate_derived(); } +// Ifc4x3_add2::IfcBuildingSystem::IfcBuildingSystem(const std::weak_ptr& e) : IfcSystem(e) { } +// Ifc4x3_add2::IfcBuildingSystem::IfcBuildingSystem(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< ::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Value > v6_PredefinedType, std::optional< std::string > v7_LongName) : IfcSystem(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_PredefinedType) {set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Class(),(size_t)*v6_PredefinedType))); } if (v7_LongName) {set_attribute_value(6, (*v7_LongName)); }; populate_derived(); } // Function implementations for IfcBuiltElement -const IfcParse::entity& Ifc4x3_add2::IfcBuiltElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[123]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBuiltElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[123]); } const IfcParse::entity& Ifc4x3_add2::IfcBuiltElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[123]); } -Ifc4x3_add2::IfcBuiltElement::IfcBuiltElement(IfcEntityInstanceData&& e) : IfcElement(std::move(e)) { } -Ifc4x3_add2::IfcBuiltElement::IfcBuiltElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcBuiltElement::IfcBuiltElement(const std::weak_ptr& e) : IfcElement(e) { } +// Ifc4x3_add2::IfcBuiltElement::IfcBuiltElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcBuiltElementType -const IfcParse::entity& Ifc4x3_add2::IfcBuiltElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[124]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBuiltElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[124]); } const IfcParse::entity& Ifc4x3_add2::IfcBuiltElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[124]); } -Ifc4x3_add2::IfcBuiltElementType::IfcBuiltElementType(IfcEntityInstanceData&& e) : IfcElementType(std::move(e)) { } -Ifc4x3_add2::IfcBuiltElementType::IfcBuiltElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcBuiltElementType::IfcBuiltElementType(const std::weak_ptr& e) : IfcElementType(e) { } +// Ifc4x3_add2::IfcBuiltElementType::IfcBuiltElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcBuiltSystem -boost::optional< ::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Value > Ifc4x3_add2::IfcBuiltSystem::PredefinedType() const { if(get_attribute_value(5).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcBuiltSystemTypeEnum::FromString(get_attribute_value(5)); } -void Ifc4x3_add2::IfcBuiltSystem::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Value > v) { if (v) {set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(5);} } -boost::optional< std::string > Ifc4x3_add2::IfcBuiltSystem::LongName() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcBuiltSystem::setLongName(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< ::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Value > Ifc4x3_add2::IfcBuiltSystem::PredefinedType() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcBuiltSystemTypeEnum::FromString(get_attribute_value(5)); } +void Ifc4x3_add2::IfcBuiltSystem::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Value >& v) { if (v) {set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcBuiltSystem::LongName() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcBuiltSystem::setLongName(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -const IfcParse::entity& Ifc4x3_add2::IfcBuiltSystem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[125]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBuiltSystem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[125]); } const IfcParse::entity& Ifc4x3_add2::IfcBuiltSystem::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[125]); } -Ifc4x3_add2::IfcBuiltSystem::IfcBuiltSystem(IfcEntityInstanceData&& e) : IfcSystem(std::move(e)) { } -Ifc4x3_add2::IfcBuiltSystem::IfcBuiltSystem(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< ::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Value > v6_PredefinedType, boost::optional< std::string > v7_LongName) : IfcSystem(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_PredefinedType) {set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Class(),(size_t)*v6_PredefinedType))); } if (v7_LongName) {set_attribute_value(6, (*v7_LongName)); }; populate_derived(); } +// Ifc4x3_add2::IfcBuiltSystem::IfcBuiltSystem(const std::weak_ptr& e) : IfcSystem(e) { } +// Ifc4x3_add2::IfcBuiltSystem::IfcBuiltSystem(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< ::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Value > v6_PredefinedType, std::optional< std::string > v7_LongName) : IfcSystem(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_PredefinedType) {set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Class(),(size_t)*v6_PredefinedType))); } if (v7_LongName) {set_attribute_value(6, (*v7_LongName)); }; populate_derived(); } // Function implementations for IfcBurner -boost::optional< ::Ifc4x3_add2::IfcBurnerTypeEnum::Value > Ifc4x3_add2::IfcBurner::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcBurnerTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcBurner::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBurnerTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcBurnerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcBurnerTypeEnum::Value > Ifc4x3_add2::IfcBurner::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcBurnerTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcBurner::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBurnerTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcBurnerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcBurner::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[127]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBurner::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[127]); } const IfcParse::entity& Ifc4x3_add2::IfcBurner::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[127]); } -Ifc4x3_add2::IfcBurner::IfcBurner(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcBurner::IfcBurner(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcBurnerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcBurnerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcBurner::IfcBurner(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcBurner::IfcBurner(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcBurnerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcBurnerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcBurnerType ::Ifc4x3_add2::IfcBurnerTypeEnum::Value Ifc4x3_add2::IfcBurnerType::PredefinedType() const { return ::Ifc4x3_add2::IfcBurnerTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcBurnerType::setPredefinedType(::Ifc4x3_add2::IfcBurnerTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcBurnerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcBurnerType::setPredefinedType(const ::Ifc4x3_add2::IfcBurnerTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcBurnerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcBurnerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[128]); } +// const IfcParse::entity& Ifc4x3_add2::IfcBurnerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[128]); } const IfcParse::entity& Ifc4x3_add2::IfcBurnerType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[128]); } -Ifc4x3_add2::IfcBurnerType::IfcBurnerType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcBurnerType::IfcBurnerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBurnerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcBurnerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcBurnerType::IfcBurnerType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcBurnerType::IfcBurnerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBurnerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcBurnerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcCShapeProfileDef double Ifc4x3_add2::IfcCShapeProfileDef::Depth() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcCShapeProfileDef::setDepth(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcCShapeProfileDef::setDepth(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcCShapeProfileDef::Width() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcCShapeProfileDef::setWidth(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcCShapeProfileDef::setWidth(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } double Ifc4x3_add2::IfcCShapeProfileDef::WallThickness() const { double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcCShapeProfileDef::setWallThickness(double v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcCShapeProfileDef::setWallThickness(const double& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } double Ifc4x3_add2::IfcCShapeProfileDef::Girth() const { double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcCShapeProfileDef::setGirth(double v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -boost::optional< double > Ifc4x3_add2::IfcCShapeProfileDef::InternalFilletRadius() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +void Ifc4x3_add2::IfcCShapeProfileDef::setGirth(const double& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< double > Ifc4x3_add2::IfcCShapeProfileDef::InternalFilletRadius() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcCShapeProfileDef::setInternalFilletRadius(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -const IfcParse::entity& Ifc4x3_add2::IfcCShapeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[265]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCShapeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[265]); } const IfcParse::entity& Ifc4x3_add2::IfcCShapeProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[265]); } -Ifc4x3_add2::IfcCShapeProfileDef::IfcCShapeProfileDef(IfcEntityInstanceData&& e) : IfcParameterizedProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcCShapeProfileDef::IfcCShapeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_Width, double v6_WallThickness, double v7_Girth, boost::optional< double > v8_InternalFilletRadius) : IfcParameterizedProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_Depth));set_attribute_value(4, (v5_Width));set_attribute_value(5, (v6_WallThickness));set_attribute_value(6, (v7_Girth)); if (v8_InternalFilletRadius) {set_attribute_value(7, (*v8_InternalFilletRadius)); }; populate_derived(); } +// Ifc4x3_add2::IfcCShapeProfileDef::IfcCShapeProfileDef(const std::weak_ptr& e) : IfcParameterizedProfileDef(e) { } +// Ifc4x3_add2::IfcCShapeProfileDef::IfcCShapeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_Depth, double v5_Width, double v6_WallThickness, double v7_Girth, std::optional< double > v8_InternalFilletRadius) : IfcParameterizedProfileDef(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); } if (v3_Position) {set_attribute_value(2, (*v3_Position)); }set_attribute_value(3, (v4_Depth));set_attribute_value(4, (v5_Width));set_attribute_value(5, (v6_WallThickness));set_attribute_value(6, (v7_Girth)); if (v8_InternalFilletRadius) {set_attribute_value(7, (*v8_InternalFilletRadius)); }; populate_derived(); } // Function implementations for IfcCableCarrierFitting -boost::optional< ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value > Ifc4x3_add2::IfcCableCarrierFitting::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value > Ifc4x3_add2::IfcCableCarrierFitting::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcCableCarrierFitting::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcCableCarrierFitting::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[130]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCableCarrierFitting::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[130]); } const IfcParse::entity& Ifc4x3_add2::IfcCableCarrierFitting::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[130]); } -Ifc4x3_add2::IfcCableCarrierFitting::IfcCableCarrierFitting(IfcEntityInstanceData&& e) : IfcFlowFitting(std::move(e)) { } -Ifc4x3_add2::IfcCableCarrierFitting::IfcCableCarrierFitting(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcCableCarrierFitting::IfcCableCarrierFitting(const std::weak_ptr& e) : IfcFlowFitting(e) { } +// Ifc4x3_add2::IfcCableCarrierFitting::IfcCableCarrierFitting(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcCableCarrierFittingType ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value Ifc4x3_add2::IfcCableCarrierFittingType::PredefinedType() const { return ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcCableCarrierFittingType::setPredefinedType(::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcCableCarrierFittingType::setPredefinedType(const ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcCableCarrierFittingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[131]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCableCarrierFittingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[131]); } const IfcParse::entity& Ifc4x3_add2::IfcCableCarrierFittingType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[131]); } -Ifc4x3_add2::IfcCableCarrierFittingType::IfcCableCarrierFittingType(IfcEntityInstanceData&& e) : IfcFlowFittingType(std::move(e)) { } -Ifc4x3_add2::IfcCableCarrierFittingType::IfcCableCarrierFittingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcCableCarrierFittingType::IfcCableCarrierFittingType(const std::weak_ptr& e) : IfcFlowFittingType(e) { } +// Ifc4x3_add2::IfcCableCarrierFittingType::IfcCableCarrierFittingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcCableCarrierSegment -boost::optional< ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value > Ifc4x3_add2::IfcCableCarrierSegment::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value > Ifc4x3_add2::IfcCableCarrierSegment::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcCableCarrierSegment::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcCableCarrierSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[133]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCableCarrierSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[133]); } const IfcParse::entity& Ifc4x3_add2::IfcCableCarrierSegment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[133]); } -Ifc4x3_add2::IfcCableCarrierSegment::IfcCableCarrierSegment(IfcEntityInstanceData&& e) : IfcFlowSegment(std::move(e)) { } -Ifc4x3_add2::IfcCableCarrierSegment::IfcCableCarrierSegment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcCableCarrierSegment::IfcCableCarrierSegment(const std::weak_ptr& e) : IfcFlowSegment(e) { } +// Ifc4x3_add2::IfcCableCarrierSegment::IfcCableCarrierSegment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcCableCarrierSegmentType ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value Ifc4x3_add2::IfcCableCarrierSegmentType::PredefinedType() const { return ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcCableCarrierSegmentType::setPredefinedType(::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcCableCarrierSegmentType::setPredefinedType(const ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcCableCarrierSegmentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[134]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCableCarrierSegmentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[134]); } const IfcParse::entity& Ifc4x3_add2::IfcCableCarrierSegmentType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[134]); } -Ifc4x3_add2::IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(IfcEntityInstanceData&& e) : IfcFlowSegmentType(std::move(e)) { } -Ifc4x3_add2::IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(const std::weak_ptr& e) : IfcFlowSegmentType(e) { } +// Ifc4x3_add2::IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcCableFitting -boost::optional< ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value > Ifc4x3_add2::IfcCableFitting::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCableFittingTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCableFittingTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value > Ifc4x3_add2::IfcCableFitting::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCableFittingTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcCableFitting::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCableFittingTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcCableFitting::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[136]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCableFitting::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[136]); } const IfcParse::entity& Ifc4x3_add2::IfcCableFitting::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[136]); } -Ifc4x3_add2::IfcCableFitting::IfcCableFitting(IfcEntityInstanceData&& e) : IfcFlowFitting(std::move(e)) { } -Ifc4x3_add2::IfcCableFitting::IfcCableFitting(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCableFittingTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcCableFitting::IfcCableFitting(const std::weak_ptr& e) : IfcFlowFitting(e) { } +// Ifc4x3_add2::IfcCableFitting::IfcCableFitting(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCableFittingTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcCableFittingType ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value Ifc4x3_add2::IfcCableFittingType::PredefinedType() const { return ::Ifc4x3_add2::IfcCableFittingTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcCableFittingType::setPredefinedType(::Ifc4x3_add2::IfcCableFittingTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCableFittingTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcCableFittingType::setPredefinedType(const ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCableFittingTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcCableFittingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[137]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCableFittingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[137]); } const IfcParse::entity& Ifc4x3_add2::IfcCableFittingType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[137]); } -Ifc4x3_add2::IfcCableFittingType::IfcCableFittingType(IfcEntityInstanceData&& e) : IfcFlowFittingType(std::move(e)) { } -Ifc4x3_add2::IfcCableFittingType::IfcCableFittingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCableFittingTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcCableFittingType::IfcCableFittingType(const std::weak_ptr& e) : IfcFlowFittingType(e) { } +// Ifc4x3_add2::IfcCableFittingType::IfcCableFittingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCableFittingTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcCableSegment -boost::optional< ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value > Ifc4x3_add2::IfcCableSegment::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCableSegmentTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCableSegmentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value > Ifc4x3_add2::IfcCableSegment::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCableSegmentTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcCableSegment::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCableSegmentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcCableSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[139]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCableSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[139]); } const IfcParse::entity& Ifc4x3_add2::IfcCableSegment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[139]); } -Ifc4x3_add2::IfcCableSegment::IfcCableSegment(IfcEntityInstanceData&& e) : IfcFlowSegment(std::move(e)) { } -Ifc4x3_add2::IfcCableSegment::IfcCableSegment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCableSegmentTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcCableSegment::IfcCableSegment(const std::weak_ptr& e) : IfcFlowSegment(e) { } +// Ifc4x3_add2::IfcCableSegment::IfcCableSegment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCableSegmentTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcCableSegmentType ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value Ifc4x3_add2::IfcCableSegmentType::PredefinedType() const { return ::Ifc4x3_add2::IfcCableSegmentTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcCableSegmentType::setPredefinedType(::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCableSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcCableSegmentType::setPredefinedType(const ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCableSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcCableSegmentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[140]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCableSegmentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[140]); } const IfcParse::entity& Ifc4x3_add2::IfcCableSegmentType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[140]); } -Ifc4x3_add2::IfcCableSegmentType::IfcCableSegmentType(IfcEntityInstanceData&& e) : IfcFlowSegmentType(std::move(e)) { } -Ifc4x3_add2::IfcCableSegmentType::IfcCableSegmentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCableSegmentTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcCableSegmentType::IfcCableSegmentType(const std::weak_ptr& e) : IfcFlowSegmentType(e) { } +// Ifc4x3_add2::IfcCableSegmentType::IfcCableSegmentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCableSegmentTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcCaissonFoundation -boost::optional< ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value > Ifc4x3_add2::IfcCaissonFoundation::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcCaissonFoundation::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value > Ifc4x3_add2::IfcCaissonFoundation::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcCaissonFoundation::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcCaissonFoundation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[142]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCaissonFoundation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[142]); } const IfcParse::entity& Ifc4x3_add2::IfcCaissonFoundation::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[142]); } -Ifc4x3_add2::IfcCaissonFoundation::IfcCaissonFoundation(IfcEntityInstanceData&& e) : IfcDeepFoundation(std::move(e)) { } -Ifc4x3_add2::IfcCaissonFoundation::IfcCaissonFoundation(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value > v9_PredefinedType) : IfcDeepFoundation(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcCaissonFoundation::IfcCaissonFoundation(const std::weak_ptr& e) : IfcDeepFoundation(e) { } +// Ifc4x3_add2::IfcCaissonFoundation::IfcCaissonFoundation(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value > v9_PredefinedType) : IfcDeepFoundation(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcCaissonFoundationType ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value Ifc4x3_add2::IfcCaissonFoundationType::PredefinedType() const { return ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcCaissonFoundationType::setPredefinedType(::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcCaissonFoundationType::setPredefinedType(const ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcCaissonFoundationType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[143]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCaissonFoundationType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[143]); } const IfcParse::entity& Ifc4x3_add2::IfcCaissonFoundationType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[143]); } -Ifc4x3_add2::IfcCaissonFoundationType::IfcCaissonFoundationType(IfcEntityInstanceData&& e) : IfcDeepFoundationType(std::move(e)) { } -Ifc4x3_add2::IfcCaissonFoundationType::IfcCaissonFoundationType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value v10_PredefinedType) : IfcDeepFoundationType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcCaissonFoundationType::IfcCaissonFoundationType(const std::weak_ptr& e) : IfcDeepFoundationType(e) { } +// Ifc4x3_add2::IfcCaissonFoundationType::IfcCaissonFoundationType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value v10_PredefinedType) : IfcDeepFoundationType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcCartesianPoint std::vector< double > /*[1:3]*/ Ifc4x3_add2::IfcCartesianPoint::Coordinates() const { std::vector< double > /*[1:3]*/ v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcCartesianPoint::setCoordinates(std::vector< double > /*[1:3]*/ v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcCartesianPoint::setCoordinates(const std::vector< double > /*[1:3]*/& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcCartesianPoint::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[146]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCartesianPoint::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[146]); } const IfcParse::entity& Ifc4x3_add2::IfcCartesianPoint::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[146]); } -Ifc4x3_add2::IfcCartesianPoint::IfcCartesianPoint(IfcEntityInstanceData&& e) : IfcPoint(std::move(e)) { } -Ifc4x3_add2::IfcCartesianPoint::IfcCartesianPoint(std::vector< double > /*[1:3]*/ v1_Coordinates) : IfcPoint(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Coordinates));; populate_derived(); } +// Ifc4x3_add2::IfcCartesianPoint::IfcCartesianPoint(const std::weak_ptr& e) : IfcPoint(e) { } +// Ifc4x3_add2::IfcCartesianPoint::IfcCartesianPoint(std::vector< double > /*[1:3]*/ v1_Coordinates) : IfcPoint(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Coordinates));; populate_derived(); } // Function implementations for IfcCartesianPointList -const IfcParse::entity& Ifc4x3_add2::IfcCartesianPointList::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[147]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCartesianPointList::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[147]); } const IfcParse::entity& Ifc4x3_add2::IfcCartesianPointList::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[147]); } -Ifc4x3_add2::IfcCartesianPointList::IfcCartesianPointList(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcCartesianPointList::IfcCartesianPointList() : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcCartesianPointList::IfcCartesianPointList(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcCartesianPointList::IfcCartesianPointList() : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcCartesianPointList2D std::vector< std::vector< double > > Ifc4x3_add2::IfcCartesianPointList2D::CoordList() const { std::vector< std::vector< double > > v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcCartesianPointList2D::setCoordList(std::vector< std::vector< double > > v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcCartesianPointList2D::TagList() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcCartesianPointList2D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +void Ifc4x3_add2::IfcCartesianPointList2D::setCoordList(const std::vector< std::vector< double > >& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcCartesianPointList2D::TagList() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcCartesianPointList2D::setTagList(const std::optional< std::vector< std::string > /*[1:?]*/ >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -const IfcParse::entity& Ifc4x3_add2::IfcCartesianPointList2D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[148]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCartesianPointList2D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[148]); } const IfcParse::entity& Ifc4x3_add2::IfcCartesianPointList2D::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[148]); } -Ifc4x3_add2::IfcCartesianPointList2D::IfcCartesianPointList2D(IfcEntityInstanceData&& e) : IfcCartesianPointList(std::move(e)) { } -Ifc4x3_add2::IfcCartesianPointList2D::IfcCartesianPointList2D(std::vector< std::vector< double > > v1_CoordList, boost::optional< std::vector< std::string > /*[1:?]*/ > v2_TagList) : IfcCartesianPointList(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_CoordList)); if (v2_TagList) {set_attribute_value(1, (*v2_TagList)); }; populate_derived(); } +// Ifc4x3_add2::IfcCartesianPointList2D::IfcCartesianPointList2D(const std::weak_ptr& e) : IfcCartesianPointList(e) { } +// Ifc4x3_add2::IfcCartesianPointList2D::IfcCartesianPointList2D(std::vector< std::vector< double > > v1_CoordList, std::optional< std::vector< std::string > /*[1:?]*/ > v2_TagList) : IfcCartesianPointList(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_CoordList)); if (v2_TagList) {set_attribute_value(1, (*v2_TagList)); }; populate_derived(); } // Function implementations for IfcCartesianPointList3D std::vector< std::vector< double > > Ifc4x3_add2::IfcCartesianPointList3D::CoordList() const { std::vector< std::vector< double > > v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcCartesianPointList3D::setCoordList(std::vector< std::vector< double > > v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcCartesianPointList3D::TagList() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcCartesianPointList3D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +void Ifc4x3_add2::IfcCartesianPointList3D::setCoordList(const std::vector< std::vector< double > >& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcCartesianPointList3D::TagList() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcCartesianPointList3D::setTagList(const std::optional< std::vector< std::string > /*[1:?]*/ >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -const IfcParse::entity& Ifc4x3_add2::IfcCartesianPointList3D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[149]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCartesianPointList3D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[149]); } const IfcParse::entity& Ifc4x3_add2::IfcCartesianPointList3D::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[149]); } -Ifc4x3_add2::IfcCartesianPointList3D::IfcCartesianPointList3D(IfcEntityInstanceData&& e) : IfcCartesianPointList(std::move(e)) { } -Ifc4x3_add2::IfcCartesianPointList3D::IfcCartesianPointList3D(std::vector< std::vector< double > > v1_CoordList, boost::optional< std::vector< std::string > /*[1:?]*/ > v2_TagList) : IfcCartesianPointList(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_CoordList)); if (v2_TagList) {set_attribute_value(1, (*v2_TagList)); }; populate_derived(); } +// Ifc4x3_add2::IfcCartesianPointList3D::IfcCartesianPointList3D(const std::weak_ptr& e) : IfcCartesianPointList(e) { } +// Ifc4x3_add2::IfcCartesianPointList3D::IfcCartesianPointList3D(std::vector< std::vector< double > > v1_CoordList, std::optional< std::vector< std::string > /*[1:?]*/ > v2_TagList) : IfcCartesianPointList(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_CoordList)); if (v2_TagList) {set_attribute_value(1, (*v2_TagList)); }; populate_derived(); } // Function implementations for IfcCartesianTransformationOperator -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcCartesianTransformationOperator::Axis1() const { if(get_attribute_value(0).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcCartesianTransformationOperator::setAxis1(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcCartesianTransformationOperator::Axis2() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcCartesianTransformationOperator::setAxis2(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcCartesianPoint* Ifc4x3_add2::IfcCartesianTransformationOperator::LocalOrigin() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcCartesianPoint>(true); } -void Ifc4x3_add2::IfcCartesianTransformationOperator::setLocalOrigin(::Ifc4x3_add2::IfcCartesianPoint* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -boost::optional< double > Ifc4x3_add2::IfcCartesianTransformationOperator::Scale() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcCartesianTransformationOperator::Axis1() const { if(get_attribute_value(0).isNull()) { return ::Ifc4x3_add2::IfcDirection{}; } return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcCartesianTransformationOperator::setAxis1(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcCartesianTransformationOperator::Axis2() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcDirection{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcCartesianTransformationOperator::setAxis2(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcCartesianPoint Ifc4x3_add2::IfcCartesianTransformationOperator::LocalOrigin() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcCartesianPoint>(); } +void Ifc4x3_add2::IfcCartesianTransformationOperator::setLocalOrigin(const ::Ifc4x3_add2::IfcCartesianPoint& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +std::optional< double > Ifc4x3_add2::IfcCartesianTransformationOperator::Scale() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcCartesianTransformationOperator::setScale(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -const IfcParse::entity& Ifc4x3_add2::IfcCartesianTransformationOperator::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[150]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCartesianTransformationOperator::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[150]); } const IfcParse::entity& Ifc4x3_add2::IfcCartesianTransformationOperator::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[150]); } -Ifc4x3_add2::IfcCartesianTransformationOperator::IfcCartesianTransformationOperator(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcCartesianTransformationOperator::IfcCartesianTransformationOperator(::Ifc4x3_add2::IfcDirection* v1_Axis1, ::Ifc4x3_add2::IfcDirection* v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_Axis1 ? v1_Axis1->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Axis2 ? v2_Axis2->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_LocalOrigin ? v3_LocalOrigin->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v4_Scale) {set_attribute_value(3, (*v4_Scale)); }; populate_derived(); } +// Ifc4x3_add2::IfcCartesianTransformationOperator::IfcCartesianTransformationOperator(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcCartesianTransformationOperator::IfcCartesianTransformationOperator(::Ifc4x3_add2::IfcDirection v1_Axis1, ::Ifc4x3_add2::IfcDirection v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint v3_LocalOrigin, std::optional< double > v4_Scale) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Axis1) {set_attribute_value(0, (*v1_Axis1)); } if (v2_Axis2) {set_attribute_value(1, (*v2_Axis2)); }set_attribute_value(2, (v3_LocalOrigin)); if (v4_Scale) {set_attribute_value(3, (*v4_Scale)); }; populate_derived(); } // Function implementations for IfcCartesianTransformationOperator2D -const IfcParse::entity& Ifc4x3_add2::IfcCartesianTransformationOperator2D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[151]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCartesianTransformationOperator2D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[151]); } const IfcParse::entity& Ifc4x3_add2::IfcCartesianTransformationOperator2D::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[151]); } -Ifc4x3_add2::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOperator2D(IfcEntityInstanceData&& e) : IfcCartesianTransformationOperator(std::move(e)) { } -Ifc4x3_add2::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOperator2D(::Ifc4x3_add2::IfcDirection* v1_Axis1, ::Ifc4x3_add2::IfcDirection* v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale) : IfcCartesianTransformationOperator(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_Axis1 ? v1_Axis1->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Axis2 ? v2_Axis2->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_LocalOrigin ? v3_LocalOrigin->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v4_Scale) {set_attribute_value(3, (*v4_Scale)); }; populate_derived(); } +// Ifc4x3_add2::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOperator2D(const std::weak_ptr& e) : IfcCartesianTransformationOperator(e) { } +// Ifc4x3_add2::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOperator2D(::Ifc4x3_add2::IfcDirection v1_Axis1, ::Ifc4x3_add2::IfcDirection v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint v3_LocalOrigin, std::optional< double > v4_Scale) : IfcCartesianTransformationOperator(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Axis1) {set_attribute_value(0, (*v1_Axis1)); } if (v2_Axis2) {set_attribute_value(1, (*v2_Axis2)); }set_attribute_value(2, (v3_LocalOrigin)); if (v4_Scale) {set_attribute_value(3, (*v4_Scale)); }; populate_derived(); } // Function implementations for IfcCartesianTransformationOperator2DnonUniform -boost::optional< double > Ifc4x3_add2::IfcCartesianTransformationOperator2DnonUniform::Scale2() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< double > Ifc4x3_add2::IfcCartesianTransformationOperator2DnonUniform::Scale2() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcCartesianTransformationOperator2DnonUniform::setScale2(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcCartesianTransformationOperator2DnonUniform::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[152]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCartesianTransformationOperator2DnonUniform::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[152]); } const IfcParse::entity& Ifc4x3_add2::IfcCartesianTransformationOperator2DnonUniform::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[152]); } -Ifc4x3_add2::IfcCartesianTransformationOperator2DnonUniform::IfcCartesianTransformationOperator2DnonUniform(IfcEntityInstanceData&& e) : IfcCartesianTransformationOperator2D(std::move(e)) { } -Ifc4x3_add2::IfcCartesianTransformationOperator2DnonUniform::IfcCartesianTransformationOperator2DnonUniform(::Ifc4x3_add2::IfcDirection* v1_Axis1, ::Ifc4x3_add2::IfcDirection* v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, boost::optional< double > v5_Scale2) : IfcCartesianTransformationOperator2D(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_Axis1 ? v1_Axis1->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Axis2 ? v2_Axis2->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_LocalOrigin ? v3_LocalOrigin->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v4_Scale) {set_attribute_value(3, (*v4_Scale)); } if (v5_Scale2) {set_attribute_value(4, (*v5_Scale2)); }; populate_derived(); } +// Ifc4x3_add2::IfcCartesianTransformationOperator2DnonUniform::IfcCartesianTransformationOperator2DnonUniform(const std::weak_ptr& e) : IfcCartesianTransformationOperator2D(e) { } +// Ifc4x3_add2::IfcCartesianTransformationOperator2DnonUniform::IfcCartesianTransformationOperator2DnonUniform(::Ifc4x3_add2::IfcDirection v1_Axis1, ::Ifc4x3_add2::IfcDirection v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint v3_LocalOrigin, std::optional< double > v4_Scale, std::optional< double > v5_Scale2) : IfcCartesianTransformationOperator2D(const std::weak_ptr&(in_memory_attribute_storage(5))) { if (v1_Axis1) {set_attribute_value(0, (*v1_Axis1)); } if (v2_Axis2) {set_attribute_value(1, (*v2_Axis2)); }set_attribute_value(2, (v3_LocalOrigin)); if (v4_Scale) {set_attribute_value(3, (*v4_Scale)); } if (v5_Scale2) {set_attribute_value(4, (*v5_Scale2)); }; populate_derived(); } // Function implementations for IfcCartesianTransformationOperator3D -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcCartesianTransformationOperator3D::Axis3() const { if(get_attribute_value(4).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcCartesianTransformationOperator3D::setAxis3(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcCartesianTransformationOperator3D::Axis3() const { if(get_attribute_value(4).isNull()) { return ::Ifc4x3_add2::IfcDirection{}; } return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcCartesianTransformationOperator3D::setAxis3(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcCartesianTransformationOperator3D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[153]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCartesianTransformationOperator3D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[153]); } const IfcParse::entity& Ifc4x3_add2::IfcCartesianTransformationOperator3D::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[153]); } -Ifc4x3_add2::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOperator3D(IfcEntityInstanceData&& e) : IfcCartesianTransformationOperator(std::move(e)) { } -Ifc4x3_add2::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOperator3D(::Ifc4x3_add2::IfcDirection* v1_Axis1, ::Ifc4x3_add2::IfcDirection* v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, ::Ifc4x3_add2::IfcDirection* v5_Axis3) : IfcCartesianTransformationOperator(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_Axis1 ? v1_Axis1->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Axis2 ? v2_Axis2->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_LocalOrigin ? v3_LocalOrigin->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v4_Scale) {set_attribute_value(3, (*v4_Scale)); }set_attribute_value(4, v5_Axis3 ? v5_Axis3->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOperator3D(const std::weak_ptr& e) : IfcCartesianTransformationOperator(e) { } +// Ifc4x3_add2::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOperator3D(::Ifc4x3_add2::IfcDirection v1_Axis1, ::Ifc4x3_add2::IfcDirection v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint v3_LocalOrigin, std::optional< double > v4_Scale, ::Ifc4x3_add2::IfcDirection v5_Axis3) : IfcCartesianTransformationOperator(const std::weak_ptr&(in_memory_attribute_storage(5))) { if (v1_Axis1) {set_attribute_value(0, (*v1_Axis1)); } if (v2_Axis2) {set_attribute_value(1, (*v2_Axis2)); }set_attribute_value(2, (v3_LocalOrigin)); if (v4_Scale) {set_attribute_value(3, (*v4_Scale)); } if (v5_Axis3) {set_attribute_value(4, (*v5_Axis3)); }; populate_derived(); } // Function implementations for IfcCartesianTransformationOperator3DnonUniform -boost::optional< double > Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform::Scale2() const { if(get_attribute_value(5).isNull()) { return boost::none; } double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< double > Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform::Scale3() const { if(get_attribute_value(6).isNull()) { return boost::none; } double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< double > Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform::Scale2() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } double v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform::setScale2(const std::optional< double >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< double > Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform::Scale3() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } double v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform::setScale3(const std::optional< double >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -const IfcParse::entity& Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[154]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[154]); } const IfcParse::entity& Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[154]); } -Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform::IfcCartesianTransformationOperator3DnonUniform(IfcEntityInstanceData&& e) : IfcCartesianTransformationOperator3D(std::move(e)) { } -Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform::IfcCartesianTransformationOperator3DnonUniform(::Ifc4x3_add2::IfcDirection* v1_Axis1, ::Ifc4x3_add2::IfcDirection* v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, ::Ifc4x3_add2::IfcDirection* v5_Axis3, boost::optional< double > v6_Scale2, boost::optional< double > v7_Scale3) : IfcCartesianTransformationOperator3D(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, v1_Axis1 ? v1_Axis1->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Axis2 ? v2_Axis2->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_LocalOrigin ? v3_LocalOrigin->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v4_Scale) {set_attribute_value(3, (*v4_Scale)); }set_attribute_value(4, v5_Axis3 ? v5_Axis3->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v6_Scale2) {set_attribute_value(5, (*v6_Scale2)); } if (v7_Scale3) {set_attribute_value(6, (*v7_Scale3)); }; populate_derived(); } +// Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform::IfcCartesianTransformationOperator3DnonUniform(const std::weak_ptr& e) : IfcCartesianTransformationOperator3D(e) { } +// Ifc4x3_add2::IfcCartesianTransformationOperator3DnonUniform::IfcCartesianTransformationOperator3DnonUniform(::Ifc4x3_add2::IfcDirection v1_Axis1, ::Ifc4x3_add2::IfcDirection v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint v3_LocalOrigin, std::optional< double > v4_Scale, ::Ifc4x3_add2::IfcDirection v5_Axis3, std::optional< double > v6_Scale2, std::optional< double > v7_Scale3) : IfcCartesianTransformationOperator3D(const std::weak_ptr&(in_memory_attribute_storage(7))) { if (v1_Axis1) {set_attribute_value(0, (*v1_Axis1)); } if (v2_Axis2) {set_attribute_value(1, (*v2_Axis2)); }set_attribute_value(2, (v3_LocalOrigin)); if (v4_Scale) {set_attribute_value(3, (*v4_Scale)); } if (v5_Axis3) {set_attribute_value(4, (*v5_Axis3)); } if (v6_Scale2) {set_attribute_value(5, (*v6_Scale2)); } if (v7_Scale3) {set_attribute_value(6, (*v7_Scale3)); }; populate_derived(); } // Function implementations for IfcCenterLineProfileDef double Ifc4x3_add2::IfcCenterLineProfileDef::Thickness() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcCenterLineProfileDef::setThickness(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcCenterLineProfileDef::setThickness(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcCenterLineProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[155]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCenterLineProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[155]); } const IfcParse::entity& Ifc4x3_add2::IfcCenterLineProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[155]); } -Ifc4x3_add2::IfcCenterLineProfileDef::IfcCenterLineProfileDef(IfcEntityInstanceData&& e) : IfcArbitraryOpenProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcCenterLineProfileDef::IfcCenterLineProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcBoundedCurve* v3_Curve, double v4_Thickness) : IfcArbitraryOpenProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Curve ? v3_Curve->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_Thickness));; populate_derived(); } +// Ifc4x3_add2::IfcCenterLineProfileDef::IfcCenterLineProfileDef(const std::weak_ptr& e) : IfcArbitraryOpenProfileDef(e) { } +// Ifc4x3_add2::IfcCenterLineProfileDef::IfcCenterLineProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcBoundedCurve v3_Curve, double v4_Thickness) : IfcArbitraryOpenProfileDef(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, (v3_Curve));set_attribute_value(3, (v4_Thickness));; populate_derived(); } // Function implementations for IfcChiller -boost::optional< ::Ifc4x3_add2::IfcChillerTypeEnum::Value > Ifc4x3_add2::IfcChiller::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcChillerTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcChiller::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcChillerTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcChillerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcChillerTypeEnum::Value > Ifc4x3_add2::IfcChiller::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcChillerTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcChiller::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcChillerTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcChillerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcChiller::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[157]); } +// const IfcParse::entity& Ifc4x3_add2::IfcChiller::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[157]); } const IfcParse::entity& Ifc4x3_add2::IfcChiller::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[157]); } -Ifc4x3_add2::IfcChiller::IfcChiller(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcChiller::IfcChiller(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcChillerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcChillerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcChiller::IfcChiller(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcChiller::IfcChiller(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcChillerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcChillerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcChillerType ::Ifc4x3_add2::IfcChillerTypeEnum::Value Ifc4x3_add2::IfcChillerType::PredefinedType() const { return ::Ifc4x3_add2::IfcChillerTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcChillerType::setPredefinedType(::Ifc4x3_add2::IfcChillerTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcChillerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcChillerType::setPredefinedType(const ::Ifc4x3_add2::IfcChillerTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcChillerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcChillerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[158]); } +// const IfcParse::entity& Ifc4x3_add2::IfcChillerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[158]); } const IfcParse::entity& Ifc4x3_add2::IfcChillerType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[158]); } -Ifc4x3_add2::IfcChillerType::IfcChillerType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcChillerType::IfcChillerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcChillerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcChillerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcChillerType::IfcChillerType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcChillerType::IfcChillerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcChillerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcChillerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcChimney -boost::optional< ::Ifc4x3_add2::IfcChimneyTypeEnum::Value > Ifc4x3_add2::IfcChimney::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcChimneyTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcChimney::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcChimneyTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcChimneyTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcChimneyTypeEnum::Value > Ifc4x3_add2::IfcChimney::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcChimneyTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcChimney::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcChimneyTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcChimneyTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcChimney::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[160]); } +// const IfcParse::entity& Ifc4x3_add2::IfcChimney::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[160]); } const IfcParse::entity& Ifc4x3_add2::IfcChimney::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[160]); } -Ifc4x3_add2::IfcChimney::IfcChimney(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcChimney::IfcChimney(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcChimneyTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcChimneyTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcChimney::IfcChimney(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcChimney::IfcChimney(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcChimneyTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcChimneyTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcChimneyType ::Ifc4x3_add2::IfcChimneyTypeEnum::Value Ifc4x3_add2::IfcChimneyType::PredefinedType() const { return ::Ifc4x3_add2::IfcChimneyTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcChimneyType::setPredefinedType(::Ifc4x3_add2::IfcChimneyTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcChimneyTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcChimneyType::setPredefinedType(const ::Ifc4x3_add2::IfcChimneyTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcChimneyTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcChimneyType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[161]); } +// const IfcParse::entity& Ifc4x3_add2::IfcChimneyType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[161]); } const IfcParse::entity& Ifc4x3_add2::IfcChimneyType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[161]); } -Ifc4x3_add2::IfcChimneyType::IfcChimneyType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcChimneyType::IfcChimneyType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcChimneyTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcChimneyTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcChimneyType::IfcChimneyType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcChimneyType::IfcChimneyType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcChimneyTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcChimneyTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcCircle double Ifc4x3_add2::IfcCircle::Radius() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcCircle::setRadius(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcCircle::setRadius(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcCircle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[163]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCircle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[163]); } const IfcParse::entity& Ifc4x3_add2::IfcCircle::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[163]); } -Ifc4x3_add2::IfcCircle::IfcCircle(IfcEntityInstanceData&& e) : IfcConic(std::move(e)) { } -Ifc4x3_add2::IfcCircle::IfcCircle(::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_Radius) : IfcConic(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Radius));; populate_derived(); } +// Ifc4x3_add2::IfcCircle::IfcCircle(const std::weak_ptr& e) : IfcConic(e) { } +// Ifc4x3_add2::IfcCircle::IfcCircle(::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_Radius) : IfcConic(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_Radius));; populate_derived(); } // Function implementations for IfcCircleHollowProfileDef double Ifc4x3_add2::IfcCircleHollowProfileDef::WallThickness() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcCircleHollowProfileDef::setWallThickness(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcCircleHollowProfileDef::setWallThickness(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcCircleHollowProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[164]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCircleHollowProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[164]); } const IfcParse::entity& Ifc4x3_add2::IfcCircleHollowProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[164]); } -Ifc4x3_add2::IfcCircleHollowProfileDef::IfcCircleHollowProfileDef(IfcEntityInstanceData&& e) : IfcCircleProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcCircleHollowProfileDef::IfcCircleHollowProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_Radius, double v5_WallThickness) : IfcCircleProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_Radius));set_attribute_value(4, (v5_WallThickness));; populate_derived(); } +// Ifc4x3_add2::IfcCircleHollowProfileDef::IfcCircleHollowProfileDef(const std::weak_ptr& e) : IfcCircleProfileDef(e) { } +// Ifc4x3_add2::IfcCircleHollowProfileDef::IfcCircleHollowProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_Radius, double v5_WallThickness) : IfcCircleProfileDef(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); } if (v3_Position) {set_attribute_value(2, (*v3_Position)); }set_attribute_value(3, (v4_Radius));set_attribute_value(4, (v5_WallThickness));; populate_derived(); } // Function implementations for IfcCircleProfileDef double Ifc4x3_add2::IfcCircleProfileDef::Radius() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcCircleProfileDef::setRadius(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcCircleProfileDef::setRadius(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcCircleProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[165]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCircleProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[165]); } const IfcParse::entity& Ifc4x3_add2::IfcCircleProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[165]); } -Ifc4x3_add2::IfcCircleProfileDef::IfcCircleProfileDef(IfcEntityInstanceData&& e) : IfcParameterizedProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcCircleProfileDef::IfcCircleProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_Radius) : IfcParameterizedProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_Radius));; populate_derived(); } +// Ifc4x3_add2::IfcCircleProfileDef::IfcCircleProfileDef(const std::weak_ptr& e) : IfcParameterizedProfileDef(e) { } +// Ifc4x3_add2::IfcCircleProfileDef::IfcCircleProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_Radius) : IfcParameterizedProfileDef(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); } if (v3_Position) {set_attribute_value(2, (*v3_Position)); }set_attribute_value(3, (v4_Radius));; populate_derived(); } // Function implementations for IfcCivilElement -const IfcParse::entity& Ifc4x3_add2::IfcCivilElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[166]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCivilElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[166]); } const IfcParse::entity& Ifc4x3_add2::IfcCivilElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[166]); } -Ifc4x3_add2::IfcCivilElement::IfcCivilElement(IfcEntityInstanceData&& e) : IfcElement(std::move(e)) { } -Ifc4x3_add2::IfcCivilElement::IfcCivilElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcCivilElement::IfcCivilElement(const std::weak_ptr& e) : IfcElement(e) { } +// Ifc4x3_add2::IfcCivilElement::IfcCivilElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcCivilElementType -const IfcParse::entity& Ifc4x3_add2::IfcCivilElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[167]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCivilElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[167]); } const IfcParse::entity& Ifc4x3_add2::IfcCivilElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[167]); } -Ifc4x3_add2::IfcCivilElementType::IfcCivilElementType(IfcEntityInstanceData&& e) : IfcElementType(std::move(e)) { } -Ifc4x3_add2::IfcCivilElementType::IfcCivilElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcCivilElementType::IfcCivilElementType(const std::weak_ptr& e) : IfcElementType(e) { } +// Ifc4x3_add2::IfcCivilElementType::IfcCivilElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcClassification -boost::optional< std::string > Ifc4x3_add2::IfcClassification::Source() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcClassification::setSource(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcClassification::Edition() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcClassification::setEdition(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::string > Ifc4x3_add2::IfcClassification::EditionDate() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcClassification::setEditionDate(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::string > Ifc4x3_add2::IfcClassification::Source() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcClassification::setSource(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcClassification::Edition() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcClassification::setEdition(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcClassification::EditionDate() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcClassification::setEditionDate(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } std::string Ifc4x3_add2::IfcClassification::Name() const { std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcClassification::setName(std::string v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcClassification::Description() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcClassification::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcClassification::Specification() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcClassification::setSpecification(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcClassification::ReferenceTokens() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +void Ifc4x3_add2::IfcClassification::setName(const std::string& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcClassification::Description() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcClassification::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcClassification::Specification() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcClassification::setSpecification(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcClassification::ReferenceTokens() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcClassification::setReferenceTokens(const std::optional< std::vector< std::string > /*[1:?]*/ >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -::Ifc4x3_add2::IfcRelAssociatesClassification::list::ptr Ifc4x3_add2::IfcClassification::ClassificationForObjects() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[910], 5)->as(); } -::Ifc4x3_add2::IfcClassificationReference::list::ptr Ifc4x3_add2::IfcClassification::HasReferences() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[169], 3)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssociatesClassification> Ifc4x3_add2::IfcClassification::ClassificationForObjects() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[910], 5)); } +std::vector<::Ifc4x3_add2::IfcClassificationReference> Ifc4x3_add2::IfcClassification::HasReferences() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[169], 3)); } -const IfcParse::entity& Ifc4x3_add2::IfcClassification::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[168]); } +// const IfcParse::entity& Ifc4x3_add2::IfcClassification::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[168]); } const IfcParse::entity& Ifc4x3_add2::IfcClassification::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[168]); } -Ifc4x3_add2::IfcClassification::IfcClassification(IfcEntityInstanceData&& e) : IfcExternalInformation(std::move(e)) { } -Ifc4x3_add2::IfcClassification::IfcClassification(boost::optional< std::string > v1_Source, boost::optional< std::string > v2_Edition, boost::optional< std::string > v3_EditionDate, std::string v4_Name, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Specification, boost::optional< std::vector< std::string > /*[1:?]*/ > v7_ReferenceTokens) : IfcExternalInformation(IfcEntityInstanceData(in_memory_attribute_storage(7))) { if (v1_Source) {set_attribute_value(0, (*v1_Source)); } if (v2_Edition) {set_attribute_value(1, (*v2_Edition)); } if (v3_EditionDate) {set_attribute_value(2, (*v3_EditionDate)); }set_attribute_value(3, (v4_Name)); if (v5_Description) {set_attribute_value(4, (*v5_Description)); } if (v6_Specification) {set_attribute_value(5, (*v6_Specification)); } if (v7_ReferenceTokens) {set_attribute_value(6, (*v7_ReferenceTokens)); }; populate_derived(); } +// Ifc4x3_add2::IfcClassification::IfcClassification(const std::weak_ptr& e) : IfcExternalInformation(e) { } +// Ifc4x3_add2::IfcClassification::IfcClassification(std::optional< std::string > v1_Source, std::optional< std::string > v2_Edition, std::optional< std::string > v3_EditionDate, std::string v4_Name, std::optional< std::string > v5_Description, std::optional< std::string > v6_Specification, std::optional< std::vector< std::string > /*[1:?]*/ > v7_ReferenceTokens) : IfcExternalInformation(const std::weak_ptr&(in_memory_attribute_storage(7))) { if (v1_Source) {set_attribute_value(0, (*v1_Source)); } if (v2_Edition) {set_attribute_value(1, (*v2_Edition)); } if (v3_EditionDate) {set_attribute_value(2, (*v3_EditionDate)); }set_attribute_value(3, (v4_Name)); if (v5_Description) {set_attribute_value(4, (*v5_Description)); } if (v6_Specification) {set_attribute_value(5, (*v6_Specification)); } if (v7_ReferenceTokens) {set_attribute_value(6, (*v7_ReferenceTokens)); }; populate_derived(); } // Function implementations for IfcClassificationReference -::Ifc4x3_add2::IfcClassificationReferenceSelect* Ifc4x3_add2::IfcClassificationReference::ReferencedSource() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcClassificationReferenceSelect>(true); } -void Ifc4x3_add2::IfcClassificationReference::setReferencedSource(::Ifc4x3_add2::IfcClassificationReferenceSelect* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcClassificationReference::Description() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcClassificationReference::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcClassificationReference::Sort() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcClassificationReference::setSort(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +::Ifc4x3_add2::IfcClassificationReferenceSelect Ifc4x3_add2::IfcClassificationReference::ReferencedSource() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcClassificationReferenceSelect{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcClassificationReferenceSelect>(); } +void Ifc4x3_add2::IfcClassificationReference::setReferencedSource(const ::Ifc4x3_add2::IfcClassificationReferenceSelect& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcClassificationReference::Description() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcClassificationReference::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcClassificationReference::Sort() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcClassificationReference::setSort(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -::Ifc4x3_add2::IfcRelAssociatesClassification::list::ptr Ifc4x3_add2::IfcClassificationReference::ClassificationRefForObjects() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[910], 5)->as(); } -::Ifc4x3_add2::IfcClassificationReference::list::ptr Ifc4x3_add2::IfcClassificationReference::HasReferences() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[169], 3)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssociatesClassification> Ifc4x3_add2::IfcClassificationReference::ClassificationRefForObjects() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[910], 5)); } +std::vector<::Ifc4x3_add2::IfcClassificationReference> Ifc4x3_add2::IfcClassificationReference::HasReferences() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[169], 3)); } -const IfcParse::entity& Ifc4x3_add2::IfcClassificationReference::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[169]); } +// const IfcParse::entity& Ifc4x3_add2::IfcClassificationReference::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[169]); } const IfcParse::entity& Ifc4x3_add2::IfcClassificationReference::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[169]); } -Ifc4x3_add2::IfcClassificationReference::IfcClassificationReference(IfcEntityInstanceData&& e) : IfcExternalReference(std::move(e)) { } -Ifc4x3_add2::IfcClassificationReference::IfcClassificationReference(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name, ::Ifc4x3_add2::IfcClassificationReferenceSelect* v4_ReferencedSource, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Sort) : IfcExternalReference(IfcEntityInstanceData(in_memory_attribute_storage(6))) { if (v1_Location) {set_attribute_value(0, (*v1_Location)); } if (v2_Identification) {set_attribute_value(1, (*v2_Identification)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); }set_attribute_value(3, v4_ReferencedSource ? v4_ReferencedSource->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_Description) {set_attribute_value(4, (*v5_Description)); } if (v6_Sort) {set_attribute_value(5, (*v6_Sort)); }; populate_derived(); } +// Ifc4x3_add2::IfcClassificationReference::IfcClassificationReference(const std::weak_ptr& e) : IfcExternalReference(e) { } +// Ifc4x3_add2::IfcClassificationReference::IfcClassificationReference(std::optional< std::string > v1_Location, std::optional< std::string > v2_Identification, std::optional< std::string > v3_Name, ::Ifc4x3_add2::IfcClassificationReferenceSelect v4_ReferencedSource, std::optional< std::string > v5_Description, std::optional< std::string > v6_Sort) : IfcExternalReference(const std::weak_ptr&(in_memory_attribute_storage(6))) { if (v1_Location) {set_attribute_value(0, (*v1_Location)); } if (v2_Identification) {set_attribute_value(1, (*v2_Identification)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_ReferencedSource) {set_attribute_value(3, (*v4_ReferencedSource)); } if (v5_Description) {set_attribute_value(4, (*v5_Description)); } if (v6_Sort) {set_attribute_value(5, (*v6_Sort)); }; populate_derived(); } // Function implementations for IfcClosedShell -const IfcParse::entity& Ifc4x3_add2::IfcClosedShell::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[172]); } +// const IfcParse::entity& Ifc4x3_add2::IfcClosedShell::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[172]); } const IfcParse::entity& Ifc4x3_add2::IfcClosedShell::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[172]); } -Ifc4x3_add2::IfcClosedShell::IfcClosedShell(IfcEntityInstanceData&& e) : IfcConnectedFaceSet(std::move(e)) { } -Ifc4x3_add2::IfcClosedShell::IfcClosedShell(aggregate_of< ::Ifc4x3_add2::IfcFace >::ptr v1_CfsFaces) : IfcConnectedFaceSet(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_CfsFaces)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcClosedShell::IfcClosedShell(const std::weak_ptr& e) : IfcConnectedFaceSet(e) { } +// Ifc4x3_add2::IfcClosedShell::IfcClosedShell(std::vector< ::Ifc4x3_add2::IfcFace > v1_CfsFaces) : IfcConnectedFaceSet(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_CfsFaces)->generalize());; populate_derived(); } // Function implementations for IfcClothoid double Ifc4x3_add2::IfcClothoid::ClothoidConstant() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcClothoid::setClothoidConstant(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcClothoid::setClothoidConstant(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcClothoid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[173]); } +// const IfcParse::entity& Ifc4x3_add2::IfcClothoid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[173]); } const IfcParse::entity& Ifc4x3_add2::IfcClothoid::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[173]); } -Ifc4x3_add2::IfcClothoid::IfcClothoid(IfcEntityInstanceData&& e) : IfcSpiral(std::move(e)) { } -Ifc4x3_add2::IfcClothoid::IfcClothoid(::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_ClothoidConstant) : IfcSpiral(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_ClothoidConstant));; populate_derived(); } +// Ifc4x3_add2::IfcClothoid::IfcClothoid(const std::weak_ptr& e) : IfcSpiral(e) { } +// Ifc4x3_add2::IfcClothoid::IfcClothoid(::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_ClothoidConstant) : IfcSpiral(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_ClothoidConstant));; populate_derived(); } // Function implementations for IfcCoil -boost::optional< ::Ifc4x3_add2::IfcCoilTypeEnum::Value > Ifc4x3_add2::IfcCoil::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCoilTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcCoil::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCoilTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCoilTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcCoilTypeEnum::Value > Ifc4x3_add2::IfcCoil::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCoilTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcCoil::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCoilTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCoilTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcCoil::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[174]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCoil::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[174]); } const IfcParse::entity& Ifc4x3_add2::IfcCoil::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[174]); } -Ifc4x3_add2::IfcCoil::IfcCoil(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcCoil::IfcCoil(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCoilTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCoilTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcCoil::IfcCoil(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcCoil::IfcCoil(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCoilTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCoilTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcCoilType ::Ifc4x3_add2::IfcCoilTypeEnum::Value Ifc4x3_add2::IfcCoilType::PredefinedType() const { return ::Ifc4x3_add2::IfcCoilTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcCoilType::setPredefinedType(::Ifc4x3_add2::IfcCoilTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCoilTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcCoilType::setPredefinedType(const ::Ifc4x3_add2::IfcCoilTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCoilTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcCoilType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[175]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCoilType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[175]); } const IfcParse::entity& Ifc4x3_add2::IfcCoilType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[175]); } -Ifc4x3_add2::IfcCoilType::IfcCoilType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcCoilType::IfcCoilType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCoilTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCoilTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcCoilType::IfcCoilType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcCoilType::IfcCoilType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCoilTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCoilTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcColourRgb double Ifc4x3_add2::IfcColourRgb::Red() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcColourRgb::setRed(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcColourRgb::setRed(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } double Ifc4x3_add2::IfcColourRgb::Green() const { double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcColourRgb::setGreen(double v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcColourRgb::setGreen(const double& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } double Ifc4x3_add2::IfcColourRgb::Blue() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcColourRgb::setBlue(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcColourRgb::setBlue(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcColourRgb::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[179]); } +// const IfcParse::entity& Ifc4x3_add2::IfcColourRgb::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[179]); } const IfcParse::entity& Ifc4x3_add2::IfcColourRgb::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[179]); } -Ifc4x3_add2::IfcColourRgb::IfcColourRgb(IfcEntityInstanceData&& e) : IfcColourSpecification(std::move(e)) { } -Ifc4x3_add2::IfcColourRgb::IfcColourRgb(boost::optional< std::string > v1_Name, double v2_Red, double v3_Green, double v4_Blue) : IfcColourSpecification(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (v2_Red));set_attribute_value(2, (v3_Green));set_attribute_value(3, (v4_Blue));; populate_derived(); } +// Ifc4x3_add2::IfcColourRgb::IfcColourRgb(const std::weak_ptr& e) : IfcColourSpecification(e) { } +// Ifc4x3_add2::IfcColourRgb::IfcColourRgb(std::optional< std::string > v1_Name, double v2_Red, double v3_Green, double v4_Blue) : IfcColourSpecification(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (v2_Red));set_attribute_value(2, (v3_Green));set_attribute_value(3, (v4_Blue));; populate_derived(); } // Function implementations for IfcColourRgbList std::vector< std::vector< double > > Ifc4x3_add2::IfcColourRgbList::ColourList() const { std::vector< std::vector< double > > v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcColourRgbList::setColourList(std::vector< std::vector< double > > v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcColourRgbList::setColourList(const std::vector< std::vector< double > >& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcColourRgbList::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[180]); } +// const IfcParse::entity& Ifc4x3_add2::IfcColourRgbList::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[180]); } const IfcParse::entity& Ifc4x3_add2::IfcColourRgbList::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[180]); } -Ifc4x3_add2::IfcColourRgbList::IfcColourRgbList(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcColourRgbList::IfcColourRgbList(std::vector< std::vector< double > > v1_ColourList) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_ColourList));; populate_derived(); } +// Ifc4x3_add2::IfcColourRgbList::IfcColourRgbList(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcColourRgbList::IfcColourRgbList(std::vector< std::vector< double > > v1_ColourList) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_ColourList));; populate_derived(); } // Function implementations for IfcColourSpecification -boost::optional< std::string > Ifc4x3_add2::IfcColourSpecification::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcColourSpecification::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcColourSpecification::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcColourSpecification::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -const IfcParse::entity& Ifc4x3_add2::IfcColourSpecification::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[181]); } +// const IfcParse::entity& Ifc4x3_add2::IfcColourSpecification::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[181]); } const IfcParse::entity& Ifc4x3_add2::IfcColourSpecification::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[181]); } -Ifc4x3_add2::IfcColourSpecification::IfcColourSpecification(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcColourSpecification::IfcColourSpecification(boost::optional< std::string > v1_Name) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }; populate_derived(); } +// Ifc4x3_add2::IfcColourSpecification::IfcColourSpecification(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcColourSpecification::IfcColourSpecification(std::optional< std::string > v1_Name) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }; populate_derived(); } // Function implementations for IfcColumn -boost::optional< ::Ifc4x3_add2::IfcColumnTypeEnum::Value > Ifc4x3_add2::IfcColumn::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcColumnTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcColumn::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcColumnTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcColumnTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcColumnTypeEnum::Value > Ifc4x3_add2::IfcColumn::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcColumnTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcColumn::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcColumnTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcColumnTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcColumn::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[182]); } +// const IfcParse::entity& Ifc4x3_add2::IfcColumn::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[182]); } const IfcParse::entity& Ifc4x3_add2::IfcColumn::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[182]); } -Ifc4x3_add2::IfcColumn::IfcColumn(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcColumn::IfcColumn(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcColumnTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcColumnTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcColumn::IfcColumn(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcColumn::IfcColumn(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcColumnTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcColumnTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcColumnType ::Ifc4x3_add2::IfcColumnTypeEnum::Value Ifc4x3_add2::IfcColumnType::PredefinedType() const { return ::Ifc4x3_add2::IfcColumnTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcColumnType::setPredefinedType(::Ifc4x3_add2::IfcColumnTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcColumnTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcColumnType::setPredefinedType(const ::Ifc4x3_add2::IfcColumnTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcColumnTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcColumnType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[183]); } +// const IfcParse::entity& Ifc4x3_add2::IfcColumnType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[183]); } const IfcParse::entity& Ifc4x3_add2::IfcColumnType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[183]); } -Ifc4x3_add2::IfcColumnType::IfcColumnType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcColumnType::IfcColumnType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcColumnTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcColumnTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcColumnType::IfcColumnType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcColumnType::IfcColumnType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcColumnTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcColumnTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcCommunicationsAppliance -boost::optional< ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value > Ifc4x3_add2::IfcCommunicationsAppliance::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value > Ifc4x3_add2::IfcCommunicationsAppliance::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcCommunicationsAppliance::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcCommunicationsAppliance::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[185]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCommunicationsAppliance::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[185]); } const IfcParse::entity& Ifc4x3_add2::IfcCommunicationsAppliance::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[185]); } -Ifc4x3_add2::IfcCommunicationsAppliance::IfcCommunicationsAppliance(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcCommunicationsAppliance::IfcCommunicationsAppliance(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcCommunicationsAppliance::IfcCommunicationsAppliance(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcCommunicationsAppliance::IfcCommunicationsAppliance(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcCommunicationsApplianceType ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value Ifc4x3_add2::IfcCommunicationsApplianceType::PredefinedType() const { return ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcCommunicationsApplianceType::setPredefinedType(::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcCommunicationsApplianceType::setPredefinedType(const ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcCommunicationsApplianceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[186]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCommunicationsApplianceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[186]); } const IfcParse::entity& Ifc4x3_add2::IfcCommunicationsApplianceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[186]); } -Ifc4x3_add2::IfcCommunicationsApplianceType::IfcCommunicationsApplianceType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcCommunicationsApplianceType::IfcCommunicationsApplianceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcCommunicationsApplianceType::IfcCommunicationsApplianceType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcCommunicationsApplianceType::IfcCommunicationsApplianceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcComplexProperty std::string Ifc4x3_add2::IfcComplexProperty::UsageName() const { std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcComplexProperty::setUsageName(std::string v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr Ifc4x3_add2::IfcComplexProperty::HasProperties() const { aggregate_of_instance::ptr es = get_attribute_value(3); return es->as< ::Ifc4x3_add2::IfcProperty >(); } -void Ifc4x3_add2::IfcComplexProperty::setHasProperties(aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v) { set_attribute_value(3, (v)->generalize());if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcComplexProperty::setUsageName(const std::string& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +std::vector< ::Ifc4x3_add2::IfcProperty > Ifc4x3_add2::IfcComplexProperty::HasProperties() const { std::vector es = get_attribute_value(3); return cast_vector<::Ifc4x3_add2::IfcProperty>(es); } +void Ifc4x3_add2::IfcComplexProperty::setHasProperties(const std::vector< ::Ifc4x3_add2::IfcProperty >& v) { set_attribute_value(3, cast_vector(v));if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcComplexProperty::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[189]); } +// const IfcParse::entity& Ifc4x3_add2::IfcComplexProperty::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[189]); } const IfcParse::entity& Ifc4x3_add2::IfcComplexProperty::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[189]); } -Ifc4x3_add2::IfcComplexProperty::IfcComplexProperty(IfcEntityInstanceData&& e) : IfcProperty(std::move(e)) { } -Ifc4x3_add2::IfcComplexProperty::IfcComplexProperty(std::string v1_Name, boost::optional< std::string > v2_Specification, std::string v3_UsageName, aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v4_HasProperties) : IfcProperty(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); }set_attribute_value(2, (v3_UsageName));set_attribute_value(3, (v4_HasProperties)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcComplexProperty::IfcComplexProperty(const std::weak_ptr& e) : IfcProperty(e) { } +// Ifc4x3_add2::IfcComplexProperty::IfcComplexProperty(std::string v1_Name, std::optional< std::string > v2_Specification, std::string v3_UsageName, std::vector< ::Ifc4x3_add2::IfcProperty > v4_HasProperties) : IfcProperty(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); }set_attribute_value(2, (v3_UsageName));set_attribute_value(3, (v4_HasProperties)->generalize());; populate_derived(); } // Function implementations for IfcComplexPropertyTemplate -boost::optional< std::string > Ifc4x3_add2::IfcComplexPropertyTemplate::UsageName() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< ::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Value > Ifc4x3_add2::IfcComplexPropertyTemplate::TemplateType() const { if(get_attribute_value(5).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::FromString(get_attribute_value(5)); } -void Ifc4x3_add2::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Value > v) { if (v) {set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(5);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertyTemplate >::ptr > Ifc4x3_add2::IfcComplexPropertyTemplate::HasPropertyTemplates() const { if(get_attribute_value(6).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(6); return es->as< ::Ifc4x3_add2::IfcPropertyTemplate >(); } -void Ifc4x3_add2::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertyTemplate >::ptr > v) { if (v) {set_attribute_value(6, (*v)->generalize());} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcComplexPropertyTemplate::UsageName() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcComplexPropertyTemplate::setUsageName(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< ::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Value > Ifc4x3_add2::IfcComplexPropertyTemplate::TemplateType() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::FromString(get_attribute_value(5)); } +void Ifc4x3_add2::IfcComplexPropertyTemplate::setTemplateType(const std::optional< ::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Value >& v) { if (v) {set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(5);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcPropertyTemplate > > Ifc4x3_add2::IfcComplexPropertyTemplate::HasPropertyTemplates() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(6); return cast_vector<::Ifc4x3_add2::IfcPropertyTemplate>(es); } +void Ifc4x3_add2::IfcComplexPropertyTemplate::setHasPropertyTemplates(const std::optional< std::vector< ::Ifc4x3_add2::IfcPropertyTemplate > >& v) { if (v) {set_attribute_value(6, cast_vector(*v));} else {unset_attribute_value(6);} } -const IfcParse::entity& Ifc4x3_add2::IfcComplexPropertyTemplate::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[190]); } +// const IfcParse::entity& Ifc4x3_add2::IfcComplexPropertyTemplate::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[190]); } const IfcParse::entity& Ifc4x3_add2::IfcComplexPropertyTemplate::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[190]); } -Ifc4x3_add2::IfcComplexPropertyTemplate::IfcComplexPropertyTemplate(IfcEntityInstanceData&& e) : IfcPropertyTemplate(std::move(e)) { } -Ifc4x3_add2::IfcComplexPropertyTemplate::IfcComplexPropertyTemplate(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_UsageName, boost::optional< ::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Value > v6_TemplateType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertyTemplate >::ptr > v7_HasPropertyTemplates) : IfcPropertyTemplate(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_UsageName) {set_attribute_value(4, (*v5_UsageName)); } if (v6_TemplateType) {set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Class(),(size_t)*v6_TemplateType))); } if (v7_HasPropertyTemplates) {set_attribute_value(6, (*v7_HasPropertyTemplates)->generalize()); }; populate_derived(); } +// Ifc4x3_add2::IfcComplexPropertyTemplate::IfcComplexPropertyTemplate(const std::weak_ptr& e) : IfcPropertyTemplate(e) { } +// Ifc4x3_add2::IfcComplexPropertyTemplate::IfcComplexPropertyTemplate(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_UsageName, std::optional< ::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Value > v6_TemplateType, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertyTemplate > > v7_HasPropertyTemplates) : IfcPropertyTemplate(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_UsageName) {set_attribute_value(4, (*v5_UsageName)); } if (v6_TemplateType) {set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Class(),(size_t)*v6_TemplateType))); } if (v7_HasPropertyTemplates) {set_attribute_value(6, (*v7_HasPropertyTemplates)->generalize()); }; populate_derived(); } // Function implementations for IfcCompositeCurve -aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr Ifc4x3_add2::IfcCompositeCurve::Segments() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcSegment >(); } -void Ifc4x3_add2::IfcCompositeCurve::setSegments(aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcSegment > Ifc4x3_add2::IfcCompositeCurve::Segments() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcSegment>(es); } +void Ifc4x3_add2::IfcCompositeCurve::setSegments(const std::vector< ::Ifc4x3_add2::IfcSegment >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } boost::logic::tribool Ifc4x3_add2::IfcCompositeCurve::SelfIntersect() const { boost::logic::tribool v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcCompositeCurve::setSelfIntersect(boost::logic::tribool v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcCompositeCurve::setSelfIntersect(const boost::logic::tribool& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcCompositeCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[192]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCompositeCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[192]); } const IfcParse::entity& Ifc4x3_add2::IfcCompositeCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[192]); } -Ifc4x3_add2::IfcCompositeCurve::IfcCompositeCurve(IfcEntityInstanceData&& e) : IfcBoundedCurve(std::move(e)) { } -Ifc4x3_add2::IfcCompositeCurve::IfcCompositeCurve(aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcBoundedCurve(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Segments)->generalize());set_attribute_value(1, (v2_SelfIntersect));; populate_derived(); } +// Ifc4x3_add2::IfcCompositeCurve::IfcCompositeCurve(const std::weak_ptr& e) : IfcBoundedCurve(e) { } +// Ifc4x3_add2::IfcCompositeCurve::IfcCompositeCurve(std::vector< ::Ifc4x3_add2::IfcSegment > v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcBoundedCurve(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Segments)->generalize());set_attribute_value(1, (v2_SelfIntersect));; populate_derived(); } // Function implementations for IfcCompositeCurveOnSurface -const IfcParse::entity& Ifc4x3_add2::IfcCompositeCurveOnSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[193]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCompositeCurveOnSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[193]); } const IfcParse::entity& Ifc4x3_add2::IfcCompositeCurveOnSurface::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[193]); } -Ifc4x3_add2::IfcCompositeCurveOnSurface::IfcCompositeCurveOnSurface(IfcEntityInstanceData&& e) : IfcCompositeCurve(std::move(e)) { } -Ifc4x3_add2::IfcCompositeCurveOnSurface::IfcCompositeCurveOnSurface(aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcCompositeCurve(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Segments)->generalize());set_attribute_value(1, (v2_SelfIntersect));; populate_derived(); } +// Ifc4x3_add2::IfcCompositeCurveOnSurface::IfcCompositeCurveOnSurface(const std::weak_ptr& e) : IfcCompositeCurve(e) { } +// Ifc4x3_add2::IfcCompositeCurveOnSurface::IfcCompositeCurveOnSurface(std::vector< ::Ifc4x3_add2::IfcSegment > v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcCompositeCurve(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Segments)->generalize());set_attribute_value(1, (v2_SelfIntersect));; populate_derived(); } // Function implementations for IfcCompositeCurveSegment bool Ifc4x3_add2::IfcCompositeCurveSegment::SameSense() const { bool v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcCompositeCurveSegment::setSameSense(bool v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcCompositeCurveSegment::ParentCurve() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcCompositeCurveSegment::setParentCurve(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcCompositeCurveSegment::setSameSense(const bool& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcCompositeCurveSegment::ParentCurve() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcCompositeCurveSegment::setParentCurve(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcCompositeCurveSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[194]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCompositeCurveSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[194]); } const IfcParse::entity& Ifc4x3_add2::IfcCompositeCurveSegment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[194]); } -Ifc4x3_add2::IfcCompositeCurveSegment::IfcCompositeCurveSegment(IfcEntityInstanceData&& e) : IfcSegment(std::move(e)) { } -Ifc4x3_add2::IfcCompositeCurveSegment::IfcCompositeCurveSegment(::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition, bool v2_SameSense, ::Ifc4x3_add2::IfcCurve* v3_ParentCurve) : IfcSegment(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcTransitionCode::Class(),(size_t)v1_Transition)));set_attribute_value(1, (v2_SameSense));set_attribute_value(2, v3_ParentCurve ? v3_ParentCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcCompositeCurveSegment::IfcCompositeCurveSegment(const std::weak_ptr& e) : IfcSegment(e) { } +// Ifc4x3_add2::IfcCompositeCurveSegment::IfcCompositeCurveSegment(::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition, bool v2_SameSense, ::Ifc4x3_add2::IfcCurve v3_ParentCurve) : IfcSegment(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcTransitionCode::Class(),(size_t)v1_Transition)));set_attribute_value(1, (v2_SameSense));set_attribute_value(2, (v3_ParentCurve));; populate_derived(); } // Function implementations for IfcCompositeProfileDef -aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr Ifc4x3_add2::IfcCompositeProfileDef::Profiles() const { aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcProfileDef >(); } -void Ifc4x3_add2::IfcCompositeProfileDef::setProfiles(aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v) { set_attribute_value(2, (v)->generalize());if constexpr (false)unset_attribute_value(2); } -boost::optional< std::string > Ifc4x3_add2::IfcCompositeProfileDef::Label() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::vector< ::Ifc4x3_add2::IfcProfileDef > Ifc4x3_add2::IfcCompositeProfileDef::Profiles() const { std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcProfileDef>(es); } +void Ifc4x3_add2::IfcCompositeProfileDef::setProfiles(const std::vector< ::Ifc4x3_add2::IfcProfileDef >& v) { set_attribute_value(2, cast_vector(v));if constexpr (false)unset_attribute_value(2); } +std::optional< std::string > Ifc4x3_add2::IfcCompositeProfileDef::Label() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcCompositeProfileDef::setLabel(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -const IfcParse::entity& Ifc4x3_add2::IfcCompositeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[195]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCompositeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[195]); } const IfcParse::entity& Ifc4x3_add2::IfcCompositeProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[195]); } -Ifc4x3_add2::IfcCompositeProfileDef::IfcCompositeProfileDef(IfcEntityInstanceData&& e) : IfcProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcCompositeProfileDef::IfcCompositeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v3_Profiles, boost::optional< std::string > v4_Label) : IfcProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, (v3_Profiles)->generalize()); if (v4_Label) {set_attribute_value(3, (*v4_Label)); }; populate_derived(); } +// Ifc4x3_add2::IfcCompositeProfileDef::IfcCompositeProfileDef(const std::weak_ptr& e) : IfcProfileDef(e) { } +// Ifc4x3_add2::IfcCompositeProfileDef::IfcCompositeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, std::vector< ::Ifc4x3_add2::IfcProfileDef > v3_Profiles, std::optional< std::string > v4_Label) : IfcProfileDef(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, (v3_Profiles)->generalize()); if (v4_Label) {set_attribute_value(3, (*v4_Label)); }; populate_derived(); } // Function implementations for IfcCompressor -boost::optional< ::Ifc4x3_add2::IfcCompressorTypeEnum::Value > Ifc4x3_add2::IfcCompressor::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCompressorTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCompressorTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCompressorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcCompressorTypeEnum::Value > Ifc4x3_add2::IfcCompressor::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCompressorTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcCompressor::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCompressorTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCompressorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcCompressor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[197]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCompressor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[197]); } const IfcParse::entity& Ifc4x3_add2::IfcCompressor::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[197]); } -Ifc4x3_add2::IfcCompressor::IfcCompressor(IfcEntityInstanceData&& e) : IfcFlowMovingDevice(std::move(e)) { } -Ifc4x3_add2::IfcCompressor::IfcCompressor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCompressorTypeEnum::Value > v9_PredefinedType) : IfcFlowMovingDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCompressorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcCompressor::IfcCompressor(const std::weak_ptr& e) : IfcFlowMovingDevice(e) { } +// Ifc4x3_add2::IfcCompressor::IfcCompressor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCompressorTypeEnum::Value > v9_PredefinedType) : IfcFlowMovingDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCompressorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcCompressorType ::Ifc4x3_add2::IfcCompressorTypeEnum::Value Ifc4x3_add2::IfcCompressorType::PredefinedType() const { return ::Ifc4x3_add2::IfcCompressorTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcCompressorType::setPredefinedType(::Ifc4x3_add2::IfcCompressorTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCompressorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcCompressorType::setPredefinedType(const ::Ifc4x3_add2::IfcCompressorTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCompressorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcCompressorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[198]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCompressorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[198]); } const IfcParse::entity& Ifc4x3_add2::IfcCompressorType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[198]); } -Ifc4x3_add2::IfcCompressorType::IfcCompressorType(IfcEntityInstanceData&& e) : IfcFlowMovingDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcCompressorType::IfcCompressorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCompressorTypeEnum::Value v10_PredefinedType) : IfcFlowMovingDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCompressorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcCompressorType::IfcCompressorType(const std::weak_ptr& e) : IfcFlowMovingDeviceType(e) { } +// Ifc4x3_add2::IfcCompressorType::IfcCompressorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCompressorTypeEnum::Value v10_PredefinedType) : IfcFlowMovingDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCompressorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcCondenser -boost::optional< ::Ifc4x3_add2::IfcCondenserTypeEnum::Value > Ifc4x3_add2::IfcCondenser::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCondenserTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCondenserTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCondenserTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcCondenserTypeEnum::Value > Ifc4x3_add2::IfcCondenser::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCondenserTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcCondenser::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCondenserTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCondenserTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcCondenser::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[200]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCondenser::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[200]); } const IfcParse::entity& Ifc4x3_add2::IfcCondenser::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[200]); } -Ifc4x3_add2::IfcCondenser::IfcCondenser(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcCondenser::IfcCondenser(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCondenserTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCondenserTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcCondenser::IfcCondenser(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcCondenser::IfcCondenser(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCondenserTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCondenserTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcCondenserType ::Ifc4x3_add2::IfcCondenserTypeEnum::Value Ifc4x3_add2::IfcCondenserType::PredefinedType() const { return ::Ifc4x3_add2::IfcCondenserTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcCondenserType::setPredefinedType(::Ifc4x3_add2::IfcCondenserTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCondenserTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcCondenserType::setPredefinedType(const ::Ifc4x3_add2::IfcCondenserTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCondenserTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcCondenserType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[201]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCondenserType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[201]); } const IfcParse::entity& Ifc4x3_add2::IfcCondenserType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[201]); } -Ifc4x3_add2::IfcCondenserType::IfcCondenserType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcCondenserType::IfcCondenserType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCondenserTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCondenserTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcCondenserType::IfcCondenserType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcCondenserType::IfcCondenserType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCondenserTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCondenserTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcConic -::Ifc4x3_add2::IfcAxis2Placement* Ifc4x3_add2::IfcConic::Position() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcAxis2Placement>(true); } -void Ifc4x3_add2::IfcConic::setPosition(::Ifc4x3_add2::IfcAxis2Placement* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcAxis2Placement Ifc4x3_add2::IfcConic::Position() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcAxis2Placement>(); } +void Ifc4x3_add2::IfcConic::setPosition(const ::Ifc4x3_add2::IfcAxis2Placement& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcConic::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[203]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConic::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[203]); } const IfcParse::entity& Ifc4x3_add2::IfcConic::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[203]); } -Ifc4x3_add2::IfcConic::IfcConic(IfcEntityInstanceData&& e) : IfcCurve(std::move(e)) { } -Ifc4x3_add2::IfcConic::IfcConic(::Ifc4x3_add2::IfcAxis2Placement* v1_Position) : IfcCurve(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcConic::IfcConic(const std::weak_ptr& e) : IfcCurve(e) { } +// Ifc4x3_add2::IfcConic::IfcConic(::Ifc4x3_add2::IfcAxis2Placement v1_Position) : IfcCurve(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Position));; populate_derived(); } // Function implementations for IfcConnectedFaceSet -aggregate_of< ::Ifc4x3_add2::IfcFace >::ptr Ifc4x3_add2::IfcConnectedFaceSet::CfsFaces() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcFace >(); } -void Ifc4x3_add2::IfcConnectedFaceSet::setCfsFaces(aggregate_of< ::Ifc4x3_add2::IfcFace >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcFace > Ifc4x3_add2::IfcConnectedFaceSet::CfsFaces() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcFace>(es); } +void Ifc4x3_add2::IfcConnectedFaceSet::setCfsFaces(const std::vector< ::Ifc4x3_add2::IfcFace >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcConnectedFaceSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[204]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConnectedFaceSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[204]); } const IfcParse::entity& Ifc4x3_add2::IfcConnectedFaceSet::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[204]); } -Ifc4x3_add2::IfcConnectedFaceSet::IfcConnectedFaceSet(IfcEntityInstanceData&& e) : IfcTopologicalRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcConnectedFaceSet::IfcConnectedFaceSet(aggregate_of< ::Ifc4x3_add2::IfcFace >::ptr v1_CfsFaces) : IfcTopologicalRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_CfsFaces)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcConnectedFaceSet::IfcConnectedFaceSet(const std::weak_ptr& e) : IfcTopologicalRepresentationItem(e) { } +// Ifc4x3_add2::IfcConnectedFaceSet::IfcConnectedFaceSet(std::vector< ::Ifc4x3_add2::IfcFace > v1_CfsFaces) : IfcTopologicalRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_CfsFaces)->generalize());; populate_derived(); } // Function implementations for IfcConnectionCurveGeometry -::Ifc4x3_add2::IfcCurveOrEdgeCurve* Ifc4x3_add2::IfcConnectionCurveGeometry::CurveOnRelatingElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCurveOrEdgeCurve>(true); } -void Ifc4x3_add2::IfcConnectionCurveGeometry::setCurveOnRelatingElement(::Ifc4x3_add2::IfcCurveOrEdgeCurve* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcCurveOrEdgeCurve* Ifc4x3_add2::IfcConnectionCurveGeometry::CurveOnRelatedElement() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcCurveOrEdgeCurve>(true); } -void Ifc4x3_add2::IfcConnectionCurveGeometry::setCurveOnRelatedElement(::Ifc4x3_add2::IfcCurveOrEdgeCurve* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcCurveOrEdgeCurve Ifc4x3_add2::IfcConnectionCurveGeometry::CurveOnRelatingElement() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCurveOrEdgeCurve>(); } +void Ifc4x3_add2::IfcConnectionCurveGeometry::setCurveOnRelatingElement(const ::Ifc4x3_add2::IfcCurveOrEdgeCurve& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcCurveOrEdgeCurve Ifc4x3_add2::IfcConnectionCurveGeometry::CurveOnRelatedElement() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcCurveOrEdgeCurve{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcCurveOrEdgeCurve>(); } +void Ifc4x3_add2::IfcConnectionCurveGeometry::setCurveOnRelatedElement(const ::Ifc4x3_add2::IfcCurveOrEdgeCurve& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcConnectionCurveGeometry::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[205]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConnectionCurveGeometry::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[205]); } const IfcParse::entity& Ifc4x3_add2::IfcConnectionCurveGeometry::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[205]); } -Ifc4x3_add2::IfcConnectionCurveGeometry::IfcConnectionCurveGeometry(IfcEntityInstanceData&& e) : IfcConnectionGeometry(std::move(e)) { } -Ifc4x3_add2::IfcConnectionCurveGeometry::IfcConnectionCurveGeometry(::Ifc4x3_add2::IfcCurveOrEdgeCurve* v1_CurveOnRelatingElement, ::Ifc4x3_add2::IfcCurveOrEdgeCurve* v2_CurveOnRelatedElement) : IfcConnectionGeometry(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_CurveOnRelatingElement ? v1_CurveOnRelatingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_CurveOnRelatedElement ? v2_CurveOnRelatedElement->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcConnectionCurveGeometry::IfcConnectionCurveGeometry(const std::weak_ptr& e) : IfcConnectionGeometry(e) { } +// Ifc4x3_add2::IfcConnectionCurveGeometry::IfcConnectionCurveGeometry(::Ifc4x3_add2::IfcCurveOrEdgeCurve v1_CurveOnRelatingElement, ::Ifc4x3_add2::IfcCurveOrEdgeCurve v2_CurveOnRelatedElement) : IfcConnectionGeometry(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_CurveOnRelatingElement)); if (v2_CurveOnRelatedElement) {set_attribute_value(1, (*v2_CurveOnRelatedElement)); }; populate_derived(); } // Function implementations for IfcConnectionGeometry -const IfcParse::entity& Ifc4x3_add2::IfcConnectionGeometry::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[206]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConnectionGeometry::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[206]); } const IfcParse::entity& Ifc4x3_add2::IfcConnectionGeometry::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[206]); } -Ifc4x3_add2::IfcConnectionGeometry::IfcConnectionGeometry(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcConnectionGeometry::IfcConnectionGeometry() : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcConnectionGeometry::IfcConnectionGeometry(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcConnectionGeometry::IfcConnectionGeometry() : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcConnectionPointEccentricity -boost::optional< double > Ifc4x3_add2::IfcConnectionPointEccentricity::EccentricityInX() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcConnectionPointEccentricity::EccentricityInY() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< double > Ifc4x3_add2::IfcConnectionPointEccentricity::EccentricityInZ() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< double > Ifc4x3_add2::IfcConnectionPointEccentricity::EccentricityInX() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcConnectionPointEccentricity::setEccentricityInX(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcConnectionPointEccentricity::EccentricityInY() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcConnectionPointEccentricity::setEccentricityInY(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< double > Ifc4x3_add2::IfcConnectionPointEccentricity::EccentricityInZ() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcConnectionPointEccentricity::setEccentricityInZ(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcConnectionPointEccentricity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[207]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConnectionPointEccentricity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[207]); } const IfcParse::entity& Ifc4x3_add2::IfcConnectionPointEccentricity::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[207]); } -Ifc4x3_add2::IfcConnectionPointEccentricity::IfcConnectionPointEccentricity(IfcEntityInstanceData&& e) : IfcConnectionPointGeometry(std::move(e)) { } -Ifc4x3_add2::IfcConnectionPointEccentricity::IfcConnectionPointEccentricity(::Ifc4x3_add2::IfcPointOrVertexPoint* v1_PointOnRelatingElement, ::Ifc4x3_add2::IfcPointOrVertexPoint* v2_PointOnRelatedElement, boost::optional< double > v3_EccentricityInX, boost::optional< double > v4_EccentricityInY, boost::optional< double > v5_EccentricityInZ) : IfcConnectionPointGeometry(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_PointOnRelatingElement ? v1_PointOnRelatingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_PointOnRelatedElement ? v2_PointOnRelatedElement->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_EccentricityInX) {set_attribute_value(2, (*v3_EccentricityInX)); } if (v4_EccentricityInY) {set_attribute_value(3, (*v4_EccentricityInY)); } if (v5_EccentricityInZ) {set_attribute_value(4, (*v5_EccentricityInZ)); }; populate_derived(); } +// Ifc4x3_add2::IfcConnectionPointEccentricity::IfcConnectionPointEccentricity(const std::weak_ptr& e) : IfcConnectionPointGeometry(e) { } +// Ifc4x3_add2::IfcConnectionPointEccentricity::IfcConnectionPointEccentricity(::Ifc4x3_add2::IfcPointOrVertexPoint v1_PointOnRelatingElement, ::Ifc4x3_add2::IfcPointOrVertexPoint v2_PointOnRelatedElement, std::optional< double > v3_EccentricityInX, std::optional< double > v4_EccentricityInY, std::optional< double > v5_EccentricityInZ) : IfcConnectionPointGeometry(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_PointOnRelatingElement)); if (v2_PointOnRelatedElement) {set_attribute_value(1, (*v2_PointOnRelatedElement)); } if (v3_EccentricityInX) {set_attribute_value(2, (*v3_EccentricityInX)); } if (v4_EccentricityInY) {set_attribute_value(3, (*v4_EccentricityInY)); } if (v5_EccentricityInZ) {set_attribute_value(4, (*v5_EccentricityInZ)); }; populate_derived(); } // Function implementations for IfcConnectionPointGeometry -::Ifc4x3_add2::IfcPointOrVertexPoint* Ifc4x3_add2::IfcConnectionPointGeometry::PointOnRelatingElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcPointOrVertexPoint>(true); } -void Ifc4x3_add2::IfcConnectionPointGeometry::setPointOnRelatingElement(::Ifc4x3_add2::IfcPointOrVertexPoint* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcPointOrVertexPoint* Ifc4x3_add2::IfcConnectionPointGeometry::PointOnRelatedElement() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcPointOrVertexPoint>(true); } -void Ifc4x3_add2::IfcConnectionPointGeometry::setPointOnRelatedElement(::Ifc4x3_add2::IfcPointOrVertexPoint* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcPointOrVertexPoint Ifc4x3_add2::IfcConnectionPointGeometry::PointOnRelatingElement() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcPointOrVertexPoint>(); } +void Ifc4x3_add2::IfcConnectionPointGeometry::setPointOnRelatingElement(const ::Ifc4x3_add2::IfcPointOrVertexPoint& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcPointOrVertexPoint Ifc4x3_add2::IfcConnectionPointGeometry::PointOnRelatedElement() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcPointOrVertexPoint{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcPointOrVertexPoint>(); } +void Ifc4x3_add2::IfcConnectionPointGeometry::setPointOnRelatedElement(const ::Ifc4x3_add2::IfcPointOrVertexPoint& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcConnectionPointGeometry::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[208]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConnectionPointGeometry::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[208]); } const IfcParse::entity& Ifc4x3_add2::IfcConnectionPointGeometry::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[208]); } -Ifc4x3_add2::IfcConnectionPointGeometry::IfcConnectionPointGeometry(IfcEntityInstanceData&& e) : IfcConnectionGeometry(std::move(e)) { } -Ifc4x3_add2::IfcConnectionPointGeometry::IfcConnectionPointGeometry(::Ifc4x3_add2::IfcPointOrVertexPoint* v1_PointOnRelatingElement, ::Ifc4x3_add2::IfcPointOrVertexPoint* v2_PointOnRelatedElement) : IfcConnectionGeometry(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_PointOnRelatingElement ? v1_PointOnRelatingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_PointOnRelatedElement ? v2_PointOnRelatedElement->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcConnectionPointGeometry::IfcConnectionPointGeometry(const std::weak_ptr& e) : IfcConnectionGeometry(e) { } +// Ifc4x3_add2::IfcConnectionPointGeometry::IfcConnectionPointGeometry(::Ifc4x3_add2::IfcPointOrVertexPoint v1_PointOnRelatingElement, ::Ifc4x3_add2::IfcPointOrVertexPoint v2_PointOnRelatedElement) : IfcConnectionGeometry(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_PointOnRelatingElement)); if (v2_PointOnRelatedElement) {set_attribute_value(1, (*v2_PointOnRelatedElement)); }; populate_derived(); } // Function implementations for IfcConnectionSurfaceGeometry -::Ifc4x3_add2::IfcSurfaceOrFaceSurface* Ifc4x3_add2::IfcConnectionSurfaceGeometry::SurfaceOnRelatingElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcSurfaceOrFaceSurface>(true); } -void Ifc4x3_add2::IfcConnectionSurfaceGeometry::setSurfaceOnRelatingElement(::Ifc4x3_add2::IfcSurfaceOrFaceSurface* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcSurfaceOrFaceSurface* Ifc4x3_add2::IfcConnectionSurfaceGeometry::SurfaceOnRelatedElement() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcSurfaceOrFaceSurface>(true); } -void Ifc4x3_add2::IfcConnectionSurfaceGeometry::setSurfaceOnRelatedElement(::Ifc4x3_add2::IfcSurfaceOrFaceSurface* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcSurfaceOrFaceSurface Ifc4x3_add2::IfcConnectionSurfaceGeometry::SurfaceOnRelatingElement() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcSurfaceOrFaceSurface>(); } +void Ifc4x3_add2::IfcConnectionSurfaceGeometry::setSurfaceOnRelatingElement(const ::Ifc4x3_add2::IfcSurfaceOrFaceSurface& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcSurfaceOrFaceSurface Ifc4x3_add2::IfcConnectionSurfaceGeometry::SurfaceOnRelatedElement() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcSurfaceOrFaceSurface{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcSurfaceOrFaceSurface>(); } +void Ifc4x3_add2::IfcConnectionSurfaceGeometry::setSurfaceOnRelatedElement(const ::Ifc4x3_add2::IfcSurfaceOrFaceSurface& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcConnectionSurfaceGeometry::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[209]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConnectionSurfaceGeometry::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[209]); } const IfcParse::entity& Ifc4x3_add2::IfcConnectionSurfaceGeometry::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[209]); } -Ifc4x3_add2::IfcConnectionSurfaceGeometry::IfcConnectionSurfaceGeometry(IfcEntityInstanceData&& e) : IfcConnectionGeometry(std::move(e)) { } -Ifc4x3_add2::IfcConnectionSurfaceGeometry::IfcConnectionSurfaceGeometry(::Ifc4x3_add2::IfcSurfaceOrFaceSurface* v1_SurfaceOnRelatingElement, ::Ifc4x3_add2::IfcSurfaceOrFaceSurface* v2_SurfaceOnRelatedElement) : IfcConnectionGeometry(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_SurfaceOnRelatingElement ? v1_SurfaceOnRelatingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_SurfaceOnRelatedElement ? v2_SurfaceOnRelatedElement->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcConnectionSurfaceGeometry::IfcConnectionSurfaceGeometry(const std::weak_ptr& e) : IfcConnectionGeometry(e) { } +// Ifc4x3_add2::IfcConnectionSurfaceGeometry::IfcConnectionSurfaceGeometry(::Ifc4x3_add2::IfcSurfaceOrFaceSurface v1_SurfaceOnRelatingElement, ::Ifc4x3_add2::IfcSurfaceOrFaceSurface v2_SurfaceOnRelatedElement) : IfcConnectionGeometry(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_SurfaceOnRelatingElement)); if (v2_SurfaceOnRelatedElement) {set_attribute_value(1, (*v2_SurfaceOnRelatedElement)); }; populate_derived(); } // Function implementations for IfcConnectionVolumeGeometry -::Ifc4x3_add2::IfcSolidOrShell* Ifc4x3_add2::IfcConnectionVolumeGeometry::VolumeOnRelatingElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcSolidOrShell>(true); } -void Ifc4x3_add2::IfcConnectionVolumeGeometry::setVolumeOnRelatingElement(::Ifc4x3_add2::IfcSolidOrShell* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcSolidOrShell* Ifc4x3_add2::IfcConnectionVolumeGeometry::VolumeOnRelatedElement() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcSolidOrShell>(true); } -void Ifc4x3_add2::IfcConnectionVolumeGeometry::setVolumeOnRelatedElement(::Ifc4x3_add2::IfcSolidOrShell* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcSolidOrShell Ifc4x3_add2::IfcConnectionVolumeGeometry::VolumeOnRelatingElement() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcSolidOrShell>(); } +void Ifc4x3_add2::IfcConnectionVolumeGeometry::setVolumeOnRelatingElement(const ::Ifc4x3_add2::IfcSolidOrShell& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcSolidOrShell Ifc4x3_add2::IfcConnectionVolumeGeometry::VolumeOnRelatedElement() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcSolidOrShell{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcSolidOrShell>(); } +void Ifc4x3_add2::IfcConnectionVolumeGeometry::setVolumeOnRelatedElement(const ::Ifc4x3_add2::IfcSolidOrShell& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcConnectionVolumeGeometry::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[211]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConnectionVolumeGeometry::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[211]); } const IfcParse::entity& Ifc4x3_add2::IfcConnectionVolumeGeometry::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[211]); } -Ifc4x3_add2::IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(IfcEntityInstanceData&& e) : IfcConnectionGeometry(std::move(e)) { } -Ifc4x3_add2::IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(::Ifc4x3_add2::IfcSolidOrShell* v1_VolumeOnRelatingElement, ::Ifc4x3_add2::IfcSolidOrShell* v2_VolumeOnRelatedElement) : IfcConnectionGeometry(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_VolumeOnRelatingElement ? v1_VolumeOnRelatingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_VolumeOnRelatedElement ? v2_VolumeOnRelatedElement->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(const std::weak_ptr& e) : IfcConnectionGeometry(e) { } +// Ifc4x3_add2::IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(::Ifc4x3_add2::IfcSolidOrShell v1_VolumeOnRelatingElement, ::Ifc4x3_add2::IfcSolidOrShell v2_VolumeOnRelatedElement) : IfcConnectionGeometry(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_VolumeOnRelatingElement)); if (v2_VolumeOnRelatedElement) {set_attribute_value(1, (*v2_VolumeOnRelatedElement)); }; populate_derived(); } // Function implementations for IfcConstraint std::string Ifc4x3_add2::IfcConstraint::Name() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcConstraint::setName(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -boost::optional< std::string > Ifc4x3_add2::IfcConstraint::Description() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcConstraint::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +void Ifc4x3_add2::IfcConstraint::setName(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< std::string > Ifc4x3_add2::IfcConstraint::Description() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcConstraint::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } ::Ifc4x3_add2::IfcConstraintEnum::Value Ifc4x3_add2::IfcConstraint::ConstraintGrade() const { return ::Ifc4x3_add2::IfcConstraintEnum::FromString(get_attribute_value(2)); } -void Ifc4x3_add2::IfcConstraint::setConstraintGrade(::Ifc4x3_add2::IfcConstraintEnum::Value v) { set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcConstraintEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(2); } -boost::optional< std::string > Ifc4x3_add2::IfcConstraint::ConstraintSource() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -::Ifc4x3_add2::IfcActorSelect* Ifc4x3_add2::IfcConstraint::CreatingActor() const { if(get_attribute_value(4).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcActorSelect>(true); } -void Ifc4x3_add2::IfcConstraint::setCreatingActor(::Ifc4x3_add2::IfcActorSelect* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -boost::optional< std::string > Ifc4x3_add2::IfcConstraint::CreationTime() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcConstraint::setCreationTime(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< std::string > Ifc4x3_add2::IfcConstraint::UserDefinedGrade() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +void Ifc4x3_add2::IfcConstraint::setConstraintGrade(const ::Ifc4x3_add2::IfcConstraintEnum::Value& v) { set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcConstraintEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(2); } +std::optional< std::string > Ifc4x3_add2::IfcConstraint::ConstraintSource() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcConstraint::setConstraintSource(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +::Ifc4x3_add2::IfcActorSelect Ifc4x3_add2::IfcConstraint::CreatingActor() const { if(get_attribute_value(4).isNull()) { return ::Ifc4x3_add2::IfcActorSelect{}; } return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcActorSelect>(); } +void Ifc4x3_add2::IfcConstraint::setCreatingActor(const ::Ifc4x3_add2::IfcActorSelect& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +std::optional< std::string > Ifc4x3_add2::IfcConstraint::CreationTime() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcConstraint::setCreationTime(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcConstraint::UserDefinedGrade() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcConstraint::setUserDefinedGrade(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -::Ifc4x3_add2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_add2::IfcConstraint::HasExternalReferences() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[427], 3)->as(); } -::Ifc4x3_add2::IfcResourceConstraintRelationship::list::ptr Ifc4x3_add2::IfcConstraint::PropertiesForConstraint() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[956], 2)->as(); } +std::vector<::Ifc4x3_add2::IfcExternalReferenceRelationship> Ifc4x3_add2::IfcConstraint::HasExternalReferences() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[427], 3)); } +std::vector<::Ifc4x3_add2::IfcResourceConstraintRelationship> Ifc4x3_add2::IfcConstraint::PropertiesForConstraint() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[956], 2)); } -const IfcParse::entity& Ifc4x3_add2::IfcConstraint::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[212]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConstraint::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[212]); } const IfcParse::entity& Ifc4x3_add2::IfcConstraint::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[212]); } -Ifc4x3_add2::IfcConstraint::IfcConstraint(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcConstraint::IfcConstraint(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc4x3_add2::IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcConstraintEnum::Class(),(size_t)v3_ConstraintGrade))); if (v4_ConstraintSource) {set_attribute_value(3, (*v4_ConstraintSource)); }set_attribute_value(4, v5_CreatingActor ? v5_CreatingActor->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v6_CreationTime) {set_attribute_value(5, (*v6_CreationTime)); } if (v7_UserDefinedGrade) {set_attribute_value(6, (*v7_UserDefinedGrade)); }; populate_derived(); } +// Ifc4x3_add2::IfcConstraint::IfcConstraint(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcConstraint::IfcConstraint(std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcConstraintEnum::Value v3_ConstraintGrade, std::optional< std::string > v4_ConstraintSource, ::Ifc4x3_add2::IfcActorSelect v5_CreatingActor, std::optional< std::string > v6_CreationTime, std::optional< std::string > v7_UserDefinedGrade) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcConstraintEnum::Class(),(size_t)v3_ConstraintGrade))); if (v4_ConstraintSource) {set_attribute_value(3, (*v4_ConstraintSource)); } if (v5_CreatingActor) {set_attribute_value(4, (*v5_CreatingActor)); } if (v6_CreationTime) {set_attribute_value(5, (*v6_CreationTime)); } if (v7_UserDefinedGrade) {set_attribute_value(6, (*v7_UserDefinedGrade)); }; populate_derived(); } // Function implementations for IfcConstructionEquipmentResource -boost::optional< ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value > Ifc4x3_add2::IfcConstructionEquipmentResource::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value > Ifc4x3_add2::IfcConstructionEquipmentResource::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcConstructionEquipmentResource::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcConstructionEquipmentResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[214]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConstructionEquipmentResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[214]); } const IfcParse::entity& Ifc4x3_add2::IfcConstructionEquipmentResource::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[214]); } -Ifc4x3_add2::IfcConstructionEquipmentResource::IfcConstructionEquipmentResource(IfcEntityInstanceData&& e) : IfcConstructionResource(std::move(e)) { } -Ifc4x3_add2::IfcConstructionEquipmentResource::IfcConstructionEquipmentResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); }set_attribute_value(7, v8_Usage ? v8_Usage->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v9_BaseCosts) {set_attribute_value(8, (*v9_BaseCosts)->generalize()); }set_attribute_value(9, v10_BaseQuantity ? v10_BaseQuantity->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcConstructionEquipmentResource::IfcConstructionEquipmentResource(const std::weak_ptr& e) : IfcConstructionResource(e) { } +// Ifc4x3_add2::IfcConstructionEquipmentResource::IfcConstructionEquipmentResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime v8_Usage, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v10_BaseQuantity, std::optional< ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); } if (v8_Usage) {set_attribute_value(7, (*v8_Usage)); } if (v9_BaseCosts) {set_attribute_value(8, (*v9_BaseCosts)->generalize()); } if (v10_BaseQuantity) {set_attribute_value(9, (*v10_BaseQuantity)); } if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } // Function implementations for IfcConstructionEquipmentResourceType ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value Ifc4x3_add2::IfcConstructionEquipmentResourceType::PredefinedType() const { return ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::FromString(get_attribute_value(11)); } -void Ifc4x3_add2::IfcConstructionEquipmentResourceType::setPredefinedType(::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } +void Ifc4x3_add2::IfcConstructionEquipmentResourceType::setPredefinedType(const ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value& v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } -const IfcParse::entity& Ifc4x3_add2::IfcConstructionEquipmentResourceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[215]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConstructionEquipmentResourceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[215]); } const IfcParse::entity& Ifc4x3_add2::IfcConstructionEquipmentResourceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[215]); } -Ifc4x3_add2::IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResourceType(IfcEntityInstanceData&& e) : IfcConstructionResourceType(std::move(e)) { } -Ifc4x3_add2::IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResourceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); } if (v10_BaseCosts) {set_attribute_value(9, (*v10_BaseCosts)->generalize()); }set_attribute_value(10, v11_BaseQuantity ? v11_BaseQuantity->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResourceType(const std::weak_ptr& e) : IfcConstructionResourceType(e) { } +// Ifc4x3_add2::IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResourceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v11_BaseQuantity, ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); } if (v10_BaseCosts) {set_attribute_value(9, (*v10_BaseCosts)->generalize()); } if (v11_BaseQuantity) {set_attribute_value(10, (*v11_BaseQuantity)); }set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } // Function implementations for IfcConstructionMaterialResource -boost::optional< ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value > Ifc4x3_add2::IfcConstructionMaterialResource::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value > Ifc4x3_add2::IfcConstructionMaterialResource::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcConstructionMaterialResource::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcConstructionMaterialResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[217]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConstructionMaterialResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[217]); } const IfcParse::entity& Ifc4x3_add2::IfcConstructionMaterialResource::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[217]); } -Ifc4x3_add2::IfcConstructionMaterialResource::IfcConstructionMaterialResource(IfcEntityInstanceData&& e) : IfcConstructionResource(std::move(e)) { } -Ifc4x3_add2::IfcConstructionMaterialResource::IfcConstructionMaterialResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); }set_attribute_value(7, v8_Usage ? v8_Usage->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v9_BaseCosts) {set_attribute_value(8, (*v9_BaseCosts)->generalize()); }set_attribute_value(9, v10_BaseQuantity ? v10_BaseQuantity->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcConstructionMaterialResource::IfcConstructionMaterialResource(const std::weak_ptr& e) : IfcConstructionResource(e) { } +// Ifc4x3_add2::IfcConstructionMaterialResource::IfcConstructionMaterialResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime v8_Usage, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v10_BaseQuantity, std::optional< ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); } if (v8_Usage) {set_attribute_value(7, (*v8_Usage)); } if (v9_BaseCosts) {set_attribute_value(8, (*v9_BaseCosts)->generalize()); } if (v10_BaseQuantity) {set_attribute_value(9, (*v10_BaseQuantity)); } if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } // Function implementations for IfcConstructionMaterialResourceType ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value Ifc4x3_add2::IfcConstructionMaterialResourceType::PredefinedType() const { return ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::FromString(get_attribute_value(11)); } -void Ifc4x3_add2::IfcConstructionMaterialResourceType::setPredefinedType(::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } +void Ifc4x3_add2::IfcConstructionMaterialResourceType::setPredefinedType(const ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value& v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } -const IfcParse::entity& Ifc4x3_add2::IfcConstructionMaterialResourceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[218]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConstructionMaterialResourceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[218]); } const IfcParse::entity& Ifc4x3_add2::IfcConstructionMaterialResourceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[218]); } -Ifc4x3_add2::IfcConstructionMaterialResourceType::IfcConstructionMaterialResourceType(IfcEntityInstanceData&& e) : IfcConstructionResourceType(std::move(e)) { } -Ifc4x3_add2::IfcConstructionMaterialResourceType::IfcConstructionMaterialResourceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); } if (v10_BaseCosts) {set_attribute_value(9, (*v10_BaseCosts)->generalize()); }set_attribute_value(10, v11_BaseQuantity ? v11_BaseQuantity->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcConstructionMaterialResourceType::IfcConstructionMaterialResourceType(const std::weak_ptr& e) : IfcConstructionResourceType(e) { } +// Ifc4x3_add2::IfcConstructionMaterialResourceType::IfcConstructionMaterialResourceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v11_BaseQuantity, ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); } if (v10_BaseCosts) {set_attribute_value(9, (*v10_BaseCosts)->generalize()); } if (v11_BaseQuantity) {set_attribute_value(10, (*v11_BaseQuantity)); }set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } // Function implementations for IfcConstructionProductResource -boost::optional< ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value > Ifc4x3_add2::IfcConstructionProductResource::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value > Ifc4x3_add2::IfcConstructionProductResource::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcConstructionProductResource::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcConstructionProductResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[220]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConstructionProductResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[220]); } const IfcParse::entity& Ifc4x3_add2::IfcConstructionProductResource::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[220]); } -Ifc4x3_add2::IfcConstructionProductResource::IfcConstructionProductResource(IfcEntityInstanceData&& e) : IfcConstructionResource(std::move(e)) { } -Ifc4x3_add2::IfcConstructionProductResource::IfcConstructionProductResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); }set_attribute_value(7, v8_Usage ? v8_Usage->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v9_BaseCosts) {set_attribute_value(8, (*v9_BaseCosts)->generalize()); }set_attribute_value(9, v10_BaseQuantity ? v10_BaseQuantity->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcConstructionProductResource::IfcConstructionProductResource(const std::weak_ptr& e) : IfcConstructionResource(e) { } +// Ifc4x3_add2::IfcConstructionProductResource::IfcConstructionProductResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime v8_Usage, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v10_BaseQuantity, std::optional< ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); } if (v8_Usage) {set_attribute_value(7, (*v8_Usage)); } if (v9_BaseCosts) {set_attribute_value(8, (*v9_BaseCosts)->generalize()); } if (v10_BaseQuantity) {set_attribute_value(9, (*v10_BaseQuantity)); } if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } // Function implementations for IfcConstructionProductResourceType ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value Ifc4x3_add2::IfcConstructionProductResourceType::PredefinedType() const { return ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::FromString(get_attribute_value(11)); } -void Ifc4x3_add2::IfcConstructionProductResourceType::setPredefinedType(::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } +void Ifc4x3_add2::IfcConstructionProductResourceType::setPredefinedType(const ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value& v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } -const IfcParse::entity& Ifc4x3_add2::IfcConstructionProductResourceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[221]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConstructionProductResourceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[221]); } const IfcParse::entity& Ifc4x3_add2::IfcConstructionProductResourceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[221]); } -Ifc4x3_add2::IfcConstructionProductResourceType::IfcConstructionProductResourceType(IfcEntityInstanceData&& e) : IfcConstructionResourceType(std::move(e)) { } -Ifc4x3_add2::IfcConstructionProductResourceType::IfcConstructionProductResourceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); } if (v10_BaseCosts) {set_attribute_value(9, (*v10_BaseCosts)->generalize()); }set_attribute_value(10, v11_BaseQuantity ? v11_BaseQuantity->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcConstructionProductResourceType::IfcConstructionProductResourceType(const std::weak_ptr& e) : IfcConstructionResourceType(e) { } +// Ifc4x3_add2::IfcConstructionProductResourceType::IfcConstructionProductResourceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v11_BaseQuantity, ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); } if (v10_BaseCosts) {set_attribute_value(9, (*v10_BaseCosts)->generalize()); } if (v11_BaseQuantity) {set_attribute_value(10, (*v11_BaseQuantity)); }set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } // Function implementations for IfcConstructionResource -::Ifc4x3_add2::IfcResourceTime* Ifc4x3_add2::IfcConstructionResource::Usage() const { if(get_attribute_value(7).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(7)))->as<::Ifc4x3_add2::IfcResourceTime>(true); } -void Ifc4x3_add2::IfcConstructionResource::setUsage(::Ifc4x3_add2::IfcResourceTime* v) { set_attribute_value(7, v->as());if constexpr (false)unset_attribute_value(7); } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > Ifc4x3_add2::IfcConstructionResource::BaseCosts() const { if(get_attribute_value(8).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(8); return es->as< ::Ifc4x3_add2::IfcAppliedValue >(); } -void Ifc4x3_add2::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v) { if (v) {set_attribute_value(8, (*v)->generalize());} else {unset_attribute_value(8);} } -::Ifc4x3_add2::IfcPhysicalQuantity* Ifc4x3_add2::IfcConstructionResource::BaseQuantity() const { if(get_attribute_value(9).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(9)))->as<::Ifc4x3_add2::IfcPhysicalQuantity>(true); } -void Ifc4x3_add2::IfcConstructionResource::setBaseQuantity(::Ifc4x3_add2::IfcPhysicalQuantity* v) { set_attribute_value(9, v->as());if constexpr (false)unset_attribute_value(9); } +::Ifc4x3_add2::IfcResourceTime Ifc4x3_add2::IfcConstructionResource::Usage() const { if(get_attribute_value(7).isNull()) { return ::Ifc4x3_add2::IfcResourceTime{}; } return ((express::Base)(get_attribute_value(7))).as<::Ifc4x3_add2::IfcResourceTime>(); } +void Ifc4x3_add2::IfcConstructionResource::setUsage(const ::Ifc4x3_add2::IfcResourceTime& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } +std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > Ifc4x3_add2::IfcConstructionResource::BaseCosts() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(8); return cast_vector<::Ifc4x3_add2::IfcAppliedValue>(es); } +void Ifc4x3_add2::IfcConstructionResource::setBaseCosts(const std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > >& v) { if (v) {set_attribute_value(8, cast_vector(*v));} else {unset_attribute_value(8);} } +::Ifc4x3_add2::IfcPhysicalQuantity Ifc4x3_add2::IfcConstructionResource::BaseQuantity() const { if(get_attribute_value(9).isNull()) { return ::Ifc4x3_add2::IfcPhysicalQuantity{}; } return ((express::Base)(get_attribute_value(9))).as<::Ifc4x3_add2::IfcPhysicalQuantity>(); } +void Ifc4x3_add2::IfcConstructionResource::setBaseQuantity(const ::Ifc4x3_add2::IfcPhysicalQuantity& v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcConstructionResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[223]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConstructionResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[223]); } const IfcParse::entity& Ifc4x3_add2::IfcConstructionResource::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[223]); } -Ifc4x3_add2::IfcConstructionResource::IfcConstructionResource(IfcEntityInstanceData&& e) : IfcResource(std::move(e)) { } -Ifc4x3_add2::IfcConstructionResource::IfcConstructionResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v10_BaseQuantity) : IfcResource(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); }set_attribute_value(7, v8_Usage ? v8_Usage->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v9_BaseCosts) {set_attribute_value(8, (*v9_BaseCosts)->generalize()); }set_attribute_value(9, v10_BaseQuantity ? v10_BaseQuantity->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcConstructionResource::IfcConstructionResource(const std::weak_ptr& e) : IfcResource(e) { } +// Ifc4x3_add2::IfcConstructionResource::IfcConstructionResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime v8_Usage, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v10_BaseQuantity) : IfcResource(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); } if (v8_Usage) {set_attribute_value(7, (*v8_Usage)); } if (v9_BaseCosts) {set_attribute_value(8, (*v9_BaseCosts)->generalize()); } if (v10_BaseQuantity) {set_attribute_value(9, (*v10_BaseQuantity)); }; populate_derived(); } // Function implementations for IfcConstructionResourceType -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > Ifc4x3_add2::IfcConstructionResourceType::BaseCosts() const { if(get_attribute_value(9).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(9); return es->as< ::Ifc4x3_add2::IfcAppliedValue >(); } -void Ifc4x3_add2::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v) { if (v) {set_attribute_value(9, (*v)->generalize());} else {unset_attribute_value(9);} } -::Ifc4x3_add2::IfcPhysicalQuantity* Ifc4x3_add2::IfcConstructionResourceType::BaseQuantity() const { if(get_attribute_value(10).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(10)))->as<::Ifc4x3_add2::IfcPhysicalQuantity>(true); } -void Ifc4x3_add2::IfcConstructionResourceType::setBaseQuantity(::Ifc4x3_add2::IfcPhysicalQuantity* v) { set_attribute_value(10, v->as());if constexpr (false)unset_attribute_value(10); } +std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > Ifc4x3_add2::IfcConstructionResourceType::BaseCosts() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(9); return cast_vector<::Ifc4x3_add2::IfcAppliedValue>(es); } +void Ifc4x3_add2::IfcConstructionResourceType::setBaseCosts(const std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > >& v) { if (v) {set_attribute_value(9, cast_vector(*v));} else {unset_attribute_value(9);} } +::Ifc4x3_add2::IfcPhysicalQuantity Ifc4x3_add2::IfcConstructionResourceType::BaseQuantity() const { if(get_attribute_value(10).isNull()) { return ::Ifc4x3_add2::IfcPhysicalQuantity{}; } return ((express::Base)(get_attribute_value(10))).as<::Ifc4x3_add2::IfcPhysicalQuantity>(); } +void Ifc4x3_add2::IfcConstructionResourceType::setBaseQuantity(const ::Ifc4x3_add2::IfcPhysicalQuantity& v) { set_attribute_value(10, v);if constexpr (false)unset_attribute_value(10); } -const IfcParse::entity& Ifc4x3_add2::IfcConstructionResourceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[224]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConstructionResourceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[224]); } const IfcParse::entity& Ifc4x3_add2::IfcConstructionResourceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[224]); } -Ifc4x3_add2::IfcConstructionResourceType::IfcConstructionResourceType(IfcEntityInstanceData&& e) : IfcTypeResource(std::move(e)) { } -Ifc4x3_add2::IfcConstructionResourceType::IfcConstructionResourceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v11_BaseQuantity) : IfcTypeResource(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); } if (v10_BaseCosts) {set_attribute_value(9, (*v10_BaseCosts)->generalize()); }set_attribute_value(10, v11_BaseQuantity ? v11_BaseQuantity->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcConstructionResourceType::IfcConstructionResourceType(const std::weak_ptr& e) : IfcTypeResource(e) { } +// Ifc4x3_add2::IfcConstructionResourceType::IfcConstructionResourceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v11_BaseQuantity) : IfcTypeResource(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); } if (v10_BaseCosts) {set_attribute_value(9, (*v10_BaseCosts)->generalize()); } if (v11_BaseQuantity) {set_attribute_value(10, (*v11_BaseQuantity)); }; populate_derived(); } // Function implementations for IfcContext -boost::optional< std::string > Ifc4x3_add2::IfcContext::ObjectType() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcContext::setObjectType(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcContext::LongName() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcContext::setLongName(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< std::string > Ifc4x3_add2::IfcContext::Phase() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcContext::setPhase(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationContext >::ptr > Ifc4x3_add2::IfcContext::RepresentationContexts() const { if(get_attribute_value(7).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(7); return es->as< ::Ifc4x3_add2::IfcRepresentationContext >(); } -void Ifc4x3_add2::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationContext >::ptr > v) { if (v) {set_attribute_value(7, (*v)->generalize());} else {unset_attribute_value(7);} } -::Ifc4x3_add2::IfcUnitAssignment* Ifc4x3_add2::IfcContext::UnitsInContext() const { if(get_attribute_value(8).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(8)))->as<::Ifc4x3_add2::IfcUnitAssignment>(true); } -void Ifc4x3_add2::IfcContext::setUnitsInContext(::Ifc4x3_add2::IfcUnitAssignment* v) { set_attribute_value(8, v->as());if constexpr (false)unset_attribute_value(8); } +std::optional< std::string > Ifc4x3_add2::IfcContext::ObjectType() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcContext::setObjectType(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcContext::LongName() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcContext::setLongName(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcContext::Phase() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcContext::setPhase(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationContext > > Ifc4x3_add2::IfcContext::RepresentationContexts() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(7); return cast_vector<::Ifc4x3_add2::IfcRepresentationContext>(es); } +void Ifc4x3_add2::IfcContext::setRepresentationContexts(const std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationContext > >& v) { if (v) {set_attribute_value(7, cast_vector(*v));} else {unset_attribute_value(7);} } +::Ifc4x3_add2::IfcUnitAssignment Ifc4x3_add2::IfcContext::UnitsInContext() const { if(get_attribute_value(8).isNull()) { return ::Ifc4x3_add2::IfcUnitAssignment{}; } return ((express::Base)(get_attribute_value(8))).as<::Ifc4x3_add2::IfcUnitAssignment>(); } +void Ifc4x3_add2::IfcContext::setUnitsInContext(const ::Ifc4x3_add2::IfcUnitAssignment& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } -::Ifc4x3_add2::IfcRelDefinesByProperties::list::ptr Ifc4x3_add2::IfcContext::IsDefinedBy() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[933], 4)->as(); } -::Ifc4x3_add2::IfcRelDeclares::list::ptr Ifc4x3_add2::IfcContext::Declares() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[929], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelDefinesByProperties> Ifc4x3_add2::IfcContext::IsDefinedBy() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[933], 4)); } +std::vector<::Ifc4x3_add2::IfcRelDeclares> Ifc4x3_add2::IfcContext::Declares() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[929], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcContext::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[225]); } +// const IfcParse::entity& Ifc4x3_add2::IfcContext::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[225]); } const IfcParse::entity& Ifc4x3_add2::IfcContext::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[225]); } -Ifc4x3_add2::IfcContext::IfcContext(IfcEntityInstanceData&& e) : IfcObjectDefinition(std::move(e)) { } -Ifc4x3_add2::IfcContext::IfcContext(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< std::string > v7_Phase, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationContext >::ptr > v8_RepresentationContexts, ::Ifc4x3_add2::IfcUnitAssignment* v9_UnitsInContext) : IfcObjectDefinition(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_LongName) {set_attribute_value(5, (*v6_LongName)); } if (v7_Phase) {set_attribute_value(6, (*v7_Phase)); } if (v8_RepresentationContexts) {set_attribute_value(7, (*v8_RepresentationContexts)->generalize()); }set_attribute_value(8, v9_UnitsInContext ? v9_UnitsInContext->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcContext::IfcContext(const std::weak_ptr& e) : IfcObjectDefinition(e) { } +// Ifc4x3_add2::IfcContext::IfcContext(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_LongName, std::optional< std::string > v7_Phase, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationContext > > v8_RepresentationContexts, ::Ifc4x3_add2::IfcUnitAssignment v9_UnitsInContext) : IfcObjectDefinition(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_LongName) {set_attribute_value(5, (*v6_LongName)); } if (v7_Phase) {set_attribute_value(6, (*v7_Phase)); } if (v8_RepresentationContexts) {set_attribute_value(7, (*v8_RepresentationContexts)->generalize()); } if (v9_UnitsInContext) {set_attribute_value(8, (*v9_UnitsInContext)); }; populate_derived(); } // Function implementations for IfcContextDependentUnit std::string Ifc4x3_add2::IfcContextDependentUnit::Name() const { std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcContextDependentUnit::setName(std::string v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcContextDependentUnit::setName(const std::string& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_add2::IfcContextDependentUnit::HasExternalReference() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[427], 3)->as(); } +std::vector<::Ifc4x3_add2::IfcExternalReferenceRelationship> Ifc4x3_add2::IfcContextDependentUnit::HasExternalReference() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[427], 3)); } -const IfcParse::entity& Ifc4x3_add2::IfcContextDependentUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[227]); } +// const IfcParse::entity& Ifc4x3_add2::IfcContextDependentUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[227]); } const IfcParse::entity& Ifc4x3_add2::IfcContextDependentUnit::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[227]); } -Ifc4x3_add2::IfcContextDependentUnit::IfcContextDependentUnit(IfcEntityInstanceData&& e) : IfcNamedUnit(std::move(e)) { } -Ifc4x3_add2::IfcContextDependentUnit::IfcContextDependentUnit(::Ifc4x3_add2::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, std::string v3_Name) : IfcNamedUnit(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_Dimensions ? v1_Dimensions->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcUnitEnum::Class(),(size_t)v2_UnitType)));set_attribute_value(2, (v3_Name));; populate_derived(); } +// Ifc4x3_add2::IfcContextDependentUnit::IfcContextDependentUnit(const std::weak_ptr& e) : IfcNamedUnit(e) { } +// Ifc4x3_add2::IfcContextDependentUnit::IfcContextDependentUnit(::Ifc4x3_add2::IfcDimensionalExponents v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, std::string v3_Name) : IfcNamedUnit(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Dimensions));set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcUnitEnum::Class(),(size_t)v2_UnitType)));set_attribute_value(2, (v3_Name));; populate_derived(); } // Function implementations for IfcControl -boost::optional< std::string > Ifc4x3_add2::IfcControl::Identification() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcControl::setIdentification(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcControl::Identification() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcControl::setIdentification(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -::Ifc4x3_add2::IfcRelAssignsToControl::list::ptr Ifc4x3_add2::IfcControl::Controls() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[902], 6)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssignsToControl> Ifc4x3_add2::IfcControl::Controls() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[902], 6)); } -const IfcParse::entity& Ifc4x3_add2::IfcControl::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[228]); } +// const IfcParse::entity& Ifc4x3_add2::IfcControl::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[228]); } const IfcParse::entity& Ifc4x3_add2::IfcControl::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[228]); } -Ifc4x3_add2::IfcControl::IfcControl(IfcEntityInstanceData&& e) : IfcObject(std::move(e)) { } -Ifc4x3_add2::IfcControl::IfcControl(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification) : IfcObject(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); }; populate_derived(); } +// Ifc4x3_add2::IfcControl::IfcControl(const std::weak_ptr& e) : IfcObject(e) { } +// Ifc4x3_add2::IfcControl::IfcControl(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification) : IfcObject(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); }; populate_derived(); } // Function implementations for IfcController -boost::optional< ::Ifc4x3_add2::IfcControllerTypeEnum::Value > Ifc4x3_add2::IfcController::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcControllerTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcController::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcControllerTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcControllerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcControllerTypeEnum::Value > Ifc4x3_add2::IfcController::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcControllerTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcController::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcControllerTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcControllerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcController::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[229]); } +// const IfcParse::entity& Ifc4x3_add2::IfcController::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[229]); } const IfcParse::entity& Ifc4x3_add2::IfcController::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[229]); } -Ifc4x3_add2::IfcController::IfcController(IfcEntityInstanceData&& e) : IfcDistributionControlElement(std::move(e)) { } -Ifc4x3_add2::IfcController::IfcController(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcControllerTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcControllerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcController::IfcController(const std::weak_ptr& e) : IfcDistributionControlElement(e) { } +// Ifc4x3_add2::IfcController::IfcController(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcControllerTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcControllerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcControllerType ::Ifc4x3_add2::IfcControllerTypeEnum::Value Ifc4x3_add2::IfcControllerType::PredefinedType() const { return ::Ifc4x3_add2::IfcControllerTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcControllerType::setPredefinedType(::Ifc4x3_add2::IfcControllerTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcControllerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcControllerType::setPredefinedType(const ::Ifc4x3_add2::IfcControllerTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcControllerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcControllerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[230]); } +// const IfcParse::entity& Ifc4x3_add2::IfcControllerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[230]); } const IfcParse::entity& Ifc4x3_add2::IfcControllerType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[230]); } -Ifc4x3_add2::IfcControllerType::IfcControllerType(IfcEntityInstanceData&& e) : IfcDistributionControlElementType(std::move(e)) { } -Ifc4x3_add2::IfcControllerType::IfcControllerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcControllerTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcControllerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcControllerType::IfcControllerType(const std::weak_ptr& e) : IfcDistributionControlElementType(e) { } +// Ifc4x3_add2::IfcControllerType::IfcControllerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcControllerTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcControllerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcConversionBasedUnit std::string Ifc4x3_add2::IfcConversionBasedUnit::Name() const { std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcConversionBasedUnit::setName(std::string v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcMeasureWithUnit* Ifc4x3_add2::IfcConversionBasedUnit::ConversionFactor() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcMeasureWithUnit>(true); } -void Ifc4x3_add2::IfcConversionBasedUnit::setConversionFactor(::Ifc4x3_add2::IfcMeasureWithUnit* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcConversionBasedUnit::setName(const std::string& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcMeasureWithUnit Ifc4x3_add2::IfcConversionBasedUnit::ConversionFactor() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcMeasureWithUnit>(); } +void Ifc4x3_add2::IfcConversionBasedUnit::setConversionFactor(const ::Ifc4x3_add2::IfcMeasureWithUnit& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -::Ifc4x3_add2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_add2::IfcConversionBasedUnit::HasExternalReference() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[427], 3)->as(); } +std::vector<::Ifc4x3_add2::IfcExternalReferenceRelationship> Ifc4x3_add2::IfcConversionBasedUnit::HasExternalReference() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[427], 3)); } -const IfcParse::entity& Ifc4x3_add2::IfcConversionBasedUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[232]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConversionBasedUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[232]); } const IfcParse::entity& Ifc4x3_add2::IfcConversionBasedUnit::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[232]); } -Ifc4x3_add2::IfcConversionBasedUnit::IfcConversionBasedUnit(IfcEntityInstanceData&& e) : IfcNamedUnit(std::move(e)) { } -Ifc4x3_add2::IfcConversionBasedUnit::IfcConversionBasedUnit(::Ifc4x3_add2::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, std::string v3_Name, ::Ifc4x3_add2::IfcMeasureWithUnit* v4_ConversionFactor) : IfcNamedUnit(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_Dimensions ? v1_Dimensions->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcUnitEnum::Class(),(size_t)v2_UnitType)));set_attribute_value(2, (v3_Name));set_attribute_value(3, v4_ConversionFactor ? v4_ConversionFactor->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcConversionBasedUnit::IfcConversionBasedUnit(const std::weak_ptr& e) : IfcNamedUnit(e) { } +// Ifc4x3_add2::IfcConversionBasedUnit::IfcConversionBasedUnit(::Ifc4x3_add2::IfcDimensionalExponents v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, std::string v3_Name, ::Ifc4x3_add2::IfcMeasureWithUnit v4_ConversionFactor) : IfcNamedUnit(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Dimensions));set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcUnitEnum::Class(),(size_t)v2_UnitType)));set_attribute_value(2, (v3_Name));set_attribute_value(3, (v4_ConversionFactor));; populate_derived(); } // Function implementations for IfcConversionBasedUnitWithOffset double Ifc4x3_add2::IfcConversionBasedUnitWithOffset::ConversionOffset() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcConversionBasedUnitWithOffset::setConversionOffset(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcConversionBasedUnitWithOffset::setConversionOffset(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcConversionBasedUnitWithOffset::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[233]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConversionBasedUnitWithOffset::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[233]); } const IfcParse::entity& Ifc4x3_add2::IfcConversionBasedUnitWithOffset::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[233]); } -Ifc4x3_add2::IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(IfcEntityInstanceData&& e) : IfcConversionBasedUnit(std::move(e)) { } -Ifc4x3_add2::IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(::Ifc4x3_add2::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, std::string v3_Name, ::Ifc4x3_add2::IfcMeasureWithUnit* v4_ConversionFactor, double v5_ConversionOffset) : IfcConversionBasedUnit(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_Dimensions ? v1_Dimensions->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcUnitEnum::Class(),(size_t)v2_UnitType)));set_attribute_value(2, (v3_Name));set_attribute_value(3, v4_ConversionFactor ? v4_ConversionFactor->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, (v5_ConversionOffset));; populate_derived(); } +// Ifc4x3_add2::IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(const std::weak_ptr& e) : IfcConversionBasedUnit(e) { } +// Ifc4x3_add2::IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(::Ifc4x3_add2::IfcDimensionalExponents v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, std::string v3_Name, ::Ifc4x3_add2::IfcMeasureWithUnit v4_ConversionFactor, double v5_ConversionOffset) : IfcConversionBasedUnit(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Dimensions));set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcUnitEnum::Class(),(size_t)v2_UnitType)));set_attribute_value(2, (v3_Name));set_attribute_value(3, (v4_ConversionFactor));set_attribute_value(4, (v5_ConversionOffset));; populate_derived(); } // Function implementations for IfcConveyorSegment -boost::optional< ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value > Ifc4x3_add2::IfcConveyorSegment::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcConveyorSegment::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value > Ifc4x3_add2::IfcConveyorSegment::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcConveyorSegment::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcConveyorSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[234]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConveyorSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[234]); } const IfcParse::entity& Ifc4x3_add2::IfcConveyorSegment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[234]); } -Ifc4x3_add2::IfcConveyorSegment::IfcConveyorSegment(IfcEntityInstanceData&& e) : IfcFlowSegment(std::move(e)) { } -Ifc4x3_add2::IfcConveyorSegment::IfcConveyorSegment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcConveyorSegment::IfcConveyorSegment(const std::weak_ptr& e) : IfcFlowSegment(e) { } +// Ifc4x3_add2::IfcConveyorSegment::IfcConveyorSegment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcConveyorSegmentType ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value Ifc4x3_add2::IfcConveyorSegmentType::PredefinedType() const { return ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcConveyorSegmentType::setPredefinedType(::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcConveyorSegmentType::setPredefinedType(const ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcConveyorSegmentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[235]); } +// const IfcParse::entity& Ifc4x3_add2::IfcConveyorSegmentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[235]); } const IfcParse::entity& Ifc4x3_add2::IfcConveyorSegmentType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[235]); } -Ifc4x3_add2::IfcConveyorSegmentType::IfcConveyorSegmentType(IfcEntityInstanceData&& e) : IfcFlowSegmentType(std::move(e)) { } -Ifc4x3_add2::IfcConveyorSegmentType::IfcConveyorSegmentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcConveyorSegmentType::IfcConveyorSegmentType(const std::weak_ptr& e) : IfcFlowSegmentType(e) { } +// Ifc4x3_add2::IfcConveyorSegmentType::IfcConveyorSegmentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcCooledBeam -boost::optional< ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value > Ifc4x3_add2::IfcCooledBeam::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCooledBeamTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCooledBeamTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value > Ifc4x3_add2::IfcCooledBeam::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCooledBeamTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcCooledBeam::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCooledBeamTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcCooledBeam::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[237]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCooledBeam::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[237]); } const IfcParse::entity& Ifc4x3_add2::IfcCooledBeam::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[237]); } -Ifc4x3_add2::IfcCooledBeam::IfcCooledBeam(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcCooledBeam::IfcCooledBeam(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCooledBeamTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcCooledBeam::IfcCooledBeam(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcCooledBeam::IfcCooledBeam(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCooledBeamTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcCooledBeamType ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value Ifc4x3_add2::IfcCooledBeamType::PredefinedType() const { return ::Ifc4x3_add2::IfcCooledBeamTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcCooledBeamType::setPredefinedType(::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCooledBeamTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcCooledBeamType::setPredefinedType(const ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCooledBeamTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcCooledBeamType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[238]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCooledBeamType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[238]); } const IfcParse::entity& Ifc4x3_add2::IfcCooledBeamType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[238]); } -Ifc4x3_add2::IfcCooledBeamType::IfcCooledBeamType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcCooledBeamType::IfcCooledBeamType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCooledBeamTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcCooledBeamType::IfcCooledBeamType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcCooledBeamType::IfcCooledBeamType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCooledBeamTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcCoolingTower -boost::optional< ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value > Ifc4x3_add2::IfcCoolingTower::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value > Ifc4x3_add2::IfcCoolingTower::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcCoolingTower::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcCoolingTower::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[240]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCoolingTower::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[240]); } const IfcParse::entity& Ifc4x3_add2::IfcCoolingTower::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[240]); } -Ifc4x3_add2::IfcCoolingTower::IfcCoolingTower(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcCoolingTower::IfcCoolingTower(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcCoolingTower::IfcCoolingTower(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcCoolingTower::IfcCoolingTower(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcCoolingTowerType ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value Ifc4x3_add2::IfcCoolingTowerType::PredefinedType() const { return ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcCoolingTowerType::setPredefinedType(::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcCoolingTowerType::setPredefinedType(const ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcCoolingTowerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[241]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCoolingTowerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[241]); } const IfcParse::entity& Ifc4x3_add2::IfcCoolingTowerType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[241]); } -Ifc4x3_add2::IfcCoolingTowerType::IfcCoolingTowerType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcCoolingTowerType::IfcCoolingTowerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcCoolingTowerType::IfcCoolingTowerType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcCoolingTowerType::IfcCoolingTowerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcCoordinateOperation -::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect* Ifc4x3_add2::IfcCoordinateOperation::SourceCRS() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect>(true); } -void Ifc4x3_add2::IfcCoordinateOperation::setSourceCRS(::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcCoordinateReferenceSystem* Ifc4x3_add2::IfcCoordinateOperation::TargetCRS() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcCoordinateReferenceSystem>(true); } -void Ifc4x3_add2::IfcCoordinateOperation::setTargetCRS(::Ifc4x3_add2::IfcCoordinateReferenceSystem* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect Ifc4x3_add2::IfcCoordinateOperation::SourceCRS() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect>(); } +void Ifc4x3_add2::IfcCoordinateOperation::setSourceCRS(const ::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcCoordinateReferenceSystem Ifc4x3_add2::IfcCoordinateOperation::TargetCRS() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcCoordinateReferenceSystem>(); } +void Ifc4x3_add2::IfcCoordinateOperation::setTargetCRS(const ::Ifc4x3_add2::IfcCoordinateReferenceSystem& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcCoordinateOperation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[243]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCoordinateOperation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[243]); } const IfcParse::entity& Ifc4x3_add2::IfcCoordinateOperation::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[243]); } -Ifc4x3_add2::IfcCoordinateOperation::IfcCoordinateOperation(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcCoordinateOperation::IfcCoordinateOperation(::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect* v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem* v2_TargetCRS) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_SourceCRS ? v1_SourceCRS->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_TargetCRS ? v2_TargetCRS->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcCoordinateOperation::IfcCoordinateOperation(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcCoordinateOperation::IfcCoordinateOperation(::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem v2_TargetCRS) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_SourceCRS));set_attribute_value(1, (v2_TargetCRS));; populate_derived(); } // Function implementations for IfcCoordinateReferenceSystem -boost::optional< std::string > Ifc4x3_add2::IfcCoordinateReferenceSystem::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcCoordinateReferenceSystem::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcCoordinateReferenceSystem::Description() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::string > Ifc4x3_add2::IfcCoordinateReferenceSystem::GeodeticDatum() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::string > Ifc4x3_add2::IfcCoordinateReferenceSystem::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcCoordinateReferenceSystem::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcCoordinateReferenceSystem::Description() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcCoordinateReferenceSystem::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcCoordinateReferenceSystem::GeodeticDatum() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcCoordinateReferenceSystem::setGeodeticDatum(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -::Ifc4x3_add2::IfcCoordinateOperation::list::ptr Ifc4x3_add2::IfcCoordinateReferenceSystem::HasCoordinateOperation() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[243], 0)->as(); } -::Ifc4x3_add2::IfcWellKnownText::list::ptr Ifc4x3_add2::IfcCoordinateReferenceSystem::WellKnownText() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[1292], 1)->as(); } +std::vector<::Ifc4x3_add2::IfcCoordinateOperation> Ifc4x3_add2::IfcCoordinateReferenceSystem::HasCoordinateOperation() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[243], 0)); } +std::vector<::Ifc4x3_add2::IfcWellKnownText> Ifc4x3_add2::IfcCoordinateReferenceSystem::WellKnownText() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[1292], 1)); } -const IfcParse::entity& Ifc4x3_add2::IfcCoordinateReferenceSystem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[244]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCoordinateReferenceSystem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[244]); } const IfcParse::entity& Ifc4x3_add2::IfcCoordinateReferenceSystem::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[244]); } -Ifc4x3_add2::IfcCoordinateReferenceSystem::IfcCoordinateReferenceSystem(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcCoordinateReferenceSystem::IfcCoordinateReferenceSystem(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_GeodeticDatum) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_GeodeticDatum) {set_attribute_value(2, (*v3_GeodeticDatum)); }; populate_derived(); } +// Ifc4x3_add2::IfcCoordinateReferenceSystem::IfcCoordinateReferenceSystem(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcCoordinateReferenceSystem::IfcCoordinateReferenceSystem(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::optional< std::string > v3_GeodeticDatum) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_GeodeticDatum) {set_attribute_value(2, (*v3_GeodeticDatum)); }; populate_derived(); } // Function implementations for IfcCosineSpiral double Ifc4x3_add2::IfcCosineSpiral::CosineTerm() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcCosineSpiral::setCosineTerm(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -boost::optional< double > Ifc4x3_add2::IfcCosineSpiral::ConstantTerm() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcCosineSpiral::setConstantTerm(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +void Ifc4x3_add2::IfcCosineSpiral::setCosineTerm(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< double > Ifc4x3_add2::IfcCosineSpiral::ConstantTerm() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcCosineSpiral::setConstantTerm(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -const IfcParse::entity& Ifc4x3_add2::IfcCosineSpiral::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[246]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCosineSpiral::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[246]); } const IfcParse::entity& Ifc4x3_add2::IfcCosineSpiral::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[246]); } -Ifc4x3_add2::IfcCosineSpiral::IfcCosineSpiral(IfcEntityInstanceData&& e) : IfcSpiral(std::move(e)) { } -Ifc4x3_add2::IfcCosineSpiral::IfcCosineSpiral(::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_CosineTerm, boost::optional< double > v3_ConstantTerm) : IfcSpiral(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_CosineTerm)); if (v3_ConstantTerm) {set_attribute_value(2, (*v3_ConstantTerm)); }; populate_derived(); } +// Ifc4x3_add2::IfcCosineSpiral::IfcCosineSpiral(const std::weak_ptr& e) : IfcSpiral(e) { } +// Ifc4x3_add2::IfcCosineSpiral::IfcCosineSpiral(::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_CosineTerm, std::optional< double > v3_ConstantTerm) : IfcSpiral(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_CosineTerm)); if (v3_ConstantTerm) {set_attribute_value(2, (*v3_ConstantTerm)); }; populate_derived(); } // Function implementations for IfcCostItem -boost::optional< ::Ifc4x3_add2::IfcCostItemTypeEnum::Value > Ifc4x3_add2::IfcCostItem::PredefinedType() const { if(get_attribute_value(6).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCostItemTypeEnum::FromString(get_attribute_value(6)); } -void Ifc4x3_add2::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCostItemTypeEnum::Value > v) { if (v) {set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcCostItemTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(6);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcCostValue >::ptr > Ifc4x3_add2::IfcCostItem::CostValues() const { if(get_attribute_value(7).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(7); return es->as< ::Ifc4x3_add2::IfcCostValue >(); } -void Ifc4x3_add2::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcCostValue >::ptr > v) { if (v) {set_attribute_value(7, (*v)->generalize());} else {unset_attribute_value(7);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr > Ifc4x3_add2::IfcCostItem::CostQuantities() const { if(get_attribute_value(8).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(8); return es->as< ::Ifc4x3_add2::IfcPhysicalQuantity >(); } -void Ifc4x3_add2::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr > v) { if (v) {set_attribute_value(8, (*v)->generalize());} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcCostItemTypeEnum::Value > Ifc4x3_add2::IfcCostItem::PredefinedType() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCostItemTypeEnum::FromString(get_attribute_value(6)); } +void Ifc4x3_add2::IfcCostItem::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCostItemTypeEnum::Value >& v) { if (v) {set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcCostItemTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(6);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcCostValue > > Ifc4x3_add2::IfcCostItem::CostValues() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(7); return cast_vector<::Ifc4x3_add2::IfcCostValue>(es); } +void Ifc4x3_add2::IfcCostItem::setCostValues(const std::optional< std::vector< ::Ifc4x3_add2::IfcCostValue > >& v) { if (v) {set_attribute_value(7, cast_vector(*v));} else {unset_attribute_value(7);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity > > Ifc4x3_add2::IfcCostItem::CostQuantities() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(8); return cast_vector<::Ifc4x3_add2::IfcPhysicalQuantity>(es); } +void Ifc4x3_add2::IfcCostItem::setCostQuantities(const std::optional< std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity > >& v) { if (v) {set_attribute_value(8, cast_vector(*v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcCostItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[247]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCostItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[247]); } const IfcParse::entity& Ifc4x3_add2::IfcCostItem::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[247]); } -Ifc4x3_add2::IfcCostItem::IfcCostItem(IfcEntityInstanceData&& e) : IfcControl(std::move(e)) { } -Ifc4x3_add2::IfcCostItem::IfcCostItem(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< ::Ifc4x3_add2::IfcCostItemTypeEnum::Value > v7_PredefinedType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcCostValue >::ptr > v8_CostValues, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr > v9_CostQuantities) : IfcControl(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcCostItemTypeEnum::Class(),(size_t)*v7_PredefinedType))); } if (v8_CostValues) {set_attribute_value(7, (*v8_CostValues)->generalize()); } if (v9_CostQuantities) {set_attribute_value(8, (*v9_CostQuantities)->generalize()); }; populate_derived(); } +// Ifc4x3_add2::IfcCostItem::IfcCostItem(const std::weak_ptr& e) : IfcControl(e) { } +// Ifc4x3_add2::IfcCostItem::IfcCostItem(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< ::Ifc4x3_add2::IfcCostItemTypeEnum::Value > v7_PredefinedType, std::optional< std::vector< ::Ifc4x3_add2::IfcCostValue > > v8_CostValues, std::optional< std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity > > v9_CostQuantities) : IfcControl(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcCostItemTypeEnum::Class(),(size_t)*v7_PredefinedType))); } if (v8_CostValues) {set_attribute_value(7, (*v8_CostValues)->generalize()); } if (v9_CostQuantities) {set_attribute_value(8, (*v9_CostQuantities)->generalize()); }; populate_derived(); } // Function implementations for IfcCostSchedule -boost::optional< ::Ifc4x3_add2::IfcCostScheduleTypeEnum::Value > Ifc4x3_add2::IfcCostSchedule::PredefinedType() const { if(get_attribute_value(6).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCostScheduleTypeEnum::FromString(get_attribute_value(6)); } -void Ifc4x3_add2::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCostScheduleTypeEnum::Value > v) { if (v) {set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcCostScheduleTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(6);} } -boost::optional< std::string > Ifc4x3_add2::IfcCostSchedule::Status() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcCostSchedule::setStatus(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< std::string > Ifc4x3_add2::IfcCostSchedule::SubmittedOn() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -boost::optional< std::string > Ifc4x3_add2::IfcCostSchedule::UpdateDate() const { if(get_attribute_value(9).isNull()) { return boost::none; } std::string v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< ::Ifc4x3_add2::IfcCostScheduleTypeEnum::Value > Ifc4x3_add2::IfcCostSchedule::PredefinedType() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCostScheduleTypeEnum::FromString(get_attribute_value(6)); } +void Ifc4x3_add2::IfcCostSchedule::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCostScheduleTypeEnum::Value >& v) { if (v) {set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcCostScheduleTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcCostSchedule::Status() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcCostSchedule::setStatus(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcCostSchedule::SubmittedOn() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcCostSchedule::setSubmittedOn(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< std::string > Ifc4x3_add2::IfcCostSchedule::UpdateDate() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } std::string v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcCostSchedule::setUpdateDate(const std::optional< std::string >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcCostSchedule::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[249]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCostSchedule::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[249]); } const IfcParse::entity& Ifc4x3_add2::IfcCostSchedule::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[249]); } -Ifc4x3_add2::IfcCostSchedule::IfcCostSchedule(IfcEntityInstanceData&& e) : IfcControl(std::move(e)) { } -Ifc4x3_add2::IfcCostSchedule::IfcCostSchedule(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< ::Ifc4x3_add2::IfcCostScheduleTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_SubmittedOn, boost::optional< std::string > v10_UpdateDate) : IfcControl(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcCostScheduleTypeEnum::Class(),(size_t)*v7_PredefinedType))); } if (v8_Status) {set_attribute_value(7, (*v8_Status)); } if (v9_SubmittedOn) {set_attribute_value(8, (*v9_SubmittedOn)); } if (v10_UpdateDate) {set_attribute_value(9, (*v10_UpdateDate)); }; populate_derived(); } +// Ifc4x3_add2::IfcCostSchedule::IfcCostSchedule(const std::weak_ptr& e) : IfcControl(e) { } +// Ifc4x3_add2::IfcCostSchedule::IfcCostSchedule(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< ::Ifc4x3_add2::IfcCostScheduleTypeEnum::Value > v7_PredefinedType, std::optional< std::string > v8_Status, std::optional< std::string > v9_SubmittedOn, std::optional< std::string > v10_UpdateDate) : IfcControl(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcCostScheduleTypeEnum::Class(),(size_t)*v7_PredefinedType))); } if (v8_Status) {set_attribute_value(7, (*v8_Status)); } if (v9_SubmittedOn) {set_attribute_value(8, (*v9_SubmittedOn)); } if (v10_UpdateDate) {set_attribute_value(9, (*v10_UpdateDate)); }; populate_derived(); } // Function implementations for IfcCostValue -const IfcParse::entity& Ifc4x3_add2::IfcCostValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[251]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCostValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[251]); } const IfcParse::entity& Ifc4x3_add2::IfcCostValue::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[251]); } -Ifc4x3_add2::IfcCostValue::IfcCostValue(IfcEntityInstanceData&& e) : IfcAppliedValue(std::move(e)) { } -Ifc4x3_add2::IfcCostValue::IfcCostValue(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcAppliedValueSelect* v3_AppliedValue, ::Ifc4x3_add2::IfcMeasureWithUnit* v4_UnitBasis, boost::optional< std::string > v5_ApplicableDate, boost::optional< std::string > v6_FixedUntilDate, boost::optional< std::string > v7_Category, boost::optional< std::string > v8_Condition, boost::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value > v9_ArithmeticOperator, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_Components) : IfcAppliedValue(IfcEntityInstanceData(in_memory_attribute_storage(10))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_AppliedValue ? v3_AppliedValue->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_UnitBasis ? v4_UnitBasis->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_ApplicableDate) {set_attribute_value(4, (*v5_ApplicableDate)); } if (v6_FixedUntilDate) {set_attribute_value(5, (*v6_FixedUntilDate)); } if (v7_Category) {set_attribute_value(6, (*v7_Category)); } if (v8_Condition) {set_attribute_value(7, (*v8_Condition)); } if (v9_ArithmeticOperator) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcArithmeticOperatorEnum::Class(),(size_t)*v9_ArithmeticOperator))); } if (v10_Components) {set_attribute_value(9, (*v10_Components)->generalize()); }; populate_derived(); } +// Ifc4x3_add2::IfcCostValue::IfcCostValue(const std::weak_ptr& e) : IfcAppliedValue(e) { } +// Ifc4x3_add2::IfcCostValue::IfcCostValue(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcAppliedValueSelect v3_AppliedValue, ::Ifc4x3_add2::IfcMeasureWithUnit v4_UnitBasis, std::optional< std::string > v5_ApplicableDate, std::optional< std::string > v6_FixedUntilDate, std::optional< std::string > v7_Category, std::optional< std::string > v8_Condition, std::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value > v9_ArithmeticOperator, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_Components) : IfcAppliedValue(const std::weak_ptr&(in_memory_attribute_storage(10))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_AppliedValue) {set_attribute_value(2, (*v3_AppliedValue)); } if (v4_UnitBasis) {set_attribute_value(3, (*v4_UnitBasis)); } if (v5_ApplicableDate) {set_attribute_value(4, (*v5_ApplicableDate)); } if (v6_FixedUntilDate) {set_attribute_value(5, (*v6_FixedUntilDate)); } if (v7_Category) {set_attribute_value(6, (*v7_Category)); } if (v8_Condition) {set_attribute_value(7, (*v8_Condition)); } if (v9_ArithmeticOperator) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcArithmeticOperatorEnum::Class(),(size_t)*v9_ArithmeticOperator))); } if (v10_Components) {set_attribute_value(9, (*v10_Components)->generalize()); }; populate_derived(); } // Function implementations for IfcCourse -boost::optional< ::Ifc4x3_add2::IfcCourseTypeEnum::Value > Ifc4x3_add2::IfcCourse::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCourseTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcCourse::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCourseTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCourseTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcCourseTypeEnum::Value > Ifc4x3_add2::IfcCourse::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCourseTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcCourse::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCourseTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCourseTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcCourse::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[253]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCourse::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[253]); } const IfcParse::entity& Ifc4x3_add2::IfcCourse::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[253]); } -Ifc4x3_add2::IfcCourse::IfcCourse(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcCourse::IfcCourse(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCourseTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCourseTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcCourse::IfcCourse(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcCourse::IfcCourse(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCourseTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCourseTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcCourseType ::Ifc4x3_add2::IfcCourseTypeEnum::Value Ifc4x3_add2::IfcCourseType::PredefinedType() const { return ::Ifc4x3_add2::IfcCourseTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcCourseType::setPredefinedType(::Ifc4x3_add2::IfcCourseTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCourseTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcCourseType::setPredefinedType(const ::Ifc4x3_add2::IfcCourseTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCourseTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcCourseType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[254]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCourseType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[254]); } const IfcParse::entity& Ifc4x3_add2::IfcCourseType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[254]); } -Ifc4x3_add2::IfcCourseType::IfcCourseType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcCourseType::IfcCourseType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCourseTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCourseTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcCourseType::IfcCourseType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcCourseType::IfcCourseType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCourseTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCourseTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcCovering -boost::optional< ::Ifc4x3_add2::IfcCoveringTypeEnum::Value > Ifc4x3_add2::IfcCovering::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCoveringTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcCovering::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCoveringTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCoveringTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcCoveringTypeEnum::Value > Ifc4x3_add2::IfcCovering::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCoveringTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcCovering::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCoveringTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCoveringTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -::Ifc4x3_add2::IfcRelCoversSpaces::list::ptr Ifc4x3_add2::IfcCovering::CoversSpaces() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[928], 5)->as(); } -::Ifc4x3_add2::IfcRelCoversBldgElements::list::ptr Ifc4x3_add2::IfcCovering::CoversElements() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[927], 5)->as(); } +std::vector<::Ifc4x3_add2::IfcRelCoversSpaces> Ifc4x3_add2::IfcCovering::CoversSpaces() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[928], 5)); } +std::vector<::Ifc4x3_add2::IfcRelCoversBldgElements> Ifc4x3_add2::IfcCovering::CoversElements() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[927], 5)); } -const IfcParse::entity& Ifc4x3_add2::IfcCovering::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[256]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCovering::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[256]); } const IfcParse::entity& Ifc4x3_add2::IfcCovering::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[256]); } -Ifc4x3_add2::IfcCovering::IfcCovering(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcCovering::IfcCovering(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCoveringTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCoveringTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcCovering::IfcCovering(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcCovering::IfcCovering(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCoveringTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCoveringTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcCoveringType ::Ifc4x3_add2::IfcCoveringTypeEnum::Value Ifc4x3_add2::IfcCoveringType::PredefinedType() const { return ::Ifc4x3_add2::IfcCoveringTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcCoveringType::setPredefinedType(::Ifc4x3_add2::IfcCoveringTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCoveringTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcCoveringType::setPredefinedType(const ::Ifc4x3_add2::IfcCoveringTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCoveringTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcCoveringType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[257]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCoveringType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[257]); } const IfcParse::entity& Ifc4x3_add2::IfcCoveringType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[257]); } -Ifc4x3_add2::IfcCoveringType::IfcCoveringType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcCoveringType::IfcCoveringType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCoveringTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCoveringTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcCoveringType::IfcCoveringType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcCoveringType::IfcCoveringType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCoveringTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCoveringTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcCrewResource -boost::optional< ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value > Ifc4x3_add2::IfcCrewResource::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCrewResourceTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcCrewResourceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value > Ifc4x3_add2::IfcCrewResource::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCrewResourceTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcCrewResource::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcCrewResourceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcCrewResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[259]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCrewResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[259]); } const IfcParse::entity& Ifc4x3_add2::IfcCrewResource::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[259]); } -Ifc4x3_add2::IfcCrewResource::IfcCrewResource(IfcEntityInstanceData&& e) : IfcConstructionResource(std::move(e)) { } -Ifc4x3_add2::IfcCrewResource::IfcCrewResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); }set_attribute_value(7, v8_Usage ? v8_Usage->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v9_BaseCosts) {set_attribute_value(8, (*v9_BaseCosts)->generalize()); }set_attribute_value(9, v10_BaseQuantity ? v10_BaseQuantity->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcCrewResourceTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcCrewResource::IfcCrewResource(const std::weak_ptr& e) : IfcConstructionResource(e) { } +// Ifc4x3_add2::IfcCrewResource::IfcCrewResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime v8_Usage, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v10_BaseQuantity, std::optional< ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); } if (v8_Usage) {set_attribute_value(7, (*v8_Usage)); } if (v9_BaseCosts) {set_attribute_value(8, (*v9_BaseCosts)->generalize()); } if (v10_BaseQuantity) {set_attribute_value(9, (*v10_BaseQuantity)); } if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcCrewResourceTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } // Function implementations for IfcCrewResourceType ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value Ifc4x3_add2::IfcCrewResourceType::PredefinedType() const { return ::Ifc4x3_add2::IfcCrewResourceTypeEnum::FromString(get_attribute_value(11)); } -void Ifc4x3_add2::IfcCrewResourceType::setPredefinedType(::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcCrewResourceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } +void Ifc4x3_add2::IfcCrewResourceType::setPredefinedType(const ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value& v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcCrewResourceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } -const IfcParse::entity& Ifc4x3_add2::IfcCrewResourceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[260]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCrewResourceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[260]); } const IfcParse::entity& Ifc4x3_add2::IfcCrewResourceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[260]); } -Ifc4x3_add2::IfcCrewResourceType::IfcCrewResourceType(IfcEntityInstanceData&& e) : IfcConstructionResourceType(std::move(e)) { } -Ifc4x3_add2::IfcCrewResourceType::IfcCrewResourceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); } if (v10_BaseCosts) {set_attribute_value(9, (*v10_BaseCosts)->generalize()); }set_attribute_value(10, v11_BaseQuantity ? v11_BaseQuantity->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcCrewResourceTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcCrewResourceType::IfcCrewResourceType(const std::weak_ptr& e) : IfcConstructionResourceType(e) { } +// Ifc4x3_add2::IfcCrewResourceType::IfcCrewResourceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v11_BaseQuantity, ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); } if (v10_BaseCosts) {set_attribute_value(9, (*v10_BaseCosts)->generalize()); } if (v11_BaseQuantity) {set_attribute_value(10, (*v11_BaseQuantity)); }set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcCrewResourceTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } // Function implementations for IfcCsgPrimitive3D -::Ifc4x3_add2::IfcAxis2Placement3D* Ifc4x3_add2::IfcCsgPrimitive3D::Position() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcAxis2Placement3D>(true); } -void Ifc4x3_add2::IfcCsgPrimitive3D::setPosition(::Ifc4x3_add2::IfcAxis2Placement3D* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcAxis2Placement3D Ifc4x3_add2::IfcCsgPrimitive3D::Position() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcAxis2Placement3D>(); } +void Ifc4x3_add2::IfcCsgPrimitive3D::setPosition(const ::Ifc4x3_add2::IfcAxis2Placement3D& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcCsgPrimitive3D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[262]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCsgPrimitive3D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[262]); } const IfcParse::entity& Ifc4x3_add2::IfcCsgPrimitive3D::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[262]); } -Ifc4x3_add2::IfcCsgPrimitive3D::IfcCsgPrimitive3D(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcCsgPrimitive3D::IfcCsgPrimitive3D(::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcCsgPrimitive3D::IfcCsgPrimitive3D(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcCsgPrimitive3D::IfcCsgPrimitive3D(::Ifc4x3_add2::IfcAxis2Placement3D v1_Position) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Position));; populate_derived(); } // Function implementations for IfcCsgSolid -::Ifc4x3_add2::IfcCsgSelect* Ifc4x3_add2::IfcCsgSolid::TreeRootExpression() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCsgSelect>(true); } -void Ifc4x3_add2::IfcCsgSolid::setTreeRootExpression(::Ifc4x3_add2::IfcCsgSelect* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcCsgSelect Ifc4x3_add2::IfcCsgSolid::TreeRootExpression() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCsgSelect>(); } +void Ifc4x3_add2::IfcCsgSolid::setTreeRootExpression(const ::Ifc4x3_add2::IfcCsgSelect& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcCsgSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[264]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCsgSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[264]); } const IfcParse::entity& Ifc4x3_add2::IfcCsgSolid::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[264]); } -Ifc4x3_add2::IfcCsgSolid::IfcCsgSolid(IfcEntityInstanceData&& e) : IfcSolidModel(std::move(e)) { } -Ifc4x3_add2::IfcCsgSolid::IfcCsgSolid(::Ifc4x3_add2::IfcCsgSelect* v1_TreeRootExpression) : IfcSolidModel(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, v1_TreeRootExpression ? v1_TreeRootExpression->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcCsgSolid::IfcCsgSolid(const std::weak_ptr& e) : IfcSolidModel(e) { } +// Ifc4x3_add2::IfcCsgSolid::IfcCsgSolid(::Ifc4x3_add2::IfcCsgSelect v1_TreeRootExpression) : IfcSolidModel(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_TreeRootExpression));; populate_derived(); } // Function implementations for IfcCurrencyRelationship -::Ifc4x3_add2::IfcMonetaryUnit* Ifc4x3_add2::IfcCurrencyRelationship::RelatingMonetaryUnit() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcMonetaryUnit>(true); } -void Ifc4x3_add2::IfcCurrencyRelationship::setRelatingMonetaryUnit(::Ifc4x3_add2::IfcMonetaryUnit* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcMonetaryUnit* Ifc4x3_add2::IfcCurrencyRelationship::RelatedMonetaryUnit() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcMonetaryUnit>(true); } -void Ifc4x3_add2::IfcCurrencyRelationship::setRelatedMonetaryUnit(::Ifc4x3_add2::IfcMonetaryUnit* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcMonetaryUnit Ifc4x3_add2::IfcCurrencyRelationship::RelatingMonetaryUnit() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcMonetaryUnit>(); } +void Ifc4x3_add2::IfcCurrencyRelationship::setRelatingMonetaryUnit(const ::Ifc4x3_add2::IfcMonetaryUnit& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcMonetaryUnit Ifc4x3_add2::IfcCurrencyRelationship::RelatedMonetaryUnit() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcMonetaryUnit>(); } +void Ifc4x3_add2::IfcCurrencyRelationship::setRelatedMonetaryUnit(const ::Ifc4x3_add2::IfcMonetaryUnit& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcCurrencyRelationship::ExchangeRate() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcCurrencyRelationship::setExchangeRate(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -boost::optional< std::string > Ifc4x3_add2::IfcCurrencyRelationship::RateDateTime() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -::Ifc4x3_add2::IfcLibraryInformation* Ifc4x3_add2::IfcCurrencyRelationship::RateSource() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcLibraryInformation>(true); } -void Ifc4x3_add2::IfcCurrencyRelationship::setRateSource(::Ifc4x3_add2::IfcLibraryInformation* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +void Ifc4x3_add2::IfcCurrencyRelationship::setExchangeRate(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +std::optional< std::string > Ifc4x3_add2::IfcCurrencyRelationship::RateDateTime() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcCurrencyRelationship::setRateDateTime(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +::Ifc4x3_add2::IfcLibraryInformation Ifc4x3_add2::IfcCurrencyRelationship::RateSource() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcLibraryInformation{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcLibraryInformation>(); } +void Ifc4x3_add2::IfcCurrencyRelationship::setRateSource(const ::Ifc4x3_add2::IfcLibraryInformation& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcCurrencyRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[266]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCurrencyRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[266]); } const IfcParse::entity& Ifc4x3_add2::IfcCurrencyRelationship::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[266]); } -Ifc4x3_add2::IfcCurrencyRelationship::IfcCurrencyRelationship(IfcEntityInstanceData&& e) : IfcResourceLevelRelationship(std::move(e)) { } -Ifc4x3_add2::IfcCurrencyRelationship::IfcCurrencyRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMonetaryUnit* v3_RelatingMonetaryUnit, ::Ifc4x3_add2::IfcMonetaryUnit* v4_RelatedMonetaryUnit, double v5_ExchangeRate, boost::optional< std::string > v6_RateDateTime, ::Ifc4x3_add2::IfcLibraryInformation* v7_RateSource) : IfcResourceLevelRelationship(IfcEntityInstanceData(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_RelatingMonetaryUnit ? v3_RelatingMonetaryUnit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_RelatedMonetaryUnit ? v4_RelatedMonetaryUnit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, (v5_ExchangeRate)); if (v6_RateDateTime) {set_attribute_value(5, (*v6_RateDateTime)); }set_attribute_value(6, v7_RateSource ? v7_RateSource->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcCurrencyRelationship::IfcCurrencyRelationship(const std::weak_ptr& e) : IfcResourceLevelRelationship(e) { } +// Ifc4x3_add2::IfcCurrencyRelationship::IfcCurrencyRelationship(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMonetaryUnit v3_RelatingMonetaryUnit, ::Ifc4x3_add2::IfcMonetaryUnit v4_RelatedMonetaryUnit, double v5_ExchangeRate, std::optional< std::string > v6_RateDateTime, ::Ifc4x3_add2::IfcLibraryInformation v7_RateSource) : IfcResourceLevelRelationship(const std::weak_ptr&(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_RelatingMonetaryUnit));set_attribute_value(3, (v4_RelatedMonetaryUnit));set_attribute_value(4, (v5_ExchangeRate)); if (v6_RateDateTime) {set_attribute_value(5, (*v6_RateDateTime)); } if (v7_RateSource) {set_attribute_value(6, (*v7_RateSource)); }; populate_derived(); } // Function implementations for IfcCurtainWall -boost::optional< ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value > Ifc4x3_add2::IfcCurtainWall::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCurtainWallTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCurtainWallTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value > Ifc4x3_add2::IfcCurtainWall::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCurtainWallTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcCurtainWall::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcCurtainWallTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcCurtainWall::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[267]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCurtainWall::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[267]); } const IfcParse::entity& Ifc4x3_add2::IfcCurtainWall::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[267]); } -Ifc4x3_add2::IfcCurtainWall::IfcCurtainWall(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcCurtainWall::IfcCurtainWall(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCurtainWallTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcCurtainWall::IfcCurtainWall(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcCurtainWall::IfcCurtainWall(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcCurtainWallTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcCurtainWallType ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value Ifc4x3_add2::IfcCurtainWallType::PredefinedType() const { return ::Ifc4x3_add2::IfcCurtainWallTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcCurtainWallType::setPredefinedType(::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCurtainWallTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcCurtainWallType::setPredefinedType(const ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcCurtainWallTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcCurtainWallType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[268]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCurtainWallType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[268]); } const IfcParse::entity& Ifc4x3_add2::IfcCurtainWallType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[268]); } -Ifc4x3_add2::IfcCurtainWallType::IfcCurtainWallType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcCurtainWallType::IfcCurtainWallType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCurtainWallTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcCurtainWallType::IfcCurtainWallType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcCurtainWallType::IfcCurtainWallType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcCurtainWallTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcCurve -const IfcParse::entity& Ifc4x3_add2::IfcCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[271]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[271]); } const IfcParse::entity& Ifc4x3_add2::IfcCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[271]); } -Ifc4x3_add2::IfcCurve::IfcCurve(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcCurve::IfcCurve() : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcCurve::IfcCurve(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcCurve::IfcCurve() : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcCurveBoundedPlane -::Ifc4x3_add2::IfcPlane* Ifc4x3_add2::IfcCurveBoundedPlane::BasisSurface() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcPlane>(true); } -void Ifc4x3_add2::IfcCurveBoundedPlane::setBasisSurface(::Ifc4x3_add2::IfcPlane* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcCurveBoundedPlane::OuterBoundary() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcCurveBoundedPlane::setOuterBoundary(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr Ifc4x3_add2::IfcCurveBoundedPlane::InnerBoundaries() const { aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcCurve >(); } -void Ifc4x3_add2::IfcCurveBoundedPlane::setInnerBoundaries(aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr v) { set_attribute_value(2, (v)->generalize());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcPlane Ifc4x3_add2::IfcCurveBoundedPlane::BasisSurface() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcPlane>(); } +void Ifc4x3_add2::IfcCurveBoundedPlane::setBasisSurface(const ::Ifc4x3_add2::IfcPlane& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcCurveBoundedPlane::OuterBoundary() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcCurveBoundedPlane::setOuterBoundary(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::vector< ::Ifc4x3_add2::IfcCurve > Ifc4x3_add2::IfcCurveBoundedPlane::InnerBoundaries() const { std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcCurve>(es); } +void Ifc4x3_add2::IfcCurveBoundedPlane::setInnerBoundaries(const std::vector< ::Ifc4x3_add2::IfcCurve >& v) { set_attribute_value(2, cast_vector(v));if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcCurveBoundedPlane::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[272]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCurveBoundedPlane::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[272]); } const IfcParse::entity& Ifc4x3_add2::IfcCurveBoundedPlane::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[272]); } -Ifc4x3_add2::IfcCurveBoundedPlane::IfcCurveBoundedPlane(IfcEntityInstanceData&& e) : IfcBoundedSurface(std::move(e)) { } -Ifc4x3_add2::IfcCurveBoundedPlane::IfcCurveBoundedPlane(::Ifc4x3_add2::IfcPlane* v1_BasisSurface, ::Ifc4x3_add2::IfcCurve* v2_OuterBoundary, aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr v3_InnerBoundaries) : IfcBoundedSurface(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_BasisSurface ? v1_BasisSurface->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_OuterBoundary ? v2_OuterBoundary->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, (v3_InnerBoundaries)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcCurveBoundedPlane::IfcCurveBoundedPlane(const std::weak_ptr& e) : IfcBoundedSurface(e) { } +// Ifc4x3_add2::IfcCurveBoundedPlane::IfcCurveBoundedPlane(::Ifc4x3_add2::IfcPlane v1_BasisSurface, ::Ifc4x3_add2::IfcCurve v2_OuterBoundary, std::vector< ::Ifc4x3_add2::IfcCurve > v3_InnerBoundaries) : IfcBoundedSurface(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_BasisSurface));set_attribute_value(1, (v2_OuterBoundary));set_attribute_value(2, (v3_InnerBoundaries)->generalize());; populate_derived(); } // Function implementations for IfcCurveBoundedSurface -::Ifc4x3_add2::IfcSurface* Ifc4x3_add2::IfcCurveBoundedSurface::BasisSurface() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcSurface>(true); } -void Ifc4x3_add2::IfcCurveBoundedSurface::setBasisSurface(::Ifc4x3_add2::IfcSurface* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -aggregate_of< ::Ifc4x3_add2::IfcBoundaryCurve >::ptr Ifc4x3_add2::IfcCurveBoundedSurface::Boundaries() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcBoundaryCurve >(); } -void Ifc4x3_add2::IfcCurveBoundedSurface::setBoundaries(aggregate_of< ::Ifc4x3_add2::IfcBoundaryCurve >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcSurface Ifc4x3_add2::IfcCurveBoundedSurface::BasisSurface() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcSurface>(); } +void Ifc4x3_add2::IfcCurveBoundedSurface::setBasisSurface(const ::Ifc4x3_add2::IfcSurface& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcBoundaryCurve > Ifc4x3_add2::IfcCurveBoundedSurface::Boundaries() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcBoundaryCurve>(es); } +void Ifc4x3_add2::IfcCurveBoundedSurface::setBoundaries(const std::vector< ::Ifc4x3_add2::IfcBoundaryCurve >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } bool Ifc4x3_add2::IfcCurveBoundedSurface::ImplicitOuter() const { bool v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcCurveBoundedSurface::setImplicitOuter(bool v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcCurveBoundedSurface::setImplicitOuter(const bool& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcCurveBoundedSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[273]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCurveBoundedSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[273]); } const IfcParse::entity& Ifc4x3_add2::IfcCurveBoundedSurface::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[273]); } -Ifc4x3_add2::IfcCurveBoundedSurface::IfcCurveBoundedSurface(IfcEntityInstanceData&& e) : IfcBoundedSurface(std::move(e)) { } -Ifc4x3_add2::IfcCurveBoundedSurface::IfcCurveBoundedSurface(::Ifc4x3_add2::IfcSurface* v1_BasisSurface, aggregate_of< ::Ifc4x3_add2::IfcBoundaryCurve >::ptr v2_Boundaries, bool v3_ImplicitOuter) : IfcBoundedSurface(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_BasisSurface ? v1_BasisSurface->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Boundaries)->generalize());set_attribute_value(2, (v3_ImplicitOuter));; populate_derived(); } +// Ifc4x3_add2::IfcCurveBoundedSurface::IfcCurveBoundedSurface(const std::weak_ptr& e) : IfcBoundedSurface(e) { } +// Ifc4x3_add2::IfcCurveBoundedSurface::IfcCurveBoundedSurface(::Ifc4x3_add2::IfcSurface v1_BasisSurface, std::vector< ::Ifc4x3_add2::IfcBoundaryCurve > v2_Boundaries, bool v3_ImplicitOuter) : IfcBoundedSurface(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_BasisSurface));set_attribute_value(1, (v2_Boundaries)->generalize());set_attribute_value(2, (v3_ImplicitOuter));; populate_derived(); } // Function implementations for IfcCurveSegment -::Ifc4x3_add2::IfcPlacement* Ifc4x3_add2::IfcCurveSegment::Placement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcPlacement>(true); } -void Ifc4x3_add2::IfcCurveSegment::setPlacement(::Ifc4x3_add2::IfcPlacement* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcCurveMeasureSelect* Ifc4x3_add2::IfcCurveSegment::SegmentStart() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcCurveMeasureSelect>(true); } -void Ifc4x3_add2::IfcCurveSegment::setSegmentStart(::Ifc4x3_add2::IfcCurveMeasureSelect* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcCurveMeasureSelect* Ifc4x3_add2::IfcCurveSegment::SegmentLength() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcCurveMeasureSelect>(true); } -void Ifc4x3_add2::IfcCurveSegment::setSegmentLength(::Ifc4x3_add2::IfcCurveMeasureSelect* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcCurveSegment::ParentCurve() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcCurveSegment::setParentCurve(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcPlacement Ifc4x3_add2::IfcCurveSegment::Placement() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcPlacement>(); } +void Ifc4x3_add2::IfcCurveSegment::setPlacement(const ::Ifc4x3_add2::IfcPlacement& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcCurveMeasureSelect Ifc4x3_add2::IfcCurveSegment::SegmentStart() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcCurveMeasureSelect>(); } +void Ifc4x3_add2::IfcCurveSegment::setSegmentStart(const ::Ifc4x3_add2::IfcCurveMeasureSelect& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcCurveMeasureSelect Ifc4x3_add2::IfcCurveSegment::SegmentLength() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcCurveMeasureSelect>(); } +void Ifc4x3_add2::IfcCurveSegment::setSegmentLength(const ::Ifc4x3_add2::IfcCurveMeasureSelect& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcCurveSegment::ParentCurve() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcCurveSegment::setParentCurve(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcCurveSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[279]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCurveSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[279]); } const IfcParse::entity& Ifc4x3_add2::IfcCurveSegment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[279]); } -Ifc4x3_add2::IfcCurveSegment::IfcCurveSegment(IfcEntityInstanceData&& e) : IfcSegment(std::move(e)) { } -Ifc4x3_add2::IfcCurveSegment::IfcCurveSegment(::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition, ::Ifc4x3_add2::IfcPlacement* v2_Placement, ::Ifc4x3_add2::IfcCurveMeasureSelect* v3_SegmentStart, ::Ifc4x3_add2::IfcCurveMeasureSelect* v4_SegmentLength, ::Ifc4x3_add2::IfcCurve* v5_ParentCurve) : IfcSegment(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcTransitionCode::Class(),(size_t)v1_Transition)));set_attribute_value(1, v2_Placement ? v2_Placement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_SegmentStart ? v3_SegmentStart->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_SegmentLength ? v4_SegmentLength->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, v5_ParentCurve ? v5_ParentCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcCurveSegment::IfcCurveSegment(const std::weak_ptr& e) : IfcSegment(e) { } +// Ifc4x3_add2::IfcCurveSegment::IfcCurveSegment(::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition, ::Ifc4x3_add2::IfcPlacement v2_Placement, ::Ifc4x3_add2::IfcCurveMeasureSelect v3_SegmentStart, ::Ifc4x3_add2::IfcCurveMeasureSelect v4_SegmentLength, ::Ifc4x3_add2::IfcCurve v5_ParentCurve) : IfcSegment(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcTransitionCode::Class(),(size_t)v1_Transition)));set_attribute_value(1, (v2_Placement));set_attribute_value(2, (v3_SegmentStart));set_attribute_value(3, (v4_SegmentLength));set_attribute_value(4, (v5_ParentCurve));; populate_derived(); } // Function implementations for IfcCurveStyle -::Ifc4x3_add2::IfcCurveFontOrScaledCurveFontSelect* Ifc4x3_add2::IfcCurveStyle::CurveFont() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcCurveFontOrScaledCurveFontSelect>(true); } -void Ifc4x3_add2::IfcCurveStyle::setCurveFont(::Ifc4x3_add2::IfcCurveFontOrScaledCurveFontSelect* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcSizeSelect* Ifc4x3_add2::IfcCurveStyle::CurveWidth() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcSizeSelect>(true); } -void Ifc4x3_add2::IfcCurveStyle::setCurveWidth(::Ifc4x3_add2::IfcSizeSelect* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcColour* Ifc4x3_add2::IfcCurveStyle::CurveColour() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcColour>(true); } -void Ifc4x3_add2::IfcCurveStyle::setCurveColour(::Ifc4x3_add2::IfcColour* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -boost::optional< bool > Ifc4x3_add2::IfcCurveStyle::ModelOrDraughting() const { if(get_attribute_value(4).isNull()) { return boost::none; } bool v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +::Ifc4x3_add2::IfcCurveFontOrScaledCurveFontSelect Ifc4x3_add2::IfcCurveStyle::CurveFont() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcCurveFontOrScaledCurveFontSelect{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcCurveFontOrScaledCurveFontSelect>(); } +void Ifc4x3_add2::IfcCurveStyle::setCurveFont(const ::Ifc4x3_add2::IfcCurveFontOrScaledCurveFontSelect& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcSizeSelect Ifc4x3_add2::IfcCurveStyle::CurveWidth() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcSizeSelect{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcSizeSelect>(); } +void Ifc4x3_add2::IfcCurveStyle::setCurveWidth(const ::Ifc4x3_add2::IfcSizeSelect& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcColour Ifc4x3_add2::IfcCurveStyle::CurveColour() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcColour{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcColour>(); } +void Ifc4x3_add2::IfcCurveStyle::setCurveColour(const ::Ifc4x3_add2::IfcColour& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< bool > Ifc4x3_add2::IfcCurveStyle::ModelOrDraughting() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } bool v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcCurveStyle::setModelOrDraughting(const std::optional< bool >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcCurveStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[280]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCurveStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[280]); } const IfcParse::entity& Ifc4x3_add2::IfcCurveStyle::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[280]); } -Ifc4x3_add2::IfcCurveStyle::IfcCurveStyle(IfcEntityInstanceData&& e) : IfcPresentationStyle(std::move(e)) { } -Ifc4x3_add2::IfcCurveStyle::IfcCurveStyle(boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcCurveFontOrScaledCurveFontSelect* v2_CurveFont, ::Ifc4x3_add2::IfcSizeSelect* v3_CurveWidth, ::Ifc4x3_add2::IfcColour* v4_CurveColour, boost::optional< bool > v5_ModelOrDraughting) : IfcPresentationStyle(IfcEntityInstanceData(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, v2_CurveFont ? v2_CurveFont->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_CurveWidth ? v3_CurveWidth->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_CurveColour ? v4_CurveColour->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_ModelOrDraughting) {set_attribute_value(4, (*v5_ModelOrDraughting)); }; populate_derived(); } +// Ifc4x3_add2::IfcCurveStyle::IfcCurveStyle(const std::weak_ptr& e) : IfcPresentationStyle(e) { } +// Ifc4x3_add2::IfcCurveStyle::IfcCurveStyle(std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcCurveFontOrScaledCurveFontSelect v2_CurveFont, ::Ifc4x3_add2::IfcSizeSelect v3_CurveWidth, ::Ifc4x3_add2::IfcColour v4_CurveColour, std::optional< bool > v5_ModelOrDraughting) : IfcPresentationStyle(const std::weak_ptr&(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_CurveFont) {set_attribute_value(1, (*v2_CurveFont)); } if (v3_CurveWidth) {set_attribute_value(2, (*v3_CurveWidth)); } if (v4_CurveColour) {set_attribute_value(3, (*v4_CurveColour)); } if (v5_ModelOrDraughting) {set_attribute_value(4, (*v5_ModelOrDraughting)); }; populate_derived(); } // Function implementations for IfcCurveStyleFont -boost::optional< std::string > Ifc4x3_add2::IfcCurveStyleFont::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcCurveStyleFont::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -aggregate_of< ::Ifc4x3_add2::IfcCurveStyleFontPattern >::ptr Ifc4x3_add2::IfcCurveStyleFont::PatternList() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcCurveStyleFontPattern >(); } -void Ifc4x3_add2::IfcCurveStyleFont::setPatternList(aggregate_of< ::Ifc4x3_add2::IfcCurveStyleFontPattern >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } +std::optional< std::string > Ifc4x3_add2::IfcCurveStyleFont::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcCurveStyleFont::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::vector< ::Ifc4x3_add2::IfcCurveStyleFontPattern > Ifc4x3_add2::IfcCurveStyleFont::PatternList() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcCurveStyleFontPattern>(es); } +void Ifc4x3_add2::IfcCurveStyleFont::setPatternList(const std::vector< ::Ifc4x3_add2::IfcCurveStyleFontPattern >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcCurveStyleFont::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[281]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCurveStyleFont::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[281]); } const IfcParse::entity& Ifc4x3_add2::IfcCurveStyleFont::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[281]); } -Ifc4x3_add2::IfcCurveStyleFont::IfcCurveStyleFont(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcCurveStyleFont::IfcCurveStyleFont(boost::optional< std::string > v1_Name, aggregate_of< ::Ifc4x3_add2::IfcCurveStyleFontPattern >::ptr v2_PatternList) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(2))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (v2_PatternList)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcCurveStyleFont::IfcCurveStyleFont(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcCurveStyleFont::IfcCurveStyleFont(std::optional< std::string > v1_Name, std::vector< ::Ifc4x3_add2::IfcCurveStyleFontPattern > v2_PatternList) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(2))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (v2_PatternList)->generalize());; populate_derived(); } // Function implementations for IfcCurveStyleFontAndScaling -boost::optional< std::string > Ifc4x3_add2::IfcCurveStyleFontAndScaling::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -::Ifc4x3_add2::IfcCurveStyleFontSelect* Ifc4x3_add2::IfcCurveStyleFontAndScaling::CurveStyleFont() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcCurveStyleFontSelect>(true); } -void Ifc4x3_add2::IfcCurveStyleFontAndScaling::setCurveStyleFont(::Ifc4x3_add2::IfcCurveStyleFontSelect* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +std::optional< std::string > Ifc4x3_add2::IfcCurveStyleFontAndScaling::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcCurveStyleFontAndScaling::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +::Ifc4x3_add2::IfcCurveStyleFontSelect Ifc4x3_add2::IfcCurveStyleFontAndScaling::CurveStyleFont() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcCurveStyleFontSelect>(); } +void Ifc4x3_add2::IfcCurveStyleFontAndScaling::setCurveStyleFont(const ::Ifc4x3_add2::IfcCurveStyleFontSelect& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } double Ifc4x3_add2::IfcCurveStyleFontAndScaling::CurveFontScaling() const { double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcCurveStyleFontAndScaling::setCurveFontScaling(double v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcCurveStyleFontAndScaling::setCurveFontScaling(const double& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcCurveStyleFontAndScaling::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[282]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCurveStyleFontAndScaling::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[282]); } const IfcParse::entity& Ifc4x3_add2::IfcCurveStyleFontAndScaling::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[282]); } -Ifc4x3_add2::IfcCurveStyleFontAndScaling::IfcCurveStyleFontAndScaling(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcCurveStyleFontAndScaling::IfcCurveStyleFontAndScaling(boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcCurveStyleFontSelect* v2_CurveStyleFont, double v3_CurveFontScaling) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, v2_CurveStyleFont ? v2_CurveStyleFont->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, (v3_CurveFontScaling));; populate_derived(); } +// Ifc4x3_add2::IfcCurveStyleFontAndScaling::IfcCurveStyleFontAndScaling(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcCurveStyleFontAndScaling::IfcCurveStyleFontAndScaling(std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcCurveStyleFontSelect v2_CurveStyleFont, double v3_CurveFontScaling) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (v2_CurveStyleFont));set_attribute_value(2, (v3_CurveFontScaling));; populate_derived(); } // Function implementations for IfcCurveStyleFontPattern double Ifc4x3_add2::IfcCurveStyleFontPattern::VisibleSegmentLength() const { double v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcCurveStyleFontPattern::setVisibleSegmentLength(double v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcCurveStyleFontPattern::setVisibleSegmentLength(const double& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } double Ifc4x3_add2::IfcCurveStyleFontPattern::InvisibleSegmentLength() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcCurveStyleFontPattern::setInvisibleSegmentLength(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcCurveStyleFontPattern::setInvisibleSegmentLength(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcCurveStyleFontPattern::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[283]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCurveStyleFontPattern::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[283]); } const IfcParse::entity& Ifc4x3_add2::IfcCurveStyleFontPattern::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[283]); } -Ifc4x3_add2::IfcCurveStyleFontPattern::IfcCurveStyleFontPattern(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcCurveStyleFontPattern::IfcCurveStyleFontPattern(double v1_VisibleSegmentLength, double v2_InvisibleSegmentLength) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_VisibleSegmentLength));set_attribute_value(1, (v2_InvisibleSegmentLength));; populate_derived(); } +// Ifc4x3_add2::IfcCurveStyleFontPattern::IfcCurveStyleFontPattern(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcCurveStyleFontPattern::IfcCurveStyleFontPattern(double v1_VisibleSegmentLength, double v2_InvisibleSegmentLength) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_VisibleSegmentLength));set_attribute_value(1, (v2_InvisibleSegmentLength));; populate_derived(); } // Function implementations for IfcCylindricalSurface double Ifc4x3_add2::IfcCylindricalSurface::Radius() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcCylindricalSurface::setRadius(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcCylindricalSurface::setRadius(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcCylindricalSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[285]); } +// const IfcParse::entity& Ifc4x3_add2::IfcCylindricalSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[285]); } const IfcParse::entity& Ifc4x3_add2::IfcCylindricalSurface::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[285]); } -Ifc4x3_add2::IfcCylindricalSurface::IfcCylindricalSurface(IfcEntityInstanceData&& e) : IfcElementarySurface(std::move(e)) { } -Ifc4x3_add2::IfcCylindricalSurface::IfcCylindricalSurface(::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_Radius) : IfcElementarySurface(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Radius));; populate_derived(); } +// Ifc4x3_add2::IfcCylindricalSurface::IfcCylindricalSurface(const std::weak_ptr& e) : IfcElementarySurface(e) { } +// Ifc4x3_add2::IfcCylindricalSurface::IfcCylindricalSurface(::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_Radius) : IfcElementarySurface(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_Radius));; populate_derived(); } // Function implementations for IfcDamper -boost::optional< ::Ifc4x3_add2::IfcDamperTypeEnum::Value > Ifc4x3_add2::IfcDamper::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcDamperTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcDamper::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDamperTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDamperTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcDamperTypeEnum::Value > Ifc4x3_add2::IfcDamper::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcDamperTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcDamper::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDamperTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDamperTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcDamper::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[286]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDamper::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[286]); } const IfcParse::entity& Ifc4x3_add2::IfcDamper::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[286]); } -Ifc4x3_add2::IfcDamper::IfcDamper(IfcEntityInstanceData&& e) : IfcFlowController(std::move(e)) { } -Ifc4x3_add2::IfcDamper::IfcDamper(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcDamperTypeEnum::Value > v9_PredefinedType) : IfcFlowController(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDamperTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcDamper::IfcDamper(const std::weak_ptr& e) : IfcFlowController(e) { } +// Ifc4x3_add2::IfcDamper::IfcDamper(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcDamperTypeEnum::Value > v9_PredefinedType) : IfcFlowController(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDamperTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcDamperType ::Ifc4x3_add2::IfcDamperTypeEnum::Value Ifc4x3_add2::IfcDamperType::PredefinedType() const { return ::Ifc4x3_add2::IfcDamperTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcDamperType::setPredefinedType(::Ifc4x3_add2::IfcDamperTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDamperTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcDamperType::setPredefinedType(const ::Ifc4x3_add2::IfcDamperTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDamperTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcDamperType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[287]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDamperType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[287]); } const IfcParse::entity& Ifc4x3_add2::IfcDamperType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[287]); } -Ifc4x3_add2::IfcDamperType::IfcDamperType(IfcEntityInstanceData&& e) : IfcFlowControllerType(std::move(e)) { } -Ifc4x3_add2::IfcDamperType::IfcDamperType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDamperTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDamperTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcDamperType::IfcDamperType(const std::weak_ptr& e) : IfcFlowControllerType(e) { } +// Ifc4x3_add2::IfcDamperType::IfcDamperType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDamperTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDamperTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcDeepFoundation -const IfcParse::entity& Ifc4x3_add2::IfcDeepFoundation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[294]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDeepFoundation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[294]); } const IfcParse::entity& Ifc4x3_add2::IfcDeepFoundation::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[294]); } -Ifc4x3_add2::IfcDeepFoundation::IfcDeepFoundation(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcDeepFoundation::IfcDeepFoundation(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcDeepFoundation::IfcDeepFoundation(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcDeepFoundation::IfcDeepFoundation(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcDeepFoundationType -const IfcParse::entity& Ifc4x3_add2::IfcDeepFoundationType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[295]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDeepFoundationType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[295]); } const IfcParse::entity& Ifc4x3_add2::IfcDeepFoundationType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[295]); } -Ifc4x3_add2::IfcDeepFoundationType::IfcDeepFoundationType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcDeepFoundationType::IfcDeepFoundationType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcDeepFoundationType::IfcDeepFoundationType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcDeepFoundationType::IfcDeepFoundationType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcDerivedProfileDef -::Ifc4x3_add2::IfcProfileDef* Ifc4x3_add2::IfcDerivedProfileDef::ParentProfile() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcProfileDef>(true); } -void Ifc4x3_add2::IfcDerivedProfileDef::setParentProfile(::Ifc4x3_add2::IfcProfileDef* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcCartesianTransformationOperator2D* Ifc4x3_add2::IfcDerivedProfileDef::Operator() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcCartesianTransformationOperator2D>(true); } -void Ifc4x3_add2::IfcDerivedProfileDef::setOperator(::Ifc4x3_add2::IfcCartesianTransformationOperator2D* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcDerivedProfileDef::Label() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +::Ifc4x3_add2::IfcProfileDef Ifc4x3_add2::IfcDerivedProfileDef::ParentProfile() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcProfileDef>(); } +void Ifc4x3_add2::IfcDerivedProfileDef::setParentProfile(const ::Ifc4x3_add2::IfcProfileDef& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcCartesianTransformationOperator2D Ifc4x3_add2::IfcDerivedProfileDef::Operator() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcCartesianTransformationOperator2D>(); } +void Ifc4x3_add2::IfcDerivedProfileDef::setOperator(const ::Ifc4x3_add2::IfcCartesianTransformationOperator2D& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcDerivedProfileDef::Label() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcDerivedProfileDef::setLabel(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcDerivedProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[298]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDerivedProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[298]); } const IfcParse::entity& Ifc4x3_add2::IfcDerivedProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[298]); } -Ifc4x3_add2::IfcDerivedProfileDef::IfcDerivedProfileDef(IfcEntityInstanceData&& e) : IfcProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcDerivedProfileDef::IfcDerivedProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcProfileDef* v3_ParentProfile, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D* v4_Operator, boost::optional< std::string > v5_Label) : IfcProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_ParentProfile ? v3_ParentProfile->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_Operator ? v4_Operator->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_Label) {set_attribute_value(4, (*v5_Label)); }; populate_derived(); } +// Ifc4x3_add2::IfcDerivedProfileDef::IfcDerivedProfileDef(const std::weak_ptr& e) : IfcProfileDef(e) { } +// Ifc4x3_add2::IfcDerivedProfileDef::IfcDerivedProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcProfileDef v3_ParentProfile, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D v4_Operator, std::optional< std::string > v5_Label) : IfcProfileDef(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, (v3_ParentProfile));set_attribute_value(3, (v4_Operator)); if (v5_Label) {set_attribute_value(4, (*v5_Label)); }; populate_derived(); } // Function implementations for IfcDerivedUnit -aggregate_of< ::Ifc4x3_add2::IfcDerivedUnitElement >::ptr Ifc4x3_add2::IfcDerivedUnit::Elements() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcDerivedUnitElement >(); } -void Ifc4x3_add2::IfcDerivedUnit::setElements(aggregate_of< ::Ifc4x3_add2::IfcDerivedUnitElement >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcDerivedUnitElement > Ifc4x3_add2::IfcDerivedUnit::Elements() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcDerivedUnitElement>(es); } +void Ifc4x3_add2::IfcDerivedUnit::setElements(const std::vector< ::Ifc4x3_add2::IfcDerivedUnitElement >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } ::Ifc4x3_add2::IfcDerivedUnitEnum::Value Ifc4x3_add2::IfcDerivedUnit::UnitType() const { return ::Ifc4x3_add2::IfcDerivedUnitEnum::FromString(get_attribute_value(1)); } -void Ifc4x3_add2::IfcDerivedUnit::setUnitType(::Ifc4x3_add2::IfcDerivedUnitEnum::Value v) { set_attribute_value(1, EnumerationReference(&::Ifc4x3_add2::IfcDerivedUnitEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(1); } -boost::optional< std::string > Ifc4x3_add2::IfcDerivedUnit::UserDefinedType() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< std::string > Ifc4x3_add2::IfcDerivedUnit::Name() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcDerivedUnit::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +void Ifc4x3_add2::IfcDerivedUnit::setUnitType(const ::Ifc4x3_add2::IfcDerivedUnitEnum::Value& v) { set_attribute_value(1, EnumerationReference(&::Ifc4x3_add2::IfcDerivedUnitEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(1); } +std::optional< std::string > Ifc4x3_add2::IfcDerivedUnit::UserDefinedType() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcDerivedUnit::setUserDefinedType(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::string > Ifc4x3_add2::IfcDerivedUnit::Name() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcDerivedUnit::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -const IfcParse::entity& Ifc4x3_add2::IfcDerivedUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[299]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDerivedUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[299]); } const IfcParse::entity& Ifc4x3_add2::IfcDerivedUnit::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[299]); } -Ifc4x3_add2::IfcDerivedUnit::IfcDerivedUnit(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcDerivedUnit::IfcDerivedUnit(aggregate_of< ::Ifc4x3_add2::IfcDerivedUnitElement >::ptr v1_Elements, ::Ifc4x3_add2::IfcDerivedUnitEnum::Value v2_UnitType, boost::optional< std::string > v3_UserDefinedType, boost::optional< std::string > v4_Name) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Elements)->generalize());set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDerivedUnitEnum::Class(),(size_t)v2_UnitType))); if (v3_UserDefinedType) {set_attribute_value(2, (*v3_UserDefinedType)); } if (v4_Name) {set_attribute_value(3, (*v4_Name)); }; populate_derived(); } +// Ifc4x3_add2::IfcDerivedUnit::IfcDerivedUnit(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcDerivedUnit::IfcDerivedUnit(std::vector< ::Ifc4x3_add2::IfcDerivedUnitElement > v1_Elements, ::Ifc4x3_add2::IfcDerivedUnitEnum::Value v2_UnitType, std::optional< std::string > v3_UserDefinedType, std::optional< std::string > v4_Name) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Elements)->generalize());set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDerivedUnitEnum::Class(),(size_t)v2_UnitType))); if (v3_UserDefinedType) {set_attribute_value(2, (*v3_UserDefinedType)); } if (v4_Name) {set_attribute_value(3, (*v4_Name)); }; populate_derived(); } // Function implementations for IfcDerivedUnitElement -::Ifc4x3_add2::IfcNamedUnit* Ifc4x3_add2::IfcDerivedUnitElement::Unit() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcNamedUnit>(true); } -void Ifc4x3_add2::IfcDerivedUnitElement::setUnit(::Ifc4x3_add2::IfcNamedUnit* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcNamedUnit Ifc4x3_add2::IfcDerivedUnitElement::Unit() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcNamedUnit>(); } +void Ifc4x3_add2::IfcDerivedUnitElement::setUnit(const ::Ifc4x3_add2::IfcNamedUnit& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } int Ifc4x3_add2::IfcDerivedUnitElement::Exponent() const { int v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcDerivedUnitElement::setExponent(int v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcDerivedUnitElement::setExponent(const int& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcDerivedUnitElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[300]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDerivedUnitElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[300]); } const IfcParse::entity& Ifc4x3_add2::IfcDerivedUnitElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[300]); } -Ifc4x3_add2::IfcDerivedUnitElement::IfcDerivedUnitElement(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcDerivedUnitElement::IfcDerivedUnitElement(::Ifc4x3_add2::IfcNamedUnit* v1_Unit, int v2_Exponent) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Unit ? v1_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Exponent));; populate_derived(); } +// Ifc4x3_add2::IfcDerivedUnitElement::IfcDerivedUnitElement(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcDerivedUnitElement::IfcDerivedUnitElement(::Ifc4x3_add2::IfcNamedUnit v1_Unit, int v2_Exponent) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Unit));set_attribute_value(1, (v2_Exponent));; populate_derived(); } // Function implementations for IfcDimensionalExponents int Ifc4x3_add2::IfcDimensionalExponents::LengthExponent() const { int v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcDimensionalExponents::setLengthExponent(int v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcDimensionalExponents::setLengthExponent(const int& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } int Ifc4x3_add2::IfcDimensionalExponents::MassExponent() const { int v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcDimensionalExponents::setMassExponent(int v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcDimensionalExponents::setMassExponent(const int& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } int Ifc4x3_add2::IfcDimensionalExponents::TimeExponent() const { int v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcDimensionalExponents::setTimeExponent(int v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcDimensionalExponents::setTimeExponent(const int& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } int Ifc4x3_add2::IfcDimensionalExponents::ElectricCurrentExponent() const { int v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcDimensionalExponents::setElectricCurrentExponent(int v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcDimensionalExponents::setElectricCurrentExponent(const int& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } int Ifc4x3_add2::IfcDimensionalExponents::ThermodynamicTemperatureExponent() const { int v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcDimensionalExponents::setThermodynamicTemperatureExponent(int v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcDimensionalExponents::setThermodynamicTemperatureExponent(const int& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } int Ifc4x3_add2::IfcDimensionalExponents::AmountOfSubstanceExponent() const { int v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcDimensionalExponents::setAmountOfSubstanceExponent(int v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcDimensionalExponents::setAmountOfSubstanceExponent(const int& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } int Ifc4x3_add2::IfcDimensionalExponents::LuminousIntensityExponent() const { int v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcDimensionalExponents::setLuminousIntensityExponent(int v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +void Ifc4x3_add2::IfcDimensionalExponents::setLuminousIntensityExponent(const int& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcDimensionalExponents::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[303]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDimensionalExponents::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[303]); } const IfcParse::entity& Ifc4x3_add2::IfcDimensionalExponents::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[303]); } -Ifc4x3_add2::IfcDimensionalExponents::IfcDimensionalExponents(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcDimensionalExponents::IfcDimensionalExponents(int v1_LengthExponent, int v2_MassExponent, int v3_TimeExponent, int v4_ElectricCurrentExponent, int v5_ThermodynamicTemperatureExponent, int v6_AmountOfSubstanceExponent, int v7_LuminousIntensityExponent) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_LengthExponent));set_attribute_value(1, (v2_MassExponent));set_attribute_value(2, (v3_TimeExponent));set_attribute_value(3, (v4_ElectricCurrentExponent));set_attribute_value(4, (v5_ThermodynamicTemperatureExponent));set_attribute_value(5, (v6_AmountOfSubstanceExponent));set_attribute_value(6, (v7_LuminousIntensityExponent));; populate_derived(); } +// Ifc4x3_add2::IfcDimensionalExponents::IfcDimensionalExponents(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcDimensionalExponents::IfcDimensionalExponents(int v1_LengthExponent, int v2_MassExponent, int v3_TimeExponent, int v4_ElectricCurrentExponent, int v5_ThermodynamicTemperatureExponent, int v6_AmountOfSubstanceExponent, int v7_LuminousIntensityExponent) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_LengthExponent));set_attribute_value(1, (v2_MassExponent));set_attribute_value(2, (v3_TimeExponent));set_attribute_value(3, (v4_ElectricCurrentExponent));set_attribute_value(4, (v5_ThermodynamicTemperatureExponent));set_attribute_value(5, (v6_AmountOfSubstanceExponent));set_attribute_value(6, (v7_LuminousIntensityExponent));; populate_derived(); } // Function implementations for IfcDirection std::vector< double > /*[2:3]*/ Ifc4x3_add2::IfcDirection::DirectionRatios() const { std::vector< double > /*[2:3]*/ v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcDirection::setDirectionRatios(std::vector< double > /*[2:3]*/ v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcDirection::setDirectionRatios(const std::vector< double > /*[2:3]*/& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcDirection::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[305]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDirection::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[305]); } const IfcParse::entity& Ifc4x3_add2::IfcDirection::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[305]); } -Ifc4x3_add2::IfcDirection::IfcDirection(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcDirection::IfcDirection(std::vector< double > /*[2:3]*/ v1_DirectionRatios) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_DirectionRatios));; populate_derived(); } +// Ifc4x3_add2::IfcDirection::IfcDirection(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcDirection::IfcDirection(std::vector< double > /*[2:3]*/ v1_DirectionRatios) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_DirectionRatios));; populate_derived(); } // Function implementations for IfcDirectrixCurveSweptAreaSolid -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::Directrix() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::setDirectrix(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcCurveMeasureSelect* Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::StartParam() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcCurveMeasureSelect>(true); } -void Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::setStartParam(::Ifc4x3_add2::IfcCurveMeasureSelect* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -::Ifc4x3_add2::IfcCurveMeasureSelect* Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::EndParam() const { if(get_attribute_value(4).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcCurveMeasureSelect>(true); } -void Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::setEndParam(::Ifc4x3_add2::IfcCurveMeasureSelect* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::Directrix() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::setDirectrix(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcCurveMeasureSelect Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::StartParam() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcCurveMeasureSelect{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcCurveMeasureSelect>(); } +void Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::setStartParam(const ::Ifc4x3_add2::IfcCurveMeasureSelect& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcCurveMeasureSelect Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::EndParam() const { if(get_attribute_value(4).isNull()) { return ::Ifc4x3_add2::IfcCurveMeasureSelect{}; } return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcCurveMeasureSelect>(); } +void Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::setEndParam(const ::Ifc4x3_add2::IfcCurveMeasureSelect& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[307]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[307]); } const IfcParse::entity& Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[307]); } -Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::IfcDirectrixCurveSweptAreaSolid(IfcEntityInstanceData&& e) : IfcSweptAreaSolid(std::move(e)) { } -Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::IfcDirectrixCurveSweptAreaSolid(::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcCurve* v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect* v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect* v5_EndParam) : IfcSweptAreaSolid(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_SweptArea ? v1_SweptArea->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Position ? v2_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_Directrix ? v3_Directrix->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_StartParam ? v4_StartParam->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, v5_EndParam ? v5_EndParam->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::IfcDirectrixCurveSweptAreaSolid(const std::weak_ptr& e) : IfcSweptAreaSolid(e) { } +// Ifc4x3_add2::IfcDirectrixCurveSweptAreaSolid::IfcDirectrixCurveSweptAreaSolid(::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcCurve v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect v5_EndParam) : IfcSweptAreaSolid(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_SweptArea)); if (v2_Position) {set_attribute_value(1, (*v2_Position)); }set_attribute_value(2, (v3_Directrix)); if (v4_StartParam) {set_attribute_value(3, (*v4_StartParam)); } if (v5_EndParam) {set_attribute_value(4, (*v5_EndParam)); }; populate_derived(); } // Function implementations for IfcDirectrixDerivedReferenceSweptAreaSolid -const IfcParse::entity& Ifc4x3_add2::IfcDirectrixDerivedReferenceSweptAreaSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[308]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDirectrixDerivedReferenceSweptAreaSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[308]); } const IfcParse::entity& Ifc4x3_add2::IfcDirectrixDerivedReferenceSweptAreaSolid::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[308]); } -Ifc4x3_add2::IfcDirectrixDerivedReferenceSweptAreaSolid::IfcDirectrixDerivedReferenceSweptAreaSolid(IfcEntityInstanceData&& e) : IfcFixedReferenceSweptAreaSolid(std::move(e)) { } -Ifc4x3_add2::IfcDirectrixDerivedReferenceSweptAreaSolid::IfcDirectrixDerivedReferenceSweptAreaSolid(::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcCurve* v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect* v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect* v5_EndParam, ::Ifc4x3_add2::IfcDirection* v6_FixedReference) : IfcFixedReferenceSweptAreaSolid(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, v1_SweptArea ? v1_SweptArea->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Position ? v2_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_Directrix ? v3_Directrix->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_StartParam ? v4_StartParam->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, v5_EndParam ? v5_EndParam->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_FixedReference ? v6_FixedReference->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcDirectrixDerivedReferenceSweptAreaSolid::IfcDirectrixDerivedReferenceSweptAreaSolid(const std::weak_ptr& e) : IfcFixedReferenceSweptAreaSolid(e) { } +// Ifc4x3_add2::IfcDirectrixDerivedReferenceSweptAreaSolid::IfcDirectrixDerivedReferenceSweptAreaSolid(::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcCurve v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect v5_EndParam, ::Ifc4x3_add2::IfcDirection v6_FixedReference) : IfcFixedReferenceSweptAreaSolid(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_SweptArea)); if (v2_Position) {set_attribute_value(1, (*v2_Position)); }set_attribute_value(2, (v3_Directrix)); if (v4_StartParam) {set_attribute_value(3, (*v4_StartParam)); } if (v5_EndParam) {set_attribute_value(4, (*v5_EndParam)); }set_attribute_value(5, (v6_FixedReference));; populate_derived(); } // Function implementations for IfcDiscreteAccessory -boost::optional< ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value > Ifc4x3_add2::IfcDiscreteAccessory::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value > Ifc4x3_add2::IfcDiscreteAccessory::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcDiscreteAccessory::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcDiscreteAccessory::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[309]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDiscreteAccessory::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[309]); } const IfcParse::entity& Ifc4x3_add2::IfcDiscreteAccessory::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[309]); } -Ifc4x3_add2::IfcDiscreteAccessory::IfcDiscreteAccessory(IfcEntityInstanceData&& e) : IfcElementComponent(std::move(e)) { } -Ifc4x3_add2::IfcDiscreteAccessory::IfcDiscreteAccessory(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value > v9_PredefinedType) : IfcElementComponent(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcDiscreteAccessory::IfcDiscreteAccessory(const std::weak_ptr& e) : IfcElementComponent(e) { } +// Ifc4x3_add2::IfcDiscreteAccessory::IfcDiscreteAccessory(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value > v9_PredefinedType) : IfcElementComponent(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcDiscreteAccessoryType ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value Ifc4x3_add2::IfcDiscreteAccessoryType::PredefinedType() const { return ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcDiscreteAccessoryType::setPredefinedType(::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcDiscreteAccessoryType::setPredefinedType(const ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcDiscreteAccessoryType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[310]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDiscreteAccessoryType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[310]); } const IfcParse::entity& Ifc4x3_add2::IfcDiscreteAccessoryType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[310]); } -Ifc4x3_add2::IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(IfcEntityInstanceData&& e) : IfcElementComponentType(std::move(e)) { } -Ifc4x3_add2::IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value v10_PredefinedType) : IfcElementComponentType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(const std::weak_ptr& e) : IfcElementComponentType(e) { } +// Ifc4x3_add2::IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value v10_PredefinedType) : IfcElementComponentType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcDistributionBoard -boost::optional< ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value > Ifc4x3_add2::IfcDistributionBoard::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value > Ifc4x3_add2::IfcDistributionBoard::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcDistributionBoard::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcDistributionBoard::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[312]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDistributionBoard::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[312]); } const IfcParse::entity& Ifc4x3_add2::IfcDistributionBoard::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[312]); } -Ifc4x3_add2::IfcDistributionBoard::IfcDistributionBoard(IfcEntityInstanceData&& e) : IfcFlowController(std::move(e)) { } -Ifc4x3_add2::IfcDistributionBoard::IfcDistributionBoard(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value > v9_PredefinedType) : IfcFlowController(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcDistributionBoard::IfcDistributionBoard(const std::weak_ptr& e) : IfcFlowController(e) { } +// Ifc4x3_add2::IfcDistributionBoard::IfcDistributionBoard(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value > v9_PredefinedType) : IfcFlowController(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcDistributionBoardType ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value Ifc4x3_add2::IfcDistributionBoardType::PredefinedType() const { return ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcDistributionBoardType::setPredefinedType(::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcDistributionBoardType::setPredefinedType(const ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcDistributionBoardType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[313]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDistributionBoardType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[313]); } const IfcParse::entity& Ifc4x3_add2::IfcDistributionBoardType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[313]); } -Ifc4x3_add2::IfcDistributionBoardType::IfcDistributionBoardType(IfcEntityInstanceData&& e) : IfcFlowControllerType(std::move(e)) { } -Ifc4x3_add2::IfcDistributionBoardType::IfcDistributionBoardType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcDistributionBoardType::IfcDistributionBoardType(const std::weak_ptr& e) : IfcFlowControllerType(e) { } +// Ifc4x3_add2::IfcDistributionBoardType::IfcDistributionBoardType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcDistributionChamberElement -boost::optional< ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value > Ifc4x3_add2::IfcDistributionChamberElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value > Ifc4x3_add2::IfcDistributionChamberElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcDistributionChamberElement::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcDistributionChamberElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[315]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDistributionChamberElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[315]); } const IfcParse::entity& Ifc4x3_add2::IfcDistributionChamberElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[315]); } -Ifc4x3_add2::IfcDistributionChamberElement::IfcDistributionChamberElement(IfcEntityInstanceData&& e) : IfcDistributionFlowElement(std::move(e)) { } -Ifc4x3_add2::IfcDistributionChamberElement::IfcDistributionChamberElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value > v9_PredefinedType) : IfcDistributionFlowElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcDistributionChamberElement::IfcDistributionChamberElement(const std::weak_ptr& e) : IfcDistributionFlowElement(e) { } +// Ifc4x3_add2::IfcDistributionChamberElement::IfcDistributionChamberElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value > v9_PredefinedType) : IfcDistributionFlowElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcDistributionChamberElementType ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value Ifc4x3_add2::IfcDistributionChamberElementType::PredefinedType() const { return ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcDistributionChamberElementType::setPredefinedType(::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcDistributionChamberElementType::setPredefinedType(const ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcDistributionChamberElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[316]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDistributionChamberElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[316]); } const IfcParse::entity& Ifc4x3_add2::IfcDistributionChamberElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[316]); } -Ifc4x3_add2::IfcDistributionChamberElementType::IfcDistributionChamberElementType(IfcEntityInstanceData&& e) : IfcDistributionFlowElementType(std::move(e)) { } -Ifc4x3_add2::IfcDistributionChamberElementType::IfcDistributionChamberElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value v10_PredefinedType) : IfcDistributionFlowElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcDistributionChamberElementType::IfcDistributionChamberElementType(const std::weak_ptr& e) : IfcDistributionFlowElementType(e) { } +// Ifc4x3_add2::IfcDistributionChamberElementType::IfcDistributionChamberElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value v10_PredefinedType) : IfcDistributionFlowElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcDistributionCircuit -const IfcParse::entity& Ifc4x3_add2::IfcDistributionCircuit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[318]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDistributionCircuit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[318]); } const IfcParse::entity& Ifc4x3_add2::IfcDistributionCircuit::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[318]); } -Ifc4x3_add2::IfcDistributionCircuit::IfcDistributionCircuit(IfcEntityInstanceData&& e) : IfcDistributionSystem(std::move(e)) { } -Ifc4x3_add2::IfcDistributionCircuit::IfcDistributionCircuit(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v7_PredefinedType) : IfcDistributionSystem(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_LongName) {set_attribute_value(5, (*v6_LongName)); } if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionSystemEnum::Class(),(size_t)*v7_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcDistributionCircuit::IfcDistributionCircuit(const std::weak_ptr& e) : IfcDistributionSystem(e) { } +// Ifc4x3_add2::IfcDistributionCircuit::IfcDistributionCircuit(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_LongName, std::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v7_PredefinedType) : IfcDistributionSystem(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_LongName) {set_attribute_value(5, (*v6_LongName)); } if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionSystemEnum::Class(),(size_t)*v7_PredefinedType))); }; populate_derived(); } // Function implementations for IfcDistributionControlElement -::Ifc4x3_add2::IfcRelFlowControlElements::list::ptr Ifc4x3_add2::IfcDistributionControlElement::AssignedToFlowElement() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[937], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelFlowControlElements> Ifc4x3_add2::IfcDistributionControlElement::AssignedToFlowElement() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[937], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcDistributionControlElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[319]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDistributionControlElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[319]); } const IfcParse::entity& Ifc4x3_add2::IfcDistributionControlElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[319]); } -Ifc4x3_add2::IfcDistributionControlElement::IfcDistributionControlElement(IfcEntityInstanceData&& e) : IfcDistributionElement(std::move(e)) { } -Ifc4x3_add2::IfcDistributionControlElement::IfcDistributionControlElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcDistributionControlElement::IfcDistributionControlElement(const std::weak_ptr& e) : IfcDistributionElement(e) { } +// Ifc4x3_add2::IfcDistributionControlElement::IfcDistributionControlElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcDistributionElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcDistributionControlElementType -const IfcParse::entity& Ifc4x3_add2::IfcDistributionControlElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[320]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDistributionControlElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[320]); } const IfcParse::entity& Ifc4x3_add2::IfcDistributionControlElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[320]); } -Ifc4x3_add2::IfcDistributionControlElementType::IfcDistributionControlElementType(IfcEntityInstanceData&& e) : IfcDistributionElementType(std::move(e)) { } -Ifc4x3_add2::IfcDistributionControlElementType::IfcDistributionControlElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcDistributionControlElementType::IfcDistributionControlElementType(const std::weak_ptr& e) : IfcDistributionElementType(e) { } +// Ifc4x3_add2::IfcDistributionControlElementType::IfcDistributionControlElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcDistributionElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcDistributionElement -::Ifc4x3_add2::IfcRelConnectsPortToElement::list::ptr Ifc4x3_add2::IfcDistributionElement::HasPorts() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[921], 5)->as(); } +std::vector<::Ifc4x3_add2::IfcRelConnectsPortToElement> Ifc4x3_add2::IfcDistributionElement::HasPorts() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[921], 5)); } -const IfcParse::entity& Ifc4x3_add2::IfcDistributionElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[321]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDistributionElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[321]); } const IfcParse::entity& Ifc4x3_add2::IfcDistributionElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[321]); } -Ifc4x3_add2::IfcDistributionElement::IfcDistributionElement(IfcEntityInstanceData&& e) : IfcElement(std::move(e)) { } -Ifc4x3_add2::IfcDistributionElement::IfcDistributionElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcDistributionElement::IfcDistributionElement(const std::weak_ptr& e) : IfcElement(e) { } +// Ifc4x3_add2::IfcDistributionElement::IfcDistributionElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcDistributionElementType -const IfcParse::entity& Ifc4x3_add2::IfcDistributionElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[322]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDistributionElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[322]); } const IfcParse::entity& Ifc4x3_add2::IfcDistributionElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[322]); } -Ifc4x3_add2::IfcDistributionElementType::IfcDistributionElementType(IfcEntityInstanceData&& e) : IfcElementType(std::move(e)) { } -Ifc4x3_add2::IfcDistributionElementType::IfcDistributionElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcDistributionElementType::IfcDistributionElementType(const std::weak_ptr& e) : IfcElementType(e) { } +// Ifc4x3_add2::IfcDistributionElementType::IfcDistributionElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcDistributionFlowElement -::Ifc4x3_add2::IfcRelFlowControlElements::list::ptr Ifc4x3_add2::IfcDistributionFlowElement::HasControlElements() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[937], 5)->as(); } +std::vector<::Ifc4x3_add2::IfcRelFlowControlElements> Ifc4x3_add2::IfcDistributionFlowElement::HasControlElements() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[937], 5)); } -const IfcParse::entity& Ifc4x3_add2::IfcDistributionFlowElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[323]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDistributionFlowElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[323]); } const IfcParse::entity& Ifc4x3_add2::IfcDistributionFlowElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[323]); } -Ifc4x3_add2::IfcDistributionFlowElement::IfcDistributionFlowElement(IfcEntityInstanceData&& e) : IfcDistributionElement(std::move(e)) { } -Ifc4x3_add2::IfcDistributionFlowElement::IfcDistributionFlowElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcDistributionFlowElement::IfcDistributionFlowElement(const std::weak_ptr& e) : IfcDistributionElement(e) { } +// Ifc4x3_add2::IfcDistributionFlowElement::IfcDistributionFlowElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcDistributionElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcDistributionFlowElementType -const IfcParse::entity& Ifc4x3_add2::IfcDistributionFlowElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[324]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDistributionFlowElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[324]); } const IfcParse::entity& Ifc4x3_add2::IfcDistributionFlowElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[324]); } -Ifc4x3_add2::IfcDistributionFlowElementType::IfcDistributionFlowElementType(IfcEntityInstanceData&& e) : IfcDistributionElementType(std::move(e)) { } -Ifc4x3_add2::IfcDistributionFlowElementType::IfcDistributionFlowElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcDistributionFlowElementType::IfcDistributionFlowElementType(const std::weak_ptr& e) : IfcDistributionElementType(e) { } +// Ifc4x3_add2::IfcDistributionFlowElementType::IfcDistributionFlowElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcDistributionElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcDistributionPort -boost::optional< ::Ifc4x3_add2::IfcFlowDirectionEnum::Value > Ifc4x3_add2::IfcDistributionPort::FlowDirection() const { if(get_attribute_value(7).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcFlowDirectionEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4x3_add2::IfcFlowDirectionEnum::Value > v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcFlowDirectionEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } -boost::optional< ::Ifc4x3_add2::IfcDistributionPortTypeEnum::Value > Ifc4x3_add2::IfcDistributionPort::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcDistributionPortTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDistributionPortTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDistributionPortTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -boost::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > Ifc4x3_add2::IfcDistributionPort::SystemType() const { if(get_attribute_value(9).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcDistributionSystemEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDistributionSystemEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } +std::optional< ::Ifc4x3_add2::IfcFlowDirectionEnum::Value > Ifc4x3_add2::IfcDistributionPort::FlowDirection() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcFlowDirectionEnum::FromString(get_attribute_value(7)); } +void Ifc4x3_add2::IfcDistributionPort::setFlowDirection(const std::optional< ::Ifc4x3_add2::IfcFlowDirectionEnum::Value >& v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcFlowDirectionEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } +std::optional< ::Ifc4x3_add2::IfcDistributionPortTypeEnum::Value > Ifc4x3_add2::IfcDistributionPort::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcDistributionPortTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcDistributionPort::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDistributionPortTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDistributionPortTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > Ifc4x3_add2::IfcDistributionPort::SystemType() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcDistributionSystemEnum::FromString(get_attribute_value(9)); } +void Ifc4x3_add2::IfcDistributionPort::setSystemType(const std::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value >& v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDistributionSystemEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcDistributionPort::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[325]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDistributionPort::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[325]); } const IfcParse::entity& Ifc4x3_add2::IfcDistributionPort::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[325]); } -Ifc4x3_add2::IfcDistributionPort::IfcDistributionPort(IfcEntityInstanceData&& e) : IfcPort(std::move(e)) { } -Ifc4x3_add2::IfcDistributionPort::IfcDistributionPort(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc4x3_add2::IfcFlowDirectionEnum::Value > v8_FlowDirection, boost::optional< ::Ifc4x3_add2::IfcDistributionPortTypeEnum::Value > v9_PredefinedType, boost::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v10_SystemType) : IfcPort(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_FlowDirection) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcFlowDirectionEnum::Class(),(size_t)*v8_FlowDirection))); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionPortTypeEnum::Class(),(size_t)*v9_PredefinedType))); } if (v10_SystemType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionSystemEnum::Class(),(size_t)*v10_SystemType))); }; populate_derived(); } +// Ifc4x3_add2::IfcDistributionPort::IfcDistributionPort(const std::weak_ptr& e) : IfcPort(e) { } +// Ifc4x3_add2::IfcDistributionPort::IfcDistributionPort(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< ::Ifc4x3_add2::IfcFlowDirectionEnum::Value > v8_FlowDirection, std::optional< ::Ifc4x3_add2::IfcDistributionPortTypeEnum::Value > v9_PredefinedType, std::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v10_SystemType) : IfcPort(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_FlowDirection) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcFlowDirectionEnum::Class(),(size_t)*v8_FlowDirection))); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionPortTypeEnum::Class(),(size_t)*v9_PredefinedType))); } if (v10_SystemType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionSystemEnum::Class(),(size_t)*v10_SystemType))); }; populate_derived(); } // Function implementations for IfcDistributionSystem -boost::optional< std::string > Ifc4x3_add2::IfcDistributionSystem::LongName() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > Ifc4x3_add2::IfcDistributionSystem::PredefinedType() const { if(get_attribute_value(6).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcDistributionSystemEnum::FromString(get_attribute_value(6)); } -void Ifc4x3_add2::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v) { if (v) {set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcDistributionSystemEnum::Class(), (size_t) *v));} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcDistributionSystem::LongName() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcDistributionSystem::setLongName(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > Ifc4x3_add2::IfcDistributionSystem::PredefinedType() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcDistributionSystemEnum::FromString(get_attribute_value(6)); } +void Ifc4x3_add2::IfcDistributionSystem::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value >& v) { if (v) {set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcDistributionSystemEnum::Class(), (size_t) *v));} else {unset_attribute_value(6);} } -const IfcParse::entity& Ifc4x3_add2::IfcDistributionSystem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[327]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDistributionSystem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[327]); } const IfcParse::entity& Ifc4x3_add2::IfcDistributionSystem::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[327]); } -Ifc4x3_add2::IfcDistributionSystem::IfcDistributionSystem(IfcEntityInstanceData&& e) : IfcSystem(std::move(e)) { } -Ifc4x3_add2::IfcDistributionSystem::IfcDistributionSystem(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v7_PredefinedType) : IfcSystem(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_LongName) {set_attribute_value(5, (*v6_LongName)); } if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionSystemEnum::Class(),(size_t)*v7_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcDistributionSystem::IfcDistributionSystem(const std::weak_ptr& e) : IfcSystem(e) { } +// Ifc4x3_add2::IfcDistributionSystem::IfcDistributionSystem(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_LongName, std::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v7_PredefinedType) : IfcSystem(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_LongName) {set_attribute_value(5, (*v6_LongName)); } if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcDistributionSystemEnum::Class(),(size_t)*v7_PredefinedType))); }; populate_derived(); } // Function implementations for IfcDocumentInformation std::string Ifc4x3_add2::IfcDocumentInformation::Identification() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcDocumentInformation::setIdentification(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcDocumentInformation::setIdentification(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } std::string Ifc4x3_add2::IfcDocumentInformation::Name() const { std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcDocumentInformation::setName(std::string v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -boost::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::Description() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::Location() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::Purpose() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::IntendedUse() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::Scope() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcDocumentInformation::setScope(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::Revision() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -::Ifc4x3_add2::IfcActorSelect* Ifc4x3_add2::IfcDocumentInformation::DocumentOwner() const { if(get_attribute_value(8).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(8)))->as<::Ifc4x3_add2::IfcActorSelect>(true); } -void Ifc4x3_add2::IfcDocumentInformation::setDocumentOwner(::Ifc4x3_add2::IfcActorSelect* v) { set_attribute_value(8, v->as());if constexpr (false)unset_attribute_value(8); } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorSelect >::ptr > Ifc4x3_add2::IfcDocumentInformation::Editors() const { if(get_attribute_value(9).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(9); return es->as< ::Ifc4x3_add2::IfcActorSelect >(); } -void Ifc4x3_add2::IfcDocumentInformation::setEditors(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorSelect >::ptr > v) { if (v) {set_attribute_value(9, (*v)->generalize());} else {unset_attribute_value(9);} } -boost::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::CreationTime() const { if(get_attribute_value(10).isNull()) { return boost::none; } std::string v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::LastRevisionTime() const { if(get_attribute_value(11).isNull()) { return boost::none; } std::string v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -boost::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::ElectronicFormat() const { if(get_attribute_value(12).isNull()) { return boost::none; } std::string v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -boost::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::ValidFrom() const { if(get_attribute_value(13).isNull()) { return boost::none; } std::string v = get_attribute_value(13); return v; } -void Ifc4x3_add2::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } -boost::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::ValidUntil() const { if(get_attribute_value(14).isNull()) { return boost::none; } std::string v = get_attribute_value(14); return v; } -void Ifc4x3_add2::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } -boost::optional< ::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Value > Ifc4x3_add2::IfcDocumentInformation::Confidentiality() const { if(get_attribute_value(15).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcDocumentConfidentialityEnum::FromString(get_attribute_value(15)); } -void Ifc4x3_add2::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Value > v) { if (v) {set_attribute_value(15, EnumerationReference(&::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Class(), (size_t) *v));} else {unset_attribute_value(15);} } -boost::optional< ::Ifc4x3_add2::IfcDocumentStatusEnum::Value > Ifc4x3_add2::IfcDocumentInformation::Status() const { if(get_attribute_value(16).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcDocumentStatusEnum::FromString(get_attribute_value(16)); } -void Ifc4x3_add2::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4x3_add2::IfcDocumentStatusEnum::Value > v) { if (v) {set_attribute_value(16, EnumerationReference(&::Ifc4x3_add2::IfcDocumentStatusEnum::Class(), (size_t) *v));} else {unset_attribute_value(16);} } +void Ifc4x3_add2::IfcDocumentInformation::setName(const std::string& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::Description() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcDocumentInformation::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::Location() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcDocumentInformation::setLocation(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::Purpose() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcDocumentInformation::setPurpose(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::IntendedUse() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcDocumentInformation::setIntendedUse(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::Scope() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcDocumentInformation::setScope(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::Revision() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcDocumentInformation::setRevision(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +::Ifc4x3_add2::IfcActorSelect Ifc4x3_add2::IfcDocumentInformation::DocumentOwner() const { if(get_attribute_value(8).isNull()) { return ::Ifc4x3_add2::IfcActorSelect{}; } return ((express::Base)(get_attribute_value(8))).as<::Ifc4x3_add2::IfcActorSelect>(); } +void Ifc4x3_add2::IfcDocumentInformation::setDocumentOwner(const ::Ifc4x3_add2::IfcActorSelect& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } +std::optional< std::vector< ::Ifc4x3_add2::IfcActorSelect > > Ifc4x3_add2::IfcDocumentInformation::Editors() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(9); return cast_vector<::Ifc4x3_add2::IfcActorSelect>(es); } +void Ifc4x3_add2::IfcDocumentInformation::setEditors(const std::optional< std::vector< ::Ifc4x3_add2::IfcActorSelect > >& v) { if (v) {set_attribute_value(9, cast_vector(*v));} else {unset_attribute_value(9);} } +std::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::CreationTime() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } std::string v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcDocumentInformation::setCreationTime(const std::optional< std::string >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::LastRevisionTime() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } std::string v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcDocumentInformation::setLastRevisionTime(const std::optional< std::string >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +std::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::ElectronicFormat() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } std::string v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcDocumentInformation::setElectronicFormat(const std::optional< std::string >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +std::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::ValidFrom() const { if(get_attribute_value(13).isNull()) { return std::nullopt; } std::string v = get_attribute_value(13); return v; } +void Ifc4x3_add2::IfcDocumentInformation::setValidFrom(const std::optional< std::string >& v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } +std::optional< std::string > Ifc4x3_add2::IfcDocumentInformation::ValidUntil() const { if(get_attribute_value(14).isNull()) { return std::nullopt; } std::string v = get_attribute_value(14); return v; } +void Ifc4x3_add2::IfcDocumentInformation::setValidUntil(const std::optional< std::string >& v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } +std::optional< ::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Value > Ifc4x3_add2::IfcDocumentInformation::Confidentiality() const { if(get_attribute_value(15).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcDocumentConfidentialityEnum::FromString(get_attribute_value(15)); } +void Ifc4x3_add2::IfcDocumentInformation::setConfidentiality(const std::optional< ::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Value >& v) { if (v) {set_attribute_value(15, EnumerationReference(&::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Class(), (size_t) *v));} else {unset_attribute_value(15);} } +std::optional< ::Ifc4x3_add2::IfcDocumentStatusEnum::Value > Ifc4x3_add2::IfcDocumentInformation::Status() const { if(get_attribute_value(16).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcDocumentStatusEnum::FromString(get_attribute_value(16)); } +void Ifc4x3_add2::IfcDocumentInformation::setStatus(const std::optional< ::Ifc4x3_add2::IfcDocumentStatusEnum::Value >& v) { if (v) {set_attribute_value(16, EnumerationReference(&::Ifc4x3_add2::IfcDocumentStatusEnum::Class(), (size_t) *v));} else {unset_attribute_value(16);} } -::Ifc4x3_add2::IfcRelAssociatesDocument::list::ptr Ifc4x3_add2::IfcDocumentInformation::DocumentInfoForObjects() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[912], 5)->as(); } -::Ifc4x3_add2::IfcDocumentReference::list::ptr Ifc4x3_add2::IfcDocumentInformation::HasDocumentReferences() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[332], 4)->as(); } -::Ifc4x3_add2::IfcDocumentInformationRelationship::list::ptr Ifc4x3_add2::IfcDocumentInformation::IsPointedTo() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[331], 3)->as(); } -::Ifc4x3_add2::IfcDocumentInformationRelationship::list::ptr Ifc4x3_add2::IfcDocumentInformation::IsPointer() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[331], 2)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssociatesDocument> Ifc4x3_add2::IfcDocumentInformation::DocumentInfoForObjects() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[912], 5)); } +std::vector<::Ifc4x3_add2::IfcDocumentReference> Ifc4x3_add2::IfcDocumentInformation::HasDocumentReferences() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[332], 4)); } +std::vector<::Ifc4x3_add2::IfcDocumentInformationRelationship> Ifc4x3_add2::IfcDocumentInformation::IsPointedTo() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[331], 3)); } +std::vector<::Ifc4x3_add2::IfcDocumentInformationRelationship> Ifc4x3_add2::IfcDocumentInformation::IsPointer() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[331], 2)); } -const IfcParse::entity& Ifc4x3_add2::IfcDocumentInformation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[330]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDocumentInformation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[330]); } const IfcParse::entity& Ifc4x3_add2::IfcDocumentInformation::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[330]); } -Ifc4x3_add2::IfcDocumentInformation::IfcDocumentInformation(IfcEntityInstanceData&& e) : IfcExternalInformation(std::move(e)) { } -Ifc4x3_add2::IfcDocumentInformation::IfcDocumentInformation(std::string v1_Identification, std::string v2_Name, boost::optional< std::string > v3_Description, boost::optional< std::string > v4_Location, boost::optional< std::string > v5_Purpose, boost::optional< std::string > v6_IntendedUse, boost::optional< std::string > v7_Scope, boost::optional< std::string > v8_Revision, ::Ifc4x3_add2::IfcActorSelect* v9_DocumentOwner, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorSelect >::ptr > v10_Editors, boost::optional< std::string > v11_CreationTime, boost::optional< std::string > v12_LastRevisionTime, boost::optional< std::string > v13_ElectronicFormat, boost::optional< std::string > v14_ValidFrom, boost::optional< std::string > v15_ValidUntil, boost::optional< ::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Value > v16_Confidentiality, boost::optional< ::Ifc4x3_add2::IfcDocumentStatusEnum::Value > v17_Status) : IfcExternalInformation(IfcEntityInstanceData(in_memory_attribute_storage(17))) { set_attribute_value(0, (v1_Identification));set_attribute_value(1, (v2_Name)); if (v3_Description) {set_attribute_value(2, (*v3_Description)); } if (v4_Location) {set_attribute_value(3, (*v4_Location)); } if (v5_Purpose) {set_attribute_value(4, (*v5_Purpose)); } if (v6_IntendedUse) {set_attribute_value(5, (*v6_IntendedUse)); } if (v7_Scope) {set_attribute_value(6, (*v7_Scope)); } if (v8_Revision) {set_attribute_value(7, (*v8_Revision)); }set_attribute_value(8, v9_DocumentOwner ? v9_DocumentOwner->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v10_Editors) {set_attribute_value(9, (*v10_Editors)->generalize()); } if (v11_CreationTime) {set_attribute_value(10, (*v11_CreationTime)); } if (v12_LastRevisionTime) {set_attribute_value(11, (*v12_LastRevisionTime)); } if (v13_ElectronicFormat) {set_attribute_value(12, (*v13_ElectronicFormat)); } if (v14_ValidFrom) {set_attribute_value(13, (*v14_ValidFrom)); } if (v15_ValidUntil) {set_attribute_value(14, (*v15_ValidUntil)); } if (v16_Confidentiality) {set_attribute_value(15, (EnumerationReference(&::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Class(),(size_t)*v16_Confidentiality))); } if (v17_Status) {set_attribute_value(16, (EnumerationReference(&::Ifc4x3_add2::IfcDocumentStatusEnum::Class(),(size_t)*v17_Status))); }; populate_derived(); } +// Ifc4x3_add2::IfcDocumentInformation::IfcDocumentInformation(const std::weak_ptr& e) : IfcExternalInformation(e) { } +// Ifc4x3_add2::IfcDocumentInformation::IfcDocumentInformation(std::string v1_Identification, std::string v2_Name, std::optional< std::string > v3_Description, std::optional< std::string > v4_Location, std::optional< std::string > v5_Purpose, std::optional< std::string > v6_IntendedUse, std::optional< std::string > v7_Scope, std::optional< std::string > v8_Revision, ::Ifc4x3_add2::IfcActorSelect v9_DocumentOwner, std::optional< std::vector< ::Ifc4x3_add2::IfcActorSelect > > v10_Editors, std::optional< std::string > v11_CreationTime, std::optional< std::string > v12_LastRevisionTime, std::optional< std::string > v13_ElectronicFormat, std::optional< std::string > v14_ValidFrom, std::optional< std::string > v15_ValidUntil, std::optional< ::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Value > v16_Confidentiality, std::optional< ::Ifc4x3_add2::IfcDocumentStatusEnum::Value > v17_Status) : IfcExternalInformation(const std::weak_ptr&(in_memory_attribute_storage(17))) { set_attribute_value(0, (v1_Identification));set_attribute_value(1, (v2_Name)); if (v3_Description) {set_attribute_value(2, (*v3_Description)); } if (v4_Location) {set_attribute_value(3, (*v4_Location)); } if (v5_Purpose) {set_attribute_value(4, (*v5_Purpose)); } if (v6_IntendedUse) {set_attribute_value(5, (*v6_IntendedUse)); } if (v7_Scope) {set_attribute_value(6, (*v7_Scope)); } if (v8_Revision) {set_attribute_value(7, (*v8_Revision)); } if (v9_DocumentOwner) {set_attribute_value(8, (*v9_DocumentOwner)); } if (v10_Editors) {set_attribute_value(9, (*v10_Editors)->generalize()); } if (v11_CreationTime) {set_attribute_value(10, (*v11_CreationTime)); } if (v12_LastRevisionTime) {set_attribute_value(11, (*v12_LastRevisionTime)); } if (v13_ElectronicFormat) {set_attribute_value(12, (*v13_ElectronicFormat)); } if (v14_ValidFrom) {set_attribute_value(13, (*v14_ValidFrom)); } if (v15_ValidUntil) {set_attribute_value(14, (*v15_ValidUntil)); } if (v16_Confidentiality) {set_attribute_value(15, (EnumerationReference(&::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Class(),(size_t)*v16_Confidentiality))); } if (v17_Status) {set_attribute_value(16, (EnumerationReference(&::Ifc4x3_add2::IfcDocumentStatusEnum::Class(),(size_t)*v17_Status))); }; populate_derived(); } // Function implementations for IfcDocumentInformationRelationship -::Ifc4x3_add2::IfcDocumentInformation* Ifc4x3_add2::IfcDocumentInformationRelationship::RelatingDocument() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcDocumentInformation>(true); } -void Ifc4x3_add2::IfcDocumentInformationRelationship::setRelatingDocument(::Ifc4x3_add2::IfcDocumentInformation* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -aggregate_of< ::Ifc4x3_add2::IfcDocumentInformation >::ptr Ifc4x3_add2::IfcDocumentInformationRelationship::RelatedDocuments() const { aggregate_of_instance::ptr es = get_attribute_value(3); return es->as< ::Ifc4x3_add2::IfcDocumentInformation >(); } -void Ifc4x3_add2::IfcDocumentInformationRelationship::setRelatedDocuments(aggregate_of< ::Ifc4x3_add2::IfcDocumentInformation >::ptr v) { set_attribute_value(3, (v)->generalize());if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcDocumentInformationRelationship::RelationshipType() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +::Ifc4x3_add2::IfcDocumentInformation Ifc4x3_add2::IfcDocumentInformationRelationship::RelatingDocument() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcDocumentInformation>(); } +void Ifc4x3_add2::IfcDocumentInformationRelationship::setRelatingDocument(const ::Ifc4x3_add2::IfcDocumentInformation& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +std::vector< ::Ifc4x3_add2::IfcDocumentInformation > Ifc4x3_add2::IfcDocumentInformationRelationship::RelatedDocuments() const { std::vector es = get_attribute_value(3); return cast_vector<::Ifc4x3_add2::IfcDocumentInformation>(es); } +void Ifc4x3_add2::IfcDocumentInformationRelationship::setRelatedDocuments(const std::vector< ::Ifc4x3_add2::IfcDocumentInformation >& v) { set_attribute_value(3, cast_vector(v));if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcDocumentInformationRelationship::RelationshipType() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcDocumentInformationRelationship::setRelationshipType(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcDocumentInformationRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[331]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDocumentInformationRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[331]); } const IfcParse::entity& Ifc4x3_add2::IfcDocumentInformationRelationship::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[331]); } -Ifc4x3_add2::IfcDocumentInformationRelationship::IfcDocumentInformationRelationship(IfcEntityInstanceData&& e) : IfcResourceLevelRelationship(std::move(e)) { } -Ifc4x3_add2::IfcDocumentInformationRelationship::IfcDocumentInformationRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcDocumentInformation* v3_RelatingDocument, aggregate_of< ::Ifc4x3_add2::IfcDocumentInformation >::ptr v4_RelatedDocuments, boost::optional< std::string > v5_RelationshipType) : IfcResourceLevelRelationship(IfcEntityInstanceData(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_RelatingDocument ? v3_RelatingDocument->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_RelatedDocuments)->generalize()); if (v5_RelationshipType) {set_attribute_value(4, (*v5_RelationshipType)); }; populate_derived(); } +// Ifc4x3_add2::IfcDocumentInformationRelationship::IfcDocumentInformationRelationship(const std::weak_ptr& e) : IfcResourceLevelRelationship(e) { } +// Ifc4x3_add2::IfcDocumentInformationRelationship::IfcDocumentInformationRelationship(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcDocumentInformation v3_RelatingDocument, std::vector< ::Ifc4x3_add2::IfcDocumentInformation > v4_RelatedDocuments, std::optional< std::string > v5_RelationshipType) : IfcResourceLevelRelationship(const std::weak_ptr&(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_RelatingDocument));set_attribute_value(3, (v4_RelatedDocuments)->generalize()); if (v5_RelationshipType) {set_attribute_value(4, (*v5_RelationshipType)); }; populate_derived(); } // Function implementations for IfcDocumentReference -boost::optional< std::string > Ifc4x3_add2::IfcDocumentReference::Description() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcDocumentReference::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -::Ifc4x3_add2::IfcDocumentInformation* Ifc4x3_add2::IfcDocumentReference::ReferencedDocument() const { if(get_attribute_value(4).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcDocumentInformation>(true); } -void Ifc4x3_add2::IfcDocumentReference::setReferencedDocument(::Ifc4x3_add2::IfcDocumentInformation* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } +std::optional< std::string > Ifc4x3_add2::IfcDocumentReference::Description() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcDocumentReference::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +::Ifc4x3_add2::IfcDocumentInformation Ifc4x3_add2::IfcDocumentReference::ReferencedDocument() const { if(get_attribute_value(4).isNull()) { return ::Ifc4x3_add2::IfcDocumentInformation{}; } return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcDocumentInformation>(); } +void Ifc4x3_add2::IfcDocumentReference::setReferencedDocument(const ::Ifc4x3_add2::IfcDocumentInformation& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcRelAssociatesDocument::list::ptr Ifc4x3_add2::IfcDocumentReference::DocumentRefForObjects() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[912], 5)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssociatesDocument> Ifc4x3_add2::IfcDocumentReference::DocumentRefForObjects() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[912], 5)); } -const IfcParse::entity& Ifc4x3_add2::IfcDocumentReference::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[332]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDocumentReference::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[332]); } const IfcParse::entity& Ifc4x3_add2::IfcDocumentReference::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[332]); } -Ifc4x3_add2::IfcDocumentReference::IfcDocumentReference(IfcEntityInstanceData&& e) : IfcExternalReference(std::move(e)) { } -Ifc4x3_add2::IfcDocumentReference::IfcDocumentReference(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcDocumentInformation* v5_ReferencedDocument) : IfcExternalReference(IfcEntityInstanceData(in_memory_attribute_storage(5))) { if (v1_Location) {set_attribute_value(0, (*v1_Location)); } if (v2_Identification) {set_attribute_value(1, (*v2_Identification)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_ReferencedDocument ? v5_ReferencedDocument->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcDocumentReference::IfcDocumentReference(const std::weak_ptr& e) : IfcExternalReference(e) { } +// Ifc4x3_add2::IfcDocumentReference::IfcDocumentReference(std::optional< std::string > v1_Location, std::optional< std::string > v2_Identification, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcDocumentInformation v5_ReferencedDocument) : IfcExternalReference(const std::weak_ptr&(in_memory_attribute_storage(5))) { if (v1_Location) {set_attribute_value(0, (*v1_Location)); } if (v2_Identification) {set_attribute_value(1, (*v2_Identification)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ReferencedDocument) {set_attribute_value(4, (*v5_ReferencedDocument)); }; populate_derived(); } // Function implementations for IfcDoor -boost::optional< double > Ifc4x3_add2::IfcDoor::OverallHeight() const { if(get_attribute_value(8).isNull()) { return boost::none; } double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcDoor::setOverallHeight(boost::optional< double > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -boost::optional< double > Ifc4x3_add2::IfcDoor::OverallWidth() const { if(get_attribute_value(9).isNull()) { return boost::none; } double v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcDoor::setOverallWidth(boost::optional< double > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -boost::optional< ::Ifc4x3_add2::IfcDoorTypeEnum::Value > Ifc4x3_add2::IfcDoor::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcDoorTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcDoor::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDoorTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -boost::optional< ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value > Ifc4x3_add2::IfcDoor::OperationType() const { if(get_attribute_value(11).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcDoorTypeOperationEnum::FromString(get_attribute_value(11)); } -void Ifc4x3_add2::IfcDoor::setOperationType(boost::optional< ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value > v) { if (v) {set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeOperationEnum::Class(), (size_t) *v));} else {unset_attribute_value(11);} } -boost::optional< std::string > Ifc4x3_add2::IfcDoor::UserDefinedOperationType() const { if(get_attribute_value(12).isNull()) { return boost::none; } std::string v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +std::optional< double > Ifc4x3_add2::IfcDoor::OverallHeight() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } double v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcDoor::setOverallHeight(const std::optional< double >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< double > Ifc4x3_add2::IfcDoor::OverallWidth() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } double v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcDoor::setOverallWidth(const std::optional< double >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< ::Ifc4x3_add2::IfcDoorTypeEnum::Value > Ifc4x3_add2::IfcDoor::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcDoorTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcDoor::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDoorTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value > Ifc4x3_add2::IfcDoor::OperationType() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcDoorTypeOperationEnum::FromString(get_attribute_value(11)); } +void Ifc4x3_add2::IfcDoor::setOperationType(const std::optional< ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value >& v) { if (v) {set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeOperationEnum::Class(), (size_t) *v));} else {unset_attribute_value(11);} } +std::optional< std::string > Ifc4x3_add2::IfcDoor::UserDefinedOperationType() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } std::string v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcDoor::setUserDefinedOperationType(const std::optional< std::string >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -const IfcParse::entity& Ifc4x3_add2::IfcDoor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[335]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDoor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[335]); } const IfcParse::entity& Ifc4x3_add2::IfcDoor::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[335]); } -Ifc4x3_add2::IfcDoor::IfcDoor(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcDoor::IfcDoor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4x3_add2::IfcDoorTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value > v12_OperationType, boost::optional< std::string > v13_UserDefinedOperationType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_OverallHeight) {set_attribute_value(8, (*v9_OverallHeight)); } if (v10_OverallWidth) {set_attribute_value(9, (*v10_OverallWidth)); } if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeEnum::Class(),(size_t)*v11_PredefinedType))); } if (v12_OperationType) {set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeOperationEnum::Class(),(size_t)*v12_OperationType))); } if (v13_UserDefinedOperationType) {set_attribute_value(12, (*v13_UserDefinedOperationType)); }; populate_derived(); } +// Ifc4x3_add2::IfcDoor::IfcDoor(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcDoor::IfcDoor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< double > v9_OverallHeight, std::optional< double > v10_OverallWidth, std::optional< ::Ifc4x3_add2::IfcDoorTypeEnum::Value > v11_PredefinedType, std::optional< ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value > v12_OperationType, std::optional< std::string > v13_UserDefinedOperationType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_OverallHeight) {set_attribute_value(8, (*v9_OverallHeight)); } if (v10_OverallWidth) {set_attribute_value(9, (*v10_OverallWidth)); } if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeEnum::Class(),(size_t)*v11_PredefinedType))); } if (v12_OperationType) {set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeOperationEnum::Class(),(size_t)*v12_OperationType))); } if (v13_UserDefinedOperationType) {set_attribute_value(12, (*v13_UserDefinedOperationType)); }; populate_derived(); } // Function implementations for IfcDoorLiningProperties -boost::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::LiningDepth() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::LiningThickness() const { if(get_attribute_value(5).isNull()) { return boost::none; } double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::ThresholdDepth() const { if(get_attribute_value(6).isNull()) { return boost::none; } double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::ThresholdThickness() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::TransomThickness() const { if(get_attribute_value(8).isNull()) { return boost::none; } double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -boost::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::TransomOffset() const { if(get_attribute_value(9).isNull()) { return boost::none; } double v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -boost::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::LiningOffset() const { if(get_attribute_value(10).isNull()) { return boost::none; } double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::ThresholdOffset() const { if(get_attribute_value(11).isNull()) { return boost::none; } double v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -boost::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::CasingThickness() const { if(get_attribute_value(12).isNull()) { return boost::none; } double v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -boost::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::CasingDepth() const { if(get_attribute_value(13).isNull()) { return boost::none; } double v = get_attribute_value(13); return v; } -void Ifc4x3_add2::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } -::Ifc4x3_add2::IfcShapeAspect* Ifc4x3_add2::IfcDoorLiningProperties::ShapeAspectStyle() const { if(get_attribute_value(14).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(14)))->as<::Ifc4x3_add2::IfcShapeAspect>(true); } -void Ifc4x3_add2::IfcDoorLiningProperties::setShapeAspectStyle(::Ifc4x3_add2::IfcShapeAspect* v) { set_attribute_value(14, v->as());if constexpr (false)unset_attribute_value(14); } -boost::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::LiningToPanelOffsetX() const { if(get_attribute_value(15).isNull()) { return boost::none; } double v = get_attribute_value(15); return v; } -void Ifc4x3_add2::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { if (v) {set_attribute_value(15, *v);} else {unset_attribute_value(15);} } -boost::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::LiningToPanelOffsetY() const { if(get_attribute_value(16).isNull()) { return boost::none; } double v = get_attribute_value(16); return v; } -void Ifc4x3_add2::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { if (v) {set_attribute_value(16, *v);} else {unset_attribute_value(16);} } +std::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::LiningDepth() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcDoorLiningProperties::setLiningDepth(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::LiningThickness() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } double v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcDoorLiningProperties::setLiningThickness(const std::optional< double >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::ThresholdDepth() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } double v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcDoorLiningProperties::setThresholdDepth(const std::optional< double >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::ThresholdThickness() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcDoorLiningProperties::setThresholdThickness(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::TransomThickness() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } double v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcDoorLiningProperties::setTransomThickness(const std::optional< double >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::TransomOffset() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } double v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcDoorLiningProperties::setTransomOffset(const std::optional< double >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::LiningOffset() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } double v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcDoorLiningProperties::setLiningOffset(const std::optional< double >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::ThresholdOffset() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } double v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcDoorLiningProperties::setThresholdOffset(const std::optional< double >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +std::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::CasingThickness() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } double v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcDoorLiningProperties::setCasingThickness(const std::optional< double >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +std::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::CasingDepth() const { if(get_attribute_value(13).isNull()) { return std::nullopt; } double v = get_attribute_value(13); return v; } +void Ifc4x3_add2::IfcDoorLiningProperties::setCasingDepth(const std::optional< double >& v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } +::Ifc4x3_add2::IfcShapeAspect Ifc4x3_add2::IfcDoorLiningProperties::ShapeAspectStyle() const { if(get_attribute_value(14).isNull()) { return ::Ifc4x3_add2::IfcShapeAspect{}; } return ((express::Base)(get_attribute_value(14))).as<::Ifc4x3_add2::IfcShapeAspect>(); } +void Ifc4x3_add2::IfcDoorLiningProperties::setShapeAspectStyle(const ::Ifc4x3_add2::IfcShapeAspect& v) { set_attribute_value(14, v);if constexpr (false)unset_attribute_value(14); } +std::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::LiningToPanelOffsetX() const { if(get_attribute_value(15).isNull()) { return std::nullopt; } double v = get_attribute_value(15); return v; } +void Ifc4x3_add2::IfcDoorLiningProperties::setLiningToPanelOffsetX(const std::optional< double >& v) { if (v) {set_attribute_value(15, *v);} else {unset_attribute_value(15);} } +std::optional< double > Ifc4x3_add2::IfcDoorLiningProperties::LiningToPanelOffsetY() const { if(get_attribute_value(16).isNull()) { return std::nullopt; } double v = get_attribute_value(16); return v; } +void Ifc4x3_add2::IfcDoorLiningProperties::setLiningToPanelOffsetY(const std::optional< double >& v) { if (v) {set_attribute_value(16, *v);} else {unset_attribute_value(16);} } -const IfcParse::entity& Ifc4x3_add2::IfcDoorLiningProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[336]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDoorLiningProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[336]); } const IfcParse::entity& Ifc4x3_add2::IfcDoorLiningProperties::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[336]); } -Ifc4x3_add2::IfcDoorLiningProperties::IfcDoorLiningProperties(IfcEntityInstanceData&& e) : IfcPreDefinedPropertySet(std::move(e)) { } -Ifc4x3_add2::IfcDoorLiningProperties::IfcDoorLiningProperties(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_LiningDepth, boost::optional< double > v6_LiningThickness, boost::optional< double > v7_ThresholdDepth, boost::optional< double > v8_ThresholdThickness, boost::optional< double > v9_TransomThickness, boost::optional< double > v10_TransomOffset, boost::optional< double > v11_LiningOffset, boost::optional< double > v12_ThresholdOffset, boost::optional< double > v13_CasingThickness, boost::optional< double > v14_CasingDepth, ::Ifc4x3_add2::IfcShapeAspect* v15_ShapeAspectStyle, boost::optional< double > v16_LiningToPanelOffsetX, boost::optional< double > v17_LiningToPanelOffsetY) : IfcPreDefinedPropertySet(IfcEntityInstanceData(in_memory_attribute_storage(17))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_LiningDepth) {set_attribute_value(4, (*v5_LiningDepth)); } if (v6_LiningThickness) {set_attribute_value(5, (*v6_LiningThickness)); } if (v7_ThresholdDepth) {set_attribute_value(6, (*v7_ThresholdDepth)); } if (v8_ThresholdThickness) {set_attribute_value(7, (*v8_ThresholdThickness)); } if (v9_TransomThickness) {set_attribute_value(8, (*v9_TransomThickness)); } if (v10_TransomOffset) {set_attribute_value(9, (*v10_TransomOffset)); } if (v11_LiningOffset) {set_attribute_value(10, (*v11_LiningOffset)); } if (v12_ThresholdOffset) {set_attribute_value(11, (*v12_ThresholdOffset)); } if (v13_CasingThickness) {set_attribute_value(12, (*v13_CasingThickness)); } if (v14_CasingDepth) {set_attribute_value(13, (*v14_CasingDepth)); }set_attribute_value(14, v15_ShapeAspectStyle ? v15_ShapeAspectStyle->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v16_LiningToPanelOffsetX) {set_attribute_value(15, (*v16_LiningToPanelOffsetX)); } if (v17_LiningToPanelOffsetY) {set_attribute_value(16, (*v17_LiningToPanelOffsetY)); }; populate_derived(); } +// Ifc4x3_add2::IfcDoorLiningProperties::IfcDoorLiningProperties(const std::weak_ptr& e) : IfcPreDefinedPropertySet(e) { } +// Ifc4x3_add2::IfcDoorLiningProperties::IfcDoorLiningProperties(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< double > v5_LiningDepth, std::optional< double > v6_LiningThickness, std::optional< double > v7_ThresholdDepth, std::optional< double > v8_ThresholdThickness, std::optional< double > v9_TransomThickness, std::optional< double > v10_TransomOffset, std::optional< double > v11_LiningOffset, std::optional< double > v12_ThresholdOffset, std::optional< double > v13_CasingThickness, std::optional< double > v14_CasingDepth, ::Ifc4x3_add2::IfcShapeAspect v15_ShapeAspectStyle, std::optional< double > v16_LiningToPanelOffsetX, std::optional< double > v17_LiningToPanelOffsetY) : IfcPreDefinedPropertySet(const std::weak_ptr&(in_memory_attribute_storage(17))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_LiningDepth) {set_attribute_value(4, (*v5_LiningDepth)); } if (v6_LiningThickness) {set_attribute_value(5, (*v6_LiningThickness)); } if (v7_ThresholdDepth) {set_attribute_value(6, (*v7_ThresholdDepth)); } if (v8_ThresholdThickness) {set_attribute_value(7, (*v8_ThresholdThickness)); } if (v9_TransomThickness) {set_attribute_value(8, (*v9_TransomThickness)); } if (v10_TransomOffset) {set_attribute_value(9, (*v10_TransomOffset)); } if (v11_LiningOffset) {set_attribute_value(10, (*v11_LiningOffset)); } if (v12_ThresholdOffset) {set_attribute_value(11, (*v12_ThresholdOffset)); } if (v13_CasingThickness) {set_attribute_value(12, (*v13_CasingThickness)); } if (v14_CasingDepth) {set_attribute_value(13, (*v14_CasingDepth)); } if (v15_ShapeAspectStyle) {set_attribute_value(14, (*v15_ShapeAspectStyle)); } if (v16_LiningToPanelOffsetX) {set_attribute_value(15, (*v16_LiningToPanelOffsetX)); } if (v17_LiningToPanelOffsetY) {set_attribute_value(16, (*v17_LiningToPanelOffsetY)); }; populate_derived(); } // Function implementations for IfcDoorPanelProperties -boost::optional< double > Ifc4x3_add2::IfcDoorPanelProperties::PanelDepth() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< double > Ifc4x3_add2::IfcDoorPanelProperties::PanelDepth() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcDoorPanelProperties::setPanelDepth(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } ::Ifc4x3_add2::IfcDoorPanelOperationEnum::Value Ifc4x3_add2::IfcDoorPanelProperties::PanelOperation() const { return ::Ifc4x3_add2::IfcDoorPanelOperationEnum::FromString(get_attribute_value(5)); } -void Ifc4x3_add2::IfcDoorPanelProperties::setPanelOperation(::Ifc4x3_add2::IfcDoorPanelOperationEnum::Value v) { set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcDoorPanelOperationEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(5); } -boost::optional< double > Ifc4x3_add2::IfcDoorPanelProperties::PanelWidth() const { if(get_attribute_value(6).isNull()) { return boost::none; } double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +void Ifc4x3_add2::IfcDoorPanelProperties::setPanelOperation(const ::Ifc4x3_add2::IfcDoorPanelOperationEnum::Value& v) { set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcDoorPanelOperationEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(5); } +std::optional< double > Ifc4x3_add2::IfcDoorPanelProperties::PanelWidth() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } double v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcDoorPanelProperties::setPanelWidth(const std::optional< double >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } ::Ifc4x3_add2::IfcDoorPanelPositionEnum::Value Ifc4x3_add2::IfcDoorPanelProperties::PanelPosition() const { return ::Ifc4x3_add2::IfcDoorPanelPositionEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcDoorPanelProperties::setPanelPosition(::Ifc4x3_add2::IfcDoorPanelPositionEnum::Value v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcDoorPanelPositionEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } -::Ifc4x3_add2::IfcShapeAspect* Ifc4x3_add2::IfcDoorPanelProperties::ShapeAspectStyle() const { if(get_attribute_value(8).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(8)))->as<::Ifc4x3_add2::IfcShapeAspect>(true); } -void Ifc4x3_add2::IfcDoorPanelProperties::setShapeAspectStyle(::Ifc4x3_add2::IfcShapeAspect* v) { set_attribute_value(8, v->as());if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcDoorPanelProperties::setPanelPosition(const ::Ifc4x3_add2::IfcDoorPanelPositionEnum::Value& v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcDoorPanelPositionEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } +::Ifc4x3_add2::IfcShapeAspect Ifc4x3_add2::IfcDoorPanelProperties::ShapeAspectStyle() const { if(get_attribute_value(8).isNull()) { return ::Ifc4x3_add2::IfcShapeAspect{}; } return ((express::Base)(get_attribute_value(8))).as<::Ifc4x3_add2::IfcShapeAspect>(); } +void Ifc4x3_add2::IfcDoorPanelProperties::setShapeAspectStyle(const ::Ifc4x3_add2::IfcShapeAspect& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcDoorPanelProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[339]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDoorPanelProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[339]); } const IfcParse::entity& Ifc4x3_add2::IfcDoorPanelProperties::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[339]); } -Ifc4x3_add2::IfcDoorPanelProperties::IfcDoorPanelProperties(IfcEntityInstanceData&& e) : IfcPreDefinedPropertySet(std::move(e)) { } -Ifc4x3_add2::IfcDoorPanelProperties::IfcDoorPanelProperties(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_PanelDepth, ::Ifc4x3_add2::IfcDoorPanelOperationEnum::Value v6_PanelOperation, boost::optional< double > v7_PanelWidth, ::Ifc4x3_add2::IfcDoorPanelPositionEnum::Value v8_PanelPosition, ::Ifc4x3_add2::IfcShapeAspect* v9_ShapeAspectStyle) : IfcPreDefinedPropertySet(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_PanelDepth) {set_attribute_value(4, (*v5_PanelDepth)); }set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcDoorPanelOperationEnum::Class(),(size_t)v6_PanelOperation))); if (v7_PanelWidth) {set_attribute_value(6, (*v7_PanelWidth)); }set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcDoorPanelPositionEnum::Class(),(size_t)v8_PanelPosition)));set_attribute_value(8, v9_ShapeAspectStyle ? v9_ShapeAspectStyle->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcDoorPanelProperties::IfcDoorPanelProperties(const std::weak_ptr& e) : IfcPreDefinedPropertySet(e) { } +// Ifc4x3_add2::IfcDoorPanelProperties::IfcDoorPanelProperties(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< double > v5_PanelDepth, ::Ifc4x3_add2::IfcDoorPanelOperationEnum::Value v6_PanelOperation, std::optional< double > v7_PanelWidth, ::Ifc4x3_add2::IfcDoorPanelPositionEnum::Value v8_PanelPosition, ::Ifc4x3_add2::IfcShapeAspect v9_ShapeAspectStyle) : IfcPreDefinedPropertySet(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_PanelDepth) {set_attribute_value(4, (*v5_PanelDepth)); }set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcDoorPanelOperationEnum::Class(),(size_t)v6_PanelOperation))); if (v7_PanelWidth) {set_attribute_value(6, (*v7_PanelWidth)); }set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcDoorPanelPositionEnum::Class(),(size_t)v8_PanelPosition))); if (v9_ShapeAspectStyle) {set_attribute_value(8, (*v9_ShapeAspectStyle)); }; populate_derived(); } // Function implementations for IfcDoorType ::Ifc4x3_add2::IfcDoorTypeEnum::Value Ifc4x3_add2::IfcDoorType::PredefinedType() const { return ::Ifc4x3_add2::IfcDoorTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcDoorType::setPredefinedType(::Ifc4x3_add2::IfcDoorTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcDoorType::setPredefinedType(const ::Ifc4x3_add2::IfcDoorTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value Ifc4x3_add2::IfcDoorType::OperationType() const { return ::Ifc4x3_add2::IfcDoorTypeOperationEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcDoorType::setOperationType(::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value v) { set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeOperationEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(10); } -boost::optional< bool > Ifc4x3_add2::IfcDoorType::ParameterTakesPrecedence() const { if(get_attribute_value(11).isNull()) { return boost::none; } bool v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -boost::optional< std::string > Ifc4x3_add2::IfcDoorType::UserDefinedOperationType() const { if(get_attribute_value(12).isNull()) { return boost::none; } std::string v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +void Ifc4x3_add2::IfcDoorType::setOperationType(const ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value& v) { set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeOperationEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(10); } +std::optional< bool > Ifc4x3_add2::IfcDoorType::ParameterTakesPrecedence() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } bool v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcDoorType::setParameterTakesPrecedence(const std::optional< bool >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +std::optional< std::string > Ifc4x3_add2::IfcDoorType::UserDefinedOperationType() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } std::string v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcDoorType::setUserDefinedOperationType(const std::optional< std::string >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -const IfcParse::entity& Ifc4x3_add2::IfcDoorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[340]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDoorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[340]); } const IfcParse::entity& Ifc4x3_add2::IfcDoorType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[340]); } -Ifc4x3_add2::IfcDoorType::IfcDoorType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcDoorType::IfcDoorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDoorTypeEnum::Value v10_PredefinedType, ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value v11_OperationType, boost::optional< bool > v12_ParameterTakesPrecedence, boost::optional< std::string > v13_UserDefinedOperationType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeEnum::Class(),(size_t)v10_PredefinedType)));set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeOperationEnum::Class(),(size_t)v11_OperationType))); if (v12_ParameterTakesPrecedence) {set_attribute_value(11, (*v12_ParameterTakesPrecedence)); } if (v13_UserDefinedOperationType) {set_attribute_value(12, (*v13_UserDefinedOperationType)); }; populate_derived(); } +// Ifc4x3_add2::IfcDoorType::IfcDoorType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcDoorType::IfcDoorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDoorTypeEnum::Value v10_PredefinedType, ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value v11_OperationType, std::optional< bool > v12_ParameterTakesPrecedence, std::optional< std::string > v13_UserDefinedOperationType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeEnum::Class(),(size_t)v10_PredefinedType)));set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcDoorTypeOperationEnum::Class(),(size_t)v11_OperationType))); if (v12_ParameterTakesPrecedence) {set_attribute_value(11, (*v12_ParameterTakesPrecedence)); } if (v13_UserDefinedOperationType) {set_attribute_value(12, (*v13_UserDefinedOperationType)); }; populate_derived(); } // Function implementations for IfcDraughtingPreDefinedColour -const IfcParse::entity& Ifc4x3_add2::IfcDraughtingPreDefinedColour::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[344]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDraughtingPreDefinedColour::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[344]); } const IfcParse::entity& Ifc4x3_add2::IfcDraughtingPreDefinedColour::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[344]); } -Ifc4x3_add2::IfcDraughtingPreDefinedColour::IfcDraughtingPreDefinedColour(IfcEntityInstanceData&& e) : IfcPreDefinedColour(std::move(e)) { } -Ifc4x3_add2::IfcDraughtingPreDefinedColour::IfcDraughtingPreDefinedColour(std::string v1_Name) : IfcPreDefinedColour(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Name));; populate_derived(); } +// Ifc4x3_add2::IfcDraughtingPreDefinedColour::IfcDraughtingPreDefinedColour(const std::weak_ptr& e) : IfcPreDefinedColour(e) { } +// Ifc4x3_add2::IfcDraughtingPreDefinedColour::IfcDraughtingPreDefinedColour(std::string v1_Name) : IfcPreDefinedColour(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Name));; populate_derived(); } // Function implementations for IfcDraughtingPreDefinedCurveFont -const IfcParse::entity& Ifc4x3_add2::IfcDraughtingPreDefinedCurveFont::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[345]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDraughtingPreDefinedCurveFont::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[345]); } const IfcParse::entity& Ifc4x3_add2::IfcDraughtingPreDefinedCurveFont::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[345]); } -Ifc4x3_add2::IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(IfcEntityInstanceData&& e) : IfcPreDefinedCurveFont(std::move(e)) { } -Ifc4x3_add2::IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(std::string v1_Name) : IfcPreDefinedCurveFont(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Name));; populate_derived(); } +// Ifc4x3_add2::IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(const std::weak_ptr& e) : IfcPreDefinedCurveFont(e) { } +// Ifc4x3_add2::IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(std::string v1_Name) : IfcPreDefinedCurveFont(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Name));; populate_derived(); } // Function implementations for IfcDuctFitting -boost::optional< ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value > Ifc4x3_add2::IfcDuctFitting::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcDuctFittingTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDuctFittingTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value > Ifc4x3_add2::IfcDuctFitting::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcDuctFittingTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcDuctFitting::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDuctFittingTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcDuctFitting::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[346]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDuctFitting::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[346]); } const IfcParse::entity& Ifc4x3_add2::IfcDuctFitting::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[346]); } -Ifc4x3_add2::IfcDuctFitting::IfcDuctFitting(IfcEntityInstanceData&& e) : IfcFlowFitting(std::move(e)) { } -Ifc4x3_add2::IfcDuctFitting::IfcDuctFitting(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDuctFittingTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcDuctFitting::IfcDuctFitting(const std::weak_ptr& e) : IfcFlowFitting(e) { } +// Ifc4x3_add2::IfcDuctFitting::IfcDuctFitting(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDuctFittingTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcDuctFittingType ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value Ifc4x3_add2::IfcDuctFittingType::PredefinedType() const { return ::Ifc4x3_add2::IfcDuctFittingTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcDuctFittingType::setPredefinedType(::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDuctFittingTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcDuctFittingType::setPredefinedType(const ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDuctFittingTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcDuctFittingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[347]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDuctFittingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[347]); } const IfcParse::entity& Ifc4x3_add2::IfcDuctFittingType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[347]); } -Ifc4x3_add2::IfcDuctFittingType::IfcDuctFittingType(IfcEntityInstanceData&& e) : IfcFlowFittingType(std::move(e)) { } -Ifc4x3_add2::IfcDuctFittingType::IfcDuctFittingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDuctFittingTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcDuctFittingType::IfcDuctFittingType(const std::weak_ptr& e) : IfcFlowFittingType(e) { } +// Ifc4x3_add2::IfcDuctFittingType::IfcDuctFittingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDuctFittingTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcDuctSegment -boost::optional< ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value > Ifc4x3_add2::IfcDuctSegment::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value > Ifc4x3_add2::IfcDuctSegment::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcDuctSegment::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcDuctSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[349]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDuctSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[349]); } const IfcParse::entity& Ifc4x3_add2::IfcDuctSegment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[349]); } -Ifc4x3_add2::IfcDuctSegment::IfcDuctSegment(IfcEntityInstanceData&& e) : IfcFlowSegment(std::move(e)) { } -Ifc4x3_add2::IfcDuctSegment::IfcDuctSegment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcDuctSegment::IfcDuctSegment(const std::weak_ptr& e) : IfcFlowSegment(e) { } +// Ifc4x3_add2::IfcDuctSegment::IfcDuctSegment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcDuctSegmentType ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value Ifc4x3_add2::IfcDuctSegmentType::PredefinedType() const { return ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcDuctSegmentType::setPredefinedType(::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcDuctSegmentType::setPredefinedType(const ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcDuctSegmentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[350]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDuctSegmentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[350]); } const IfcParse::entity& Ifc4x3_add2::IfcDuctSegmentType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[350]); } -Ifc4x3_add2::IfcDuctSegmentType::IfcDuctSegmentType(IfcEntityInstanceData&& e) : IfcFlowSegmentType(std::move(e)) { } -Ifc4x3_add2::IfcDuctSegmentType::IfcDuctSegmentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcDuctSegmentType::IfcDuctSegmentType(const std::weak_ptr& e) : IfcFlowSegmentType(e) { } +// Ifc4x3_add2::IfcDuctSegmentType::IfcDuctSegmentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcDuctSilencer -boost::optional< ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value > Ifc4x3_add2::IfcDuctSilencer::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value > Ifc4x3_add2::IfcDuctSilencer::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcDuctSilencer::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcDuctSilencer::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[352]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDuctSilencer::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[352]); } const IfcParse::entity& Ifc4x3_add2::IfcDuctSilencer::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[352]); } -Ifc4x3_add2::IfcDuctSilencer::IfcDuctSilencer(IfcEntityInstanceData&& e) : IfcFlowTreatmentDevice(std::move(e)) { } -Ifc4x3_add2::IfcDuctSilencer::IfcDuctSilencer(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcDuctSilencer::IfcDuctSilencer(const std::weak_ptr& e) : IfcFlowTreatmentDevice(e) { } +// Ifc4x3_add2::IfcDuctSilencer::IfcDuctSilencer(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcDuctSilencerType ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value Ifc4x3_add2::IfcDuctSilencerType::PredefinedType() const { return ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcDuctSilencerType::setPredefinedType(::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcDuctSilencerType::setPredefinedType(const ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcDuctSilencerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[353]); } +// const IfcParse::entity& Ifc4x3_add2::IfcDuctSilencerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[353]); } const IfcParse::entity& Ifc4x3_add2::IfcDuctSilencerType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[353]); } -Ifc4x3_add2::IfcDuctSilencerType::IfcDuctSilencerType(IfcEntityInstanceData&& e) : IfcFlowTreatmentDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcDuctSilencerType::IfcDuctSilencerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcDuctSilencerType::IfcDuctSilencerType(const std::weak_ptr& e) : IfcFlowTreatmentDeviceType(e) { } +// Ifc4x3_add2::IfcDuctSilencerType::IfcDuctSilencerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcEarthworksCut -boost::optional< ::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Value > Ifc4x3_add2::IfcEarthworksCut::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcEarthworksCutTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcEarthworksCut::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Value > Ifc4x3_add2::IfcEarthworksCut::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcEarthworksCutTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcEarthworksCut::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcEarthworksCut::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[357]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEarthworksCut::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[357]); } const IfcParse::entity& Ifc4x3_add2::IfcEarthworksCut::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[357]); } -Ifc4x3_add2::IfcEarthworksCut::IfcEarthworksCut(IfcEntityInstanceData&& e) : IfcFeatureElementSubtraction(std::move(e)) { } -Ifc4x3_add2::IfcEarthworksCut::IfcEarthworksCut(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementSubtraction(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcEarthworksCut::IfcEarthworksCut(const std::weak_ptr& e) : IfcFeatureElementSubtraction(e) { } +// Ifc4x3_add2::IfcEarthworksCut::IfcEarthworksCut(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementSubtraction(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcEarthworksElement -const IfcParse::entity& Ifc4x3_add2::IfcEarthworksElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[359]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEarthworksElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[359]); } const IfcParse::entity& Ifc4x3_add2::IfcEarthworksElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[359]); } -Ifc4x3_add2::IfcEarthworksElement::IfcEarthworksElement(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcEarthworksElement::IfcEarthworksElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcEarthworksElement::IfcEarthworksElement(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcEarthworksElement::IfcEarthworksElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcEarthworksFill -boost::optional< ::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Value > Ifc4x3_add2::IfcEarthworksFill::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcEarthworksFillTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcEarthworksFill::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Value > Ifc4x3_add2::IfcEarthworksFill::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcEarthworksFillTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcEarthworksFill::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcEarthworksFill::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[360]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEarthworksFill::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[360]); } const IfcParse::entity& Ifc4x3_add2::IfcEarthworksFill::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[360]); } -Ifc4x3_add2::IfcEarthworksFill::IfcEarthworksFill(IfcEntityInstanceData&& e) : IfcEarthworksElement(std::move(e)) { } -Ifc4x3_add2::IfcEarthworksFill::IfcEarthworksFill(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Value > v9_PredefinedType) : IfcEarthworksElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcEarthworksFill::IfcEarthworksFill(const std::weak_ptr& e) : IfcEarthworksElement(e) { } +// Ifc4x3_add2::IfcEarthworksFill::IfcEarthworksFill(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Value > v9_PredefinedType) : IfcEarthworksElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcEdge -::Ifc4x3_add2::IfcVertex* Ifc4x3_add2::IfcEdge::EdgeStart() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcVertex>(true); } -void Ifc4x3_add2::IfcEdge::setEdgeStart(::Ifc4x3_add2::IfcVertex* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcVertex* Ifc4x3_add2::IfcEdge::EdgeEnd() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcVertex>(true); } -void Ifc4x3_add2::IfcEdge::setEdgeEnd(::Ifc4x3_add2::IfcVertex* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcVertex Ifc4x3_add2::IfcEdge::EdgeStart() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcVertex>(); } +void Ifc4x3_add2::IfcEdge::setEdgeStart(const ::Ifc4x3_add2::IfcVertex& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcVertex Ifc4x3_add2::IfcEdge::EdgeEnd() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcVertex>(); } +void Ifc4x3_add2::IfcEdge::setEdgeEnd(const ::Ifc4x3_add2::IfcVertex& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcEdge::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[362]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEdge::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[362]); } const IfcParse::entity& Ifc4x3_add2::IfcEdge::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[362]); } -Ifc4x3_add2::IfcEdge::IfcEdge(IfcEntityInstanceData&& e) : IfcTopologicalRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcEdge::IfcEdge(::Ifc4x3_add2::IfcVertex* v1_EdgeStart, ::Ifc4x3_add2::IfcVertex* v2_EdgeEnd) : IfcTopologicalRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_EdgeStart ? v1_EdgeStart->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_EdgeEnd ? v2_EdgeEnd->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcEdge::IfcEdge(const std::weak_ptr& e) : IfcTopologicalRepresentationItem(e) { } +// Ifc4x3_add2::IfcEdge::IfcEdge(::Ifc4x3_add2::IfcVertex v1_EdgeStart, ::Ifc4x3_add2::IfcVertex v2_EdgeEnd) : IfcTopologicalRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_EdgeStart));set_attribute_value(1, (v2_EdgeEnd));; populate_derived(); } // Function implementations for IfcEdgeCurve -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcEdgeCurve::EdgeGeometry() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcEdgeCurve::setEdgeGeometry(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcEdgeCurve::EdgeGeometry() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcEdgeCurve::setEdgeGeometry(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } bool Ifc4x3_add2::IfcEdgeCurve::SameSense() const { bool v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcEdgeCurve::setSameSense(bool v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcEdgeCurve::setSameSense(const bool& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcEdgeCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[363]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEdgeCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[363]); } const IfcParse::entity& Ifc4x3_add2::IfcEdgeCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[363]); } -Ifc4x3_add2::IfcEdgeCurve::IfcEdgeCurve(IfcEntityInstanceData&& e) : IfcEdge(std::move(e)) { } -Ifc4x3_add2::IfcEdgeCurve::IfcEdgeCurve(::Ifc4x3_add2::IfcVertex* v1_EdgeStart, ::Ifc4x3_add2::IfcVertex* v2_EdgeEnd, ::Ifc4x3_add2::IfcCurve* v3_EdgeGeometry, bool v4_SameSense) : IfcEdge(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_EdgeStart ? v1_EdgeStart->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_EdgeEnd ? v2_EdgeEnd->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_EdgeGeometry ? v3_EdgeGeometry->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_SameSense));; populate_derived(); } +// Ifc4x3_add2::IfcEdgeCurve::IfcEdgeCurve(const std::weak_ptr& e) : IfcEdge(e) { } +// Ifc4x3_add2::IfcEdgeCurve::IfcEdgeCurve(::Ifc4x3_add2::IfcVertex v1_EdgeStart, ::Ifc4x3_add2::IfcVertex v2_EdgeEnd, ::Ifc4x3_add2::IfcCurve v3_EdgeGeometry, bool v4_SameSense) : IfcEdge(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_EdgeStart));set_attribute_value(1, (v2_EdgeEnd));set_attribute_value(2, (v3_EdgeGeometry));set_attribute_value(3, (v4_SameSense));; populate_derived(); } // Function implementations for IfcEdgeLoop -aggregate_of< ::Ifc4x3_add2::IfcOrientedEdge >::ptr Ifc4x3_add2::IfcEdgeLoop::EdgeList() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcOrientedEdge >(); } -void Ifc4x3_add2::IfcEdgeLoop::setEdgeList(aggregate_of< ::Ifc4x3_add2::IfcOrientedEdge >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcOrientedEdge > Ifc4x3_add2::IfcEdgeLoop::EdgeList() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcOrientedEdge>(es); } +void Ifc4x3_add2::IfcEdgeLoop::setEdgeList(const std::vector< ::Ifc4x3_add2::IfcOrientedEdge >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcEdgeLoop::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[364]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEdgeLoop::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[364]); } const IfcParse::entity& Ifc4x3_add2::IfcEdgeLoop::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[364]); } -Ifc4x3_add2::IfcEdgeLoop::IfcEdgeLoop(IfcEntityInstanceData&& e) : IfcLoop(std::move(e)) { } -Ifc4x3_add2::IfcEdgeLoop::IfcEdgeLoop(aggregate_of< ::Ifc4x3_add2::IfcOrientedEdge >::ptr v1_EdgeList) : IfcLoop(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_EdgeList)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcEdgeLoop::IfcEdgeLoop(const std::weak_ptr& e) : IfcLoop(e) { } +// Ifc4x3_add2::IfcEdgeLoop::IfcEdgeLoop(std::vector< ::Ifc4x3_add2::IfcOrientedEdge > v1_EdgeList) : IfcLoop(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_EdgeList)->generalize());; populate_derived(); } // Function implementations for IfcElectricAppliance -boost::optional< ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value > Ifc4x3_add2::IfcElectricAppliance::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value > Ifc4x3_add2::IfcElectricAppliance::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcElectricAppliance::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcElectricAppliance::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[365]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElectricAppliance::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[365]); } const IfcParse::entity& Ifc4x3_add2::IfcElectricAppliance::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[365]); } -Ifc4x3_add2::IfcElectricAppliance::IfcElectricAppliance(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcElectricAppliance::IfcElectricAppliance(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcElectricAppliance::IfcElectricAppliance(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcElectricAppliance::IfcElectricAppliance(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcElectricApplianceType ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value Ifc4x3_add2::IfcElectricApplianceType::PredefinedType() const { return ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcElectricApplianceType::setPredefinedType(::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcElectricApplianceType::setPredefinedType(const ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcElectricApplianceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[366]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElectricApplianceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[366]); } const IfcParse::entity& Ifc4x3_add2::IfcElectricApplianceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[366]); } -Ifc4x3_add2::IfcElectricApplianceType::IfcElectricApplianceType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcElectricApplianceType::IfcElectricApplianceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcElectricApplianceType::IfcElectricApplianceType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcElectricApplianceType::IfcElectricApplianceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcElectricDistributionBoard -boost::optional< ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value > Ifc4x3_add2::IfcElectricDistributionBoard::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value > Ifc4x3_add2::IfcElectricDistributionBoard::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcElectricDistributionBoard::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcElectricDistributionBoard::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[372]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElectricDistributionBoard::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[372]); } const IfcParse::entity& Ifc4x3_add2::IfcElectricDistributionBoard::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[372]); } -Ifc4x3_add2::IfcElectricDistributionBoard::IfcElectricDistributionBoard(IfcEntityInstanceData&& e) : IfcFlowController(std::move(e)) { } -Ifc4x3_add2::IfcElectricDistributionBoard::IfcElectricDistributionBoard(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value > v9_PredefinedType) : IfcFlowController(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcElectricDistributionBoard::IfcElectricDistributionBoard(const std::weak_ptr& e) : IfcFlowController(e) { } +// Ifc4x3_add2::IfcElectricDistributionBoard::IfcElectricDistributionBoard(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value > v9_PredefinedType) : IfcFlowController(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcElectricDistributionBoardType ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value Ifc4x3_add2::IfcElectricDistributionBoardType::PredefinedType() const { return ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcElectricDistributionBoardType::setPredefinedType(::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcElectricDistributionBoardType::setPredefinedType(const ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcElectricDistributionBoardType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[373]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElectricDistributionBoardType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[373]); } const IfcParse::entity& Ifc4x3_add2::IfcElectricDistributionBoardType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[373]); } -Ifc4x3_add2::IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(IfcEntityInstanceData&& e) : IfcFlowControllerType(std::move(e)) { } -Ifc4x3_add2::IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(const std::weak_ptr& e) : IfcFlowControllerType(e) { } +// Ifc4x3_add2::IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcElectricFlowStorageDevice -boost::optional< ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value > Ifc4x3_add2::IfcElectricFlowStorageDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value > Ifc4x3_add2::IfcElectricFlowStorageDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcElectricFlowStorageDevice::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcElectricFlowStorageDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[375]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElectricFlowStorageDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[375]); } const IfcParse::entity& Ifc4x3_add2::IfcElectricFlowStorageDevice::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[375]); } -Ifc4x3_add2::IfcElectricFlowStorageDevice::IfcElectricFlowStorageDevice(IfcEntityInstanceData&& e) : IfcFlowStorageDevice(std::move(e)) { } -Ifc4x3_add2::IfcElectricFlowStorageDevice::IfcElectricFlowStorageDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowStorageDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcElectricFlowStorageDevice::IfcElectricFlowStorageDevice(const std::weak_ptr& e) : IfcFlowStorageDevice(e) { } +// Ifc4x3_add2::IfcElectricFlowStorageDevice::IfcElectricFlowStorageDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowStorageDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcElectricFlowStorageDeviceType ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value Ifc4x3_add2::IfcElectricFlowStorageDeviceType::PredefinedType() const { return ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcElectricFlowStorageDeviceType::setPredefinedType(::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcElectricFlowStorageDeviceType::setPredefinedType(const ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcElectricFlowStorageDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[376]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElectricFlowStorageDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[376]); } const IfcParse::entity& Ifc4x3_add2::IfcElectricFlowStorageDeviceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[376]); } -Ifc4x3_add2::IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(IfcEntityInstanceData&& e) : IfcFlowStorageDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowStorageDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(const std::weak_ptr& e) : IfcFlowStorageDeviceType(e) { } +// Ifc4x3_add2::IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowStorageDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcElectricFlowTreatmentDevice -boost::optional< ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > Ifc4x3_add2::IfcElectricFlowTreatmentDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcElectricFlowTreatmentDevice::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > Ifc4x3_add2::IfcElectricFlowTreatmentDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcElectricFlowTreatmentDevice::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcElectricFlowTreatmentDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[378]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElectricFlowTreatmentDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[378]); } const IfcParse::entity& Ifc4x3_add2::IfcElectricFlowTreatmentDevice::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[378]); } -Ifc4x3_add2::IfcElectricFlowTreatmentDevice::IfcElectricFlowTreatmentDevice(IfcEntityInstanceData&& e) : IfcFlowTreatmentDevice(std::move(e)) { } -Ifc4x3_add2::IfcElectricFlowTreatmentDevice::IfcElectricFlowTreatmentDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcElectricFlowTreatmentDevice::IfcElectricFlowTreatmentDevice(const std::weak_ptr& e) : IfcFlowTreatmentDevice(e) { } +// Ifc4x3_add2::IfcElectricFlowTreatmentDevice::IfcElectricFlowTreatmentDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcElectricFlowTreatmentDeviceType ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value Ifc4x3_add2::IfcElectricFlowTreatmentDeviceType::PredefinedType() const { return ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcElectricFlowTreatmentDeviceType::setPredefinedType(::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcElectricFlowTreatmentDeviceType::setPredefinedType(const ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcElectricFlowTreatmentDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[379]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElectricFlowTreatmentDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[379]); } const IfcParse::entity& Ifc4x3_add2::IfcElectricFlowTreatmentDeviceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[379]); } -Ifc4x3_add2::IfcElectricFlowTreatmentDeviceType::IfcElectricFlowTreatmentDeviceType(IfcEntityInstanceData&& e) : IfcFlowTreatmentDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcElectricFlowTreatmentDeviceType::IfcElectricFlowTreatmentDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcElectricFlowTreatmentDeviceType::IfcElectricFlowTreatmentDeviceType(const std::weak_ptr& e) : IfcFlowTreatmentDeviceType(e) { } +// Ifc4x3_add2::IfcElectricFlowTreatmentDeviceType::IfcElectricFlowTreatmentDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcElectricGenerator -boost::optional< ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value > Ifc4x3_add2::IfcElectricGenerator::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value > Ifc4x3_add2::IfcElectricGenerator::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcElectricGenerator::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcElectricGenerator::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[381]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElectricGenerator::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[381]); } const IfcParse::entity& Ifc4x3_add2::IfcElectricGenerator::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[381]); } -Ifc4x3_add2::IfcElectricGenerator::IfcElectricGenerator(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcElectricGenerator::IfcElectricGenerator(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcElectricGenerator::IfcElectricGenerator(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcElectricGenerator::IfcElectricGenerator(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcElectricGeneratorType ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value Ifc4x3_add2::IfcElectricGeneratorType::PredefinedType() const { return ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcElectricGeneratorType::setPredefinedType(::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcElectricGeneratorType::setPredefinedType(const ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcElectricGeneratorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[382]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElectricGeneratorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[382]); } const IfcParse::entity& Ifc4x3_add2::IfcElectricGeneratorType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[382]); } -Ifc4x3_add2::IfcElectricGeneratorType::IfcElectricGeneratorType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcElectricGeneratorType::IfcElectricGeneratorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcElectricGeneratorType::IfcElectricGeneratorType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcElectricGeneratorType::IfcElectricGeneratorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcElectricMotor -boost::optional< ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value > Ifc4x3_add2::IfcElectricMotor::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcElectricMotorTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElectricMotorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value > Ifc4x3_add2::IfcElectricMotor::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcElectricMotorTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcElectricMotor::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElectricMotorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcElectricMotor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[384]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElectricMotor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[384]); } const IfcParse::entity& Ifc4x3_add2::IfcElectricMotor::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[384]); } -Ifc4x3_add2::IfcElectricMotor::IfcElectricMotor(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcElectricMotor::IfcElectricMotor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElectricMotorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcElectricMotor::IfcElectricMotor(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcElectricMotor::IfcElectricMotor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElectricMotorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcElectricMotorType ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value Ifc4x3_add2::IfcElectricMotorType::PredefinedType() const { return ::Ifc4x3_add2::IfcElectricMotorTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcElectricMotorType::setPredefinedType(::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElectricMotorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcElectricMotorType::setPredefinedType(const ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElectricMotorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcElectricMotorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[385]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElectricMotorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[385]); } const IfcParse::entity& Ifc4x3_add2::IfcElectricMotorType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[385]); } -Ifc4x3_add2::IfcElectricMotorType::IfcElectricMotorType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcElectricMotorType::IfcElectricMotorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElectricMotorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcElectricMotorType::IfcElectricMotorType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcElectricMotorType::IfcElectricMotorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElectricMotorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcElectricTimeControl -boost::optional< ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value > Ifc4x3_add2::IfcElectricTimeControl::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value > Ifc4x3_add2::IfcElectricTimeControl::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcElectricTimeControl::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcElectricTimeControl::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[388]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElectricTimeControl::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[388]); } const IfcParse::entity& Ifc4x3_add2::IfcElectricTimeControl::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[388]); } -Ifc4x3_add2::IfcElectricTimeControl::IfcElectricTimeControl(IfcEntityInstanceData&& e) : IfcFlowController(std::move(e)) { } -Ifc4x3_add2::IfcElectricTimeControl::IfcElectricTimeControl(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value > v9_PredefinedType) : IfcFlowController(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcElectricTimeControl::IfcElectricTimeControl(const std::weak_ptr& e) : IfcFlowController(e) { } +// Ifc4x3_add2::IfcElectricTimeControl::IfcElectricTimeControl(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value > v9_PredefinedType) : IfcFlowController(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcElectricTimeControlType ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value Ifc4x3_add2::IfcElectricTimeControlType::PredefinedType() const { return ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcElectricTimeControlType::setPredefinedType(::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcElectricTimeControlType::setPredefinedType(const ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcElectricTimeControlType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[389]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElectricTimeControlType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[389]); } const IfcParse::entity& Ifc4x3_add2::IfcElectricTimeControlType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[389]); } -Ifc4x3_add2::IfcElectricTimeControlType::IfcElectricTimeControlType(IfcEntityInstanceData&& e) : IfcFlowControllerType(std::move(e)) { } -Ifc4x3_add2::IfcElectricTimeControlType::IfcElectricTimeControlType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcElectricTimeControlType::IfcElectricTimeControlType(const std::weak_ptr& e) : IfcFlowControllerType(e) { } +// Ifc4x3_add2::IfcElectricTimeControlType::IfcElectricTimeControlType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcElement -boost::optional< std::string > Ifc4x3_add2::IfcElement::Tag() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcElement::setTag(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcElement::Tag() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcElement::setTag(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -::Ifc4x3_add2::IfcRelFillsElement::list::ptr Ifc4x3_add2::IfcElement::FillsVoids() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[936], 5)->as(); } -::Ifc4x3_add2::IfcRelConnectsElements::list::ptr Ifc4x3_add2::IfcElement::ConnectedTo() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[918], 5)->as(); } -::Ifc4x3_add2::IfcRelInterferesElements::list::ptr Ifc4x3_add2::IfcElement::IsInterferedByElements() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[938], 5)->as(); } -::Ifc4x3_add2::IfcRelInterferesElements::list::ptr Ifc4x3_add2::IfcElement::InterferesElements() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[938], 4)->as(); } -::Ifc4x3_add2::IfcRelProjectsElement::list::ptr Ifc4x3_add2::IfcElement::HasProjections() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[941], 4)->as(); } -::Ifc4x3_add2::IfcRelVoidsElement::list::ptr Ifc4x3_add2::IfcElement::HasOpenings() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[948], 4)->as(); } -::Ifc4x3_add2::IfcRelConnectsWithRealizingElements::list::ptr Ifc4x3_add2::IfcElement::IsConnectionRealization() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[925], 7)->as(); } -::Ifc4x3_add2::IfcRelSpaceBoundary::list::ptr Ifc4x3_add2::IfcElement::ProvidesBoundaries() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[945], 5)->as(); } -::Ifc4x3_add2::IfcRelConnectsElements::list::ptr Ifc4x3_add2::IfcElement::ConnectedFrom() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[918], 6)->as(); } -::Ifc4x3_add2::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_add2::IfcElement::ContainedInStructure() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[926], 4)->as(); } -::Ifc4x3_add2::IfcRelCoversBldgElements::list::ptr Ifc4x3_add2::IfcElement::HasCoverings() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[927], 4)->as(); } -::Ifc4x3_add2::IfcRelAdheresToElement::list::ptr Ifc4x3_add2::IfcElement::HasSurfaceFeatures() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[898], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelFillsElement> Ifc4x3_add2::IfcElement::FillsVoids() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[936], 5)); } +std::vector<::Ifc4x3_add2::IfcRelConnectsElements> Ifc4x3_add2::IfcElement::ConnectedTo() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[918], 5)); } +std::vector<::Ifc4x3_add2::IfcRelInterferesElements> Ifc4x3_add2::IfcElement::IsInterferedByElements() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[938], 5)); } +std::vector<::Ifc4x3_add2::IfcRelInterferesElements> Ifc4x3_add2::IfcElement::InterferesElements() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[938], 4)); } +std::vector<::Ifc4x3_add2::IfcRelProjectsElement> Ifc4x3_add2::IfcElement::HasProjections() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[941], 4)); } +std::vector<::Ifc4x3_add2::IfcRelVoidsElement> Ifc4x3_add2::IfcElement::HasOpenings() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[948], 4)); } +std::vector<::Ifc4x3_add2::IfcRelConnectsWithRealizingElements> Ifc4x3_add2::IfcElement::IsConnectionRealization() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[925], 7)); } +std::vector<::Ifc4x3_add2::IfcRelSpaceBoundary> Ifc4x3_add2::IfcElement::ProvidesBoundaries() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[945], 5)); } +std::vector<::Ifc4x3_add2::IfcRelConnectsElements> Ifc4x3_add2::IfcElement::ConnectedFrom() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[918], 6)); } +std::vector<::Ifc4x3_add2::IfcRelContainedInSpatialStructure> Ifc4x3_add2::IfcElement::ContainedInStructure() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[926], 4)); } +std::vector<::Ifc4x3_add2::IfcRelCoversBldgElements> Ifc4x3_add2::IfcElement::HasCoverings() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[927], 4)); } +std::vector<::Ifc4x3_add2::IfcRelAdheresToElement> Ifc4x3_add2::IfcElement::HasSurfaceFeatures() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[898], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[392]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[392]); } const IfcParse::entity& Ifc4x3_add2::IfcElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[392]); } -Ifc4x3_add2::IfcElement::IfcElement(IfcEntityInstanceData&& e) : IfcProduct(std::move(e)) { } -Ifc4x3_add2::IfcElement::IfcElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcProduct(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcElement::IfcElement(const std::weak_ptr& e) : IfcProduct(e) { } +// Ifc4x3_add2::IfcElement::IfcElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcProduct(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcElementAssembly -boost::optional< ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value > Ifc4x3_add2::IfcElementAssembly::AssemblyPlace() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcAssemblyPlaceEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAssemblyPlaceEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -boost::optional< ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value > Ifc4x3_add2::IfcElementAssembly::PredefinedType() const { if(get_attribute_value(9).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value > v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } +std::optional< ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value > Ifc4x3_add2::IfcElementAssembly::AssemblyPlace() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcAssemblyPlaceEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcElementAssembly::setAssemblyPlace(const std::optional< ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcAssemblyPlaceEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value > Ifc4x3_add2::IfcElementAssembly::PredefinedType() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::FromString(get_attribute_value(9)); } +void Ifc4x3_add2::IfcElementAssembly::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value >& v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcElementAssembly::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[394]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElementAssembly::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[394]); } const IfcParse::entity& Ifc4x3_add2::IfcElementAssembly::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[394]); } -Ifc4x3_add2::IfcElementAssembly::IfcElementAssembly(IfcEntityInstanceData&& e) : IfcElement(std::move(e)) { } -Ifc4x3_add2::IfcElementAssembly::IfcElementAssembly(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value > v9_AssemblyPlace, boost::optional< ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value > v10_PredefinedType) : IfcElement(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_AssemblyPlace) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAssemblyPlaceEnum::Class(),(size_t)*v9_AssemblyPlace))); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcElementAssembly::IfcElementAssembly(const std::weak_ptr& e) : IfcElement(e) { } +// Ifc4x3_add2::IfcElementAssembly::IfcElementAssembly(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value > v9_AssemblyPlace, std::optional< ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value > v10_PredefinedType) : IfcElement(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_AssemblyPlace) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcAssemblyPlaceEnum::Class(),(size_t)*v9_AssemblyPlace))); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } // Function implementations for IfcElementAssemblyType ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value Ifc4x3_add2::IfcElementAssemblyType::PredefinedType() const { return ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcElementAssemblyType::setPredefinedType(::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcElementAssemblyType::setPredefinedType(const ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcElementAssemblyType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[395]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElementAssemblyType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[395]); } const IfcParse::entity& Ifc4x3_add2::IfcElementAssemblyType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[395]); } -Ifc4x3_add2::IfcElementAssemblyType::IfcElementAssemblyType(IfcEntityInstanceData&& e) : IfcElementType(std::move(e)) { } -Ifc4x3_add2::IfcElementAssemblyType::IfcElementAssemblyType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value v10_PredefinedType) : IfcElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcElementAssemblyType::IfcElementAssemblyType(const std::weak_ptr& e) : IfcElementType(e) { } +// Ifc4x3_add2::IfcElementAssemblyType::IfcElementAssemblyType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value v10_PredefinedType) : IfcElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcElementComponent -const IfcParse::entity& Ifc4x3_add2::IfcElementComponent::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[397]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElementComponent::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[397]); } const IfcParse::entity& Ifc4x3_add2::IfcElementComponent::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[397]); } -Ifc4x3_add2::IfcElementComponent::IfcElementComponent(IfcEntityInstanceData&& e) : IfcElement(std::move(e)) { } -Ifc4x3_add2::IfcElementComponent::IfcElementComponent(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcElementComponent::IfcElementComponent(const std::weak_ptr& e) : IfcElement(e) { } +// Ifc4x3_add2::IfcElementComponent::IfcElementComponent(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcElementComponentType -const IfcParse::entity& Ifc4x3_add2::IfcElementComponentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[398]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElementComponentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[398]); } const IfcParse::entity& Ifc4x3_add2::IfcElementComponentType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[398]); } -Ifc4x3_add2::IfcElementComponentType::IfcElementComponentType(IfcEntityInstanceData&& e) : IfcElementType(std::move(e)) { } -Ifc4x3_add2::IfcElementComponentType::IfcElementComponentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcElementComponentType::IfcElementComponentType(const std::weak_ptr& e) : IfcElementType(e) { } +// Ifc4x3_add2::IfcElementComponentType::IfcElementComponentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcElementQuantity -boost::optional< std::string > Ifc4x3_add2::IfcElementQuantity::MethodOfMeasurement() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr Ifc4x3_add2::IfcElementQuantity::Quantities() const { aggregate_of_instance::ptr es = get_attribute_value(5); return es->as< ::Ifc4x3_add2::IfcPhysicalQuantity >(); } -void Ifc4x3_add2::IfcElementQuantity::setQuantities(aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr v) { set_attribute_value(5, (v)->generalize());if constexpr (false)unset_attribute_value(5); } +std::optional< std::string > Ifc4x3_add2::IfcElementQuantity::MethodOfMeasurement() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcElementQuantity::setMethodOfMeasurement(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity > Ifc4x3_add2::IfcElementQuantity::Quantities() const { std::vector es = get_attribute_value(5); return cast_vector<::Ifc4x3_add2::IfcPhysicalQuantity>(es); } +void Ifc4x3_add2::IfcElementQuantity::setQuantities(const std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity >& v) { set_attribute_value(5, cast_vector(v));if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcElementQuantity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[400]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElementQuantity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[400]); } const IfcParse::entity& Ifc4x3_add2::IfcElementQuantity::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[400]); } -Ifc4x3_add2::IfcElementQuantity::IfcElementQuantity(IfcEntityInstanceData&& e) : IfcQuantitySet(std::move(e)) { } -Ifc4x3_add2::IfcElementQuantity::IfcElementQuantity(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_MethodOfMeasurement, aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr v6_Quantities) : IfcQuantitySet(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_MethodOfMeasurement) {set_attribute_value(4, (*v5_MethodOfMeasurement)); }set_attribute_value(5, (v6_Quantities)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcElementQuantity::IfcElementQuantity(const std::weak_ptr& e) : IfcQuantitySet(e) { } +// Ifc4x3_add2::IfcElementQuantity::IfcElementQuantity(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_MethodOfMeasurement, std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity > v6_Quantities) : IfcQuantitySet(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_MethodOfMeasurement) {set_attribute_value(4, (*v5_MethodOfMeasurement)); }set_attribute_value(5, (v6_Quantities)->generalize());; populate_derived(); } // Function implementations for IfcElementType -boost::optional< std::string > Ifc4x3_add2::IfcElementType::ElementType() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcElementType::setElementType(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< std::string > Ifc4x3_add2::IfcElementType::ElementType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcElementType::setElementType(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[401]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[401]); } const IfcParse::entity& Ifc4x3_add2::IfcElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[401]); } -Ifc4x3_add2::IfcElementType::IfcElementType(IfcEntityInstanceData&& e) : IfcTypeProduct(std::move(e)) { } -Ifc4x3_add2::IfcElementType::IfcElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcTypeProduct(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcElementType::IfcElementType(const std::weak_ptr& e) : IfcTypeProduct(e) { } +// Ifc4x3_add2::IfcElementType::IfcElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcTypeProduct(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcElementarySurface -::Ifc4x3_add2::IfcAxis2Placement3D* Ifc4x3_add2::IfcElementarySurface::Position() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcAxis2Placement3D>(true); } -void Ifc4x3_add2::IfcElementarySurface::setPosition(::Ifc4x3_add2::IfcAxis2Placement3D* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcAxis2Placement3D Ifc4x3_add2::IfcElementarySurface::Position() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcAxis2Placement3D>(); } +void Ifc4x3_add2::IfcElementarySurface::setPosition(const ::Ifc4x3_add2::IfcAxis2Placement3D& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcElementarySurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[393]); } +// const IfcParse::entity& Ifc4x3_add2::IfcElementarySurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[393]); } const IfcParse::entity& Ifc4x3_add2::IfcElementarySurface::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[393]); } -Ifc4x3_add2::IfcElementarySurface::IfcElementarySurface(IfcEntityInstanceData&& e) : IfcSurface(std::move(e)) { } -Ifc4x3_add2::IfcElementarySurface::IfcElementarySurface(::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position) : IfcSurface(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcElementarySurface::IfcElementarySurface(const std::weak_ptr& e) : IfcSurface(e) { } +// Ifc4x3_add2::IfcElementarySurface::IfcElementarySurface(::Ifc4x3_add2::IfcAxis2Placement3D v1_Position) : IfcSurface(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Position));; populate_derived(); } // Function implementations for IfcEllipse double Ifc4x3_add2::IfcEllipse::SemiAxis1() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcEllipse::setSemiAxis1(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcEllipse::setSemiAxis1(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } double Ifc4x3_add2::IfcEllipse::SemiAxis2() const { double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcEllipse::setSemiAxis2(double v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcEllipse::setSemiAxis2(const double& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcEllipse::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[402]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEllipse::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[402]); } const IfcParse::entity& Ifc4x3_add2::IfcEllipse::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[402]); } -Ifc4x3_add2::IfcEllipse::IfcEllipse(IfcEntityInstanceData&& e) : IfcConic(std::move(e)) { } -Ifc4x3_add2::IfcEllipse::IfcEllipse(::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_SemiAxis1, double v3_SemiAxis2) : IfcConic(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_SemiAxis1));set_attribute_value(2, (v3_SemiAxis2));; populate_derived(); } +// Ifc4x3_add2::IfcEllipse::IfcEllipse(const std::weak_ptr& e) : IfcConic(e) { } +// Ifc4x3_add2::IfcEllipse::IfcEllipse(::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_SemiAxis1, double v3_SemiAxis2) : IfcConic(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_SemiAxis1));set_attribute_value(2, (v3_SemiAxis2));; populate_derived(); } // Function implementations for IfcEllipseProfileDef double Ifc4x3_add2::IfcEllipseProfileDef::SemiAxis1() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcEllipseProfileDef::setSemiAxis1(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcEllipseProfileDef::setSemiAxis1(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcEllipseProfileDef::SemiAxis2() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcEllipseProfileDef::setSemiAxis2(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcEllipseProfileDef::setSemiAxis2(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcEllipseProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[403]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEllipseProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[403]); } const IfcParse::entity& Ifc4x3_add2::IfcEllipseProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[403]); } -Ifc4x3_add2::IfcEllipseProfileDef::IfcEllipseProfileDef(IfcEntityInstanceData&& e) : IfcParameterizedProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcEllipseProfileDef::IfcEllipseProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_SemiAxis1, double v5_SemiAxis2) : IfcParameterizedProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_SemiAxis1));set_attribute_value(4, (v5_SemiAxis2));; populate_derived(); } +// Ifc4x3_add2::IfcEllipseProfileDef::IfcEllipseProfileDef(const std::weak_ptr& e) : IfcParameterizedProfileDef(e) { } +// Ifc4x3_add2::IfcEllipseProfileDef::IfcEllipseProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_SemiAxis1, double v5_SemiAxis2) : IfcParameterizedProfileDef(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); } if (v3_Position) {set_attribute_value(2, (*v3_Position)); }set_attribute_value(3, (v4_SemiAxis1));set_attribute_value(4, (v5_SemiAxis2));; populate_derived(); } // Function implementations for IfcEnergyConversionDevice -const IfcParse::entity& Ifc4x3_add2::IfcEnergyConversionDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[404]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEnergyConversionDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[404]); } const IfcParse::entity& Ifc4x3_add2::IfcEnergyConversionDevice::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[404]); } -Ifc4x3_add2::IfcEnergyConversionDevice::IfcEnergyConversionDevice(IfcEntityInstanceData&& e) : IfcDistributionFlowElement(std::move(e)) { } -Ifc4x3_add2::IfcEnergyConversionDevice::IfcEnergyConversionDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcEnergyConversionDevice::IfcEnergyConversionDevice(const std::weak_ptr& e) : IfcDistributionFlowElement(e) { } +// Ifc4x3_add2::IfcEnergyConversionDevice::IfcEnergyConversionDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcDistributionFlowElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcEnergyConversionDeviceType -const IfcParse::entity& Ifc4x3_add2::IfcEnergyConversionDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[405]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEnergyConversionDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[405]); } const IfcParse::entity& Ifc4x3_add2::IfcEnergyConversionDeviceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[405]); } -Ifc4x3_add2::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(IfcEntityInstanceData&& e) : IfcDistributionFlowElementType(std::move(e)) { } -Ifc4x3_add2::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(const std::weak_ptr& e) : IfcDistributionFlowElementType(e) { } +// Ifc4x3_add2::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcEngine -boost::optional< ::Ifc4x3_add2::IfcEngineTypeEnum::Value > Ifc4x3_add2::IfcEngine::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcEngineTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcEngine::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcEngineTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcEngineTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcEngineTypeEnum::Value > Ifc4x3_add2::IfcEngine::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcEngineTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcEngine::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcEngineTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcEngineTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcEngine::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[407]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEngine::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[407]); } const IfcParse::entity& Ifc4x3_add2::IfcEngine::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[407]); } -Ifc4x3_add2::IfcEngine::IfcEngine(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcEngine::IfcEngine(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcEngineTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcEngineTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcEngine::IfcEngine(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcEngine::IfcEngine(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcEngineTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcEngineTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcEngineType ::Ifc4x3_add2::IfcEngineTypeEnum::Value Ifc4x3_add2::IfcEngineType::PredefinedType() const { return ::Ifc4x3_add2::IfcEngineTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcEngineType::setPredefinedType(::Ifc4x3_add2::IfcEngineTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcEngineTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcEngineType::setPredefinedType(const ::Ifc4x3_add2::IfcEngineTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcEngineTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcEngineType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[408]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEngineType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[408]); } const IfcParse::entity& Ifc4x3_add2::IfcEngineType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[408]); } -Ifc4x3_add2::IfcEngineType::IfcEngineType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcEngineType::IfcEngineType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcEngineTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcEngineTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcEngineType::IfcEngineType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcEngineType::IfcEngineType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcEngineTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcEngineTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcEvaporativeCooler -boost::optional< ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value > Ifc4x3_add2::IfcEvaporativeCooler::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value > Ifc4x3_add2::IfcEvaporativeCooler::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcEvaporativeCooler::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcEvaporativeCooler::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[410]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEvaporativeCooler::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[410]); } const IfcParse::entity& Ifc4x3_add2::IfcEvaporativeCooler::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[410]); } -Ifc4x3_add2::IfcEvaporativeCooler::IfcEvaporativeCooler(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcEvaporativeCooler::IfcEvaporativeCooler(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcEvaporativeCooler::IfcEvaporativeCooler(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcEvaporativeCooler::IfcEvaporativeCooler(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcEvaporativeCoolerType ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value Ifc4x3_add2::IfcEvaporativeCoolerType::PredefinedType() const { return ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcEvaporativeCoolerType::setPredefinedType(::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcEvaporativeCoolerType::setPredefinedType(const ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcEvaporativeCoolerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[411]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEvaporativeCoolerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[411]); } const IfcParse::entity& Ifc4x3_add2::IfcEvaporativeCoolerType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[411]); } -Ifc4x3_add2::IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcEvaporator -boost::optional< ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value > Ifc4x3_add2::IfcEvaporator::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcEvaporatorTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcEvaporatorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value > Ifc4x3_add2::IfcEvaporator::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcEvaporatorTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcEvaporator::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcEvaporatorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcEvaporator::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[413]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEvaporator::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[413]); } const IfcParse::entity& Ifc4x3_add2::IfcEvaporator::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[413]); } -Ifc4x3_add2::IfcEvaporator::IfcEvaporator(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcEvaporator::IfcEvaporator(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcEvaporatorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcEvaporator::IfcEvaporator(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcEvaporator::IfcEvaporator(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcEvaporatorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcEvaporatorType ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value Ifc4x3_add2::IfcEvaporatorType::PredefinedType() const { return ::Ifc4x3_add2::IfcEvaporatorTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcEvaporatorType::setPredefinedType(::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcEvaporatorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcEvaporatorType::setPredefinedType(const ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcEvaporatorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcEvaporatorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[414]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEvaporatorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[414]); } const IfcParse::entity& Ifc4x3_add2::IfcEvaporatorType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[414]); } -Ifc4x3_add2::IfcEvaporatorType::IfcEvaporatorType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcEvaporatorType::IfcEvaporatorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcEvaporatorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcEvaporatorType::IfcEvaporatorType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcEvaporatorType::IfcEvaporatorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcEvaporatorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcEvent -boost::optional< ::Ifc4x3_add2::IfcEventTypeEnum::Value > Ifc4x3_add2::IfcEvent::PredefinedType() const { if(get_attribute_value(7).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcEventTypeEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcEvent::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcEventTypeEnum::Value > v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcEventTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } -boost::optional< ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value > Ifc4x3_add2::IfcEvent::EventTriggerType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcEventTriggerTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcEventTriggerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -boost::optional< std::string > Ifc4x3_add2::IfcEvent::UserDefinedEventTriggerType() const { if(get_attribute_value(9).isNull()) { return boost::none; } std::string v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -::Ifc4x3_add2::IfcEventTime* Ifc4x3_add2::IfcEvent::EventOccurenceTime() const { if(get_attribute_value(10).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(10)))->as<::Ifc4x3_add2::IfcEventTime>(true); } -void Ifc4x3_add2::IfcEvent::setEventOccurenceTime(::Ifc4x3_add2::IfcEventTime* v) { set_attribute_value(10, v->as());if constexpr (false)unset_attribute_value(10); } +std::optional< ::Ifc4x3_add2::IfcEventTypeEnum::Value > Ifc4x3_add2::IfcEvent::PredefinedType() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcEventTypeEnum::FromString(get_attribute_value(7)); } +void Ifc4x3_add2::IfcEvent::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcEventTypeEnum::Value >& v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcEventTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } +std::optional< ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value > Ifc4x3_add2::IfcEvent::EventTriggerType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcEventTriggerTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcEvent::setEventTriggerType(const std::optional< ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcEventTriggerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< std::string > Ifc4x3_add2::IfcEvent::UserDefinedEventTriggerType() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } std::string v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcEvent::setUserDefinedEventTriggerType(const std::optional< std::string >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +::Ifc4x3_add2::IfcEventTime Ifc4x3_add2::IfcEvent::EventOccurenceTime() const { if(get_attribute_value(10).isNull()) { return ::Ifc4x3_add2::IfcEventTime{}; } return ((express::Base)(get_attribute_value(10))).as<::Ifc4x3_add2::IfcEventTime>(); } +void Ifc4x3_add2::IfcEvent::setEventOccurenceTime(const ::Ifc4x3_add2::IfcEventTime& v) { set_attribute_value(10, v);if constexpr (false)unset_attribute_value(10); } -const IfcParse::entity& Ifc4x3_add2::IfcEvent::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[416]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEvent::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[416]); } const IfcParse::entity& Ifc4x3_add2::IfcEvent::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[416]); } -Ifc4x3_add2::IfcEvent::IfcEvent(IfcEntityInstanceData&& e) : IfcProcess(std::move(e)) { } -Ifc4x3_add2::IfcEvent::IfcEvent(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, boost::optional< ::Ifc4x3_add2::IfcEventTypeEnum::Value > v8_PredefinedType, boost::optional< ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value > v9_EventTriggerType, boost::optional< std::string > v10_UserDefinedEventTriggerType, ::Ifc4x3_add2::IfcEventTime* v11_EventOccurenceTime) : IfcProcess(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); } if (v8_PredefinedType) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcEventTypeEnum::Class(),(size_t)*v8_PredefinedType))); } if (v9_EventTriggerType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcEventTriggerTypeEnum::Class(),(size_t)*v9_EventTriggerType))); } if (v10_UserDefinedEventTriggerType) {set_attribute_value(9, (*v10_UserDefinedEventTriggerType)); }set_attribute_value(10, v11_EventOccurenceTime ? v11_EventOccurenceTime->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcEvent::IfcEvent(const std::weak_ptr& e) : IfcProcess(e) { } +// Ifc4x3_add2::IfcEvent::IfcEvent(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, std::optional< ::Ifc4x3_add2::IfcEventTypeEnum::Value > v8_PredefinedType, std::optional< ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value > v9_EventTriggerType, std::optional< std::string > v10_UserDefinedEventTriggerType, ::Ifc4x3_add2::IfcEventTime v11_EventOccurenceTime) : IfcProcess(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); } if (v8_PredefinedType) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcEventTypeEnum::Class(),(size_t)*v8_PredefinedType))); } if (v9_EventTriggerType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcEventTriggerTypeEnum::Class(),(size_t)*v9_EventTriggerType))); } if (v10_UserDefinedEventTriggerType) {set_attribute_value(9, (*v10_UserDefinedEventTriggerType)); } if (v11_EventOccurenceTime) {set_attribute_value(10, (*v11_EventOccurenceTime)); }; populate_derived(); } // Function implementations for IfcEventTime -boost::optional< std::string > Ifc4x3_add2::IfcEventTime::ActualDate() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcEventTime::setActualDate(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< std::string > Ifc4x3_add2::IfcEventTime::EarlyDate() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcEventTime::LateDate() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcEventTime::setLateDate(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< std::string > Ifc4x3_add2::IfcEventTime::ScheduleDate() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcEventTime::ActualDate() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcEventTime::setActualDate(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< std::string > Ifc4x3_add2::IfcEventTime::EarlyDate() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcEventTime::setEarlyDate(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcEventTime::LateDate() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcEventTime::setLateDate(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcEventTime::ScheduleDate() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcEventTime::setScheduleDate(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -const IfcParse::entity& Ifc4x3_add2::IfcEventTime::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[417]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEventTime::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[417]); } const IfcParse::entity& Ifc4x3_add2::IfcEventTime::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[417]); } -Ifc4x3_add2::IfcEventTime::IfcEventTime(IfcEntityInstanceData&& e) : IfcSchedulingTime(std::move(e)) { } -Ifc4x3_add2::IfcEventTime::IfcEventTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< std::string > v4_ActualDate, boost::optional< std::string > v5_EarlyDate, boost::optional< std::string > v6_LateDate, boost::optional< std::string > v7_ScheduleDate) : IfcSchedulingTime(IfcEntityInstanceData(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DataOrigin) {set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)*v2_DataOrigin))); } if (v3_UserDefinedDataOrigin) {set_attribute_value(2, (*v3_UserDefinedDataOrigin)); } if (v4_ActualDate) {set_attribute_value(3, (*v4_ActualDate)); } if (v5_EarlyDate) {set_attribute_value(4, (*v5_EarlyDate)); } if (v6_LateDate) {set_attribute_value(5, (*v6_LateDate)); } if (v7_ScheduleDate) {set_attribute_value(6, (*v7_ScheduleDate)); }; populate_derived(); } +// Ifc4x3_add2::IfcEventTime::IfcEventTime(const std::weak_ptr& e) : IfcSchedulingTime(e) { } +// Ifc4x3_add2::IfcEventTime::IfcEventTime(std::optional< std::string > v1_Name, std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, std::optional< std::string > v3_UserDefinedDataOrigin, std::optional< std::string > v4_ActualDate, std::optional< std::string > v5_EarlyDate, std::optional< std::string > v6_LateDate, std::optional< std::string > v7_ScheduleDate) : IfcSchedulingTime(const std::weak_ptr&(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DataOrigin) {set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)*v2_DataOrigin))); } if (v3_UserDefinedDataOrigin) {set_attribute_value(2, (*v3_UserDefinedDataOrigin)); } if (v4_ActualDate) {set_attribute_value(3, (*v4_ActualDate)); } if (v5_EarlyDate) {set_attribute_value(4, (*v5_EarlyDate)); } if (v6_LateDate) {set_attribute_value(5, (*v6_LateDate)); } if (v7_ScheduleDate) {set_attribute_value(6, (*v7_ScheduleDate)); }; populate_derived(); } // Function implementations for IfcEventType ::Ifc4x3_add2::IfcEventTypeEnum::Value Ifc4x3_add2::IfcEventType::PredefinedType() const { return ::Ifc4x3_add2::IfcEventTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcEventType::setPredefinedType(::Ifc4x3_add2::IfcEventTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcEventTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcEventType::setPredefinedType(const ::Ifc4x3_add2::IfcEventTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcEventTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value Ifc4x3_add2::IfcEventType::EventTriggerType() const { return ::Ifc4x3_add2::IfcEventTriggerTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcEventType::setEventTriggerType(::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value v) { set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcEventTriggerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(10); } -boost::optional< std::string > Ifc4x3_add2::IfcEventType::UserDefinedEventTriggerType() const { if(get_attribute_value(11).isNull()) { return boost::none; } std::string v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +void Ifc4x3_add2::IfcEventType::setEventTriggerType(const ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value& v) { set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcEventTriggerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(10); } +std::optional< std::string > Ifc4x3_add2::IfcEventType::UserDefinedEventTriggerType() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } std::string v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcEventType::setUserDefinedEventTriggerType(const std::optional< std::string >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -const IfcParse::entity& Ifc4x3_add2::IfcEventType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[419]); } +// const IfcParse::entity& Ifc4x3_add2::IfcEventType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[419]); } const IfcParse::entity& Ifc4x3_add2::IfcEventType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[419]); } -Ifc4x3_add2::IfcEventType::IfcEventType(IfcEntityInstanceData&& e) : IfcTypeProcess(std::move(e)) { } -Ifc4x3_add2::IfcEventType::IfcEventType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, ::Ifc4x3_add2::IfcEventTypeEnum::Value v10_PredefinedType, ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value v11_EventTriggerType, boost::optional< std::string > v12_UserDefinedEventTriggerType) : IfcTypeProcess(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ProcessType) {set_attribute_value(8, (*v9_ProcessType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcEventTypeEnum::Class(),(size_t)v10_PredefinedType)));set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcEventTriggerTypeEnum::Class(),(size_t)v11_EventTriggerType))); if (v12_UserDefinedEventTriggerType) {set_attribute_value(11, (*v12_UserDefinedEventTriggerType)); }; populate_derived(); } +// Ifc4x3_add2::IfcEventType::IfcEventType(const std::weak_ptr& e) : IfcTypeProcess(e) { } +// Ifc4x3_add2::IfcEventType::IfcEventType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ProcessType, ::Ifc4x3_add2::IfcEventTypeEnum::Value v10_PredefinedType, ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value v11_EventTriggerType, std::optional< std::string > v12_UserDefinedEventTriggerType) : IfcTypeProcess(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ProcessType) {set_attribute_value(8, (*v9_ProcessType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcEventTypeEnum::Class(),(size_t)v10_PredefinedType)));set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcEventTriggerTypeEnum::Class(),(size_t)v11_EventTriggerType))); if (v12_UserDefinedEventTriggerType) {set_attribute_value(11, (*v12_UserDefinedEventTriggerType)); }; populate_derived(); } // Function implementations for IfcExtendedProperties -boost::optional< std::string > Ifc4x3_add2::IfcExtendedProperties::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcExtendedProperties::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcExtendedProperties::Description() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr Ifc4x3_add2::IfcExtendedProperties::Properties() const { aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcProperty >(); } -void Ifc4x3_add2::IfcExtendedProperties::setProperties(aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v) { set_attribute_value(2, (v)->generalize());if constexpr (false)unset_attribute_value(2); } +std::optional< std::string > Ifc4x3_add2::IfcExtendedProperties::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcExtendedProperties::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcExtendedProperties::Description() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcExtendedProperties::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::vector< ::Ifc4x3_add2::IfcProperty > Ifc4x3_add2::IfcExtendedProperties::Properties() const { std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcProperty>(es); } +void Ifc4x3_add2::IfcExtendedProperties::setProperties(const std::vector< ::Ifc4x3_add2::IfcProperty >& v) { set_attribute_value(2, cast_vector(v));if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcExtendedProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[421]); } +// const IfcParse::entity& Ifc4x3_add2::IfcExtendedProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[421]); } const IfcParse::entity& Ifc4x3_add2::IfcExtendedProperties::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[421]); } -Ifc4x3_add2::IfcExtendedProperties::IfcExtendedProperties(IfcEntityInstanceData&& e) : IfcPropertyAbstraction(std::move(e)) { } -Ifc4x3_add2::IfcExtendedProperties::IfcExtendedProperties(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v3_Properties) : IfcPropertyAbstraction(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_Properties)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcExtendedProperties::IfcExtendedProperties(const std::weak_ptr& e) : IfcPropertyAbstraction(e) { } +// Ifc4x3_add2::IfcExtendedProperties::IfcExtendedProperties(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcProperty > v3_Properties) : IfcPropertyAbstraction(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_Properties)->generalize());; populate_derived(); } // Function implementations for IfcExternalInformation -const IfcParse::entity& Ifc4x3_add2::IfcExternalInformation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[422]); } +// const IfcParse::entity& Ifc4x3_add2::IfcExternalInformation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[422]); } const IfcParse::entity& Ifc4x3_add2::IfcExternalInformation::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[422]); } -Ifc4x3_add2::IfcExternalInformation::IfcExternalInformation(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcExternalInformation::IfcExternalInformation() : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcExternalInformation::IfcExternalInformation(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcExternalInformation::IfcExternalInformation() : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcExternalReference -boost::optional< std::string > Ifc4x3_add2::IfcExternalReference::Location() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcExternalReference::setLocation(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcExternalReference::Identification() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcExternalReference::setIdentification(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::string > Ifc4x3_add2::IfcExternalReference::Name() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcExternalReference::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::string > Ifc4x3_add2::IfcExternalReference::Location() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcExternalReference::setLocation(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcExternalReference::Identification() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcExternalReference::setIdentification(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcExternalReference::Name() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcExternalReference::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -::Ifc4x3_add2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_add2::IfcExternalReference::ExternalReferenceForResources() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[427], 2)->as(); } +std::vector<::Ifc4x3_add2::IfcExternalReferenceRelationship> Ifc4x3_add2::IfcExternalReference::ExternalReferenceForResources() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[427], 2)); } -const IfcParse::entity& Ifc4x3_add2::IfcExternalReference::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[426]); } +// const IfcParse::entity& Ifc4x3_add2::IfcExternalReference::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[426]); } const IfcParse::entity& Ifc4x3_add2::IfcExternalReference::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[426]); } -Ifc4x3_add2::IfcExternalReference::IfcExternalReference(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcExternalReference::IfcExternalReference(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Location) {set_attribute_value(0, (*v1_Location)); } if (v2_Identification) {set_attribute_value(1, (*v2_Identification)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); }; populate_derived(); } +// Ifc4x3_add2::IfcExternalReference::IfcExternalReference(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcExternalReference::IfcExternalReference(std::optional< std::string > v1_Location, std::optional< std::string > v2_Identification, std::optional< std::string > v3_Name) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Location) {set_attribute_value(0, (*v1_Location)); } if (v2_Identification) {set_attribute_value(1, (*v2_Identification)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); }; populate_derived(); } // Function implementations for IfcExternalReferenceRelationship -::Ifc4x3_add2::IfcExternalReference* Ifc4x3_add2::IfcExternalReferenceRelationship::RelatingReference() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcExternalReference>(true); } -void Ifc4x3_add2::IfcExternalReferenceRelationship::setRelatingReference(::Ifc4x3_add2::IfcExternalReference* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr Ifc4x3_add2::IfcExternalReferenceRelationship::RelatedResourceObjects() const { aggregate_of_instance::ptr es = get_attribute_value(3); return es->as< ::Ifc4x3_add2::IfcResourceObjectSelect >(); } -void Ifc4x3_add2::IfcExternalReferenceRelationship::setRelatedResourceObjects(aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr v) { set_attribute_value(3, (v)->generalize());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcExternalReference Ifc4x3_add2::IfcExternalReferenceRelationship::RelatingReference() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcExternalReference>(); } +void Ifc4x3_add2::IfcExternalReferenceRelationship::setRelatingReference(const ::Ifc4x3_add2::IfcExternalReference& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect > Ifc4x3_add2::IfcExternalReferenceRelationship::RelatedResourceObjects() const { std::vector es = get_attribute_value(3); return cast_vector<::Ifc4x3_add2::IfcResourceObjectSelect>(es); } +void Ifc4x3_add2::IfcExternalReferenceRelationship::setRelatedResourceObjects(const std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect >& v) { set_attribute_value(3, cast_vector(v));if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcExternalReferenceRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[427]); } +// const IfcParse::entity& Ifc4x3_add2::IfcExternalReferenceRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[427]); } const IfcParse::entity& Ifc4x3_add2::IfcExternalReferenceRelationship::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[427]); } -Ifc4x3_add2::IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(IfcEntityInstanceData&& e) : IfcResourceLevelRelationship(std::move(e)) { } -Ifc4x3_add2::IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcExternalReference* v3_RelatingReference, aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr v4_RelatedResourceObjects) : IfcResourceLevelRelationship(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_RelatingReference ? v3_RelatingReference->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_RelatedResourceObjects)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(const std::weak_ptr& e) : IfcResourceLevelRelationship(e) { } +// Ifc4x3_add2::IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcExternalReference v3_RelatingReference, std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect > v4_RelatedResourceObjects) : IfcResourceLevelRelationship(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_RelatingReference));set_attribute_value(3, (v4_RelatedResourceObjects)->generalize());; populate_derived(); } // Function implementations for IfcExternalSpatialElement -boost::optional< ::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Value > Ifc4x3_add2::IfcExternalSpatialElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Value > Ifc4x3_add2::IfcExternalSpatialElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcExternalSpatialElement::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -::Ifc4x3_add2::IfcRelSpaceBoundary::list::ptr Ifc4x3_add2::IfcExternalSpatialElement::BoundedBy() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[945], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelSpaceBoundary> Ifc4x3_add2::IfcExternalSpatialElement::BoundedBy() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[945], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcExternalSpatialElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[428]); } +// const IfcParse::entity& Ifc4x3_add2::IfcExternalSpatialElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[428]); } const IfcParse::entity& Ifc4x3_add2::IfcExternalSpatialElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[428]); } -Ifc4x3_add2::IfcExternalSpatialElement::IfcExternalSpatialElement(IfcEntityInstanceData&& e) : IfcExternalSpatialStructureElement(std::move(e)) { } -Ifc4x3_add2::IfcExternalSpatialElement::IfcExternalSpatialElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Value > v9_PredefinedType) : IfcExternalSpatialStructureElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcExternalSpatialElement::IfcExternalSpatialElement(const std::weak_ptr& e) : IfcExternalSpatialStructureElement(e) { } +// Ifc4x3_add2::IfcExternalSpatialElement::IfcExternalSpatialElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Value > v9_PredefinedType) : IfcExternalSpatialStructureElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcExternalSpatialStructureElement -const IfcParse::entity& Ifc4x3_add2::IfcExternalSpatialStructureElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[430]); } +// const IfcParse::entity& Ifc4x3_add2::IfcExternalSpatialStructureElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[430]); } const IfcParse::entity& Ifc4x3_add2::IfcExternalSpatialStructureElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[430]); } -Ifc4x3_add2::IfcExternalSpatialStructureElement::IfcExternalSpatialStructureElement(IfcEntityInstanceData&& e) : IfcSpatialElement(std::move(e)) { } -Ifc4x3_add2::IfcExternalSpatialStructureElement::IfcExternalSpatialStructureElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName) : IfcSpatialElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); }; populate_derived(); } +// Ifc4x3_add2::IfcExternalSpatialStructureElement::IfcExternalSpatialStructureElement(const std::weak_ptr& e) : IfcSpatialElement(e) { } +// Ifc4x3_add2::IfcExternalSpatialStructureElement::IfcExternalSpatialStructureElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName) : IfcSpatialElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); }; populate_derived(); } // Function implementations for IfcExternallyDefinedHatchStyle -const IfcParse::entity& Ifc4x3_add2::IfcExternallyDefinedHatchStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[423]); } +// const IfcParse::entity& Ifc4x3_add2::IfcExternallyDefinedHatchStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[423]); } const IfcParse::entity& Ifc4x3_add2::IfcExternallyDefinedHatchStyle::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[423]); } -Ifc4x3_add2::IfcExternallyDefinedHatchStyle::IfcExternallyDefinedHatchStyle(IfcEntityInstanceData&& e) : IfcExternalReference(std::move(e)) { } -Ifc4x3_add2::IfcExternallyDefinedHatchStyle::IfcExternallyDefinedHatchStyle(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name) : IfcExternalReference(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Location) {set_attribute_value(0, (*v1_Location)); } if (v2_Identification) {set_attribute_value(1, (*v2_Identification)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); }; populate_derived(); } +// Ifc4x3_add2::IfcExternallyDefinedHatchStyle::IfcExternallyDefinedHatchStyle(const std::weak_ptr& e) : IfcExternalReference(e) { } +// Ifc4x3_add2::IfcExternallyDefinedHatchStyle::IfcExternallyDefinedHatchStyle(std::optional< std::string > v1_Location, std::optional< std::string > v2_Identification, std::optional< std::string > v3_Name) : IfcExternalReference(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Location) {set_attribute_value(0, (*v1_Location)); } if (v2_Identification) {set_attribute_value(1, (*v2_Identification)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); }; populate_derived(); } // Function implementations for IfcExternallyDefinedSurfaceStyle -const IfcParse::entity& Ifc4x3_add2::IfcExternallyDefinedSurfaceStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[424]); } +// const IfcParse::entity& Ifc4x3_add2::IfcExternallyDefinedSurfaceStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[424]); } const IfcParse::entity& Ifc4x3_add2::IfcExternallyDefinedSurfaceStyle::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[424]); } -Ifc4x3_add2::IfcExternallyDefinedSurfaceStyle::IfcExternallyDefinedSurfaceStyle(IfcEntityInstanceData&& e) : IfcExternalReference(std::move(e)) { } -Ifc4x3_add2::IfcExternallyDefinedSurfaceStyle::IfcExternallyDefinedSurfaceStyle(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name) : IfcExternalReference(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Location) {set_attribute_value(0, (*v1_Location)); } if (v2_Identification) {set_attribute_value(1, (*v2_Identification)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); }; populate_derived(); } +// Ifc4x3_add2::IfcExternallyDefinedSurfaceStyle::IfcExternallyDefinedSurfaceStyle(const std::weak_ptr& e) : IfcExternalReference(e) { } +// Ifc4x3_add2::IfcExternallyDefinedSurfaceStyle::IfcExternallyDefinedSurfaceStyle(std::optional< std::string > v1_Location, std::optional< std::string > v2_Identification, std::optional< std::string > v3_Name) : IfcExternalReference(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Location) {set_attribute_value(0, (*v1_Location)); } if (v2_Identification) {set_attribute_value(1, (*v2_Identification)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); }; populate_derived(); } // Function implementations for IfcExternallyDefinedTextFont -const IfcParse::entity& Ifc4x3_add2::IfcExternallyDefinedTextFont::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[425]); } +// const IfcParse::entity& Ifc4x3_add2::IfcExternallyDefinedTextFont::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[425]); } const IfcParse::entity& Ifc4x3_add2::IfcExternallyDefinedTextFont::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[425]); } -Ifc4x3_add2::IfcExternallyDefinedTextFont::IfcExternallyDefinedTextFont(IfcEntityInstanceData&& e) : IfcExternalReference(std::move(e)) { } -Ifc4x3_add2::IfcExternallyDefinedTextFont::IfcExternallyDefinedTextFont(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name) : IfcExternalReference(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Location) {set_attribute_value(0, (*v1_Location)); } if (v2_Identification) {set_attribute_value(1, (*v2_Identification)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); }; populate_derived(); } +// Ifc4x3_add2::IfcExternallyDefinedTextFont::IfcExternallyDefinedTextFont(const std::weak_ptr& e) : IfcExternalReference(e) { } +// Ifc4x3_add2::IfcExternallyDefinedTextFont::IfcExternallyDefinedTextFont(std::optional< std::string > v1_Location, std::optional< std::string > v2_Identification, std::optional< std::string > v3_Name) : IfcExternalReference(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Location) {set_attribute_value(0, (*v1_Location)); } if (v2_Identification) {set_attribute_value(1, (*v2_Identification)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); }; populate_derived(); } // Function implementations for IfcExtrudedAreaSolid -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcExtrudedAreaSolid::ExtrudedDirection() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcExtrudedAreaSolid::setExtrudedDirection(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcExtrudedAreaSolid::ExtrudedDirection() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcExtrudedAreaSolid::setExtrudedDirection(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } double Ifc4x3_add2::IfcExtrudedAreaSolid::Depth() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcExtrudedAreaSolid::setDepth(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcExtrudedAreaSolid::setDepth(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcExtrudedAreaSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[431]); } +// const IfcParse::entity& Ifc4x3_add2::IfcExtrudedAreaSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[431]); } const IfcParse::entity& Ifc4x3_add2::IfcExtrudedAreaSolid::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[431]); } -Ifc4x3_add2::IfcExtrudedAreaSolid::IfcExtrudedAreaSolid(IfcEntityInstanceData&& e) : IfcSweptAreaSolid(std::move(e)) { } -Ifc4x3_add2::IfcExtrudedAreaSolid::IfcExtrudedAreaSolid(::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcDirection* v3_ExtrudedDirection, double v4_Depth) : IfcSweptAreaSolid(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_SweptArea ? v1_SweptArea->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Position ? v2_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_ExtrudedDirection ? v3_ExtrudedDirection->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_Depth));; populate_derived(); } +// Ifc4x3_add2::IfcExtrudedAreaSolid::IfcExtrudedAreaSolid(const std::weak_ptr& e) : IfcSweptAreaSolid(e) { } +// Ifc4x3_add2::IfcExtrudedAreaSolid::IfcExtrudedAreaSolid(::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcDirection v3_ExtrudedDirection, double v4_Depth) : IfcSweptAreaSolid(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_SweptArea)); if (v2_Position) {set_attribute_value(1, (*v2_Position)); }set_attribute_value(2, (v3_ExtrudedDirection));set_attribute_value(3, (v4_Depth));; populate_derived(); } // Function implementations for IfcExtrudedAreaSolidTapered -::Ifc4x3_add2::IfcProfileDef* Ifc4x3_add2::IfcExtrudedAreaSolidTapered::EndSweptArea() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcProfileDef>(true); } -void Ifc4x3_add2::IfcExtrudedAreaSolidTapered::setEndSweptArea(::Ifc4x3_add2::IfcProfileDef* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcProfileDef Ifc4x3_add2::IfcExtrudedAreaSolidTapered::EndSweptArea() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcProfileDef>(); } +void Ifc4x3_add2::IfcExtrudedAreaSolidTapered::setEndSweptArea(const ::Ifc4x3_add2::IfcProfileDef& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcExtrudedAreaSolidTapered::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[432]); } +// const IfcParse::entity& Ifc4x3_add2::IfcExtrudedAreaSolidTapered::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[432]); } const IfcParse::entity& Ifc4x3_add2::IfcExtrudedAreaSolidTapered::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[432]); } -Ifc4x3_add2::IfcExtrudedAreaSolidTapered::IfcExtrudedAreaSolidTapered(IfcEntityInstanceData&& e) : IfcExtrudedAreaSolid(std::move(e)) { } -Ifc4x3_add2::IfcExtrudedAreaSolidTapered::IfcExtrudedAreaSolidTapered(::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcDirection* v3_ExtrudedDirection, double v4_Depth, ::Ifc4x3_add2::IfcProfileDef* v5_EndSweptArea) : IfcExtrudedAreaSolid(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_SweptArea ? v1_SweptArea->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Position ? v2_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_ExtrudedDirection ? v3_ExtrudedDirection->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_Depth));set_attribute_value(4, v5_EndSweptArea ? v5_EndSweptArea->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcExtrudedAreaSolidTapered::IfcExtrudedAreaSolidTapered(const std::weak_ptr& e) : IfcExtrudedAreaSolid(e) { } +// Ifc4x3_add2::IfcExtrudedAreaSolidTapered::IfcExtrudedAreaSolidTapered(::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcDirection v3_ExtrudedDirection, double v4_Depth, ::Ifc4x3_add2::IfcProfileDef v5_EndSweptArea) : IfcExtrudedAreaSolid(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_SweptArea)); if (v2_Position) {set_attribute_value(1, (*v2_Position)); }set_attribute_value(2, (v3_ExtrudedDirection));set_attribute_value(3, (v4_Depth));set_attribute_value(4, (v5_EndSweptArea));; populate_derived(); } // Function implementations for IfcFace -aggregate_of< ::Ifc4x3_add2::IfcFaceBound >::ptr Ifc4x3_add2::IfcFace::Bounds() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcFaceBound >(); } -void Ifc4x3_add2::IfcFace::setBounds(aggregate_of< ::Ifc4x3_add2::IfcFaceBound >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcFaceBound > Ifc4x3_add2::IfcFace::Bounds() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcFaceBound>(es); } +void Ifc4x3_add2::IfcFace::setBounds(const std::vector< ::Ifc4x3_add2::IfcFaceBound >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcTextureMap::list::ptr Ifc4x3_add2::IfcFace::HasTextureMaps() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[1196], 2)->as(); } +std::vector<::Ifc4x3_add2::IfcTextureMap> Ifc4x3_add2::IfcFace::HasTextureMaps() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[1196], 2)); } -const IfcParse::entity& Ifc4x3_add2::IfcFace::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[433]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFace::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[433]); } const IfcParse::entity& Ifc4x3_add2::IfcFace::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[433]); } -Ifc4x3_add2::IfcFace::IfcFace(IfcEntityInstanceData&& e) : IfcTopologicalRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcFace::IfcFace(aggregate_of< ::Ifc4x3_add2::IfcFaceBound >::ptr v1_Bounds) : IfcTopologicalRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Bounds)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcFace::IfcFace(const std::weak_ptr& e) : IfcTopologicalRepresentationItem(e) { } +// Ifc4x3_add2::IfcFace::IfcFace(std::vector< ::Ifc4x3_add2::IfcFaceBound > v1_Bounds) : IfcTopologicalRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Bounds)->generalize());; populate_derived(); } // Function implementations for IfcFaceBasedSurfaceModel -aggregate_of< ::Ifc4x3_add2::IfcConnectedFaceSet >::ptr Ifc4x3_add2::IfcFaceBasedSurfaceModel::FbsmFaces() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcConnectedFaceSet >(); } -void Ifc4x3_add2::IfcFaceBasedSurfaceModel::setFbsmFaces(aggregate_of< ::Ifc4x3_add2::IfcConnectedFaceSet >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcConnectedFaceSet > Ifc4x3_add2::IfcFaceBasedSurfaceModel::FbsmFaces() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcConnectedFaceSet>(es); } +void Ifc4x3_add2::IfcFaceBasedSurfaceModel::setFbsmFaces(const std::vector< ::Ifc4x3_add2::IfcConnectedFaceSet >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcFaceBasedSurfaceModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[434]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFaceBasedSurfaceModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[434]); } const IfcParse::entity& Ifc4x3_add2::IfcFaceBasedSurfaceModel::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[434]); } -Ifc4x3_add2::IfcFaceBasedSurfaceModel::IfcFaceBasedSurfaceModel(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcFaceBasedSurfaceModel::IfcFaceBasedSurfaceModel(aggregate_of< ::Ifc4x3_add2::IfcConnectedFaceSet >::ptr v1_FbsmFaces) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_FbsmFaces)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcFaceBasedSurfaceModel::IfcFaceBasedSurfaceModel(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcFaceBasedSurfaceModel::IfcFaceBasedSurfaceModel(std::vector< ::Ifc4x3_add2::IfcConnectedFaceSet > v1_FbsmFaces) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_FbsmFaces)->generalize());; populate_derived(); } // Function implementations for IfcFaceBound -::Ifc4x3_add2::IfcLoop* Ifc4x3_add2::IfcFaceBound::Bound() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcLoop>(true); } -void Ifc4x3_add2::IfcFaceBound::setBound(::Ifc4x3_add2::IfcLoop* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcLoop Ifc4x3_add2::IfcFaceBound::Bound() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcLoop>(); } +void Ifc4x3_add2::IfcFaceBound::setBound(const ::Ifc4x3_add2::IfcLoop& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } bool Ifc4x3_add2::IfcFaceBound::Orientation() const { bool v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcFaceBound::setOrientation(bool v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcFaceBound::setOrientation(const bool& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcFaceBound::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[435]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFaceBound::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[435]); } const IfcParse::entity& Ifc4x3_add2::IfcFaceBound::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[435]); } -Ifc4x3_add2::IfcFaceBound::IfcFaceBound(IfcEntityInstanceData&& e) : IfcTopologicalRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcFaceBound::IfcFaceBound(::Ifc4x3_add2::IfcLoop* v1_Bound, bool v2_Orientation) : IfcTopologicalRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Bound ? v1_Bound->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Orientation));; populate_derived(); } +// Ifc4x3_add2::IfcFaceBound::IfcFaceBound(const std::weak_ptr& e) : IfcTopologicalRepresentationItem(e) { } +// Ifc4x3_add2::IfcFaceBound::IfcFaceBound(::Ifc4x3_add2::IfcLoop v1_Bound, bool v2_Orientation) : IfcTopologicalRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Bound));set_attribute_value(1, (v2_Orientation));; populate_derived(); } // Function implementations for IfcFaceOuterBound -const IfcParse::entity& Ifc4x3_add2::IfcFaceOuterBound::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[436]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFaceOuterBound::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[436]); } const IfcParse::entity& Ifc4x3_add2::IfcFaceOuterBound::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[436]); } -Ifc4x3_add2::IfcFaceOuterBound::IfcFaceOuterBound(IfcEntityInstanceData&& e) : IfcFaceBound(std::move(e)) { } -Ifc4x3_add2::IfcFaceOuterBound::IfcFaceOuterBound(::Ifc4x3_add2::IfcLoop* v1_Bound, bool v2_Orientation) : IfcFaceBound(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Bound ? v1_Bound->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Orientation));; populate_derived(); } +// Ifc4x3_add2::IfcFaceOuterBound::IfcFaceOuterBound(const std::weak_ptr& e) : IfcFaceBound(e) { } +// Ifc4x3_add2::IfcFaceOuterBound::IfcFaceOuterBound(::Ifc4x3_add2::IfcLoop v1_Bound, bool v2_Orientation) : IfcFaceBound(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Bound));set_attribute_value(1, (v2_Orientation));; populate_derived(); } // Function implementations for IfcFaceSurface -::Ifc4x3_add2::IfcSurface* Ifc4x3_add2::IfcFaceSurface::FaceSurface() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcSurface>(true); } -void Ifc4x3_add2::IfcFaceSurface::setFaceSurface(::Ifc4x3_add2::IfcSurface* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcSurface Ifc4x3_add2::IfcFaceSurface::FaceSurface() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcSurface>(); } +void Ifc4x3_add2::IfcFaceSurface::setFaceSurface(const ::Ifc4x3_add2::IfcSurface& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } bool Ifc4x3_add2::IfcFaceSurface::SameSense() const { bool v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcFaceSurface::setSameSense(bool v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcFaceSurface::setSameSense(const bool& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcFaceSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[437]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFaceSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[437]); } const IfcParse::entity& Ifc4x3_add2::IfcFaceSurface::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[437]); } -Ifc4x3_add2::IfcFaceSurface::IfcFaceSurface(IfcEntityInstanceData&& e) : IfcFace(std::move(e)) { } -Ifc4x3_add2::IfcFaceSurface::IfcFaceSurface(aggregate_of< ::Ifc4x3_add2::IfcFaceBound >::ptr v1_Bounds, ::Ifc4x3_add2::IfcSurface* v2_FaceSurface, bool v3_SameSense) : IfcFace(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Bounds)->generalize());set_attribute_value(1, v2_FaceSurface ? v2_FaceSurface->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, (v3_SameSense));; populate_derived(); } +// Ifc4x3_add2::IfcFaceSurface::IfcFaceSurface(const std::weak_ptr& e) : IfcFace(e) { } +// Ifc4x3_add2::IfcFaceSurface::IfcFaceSurface(std::vector< ::Ifc4x3_add2::IfcFaceBound > v1_Bounds, ::Ifc4x3_add2::IfcSurface v2_FaceSurface, bool v3_SameSense) : IfcFace(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Bounds)->generalize());set_attribute_value(1, (v2_FaceSurface));set_attribute_value(2, (v3_SameSense));; populate_derived(); } // Function implementations for IfcFacetedBrep -const IfcParse::entity& Ifc4x3_add2::IfcFacetedBrep::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[438]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFacetedBrep::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[438]); } const IfcParse::entity& Ifc4x3_add2::IfcFacetedBrep::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[438]); } -Ifc4x3_add2::IfcFacetedBrep::IfcFacetedBrep(IfcEntityInstanceData&& e) : IfcManifoldSolidBrep(std::move(e)) { } -Ifc4x3_add2::IfcFacetedBrep::IfcFacetedBrep(::Ifc4x3_add2::IfcClosedShell* v1_Outer) : IfcManifoldSolidBrep(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, v1_Outer ? v1_Outer->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcFacetedBrep::IfcFacetedBrep(const std::weak_ptr& e) : IfcManifoldSolidBrep(e) { } +// Ifc4x3_add2::IfcFacetedBrep::IfcFacetedBrep(::Ifc4x3_add2::IfcClosedShell v1_Outer) : IfcManifoldSolidBrep(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Outer));; populate_derived(); } // Function implementations for IfcFacetedBrepWithVoids -aggregate_of< ::Ifc4x3_add2::IfcClosedShell >::ptr Ifc4x3_add2::IfcFacetedBrepWithVoids::Voids() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcClosedShell >(); } -void Ifc4x3_add2::IfcFacetedBrepWithVoids::setVoids(aggregate_of< ::Ifc4x3_add2::IfcClosedShell >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } +std::vector< ::Ifc4x3_add2::IfcClosedShell > Ifc4x3_add2::IfcFacetedBrepWithVoids::Voids() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcClosedShell>(es); } +void Ifc4x3_add2::IfcFacetedBrepWithVoids::setVoids(const std::vector< ::Ifc4x3_add2::IfcClosedShell >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcFacetedBrepWithVoids::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[439]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFacetedBrepWithVoids::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[439]); } const IfcParse::entity& Ifc4x3_add2::IfcFacetedBrepWithVoids::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[439]); } -Ifc4x3_add2::IfcFacetedBrepWithVoids::IfcFacetedBrepWithVoids(IfcEntityInstanceData&& e) : IfcFacetedBrep(std::move(e)) { } -Ifc4x3_add2::IfcFacetedBrepWithVoids::IfcFacetedBrepWithVoids(::Ifc4x3_add2::IfcClosedShell* v1_Outer, aggregate_of< ::Ifc4x3_add2::IfcClosedShell >::ptr v2_Voids) : IfcFacetedBrep(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Outer ? v1_Outer->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Voids)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcFacetedBrepWithVoids::IfcFacetedBrepWithVoids(const std::weak_ptr& e) : IfcFacetedBrep(e) { } +// Ifc4x3_add2::IfcFacetedBrepWithVoids::IfcFacetedBrepWithVoids(::Ifc4x3_add2::IfcClosedShell v1_Outer, std::vector< ::Ifc4x3_add2::IfcClosedShell > v2_Voids) : IfcFacetedBrep(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Outer));set_attribute_value(1, (v2_Voids)->generalize());; populate_derived(); } // Function implementations for IfcFacility -const IfcParse::entity& Ifc4x3_add2::IfcFacility::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[440]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFacility::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[440]); } const IfcParse::entity& Ifc4x3_add2::IfcFacility::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[440]); } -Ifc4x3_add2::IfcFacility::IfcFacility(IfcEntityInstanceData&& e) : IfcSpatialStructureElement(std::move(e)) { } -Ifc4x3_add2::IfcFacility::IfcFacility(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType) : IfcSpatialStructureElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }; populate_derived(); } +// Ifc4x3_add2::IfcFacility::IfcFacility(const std::weak_ptr& e) : IfcSpatialStructureElement(e) { } +// Ifc4x3_add2::IfcFacility::IfcFacility(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType) : IfcSpatialStructureElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }; populate_derived(); } // Function implementations for IfcFacilityPart ::Ifc4x3_add2::IfcFacilityUsageEnum::Value Ifc4x3_add2::IfcFacilityPart::UsageType() const { return ::Ifc4x3_add2::IfcFacilityUsageEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcFacilityPart::setUsageType(::Ifc4x3_add2::IfcFacilityUsageEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFacilityUsageEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcFacilityPart::setUsageType(const ::Ifc4x3_add2::IfcFacilityUsageEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFacilityUsageEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcFacilityPart::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[441]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFacilityPart::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[441]); } const IfcParse::entity& Ifc4x3_add2::IfcFacilityPart::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[441]); } -Ifc4x3_add2::IfcFacilityPart::IfcFacilityPart(IfcEntityInstanceData&& e) : IfcSpatialStructureElement(std::move(e)) { } -Ifc4x3_add2::IfcFacilityPart::IfcFacilityPart(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType) : IfcSpatialStructureElement(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFacilityUsageEnum::Class(),(size_t)v10_UsageType)));; populate_derived(); } +// Ifc4x3_add2::IfcFacilityPart::IfcFacilityPart(const std::weak_ptr& e) : IfcSpatialStructureElement(e) { } +// Ifc4x3_add2::IfcFacilityPart::IfcFacilityPart(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType) : IfcSpatialStructureElement(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFacilityUsageEnum::Class(),(size_t)v10_UsageType)));; populate_derived(); } // Function implementations for IfcFacilityPartCommon -boost::optional< ::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Value > Ifc4x3_add2::IfcFacilityPartCommon::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcFacilityPartCommon::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Value > Ifc4x3_add2::IfcFacilityPartCommon::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcFacilityPartCommon::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcFacilityPartCommon::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[442]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFacilityPartCommon::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[442]); } const IfcParse::entity& Ifc4x3_add2::IfcFacilityPartCommon::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[442]); } -Ifc4x3_add2::IfcFacilityPartCommon::IfcFacilityPartCommon(IfcEntityInstanceData&& e) : IfcFacilityPart(std::move(e)) { } -Ifc4x3_add2::IfcFacilityPartCommon::IfcFacilityPartCommon(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, boost::optional< ::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Value > v11_PredefinedType) : IfcFacilityPart(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFacilityUsageEnum::Class(),(size_t)v10_UsageType))); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcFacilityPartCommon::IfcFacilityPartCommon(const std::weak_ptr& e) : IfcFacilityPart(e) { } +// Ifc4x3_add2::IfcFacilityPartCommon::IfcFacilityPartCommon(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, std::optional< ::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Value > v11_PredefinedType) : IfcFacilityPart(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFacilityUsageEnum::Class(),(size_t)v10_UsageType))); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } // Function implementations for IfcFailureConnectionCondition -boost::optional< double > Ifc4x3_add2::IfcFailureConnectionCondition::TensionFailureX() const { if(get_attribute_value(1).isNull()) { return boost::none; } double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< double > Ifc4x3_add2::IfcFailureConnectionCondition::TensionFailureY() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcFailureConnectionCondition::TensionFailureZ() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< double > Ifc4x3_add2::IfcFailureConnectionCondition::CompressionFailureX() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< double > Ifc4x3_add2::IfcFailureConnectionCondition::CompressionFailureY() const { if(get_attribute_value(5).isNull()) { return boost::none; } double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< double > Ifc4x3_add2::IfcFailureConnectionCondition::CompressionFailureZ() const { if(get_attribute_value(6).isNull()) { return boost::none; } double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< double > Ifc4x3_add2::IfcFailureConnectionCondition::TensionFailureX() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } double v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcFailureConnectionCondition::setTensionFailureX(const std::optional< double >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< double > Ifc4x3_add2::IfcFailureConnectionCondition::TensionFailureY() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcFailureConnectionCondition::setTensionFailureY(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcFailureConnectionCondition::TensionFailureZ() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcFailureConnectionCondition::setTensionFailureZ(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< double > Ifc4x3_add2::IfcFailureConnectionCondition::CompressionFailureX() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcFailureConnectionCondition::setCompressionFailureX(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< double > Ifc4x3_add2::IfcFailureConnectionCondition::CompressionFailureY() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } double v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcFailureConnectionCondition::setCompressionFailureY(const std::optional< double >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< double > Ifc4x3_add2::IfcFailureConnectionCondition::CompressionFailureZ() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } double v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcFailureConnectionCondition::setCompressionFailureZ(const std::optional< double >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -const IfcParse::entity& Ifc4x3_add2::IfcFailureConnectionCondition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[445]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFailureConnectionCondition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[445]); } const IfcParse::entity& Ifc4x3_add2::IfcFailureConnectionCondition::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[445]); } -Ifc4x3_add2::IfcFailureConnectionCondition::IfcFailureConnectionCondition(IfcEntityInstanceData&& e) : IfcStructuralConnectionCondition(std::move(e)) { } -Ifc4x3_add2::IfcFailureConnectionCondition::IfcFailureConnectionCondition(boost::optional< std::string > v1_Name, boost::optional< double > v2_TensionFailureX, boost::optional< double > v3_TensionFailureY, boost::optional< double > v4_TensionFailureZ, boost::optional< double > v5_CompressionFailureX, boost::optional< double > v6_CompressionFailureY, boost::optional< double > v7_CompressionFailureZ) : IfcStructuralConnectionCondition(IfcEntityInstanceData(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_TensionFailureX) {set_attribute_value(1, (*v2_TensionFailureX)); } if (v3_TensionFailureY) {set_attribute_value(2, (*v3_TensionFailureY)); } if (v4_TensionFailureZ) {set_attribute_value(3, (*v4_TensionFailureZ)); } if (v5_CompressionFailureX) {set_attribute_value(4, (*v5_CompressionFailureX)); } if (v6_CompressionFailureY) {set_attribute_value(5, (*v6_CompressionFailureY)); } if (v7_CompressionFailureZ) {set_attribute_value(6, (*v7_CompressionFailureZ)); }; populate_derived(); } +// Ifc4x3_add2::IfcFailureConnectionCondition::IfcFailureConnectionCondition(const std::weak_ptr& e) : IfcStructuralConnectionCondition(e) { } +// Ifc4x3_add2::IfcFailureConnectionCondition::IfcFailureConnectionCondition(std::optional< std::string > v1_Name, std::optional< double > v2_TensionFailureX, std::optional< double > v3_TensionFailureY, std::optional< double > v4_TensionFailureZ, std::optional< double > v5_CompressionFailureX, std::optional< double > v6_CompressionFailureY, std::optional< double > v7_CompressionFailureZ) : IfcStructuralConnectionCondition(const std::weak_ptr&(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_TensionFailureX) {set_attribute_value(1, (*v2_TensionFailureX)); } if (v3_TensionFailureY) {set_attribute_value(2, (*v3_TensionFailureY)); } if (v4_TensionFailureZ) {set_attribute_value(3, (*v4_TensionFailureZ)); } if (v5_CompressionFailureX) {set_attribute_value(4, (*v5_CompressionFailureX)); } if (v6_CompressionFailureY) {set_attribute_value(5, (*v6_CompressionFailureY)); } if (v7_CompressionFailureZ) {set_attribute_value(6, (*v7_CompressionFailureZ)); }; populate_derived(); } // Function implementations for IfcFan -boost::optional< ::Ifc4x3_add2::IfcFanTypeEnum::Value > Ifc4x3_add2::IfcFan::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcFanTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcFan::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFanTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFanTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcFanTypeEnum::Value > Ifc4x3_add2::IfcFan::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcFanTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcFan::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFanTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFanTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcFan::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[446]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFan::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[446]); } const IfcParse::entity& Ifc4x3_add2::IfcFan::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[446]); } -Ifc4x3_add2::IfcFan::IfcFan(IfcEntityInstanceData&& e) : IfcFlowMovingDevice(std::move(e)) { } -Ifc4x3_add2::IfcFan::IfcFan(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFanTypeEnum::Value > v9_PredefinedType) : IfcFlowMovingDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFanTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcFan::IfcFan(const std::weak_ptr& e) : IfcFlowMovingDevice(e) { } +// Ifc4x3_add2::IfcFan::IfcFan(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFanTypeEnum::Value > v9_PredefinedType) : IfcFlowMovingDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFanTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcFanType ::Ifc4x3_add2::IfcFanTypeEnum::Value Ifc4x3_add2::IfcFanType::PredefinedType() const { return ::Ifc4x3_add2::IfcFanTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcFanType::setPredefinedType(::Ifc4x3_add2::IfcFanTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFanTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcFanType::setPredefinedType(const ::Ifc4x3_add2::IfcFanTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFanTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcFanType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[447]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFanType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[447]); } const IfcParse::entity& Ifc4x3_add2::IfcFanType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[447]); } -Ifc4x3_add2::IfcFanType::IfcFanType(IfcEntityInstanceData&& e) : IfcFlowMovingDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcFanType::IfcFanType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFanTypeEnum::Value v10_PredefinedType) : IfcFlowMovingDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFanTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcFanType::IfcFanType(const std::weak_ptr& e) : IfcFlowMovingDeviceType(e) { } +// Ifc4x3_add2::IfcFanType::IfcFanType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFanTypeEnum::Value v10_PredefinedType) : IfcFlowMovingDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFanTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcFastener -boost::optional< ::Ifc4x3_add2::IfcFastenerTypeEnum::Value > Ifc4x3_add2::IfcFastener::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcFastenerTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcFastener::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFastenerTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFastenerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcFastenerTypeEnum::Value > Ifc4x3_add2::IfcFastener::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcFastenerTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcFastener::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFastenerTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFastenerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcFastener::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[449]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFastener::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[449]); } const IfcParse::entity& Ifc4x3_add2::IfcFastener::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[449]); } -Ifc4x3_add2::IfcFastener::IfcFastener(IfcEntityInstanceData&& e) : IfcElementComponent(std::move(e)) { } -Ifc4x3_add2::IfcFastener::IfcFastener(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFastenerTypeEnum::Value > v9_PredefinedType) : IfcElementComponent(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFastenerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcFastener::IfcFastener(const std::weak_ptr& e) : IfcElementComponent(e) { } +// Ifc4x3_add2::IfcFastener::IfcFastener(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFastenerTypeEnum::Value > v9_PredefinedType) : IfcElementComponent(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFastenerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcFastenerType ::Ifc4x3_add2::IfcFastenerTypeEnum::Value Ifc4x3_add2::IfcFastenerType::PredefinedType() const { return ::Ifc4x3_add2::IfcFastenerTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcFastenerType::setPredefinedType(::Ifc4x3_add2::IfcFastenerTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFastenerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcFastenerType::setPredefinedType(const ::Ifc4x3_add2::IfcFastenerTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFastenerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcFastenerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[450]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFastenerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[450]); } const IfcParse::entity& Ifc4x3_add2::IfcFastenerType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[450]); } -Ifc4x3_add2::IfcFastenerType::IfcFastenerType(IfcEntityInstanceData&& e) : IfcElementComponentType(std::move(e)) { } -Ifc4x3_add2::IfcFastenerType::IfcFastenerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFastenerTypeEnum::Value v10_PredefinedType) : IfcElementComponentType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFastenerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcFastenerType::IfcFastenerType(const std::weak_ptr& e) : IfcElementComponentType(e) { } +// Ifc4x3_add2::IfcFastenerType::IfcFastenerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFastenerTypeEnum::Value v10_PredefinedType) : IfcElementComponentType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFastenerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcFeatureElement -const IfcParse::entity& Ifc4x3_add2::IfcFeatureElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[452]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFeatureElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[452]); } const IfcParse::entity& Ifc4x3_add2::IfcFeatureElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[452]); } -Ifc4x3_add2::IfcFeatureElement::IfcFeatureElement(IfcEntityInstanceData&& e) : IfcElement(std::move(e)) { } -Ifc4x3_add2::IfcFeatureElement::IfcFeatureElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcFeatureElement::IfcFeatureElement(const std::weak_ptr& e) : IfcElement(e) { } +// Ifc4x3_add2::IfcFeatureElement::IfcFeatureElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcFeatureElementAddition -::Ifc4x3_add2::IfcRelProjectsElement::list::ptr Ifc4x3_add2::IfcFeatureElementAddition::ProjectsElements() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[941], 5)->as(); } +std::vector<::Ifc4x3_add2::IfcRelProjectsElement> Ifc4x3_add2::IfcFeatureElementAddition::ProjectsElements() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[941], 5)); } -const IfcParse::entity& Ifc4x3_add2::IfcFeatureElementAddition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[453]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFeatureElementAddition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[453]); } const IfcParse::entity& Ifc4x3_add2::IfcFeatureElementAddition::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[453]); } -Ifc4x3_add2::IfcFeatureElementAddition::IfcFeatureElementAddition(IfcEntityInstanceData&& e) : IfcFeatureElement(std::move(e)) { } -Ifc4x3_add2::IfcFeatureElementAddition::IfcFeatureElementAddition(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcFeatureElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcFeatureElementAddition::IfcFeatureElementAddition(const std::weak_ptr& e) : IfcFeatureElement(e) { } +// Ifc4x3_add2::IfcFeatureElementAddition::IfcFeatureElementAddition(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcFeatureElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcFeatureElementSubtraction -::Ifc4x3_add2::IfcRelVoidsElement::list::ptr Ifc4x3_add2::IfcFeatureElementSubtraction::VoidsElements() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[948], 5)->as(); } +std::vector<::Ifc4x3_add2::IfcRelVoidsElement> Ifc4x3_add2::IfcFeatureElementSubtraction::VoidsElements() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[948], 5)); } -const IfcParse::entity& Ifc4x3_add2::IfcFeatureElementSubtraction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[454]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFeatureElementSubtraction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[454]); } const IfcParse::entity& Ifc4x3_add2::IfcFeatureElementSubtraction::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[454]); } -Ifc4x3_add2::IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(IfcEntityInstanceData&& e) : IfcFeatureElement(std::move(e)) { } -Ifc4x3_add2::IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcFeatureElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(const std::weak_ptr& e) : IfcFeatureElement(e) { } +// Ifc4x3_add2::IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcFeatureElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcFillAreaStyle -aggregate_of< ::Ifc4x3_add2::IfcFillStyleSelect >::ptr Ifc4x3_add2::IfcFillAreaStyle::FillStyles() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcFillStyleSelect >(); } -void Ifc4x3_add2::IfcFillAreaStyle::setFillStyles(aggregate_of< ::Ifc4x3_add2::IfcFillStyleSelect >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } -boost::optional< bool > Ifc4x3_add2::IfcFillAreaStyle::ModelOrDraughting() const { if(get_attribute_value(2).isNull()) { return boost::none; } bool v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcFillAreaStyle::setModelOrDraughting(boost::optional< bool > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::vector< ::Ifc4x3_add2::IfcFillStyleSelect > Ifc4x3_add2::IfcFillAreaStyle::FillStyles() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcFillStyleSelect>(es); } +void Ifc4x3_add2::IfcFillAreaStyle::setFillStyles(const std::vector< ::Ifc4x3_add2::IfcFillStyleSelect >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } +std::optional< bool > Ifc4x3_add2::IfcFillAreaStyle::ModelOrDraughting() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } bool v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcFillAreaStyle::setModelOrDraughting(const std::optional< bool >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -const IfcParse::entity& Ifc4x3_add2::IfcFillAreaStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[455]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFillAreaStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[455]); } const IfcParse::entity& Ifc4x3_add2::IfcFillAreaStyle::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[455]); } -Ifc4x3_add2::IfcFillAreaStyle::IfcFillAreaStyle(IfcEntityInstanceData&& e) : IfcPresentationStyle(std::move(e)) { } -Ifc4x3_add2::IfcFillAreaStyle::IfcFillAreaStyle(boost::optional< std::string > v1_Name, aggregate_of< ::Ifc4x3_add2::IfcFillStyleSelect >::ptr v2_FillStyles, boost::optional< bool > v3_ModelOrDraughting) : IfcPresentationStyle(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (v2_FillStyles)->generalize()); if (v3_ModelOrDraughting) {set_attribute_value(2, (*v3_ModelOrDraughting)); }; populate_derived(); } +// Ifc4x3_add2::IfcFillAreaStyle::IfcFillAreaStyle(const std::weak_ptr& e) : IfcPresentationStyle(e) { } +// Ifc4x3_add2::IfcFillAreaStyle::IfcFillAreaStyle(std::optional< std::string > v1_Name, std::vector< ::Ifc4x3_add2::IfcFillStyleSelect > v2_FillStyles, std::optional< bool > v3_ModelOrDraughting) : IfcPresentationStyle(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (v2_FillStyles)->generalize()); if (v3_ModelOrDraughting) {set_attribute_value(2, (*v3_ModelOrDraughting)); }; populate_derived(); } // Function implementations for IfcFillAreaStyleHatching -::Ifc4x3_add2::IfcCurveStyle* Ifc4x3_add2::IfcFillAreaStyleHatching::HatchLineAppearance() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCurveStyle>(true); } -void Ifc4x3_add2::IfcFillAreaStyleHatching::setHatchLineAppearance(::Ifc4x3_add2::IfcCurveStyle* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcHatchLineDistanceSelect* Ifc4x3_add2::IfcFillAreaStyleHatching::StartOfNextHatchLine() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcHatchLineDistanceSelect>(true); } -void Ifc4x3_add2::IfcFillAreaStyleHatching::setStartOfNextHatchLine(::Ifc4x3_add2::IfcHatchLineDistanceSelect* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcCartesianPoint* Ifc4x3_add2::IfcFillAreaStyleHatching::PointOfReferenceHatchLine() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcCartesianPoint>(true); } -void Ifc4x3_add2::IfcFillAreaStyleHatching::setPointOfReferenceHatchLine(::Ifc4x3_add2::IfcCartesianPoint* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcCartesianPoint* Ifc4x3_add2::IfcFillAreaStyleHatching::PatternStart() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcCartesianPoint>(true); } -void Ifc4x3_add2::IfcFillAreaStyleHatching::setPatternStart(::Ifc4x3_add2::IfcCartesianPoint* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcCurveStyle Ifc4x3_add2::IfcFillAreaStyleHatching::HatchLineAppearance() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCurveStyle>(); } +void Ifc4x3_add2::IfcFillAreaStyleHatching::setHatchLineAppearance(const ::Ifc4x3_add2::IfcCurveStyle& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcHatchLineDistanceSelect Ifc4x3_add2::IfcFillAreaStyleHatching::StartOfNextHatchLine() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcHatchLineDistanceSelect>(); } +void Ifc4x3_add2::IfcFillAreaStyleHatching::setStartOfNextHatchLine(const ::Ifc4x3_add2::IfcHatchLineDistanceSelect& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcCartesianPoint Ifc4x3_add2::IfcFillAreaStyleHatching::PointOfReferenceHatchLine() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcCartesianPoint{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcCartesianPoint>(); } +void Ifc4x3_add2::IfcFillAreaStyleHatching::setPointOfReferenceHatchLine(const ::Ifc4x3_add2::IfcCartesianPoint& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcCartesianPoint Ifc4x3_add2::IfcFillAreaStyleHatching::PatternStart() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcCartesianPoint{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcCartesianPoint>(); } +void Ifc4x3_add2::IfcFillAreaStyleHatching::setPatternStart(const ::Ifc4x3_add2::IfcCartesianPoint& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcFillAreaStyleHatching::HatchLineAngle() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcFillAreaStyleHatching::setHatchLineAngle(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcFillAreaStyleHatching::setHatchLineAngle(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcFillAreaStyleHatching::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[456]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFillAreaStyleHatching::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[456]); } const IfcParse::entity& Ifc4x3_add2::IfcFillAreaStyleHatching::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[456]); } -Ifc4x3_add2::IfcFillAreaStyleHatching::IfcFillAreaStyleHatching(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcFillAreaStyleHatching::IfcFillAreaStyleHatching(::Ifc4x3_add2::IfcCurveStyle* v1_HatchLineAppearance, ::Ifc4x3_add2::IfcHatchLineDistanceSelect* v2_StartOfNextHatchLine, ::Ifc4x3_add2::IfcCartesianPoint* v3_PointOfReferenceHatchLine, ::Ifc4x3_add2::IfcCartesianPoint* v4_PatternStart, double v5_HatchLineAngle) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_HatchLineAppearance ? v1_HatchLineAppearance->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_StartOfNextHatchLine ? v2_StartOfNextHatchLine->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_PointOfReferenceHatchLine ? v3_PointOfReferenceHatchLine->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_PatternStart ? v4_PatternStart->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, (v5_HatchLineAngle));; populate_derived(); } +// Ifc4x3_add2::IfcFillAreaStyleHatching::IfcFillAreaStyleHatching(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcFillAreaStyleHatching::IfcFillAreaStyleHatching(::Ifc4x3_add2::IfcCurveStyle v1_HatchLineAppearance, ::Ifc4x3_add2::IfcHatchLineDistanceSelect v2_StartOfNextHatchLine, ::Ifc4x3_add2::IfcCartesianPoint v3_PointOfReferenceHatchLine, ::Ifc4x3_add2::IfcCartesianPoint v4_PatternStart, double v5_HatchLineAngle) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_HatchLineAppearance));set_attribute_value(1, (v2_StartOfNextHatchLine)); if (v3_PointOfReferenceHatchLine) {set_attribute_value(2, (*v3_PointOfReferenceHatchLine)); } if (v4_PatternStart) {set_attribute_value(3, (*v4_PatternStart)); }set_attribute_value(4, (v5_HatchLineAngle));; populate_derived(); } // Function implementations for IfcFillAreaStyleTiles -aggregate_of< ::Ifc4x3_add2::IfcVector >::ptr Ifc4x3_add2::IfcFillAreaStyleTiles::TilingPattern() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcVector >(); } -void Ifc4x3_add2::IfcFillAreaStyleTiles::setTilingPattern(aggregate_of< ::Ifc4x3_add2::IfcVector >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } -aggregate_of< ::Ifc4x3_add2::IfcStyledItem >::ptr Ifc4x3_add2::IfcFillAreaStyleTiles::Tiles() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcStyledItem >(); } -void Ifc4x3_add2::IfcFillAreaStyleTiles::setTiles(aggregate_of< ::Ifc4x3_add2::IfcStyledItem >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } +std::vector< ::Ifc4x3_add2::IfcVector > Ifc4x3_add2::IfcFillAreaStyleTiles::TilingPattern() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcVector>(es); } +void Ifc4x3_add2::IfcFillAreaStyleTiles::setTilingPattern(const std::vector< ::Ifc4x3_add2::IfcVector >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcStyledItem > Ifc4x3_add2::IfcFillAreaStyleTiles::Tiles() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcStyledItem>(es); } +void Ifc4x3_add2::IfcFillAreaStyleTiles::setTiles(const std::vector< ::Ifc4x3_add2::IfcStyledItem >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } double Ifc4x3_add2::IfcFillAreaStyleTiles::TilingScale() const { double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcFillAreaStyleTiles::setTilingScale(double v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcFillAreaStyleTiles::setTilingScale(const double& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcFillAreaStyleTiles::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[457]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFillAreaStyleTiles::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[457]); } const IfcParse::entity& Ifc4x3_add2::IfcFillAreaStyleTiles::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[457]); } -Ifc4x3_add2::IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(aggregate_of< ::Ifc4x3_add2::IfcVector >::ptr v1_TilingPattern, aggregate_of< ::Ifc4x3_add2::IfcStyledItem >::ptr v2_Tiles, double v3_TilingScale) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_TilingPattern)->generalize());set_attribute_value(1, (v2_Tiles)->generalize());set_attribute_value(2, (v3_TilingScale));; populate_derived(); } +// Ifc4x3_add2::IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(std::vector< ::Ifc4x3_add2::IfcVector > v1_TilingPattern, std::vector< ::Ifc4x3_add2::IfcStyledItem > v2_Tiles, double v3_TilingScale) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_TilingPattern)->generalize());set_attribute_value(1, (v2_Tiles)->generalize());set_attribute_value(2, (v3_TilingScale));; populate_derived(); } // Function implementations for IfcFilter -boost::optional< ::Ifc4x3_add2::IfcFilterTypeEnum::Value > Ifc4x3_add2::IfcFilter::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcFilterTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcFilter::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFilterTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFilterTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcFilterTypeEnum::Value > Ifc4x3_add2::IfcFilter::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcFilterTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcFilter::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFilterTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFilterTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcFilter::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[459]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFilter::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[459]); } const IfcParse::entity& Ifc4x3_add2::IfcFilter::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[459]); } -Ifc4x3_add2::IfcFilter::IfcFilter(IfcEntityInstanceData&& e) : IfcFlowTreatmentDevice(std::move(e)) { } -Ifc4x3_add2::IfcFilter::IfcFilter(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFilterTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFilterTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcFilter::IfcFilter(const std::weak_ptr& e) : IfcFlowTreatmentDevice(e) { } +// Ifc4x3_add2::IfcFilter::IfcFilter(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFilterTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFilterTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcFilterType ::Ifc4x3_add2::IfcFilterTypeEnum::Value Ifc4x3_add2::IfcFilterType::PredefinedType() const { return ::Ifc4x3_add2::IfcFilterTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcFilterType::setPredefinedType(::Ifc4x3_add2::IfcFilterTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFilterTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcFilterType::setPredefinedType(const ::Ifc4x3_add2::IfcFilterTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFilterTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcFilterType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[460]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFilterType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[460]); } const IfcParse::entity& Ifc4x3_add2::IfcFilterType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[460]); } -Ifc4x3_add2::IfcFilterType::IfcFilterType(IfcEntityInstanceData&& e) : IfcFlowTreatmentDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcFilterType::IfcFilterType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFilterTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFilterTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcFilterType::IfcFilterType(const std::weak_ptr& e) : IfcFlowTreatmentDeviceType(e) { } +// Ifc4x3_add2::IfcFilterType::IfcFilterType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFilterTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFilterTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcFireSuppressionTerminal -boost::optional< ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value > Ifc4x3_add2::IfcFireSuppressionTerminal::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value > Ifc4x3_add2::IfcFireSuppressionTerminal::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcFireSuppressionTerminal::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcFireSuppressionTerminal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[462]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFireSuppressionTerminal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[462]); } const IfcParse::entity& Ifc4x3_add2::IfcFireSuppressionTerminal::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[462]); } -Ifc4x3_add2::IfcFireSuppressionTerminal::IfcFireSuppressionTerminal(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcFireSuppressionTerminal::IfcFireSuppressionTerminal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcFireSuppressionTerminal::IfcFireSuppressionTerminal(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcFireSuppressionTerminal::IfcFireSuppressionTerminal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcFireSuppressionTerminalType ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value Ifc4x3_add2::IfcFireSuppressionTerminalType::PredefinedType() const { return ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcFireSuppressionTerminalType::setPredefinedType(::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcFireSuppressionTerminalType::setPredefinedType(const ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcFireSuppressionTerminalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[463]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFireSuppressionTerminalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[463]); } const IfcParse::entity& Ifc4x3_add2::IfcFireSuppressionTerminalType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[463]); } -Ifc4x3_add2::IfcFireSuppressionTerminalType::IfcFireSuppressionTerminalType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcFireSuppressionTerminalType::IfcFireSuppressionTerminalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcFireSuppressionTerminalType::IfcFireSuppressionTerminalType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcFireSuppressionTerminalType::IfcFireSuppressionTerminalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcFixedReferenceSweptAreaSolid -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcFixedReferenceSweptAreaSolid::FixedReference() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcFixedReferenceSweptAreaSolid::setFixedReference(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcFixedReferenceSweptAreaSolid::FixedReference() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcFixedReferenceSweptAreaSolid::setFixedReference(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcFixedReferenceSweptAreaSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[465]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFixedReferenceSweptAreaSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[465]); } const IfcParse::entity& Ifc4x3_add2::IfcFixedReferenceSweptAreaSolid::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[465]); } -Ifc4x3_add2::IfcFixedReferenceSweptAreaSolid::IfcFixedReferenceSweptAreaSolid(IfcEntityInstanceData&& e) : IfcDirectrixCurveSweptAreaSolid(std::move(e)) { } -Ifc4x3_add2::IfcFixedReferenceSweptAreaSolid::IfcFixedReferenceSweptAreaSolid(::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcCurve* v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect* v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect* v5_EndParam, ::Ifc4x3_add2::IfcDirection* v6_FixedReference) : IfcDirectrixCurveSweptAreaSolid(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, v1_SweptArea ? v1_SweptArea->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Position ? v2_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_Directrix ? v3_Directrix->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_StartParam ? v4_StartParam->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, v5_EndParam ? v5_EndParam->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_FixedReference ? v6_FixedReference->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcFixedReferenceSweptAreaSolid::IfcFixedReferenceSweptAreaSolid(const std::weak_ptr& e) : IfcDirectrixCurveSweptAreaSolid(e) { } +// Ifc4x3_add2::IfcFixedReferenceSweptAreaSolid::IfcFixedReferenceSweptAreaSolid(::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcCurve v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect v5_EndParam, ::Ifc4x3_add2::IfcDirection v6_FixedReference) : IfcDirectrixCurveSweptAreaSolid(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_SweptArea)); if (v2_Position) {set_attribute_value(1, (*v2_Position)); }set_attribute_value(2, (v3_Directrix)); if (v4_StartParam) {set_attribute_value(3, (*v4_StartParam)); } if (v5_EndParam) {set_attribute_value(4, (*v5_EndParam)); }set_attribute_value(5, (v6_FixedReference));; populate_derived(); } // Function implementations for IfcFlowController -const IfcParse::entity& Ifc4x3_add2::IfcFlowController::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[466]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowController::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[466]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowController::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[466]); } -Ifc4x3_add2::IfcFlowController::IfcFlowController(IfcEntityInstanceData&& e) : IfcDistributionFlowElement(std::move(e)) { } -Ifc4x3_add2::IfcFlowController::IfcFlowController(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowController::IfcFlowController(const std::weak_ptr& e) : IfcDistributionFlowElement(e) { } +// Ifc4x3_add2::IfcFlowController::IfcFlowController(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcDistributionFlowElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcFlowControllerType -const IfcParse::entity& Ifc4x3_add2::IfcFlowControllerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[467]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowControllerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[467]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowControllerType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[467]); } -Ifc4x3_add2::IfcFlowControllerType::IfcFlowControllerType(IfcEntityInstanceData&& e) : IfcDistributionFlowElementType(std::move(e)) { } -Ifc4x3_add2::IfcFlowControllerType::IfcFlowControllerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowControllerType::IfcFlowControllerType(const std::weak_ptr& e) : IfcDistributionFlowElementType(e) { } +// Ifc4x3_add2::IfcFlowControllerType::IfcFlowControllerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcFlowFitting -const IfcParse::entity& Ifc4x3_add2::IfcFlowFitting::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[469]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowFitting::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[469]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowFitting::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[469]); } -Ifc4x3_add2::IfcFlowFitting::IfcFlowFitting(IfcEntityInstanceData&& e) : IfcDistributionFlowElement(std::move(e)) { } -Ifc4x3_add2::IfcFlowFitting::IfcFlowFitting(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowFitting::IfcFlowFitting(const std::weak_ptr& e) : IfcDistributionFlowElement(e) { } +// Ifc4x3_add2::IfcFlowFitting::IfcFlowFitting(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcDistributionFlowElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcFlowFittingType -const IfcParse::entity& Ifc4x3_add2::IfcFlowFittingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[470]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowFittingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[470]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowFittingType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[470]); } -Ifc4x3_add2::IfcFlowFittingType::IfcFlowFittingType(IfcEntityInstanceData&& e) : IfcDistributionFlowElementType(std::move(e)) { } -Ifc4x3_add2::IfcFlowFittingType::IfcFlowFittingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowFittingType::IfcFlowFittingType(const std::weak_ptr& e) : IfcDistributionFlowElementType(e) { } +// Ifc4x3_add2::IfcFlowFittingType::IfcFlowFittingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcFlowInstrument -boost::optional< ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value > Ifc4x3_add2::IfcFlowInstrument::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value > Ifc4x3_add2::IfcFlowInstrument::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcFlowInstrument::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcFlowInstrument::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[471]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowInstrument::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[471]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowInstrument::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[471]); } -Ifc4x3_add2::IfcFlowInstrument::IfcFlowInstrument(IfcEntityInstanceData&& e) : IfcDistributionControlElement(std::move(e)) { } -Ifc4x3_add2::IfcFlowInstrument::IfcFlowInstrument(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowInstrument::IfcFlowInstrument(const std::weak_ptr& e) : IfcDistributionControlElement(e) { } +// Ifc4x3_add2::IfcFlowInstrument::IfcFlowInstrument(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcFlowInstrumentType ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value Ifc4x3_add2::IfcFlowInstrumentType::PredefinedType() const { return ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcFlowInstrumentType::setPredefinedType(::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcFlowInstrumentType::setPredefinedType(const ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcFlowInstrumentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[472]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowInstrumentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[472]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowInstrumentType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[472]); } -Ifc4x3_add2::IfcFlowInstrumentType::IfcFlowInstrumentType(IfcEntityInstanceData&& e) : IfcDistributionControlElementType(std::move(e)) { } -Ifc4x3_add2::IfcFlowInstrumentType::IfcFlowInstrumentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcFlowInstrumentType::IfcFlowInstrumentType(const std::weak_ptr& e) : IfcDistributionControlElementType(e) { } +// Ifc4x3_add2::IfcFlowInstrumentType::IfcFlowInstrumentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcFlowMeter -boost::optional< ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value > Ifc4x3_add2::IfcFlowMeter::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcFlowMeterTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFlowMeterTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value > Ifc4x3_add2::IfcFlowMeter::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcFlowMeterTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcFlowMeter::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFlowMeterTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcFlowMeter::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[474]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowMeter::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[474]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowMeter::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[474]); } -Ifc4x3_add2::IfcFlowMeter::IfcFlowMeter(IfcEntityInstanceData&& e) : IfcFlowController(std::move(e)) { } -Ifc4x3_add2::IfcFlowMeter::IfcFlowMeter(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value > v9_PredefinedType) : IfcFlowController(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFlowMeterTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowMeter::IfcFlowMeter(const std::weak_ptr& e) : IfcFlowController(e) { } +// Ifc4x3_add2::IfcFlowMeter::IfcFlowMeter(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value > v9_PredefinedType) : IfcFlowController(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFlowMeterTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcFlowMeterType ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value Ifc4x3_add2::IfcFlowMeterType::PredefinedType() const { return ::Ifc4x3_add2::IfcFlowMeterTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcFlowMeterType::setPredefinedType(::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFlowMeterTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcFlowMeterType::setPredefinedType(const ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFlowMeterTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcFlowMeterType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[475]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowMeterType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[475]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowMeterType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[475]); } -Ifc4x3_add2::IfcFlowMeterType::IfcFlowMeterType(IfcEntityInstanceData&& e) : IfcFlowControllerType(std::move(e)) { } -Ifc4x3_add2::IfcFlowMeterType::IfcFlowMeterType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFlowMeterTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcFlowMeterType::IfcFlowMeterType(const std::weak_ptr& e) : IfcFlowControllerType(e) { } +// Ifc4x3_add2::IfcFlowMeterType::IfcFlowMeterType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFlowMeterTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcFlowMovingDevice -const IfcParse::entity& Ifc4x3_add2::IfcFlowMovingDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[477]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowMovingDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[477]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowMovingDevice::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[477]); } -Ifc4x3_add2::IfcFlowMovingDevice::IfcFlowMovingDevice(IfcEntityInstanceData&& e) : IfcDistributionFlowElement(std::move(e)) { } -Ifc4x3_add2::IfcFlowMovingDevice::IfcFlowMovingDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowMovingDevice::IfcFlowMovingDevice(const std::weak_ptr& e) : IfcDistributionFlowElement(e) { } +// Ifc4x3_add2::IfcFlowMovingDevice::IfcFlowMovingDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcDistributionFlowElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcFlowMovingDeviceType -const IfcParse::entity& Ifc4x3_add2::IfcFlowMovingDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[478]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowMovingDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[478]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowMovingDeviceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[478]); } -Ifc4x3_add2::IfcFlowMovingDeviceType::IfcFlowMovingDeviceType(IfcEntityInstanceData&& e) : IfcDistributionFlowElementType(std::move(e)) { } -Ifc4x3_add2::IfcFlowMovingDeviceType::IfcFlowMovingDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowMovingDeviceType::IfcFlowMovingDeviceType(const std::weak_ptr& e) : IfcDistributionFlowElementType(e) { } +// Ifc4x3_add2::IfcFlowMovingDeviceType::IfcFlowMovingDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcFlowSegment -const IfcParse::entity& Ifc4x3_add2::IfcFlowSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[479]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[479]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowSegment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[479]); } -Ifc4x3_add2::IfcFlowSegment::IfcFlowSegment(IfcEntityInstanceData&& e) : IfcDistributionFlowElement(std::move(e)) { } -Ifc4x3_add2::IfcFlowSegment::IfcFlowSegment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowSegment::IfcFlowSegment(const std::weak_ptr& e) : IfcDistributionFlowElement(e) { } +// Ifc4x3_add2::IfcFlowSegment::IfcFlowSegment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcDistributionFlowElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcFlowSegmentType -const IfcParse::entity& Ifc4x3_add2::IfcFlowSegmentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[480]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowSegmentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[480]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowSegmentType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[480]); } -Ifc4x3_add2::IfcFlowSegmentType::IfcFlowSegmentType(IfcEntityInstanceData&& e) : IfcDistributionFlowElementType(std::move(e)) { } -Ifc4x3_add2::IfcFlowSegmentType::IfcFlowSegmentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowSegmentType::IfcFlowSegmentType(const std::weak_ptr& e) : IfcDistributionFlowElementType(e) { } +// Ifc4x3_add2::IfcFlowSegmentType::IfcFlowSegmentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcFlowStorageDevice -const IfcParse::entity& Ifc4x3_add2::IfcFlowStorageDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[481]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowStorageDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[481]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowStorageDevice::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[481]); } -Ifc4x3_add2::IfcFlowStorageDevice::IfcFlowStorageDevice(IfcEntityInstanceData&& e) : IfcDistributionFlowElement(std::move(e)) { } -Ifc4x3_add2::IfcFlowStorageDevice::IfcFlowStorageDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowStorageDevice::IfcFlowStorageDevice(const std::weak_ptr& e) : IfcDistributionFlowElement(e) { } +// Ifc4x3_add2::IfcFlowStorageDevice::IfcFlowStorageDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcDistributionFlowElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcFlowStorageDeviceType -const IfcParse::entity& Ifc4x3_add2::IfcFlowStorageDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[482]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowStorageDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[482]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowStorageDeviceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[482]); } -Ifc4x3_add2::IfcFlowStorageDeviceType::IfcFlowStorageDeviceType(IfcEntityInstanceData&& e) : IfcDistributionFlowElementType(std::move(e)) { } -Ifc4x3_add2::IfcFlowStorageDeviceType::IfcFlowStorageDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowStorageDeviceType::IfcFlowStorageDeviceType(const std::weak_ptr& e) : IfcDistributionFlowElementType(e) { } +// Ifc4x3_add2::IfcFlowStorageDeviceType::IfcFlowStorageDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcFlowTerminal -const IfcParse::entity& Ifc4x3_add2::IfcFlowTerminal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[483]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowTerminal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[483]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowTerminal::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[483]); } -Ifc4x3_add2::IfcFlowTerminal::IfcFlowTerminal(IfcEntityInstanceData&& e) : IfcDistributionFlowElement(std::move(e)) { } -Ifc4x3_add2::IfcFlowTerminal::IfcFlowTerminal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowTerminal::IfcFlowTerminal(const std::weak_ptr& e) : IfcDistributionFlowElement(e) { } +// Ifc4x3_add2::IfcFlowTerminal::IfcFlowTerminal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcDistributionFlowElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcFlowTerminalType -const IfcParse::entity& Ifc4x3_add2::IfcFlowTerminalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[484]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowTerminalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[484]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowTerminalType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[484]); } -Ifc4x3_add2::IfcFlowTerminalType::IfcFlowTerminalType(IfcEntityInstanceData&& e) : IfcDistributionFlowElementType(std::move(e)) { } -Ifc4x3_add2::IfcFlowTerminalType::IfcFlowTerminalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowTerminalType::IfcFlowTerminalType(const std::weak_ptr& e) : IfcDistributionFlowElementType(e) { } +// Ifc4x3_add2::IfcFlowTerminalType::IfcFlowTerminalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcFlowTreatmentDevice -const IfcParse::entity& Ifc4x3_add2::IfcFlowTreatmentDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[485]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowTreatmentDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[485]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowTreatmentDevice::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[485]); } -Ifc4x3_add2::IfcFlowTreatmentDevice::IfcFlowTreatmentDevice(IfcEntityInstanceData&& e) : IfcDistributionFlowElement(std::move(e)) { } -Ifc4x3_add2::IfcFlowTreatmentDevice::IfcFlowTreatmentDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowTreatmentDevice::IfcFlowTreatmentDevice(const std::weak_ptr& e) : IfcDistributionFlowElement(e) { } +// Ifc4x3_add2::IfcFlowTreatmentDevice::IfcFlowTreatmentDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcDistributionFlowElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcFlowTreatmentDeviceType -const IfcParse::entity& Ifc4x3_add2::IfcFlowTreatmentDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[486]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFlowTreatmentDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[486]); } const IfcParse::entity& Ifc4x3_add2::IfcFlowTreatmentDeviceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[486]); } -Ifc4x3_add2::IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(IfcEntityInstanceData&& e) : IfcDistributionFlowElementType(std::move(e)) { } -Ifc4x3_add2::IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(const std::weak_ptr& e) : IfcDistributionFlowElementType(e) { } +// Ifc4x3_add2::IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcFooting -boost::optional< ::Ifc4x3_add2::IfcFootingTypeEnum::Value > Ifc4x3_add2::IfcFooting::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcFootingTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcFooting::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFootingTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFootingTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcFootingTypeEnum::Value > Ifc4x3_add2::IfcFooting::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcFootingTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcFooting::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFootingTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFootingTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcFooting::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[490]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFooting::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[490]); } const IfcParse::entity& Ifc4x3_add2::IfcFooting::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[490]); } -Ifc4x3_add2::IfcFooting::IfcFooting(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcFooting::IfcFooting(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFootingTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFootingTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcFooting::IfcFooting(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcFooting::IfcFooting(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFootingTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFootingTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcFootingType ::Ifc4x3_add2::IfcFootingTypeEnum::Value Ifc4x3_add2::IfcFootingType::PredefinedType() const { return ::Ifc4x3_add2::IfcFootingTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcFootingType::setPredefinedType(::Ifc4x3_add2::IfcFootingTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFootingTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcFootingType::setPredefinedType(const ::Ifc4x3_add2::IfcFootingTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcFootingTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcFootingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[491]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFootingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[491]); } const IfcParse::entity& Ifc4x3_add2::IfcFootingType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[491]); } -Ifc4x3_add2::IfcFootingType::IfcFootingType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcFootingType::IfcFootingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFootingTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFootingTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcFootingType::IfcFootingType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcFootingType::IfcFootingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFootingTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFootingTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcFurnishingElement -const IfcParse::entity& Ifc4x3_add2::IfcFurnishingElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[495]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFurnishingElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[495]); } const IfcParse::entity& Ifc4x3_add2::IfcFurnishingElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[495]); } -Ifc4x3_add2::IfcFurnishingElement::IfcFurnishingElement(IfcEntityInstanceData&& e) : IfcElement(std::move(e)) { } -Ifc4x3_add2::IfcFurnishingElement::IfcFurnishingElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcFurnishingElement::IfcFurnishingElement(const std::weak_ptr& e) : IfcElement(e) { } +// Ifc4x3_add2::IfcFurnishingElement::IfcFurnishingElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcFurnishingElementType -const IfcParse::entity& Ifc4x3_add2::IfcFurnishingElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[496]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFurnishingElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[496]); } const IfcParse::entity& Ifc4x3_add2::IfcFurnishingElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[496]); } -Ifc4x3_add2::IfcFurnishingElementType::IfcFurnishingElementType(IfcEntityInstanceData&& e) : IfcElementType(std::move(e)) { } -Ifc4x3_add2::IfcFurnishingElementType::IfcFurnishingElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcFurnishingElementType::IfcFurnishingElementType(const std::weak_ptr& e) : IfcElementType(e) { } +// Ifc4x3_add2::IfcFurnishingElementType::IfcFurnishingElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcFurniture -boost::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > Ifc4x3_add2::IfcFurniture::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcFurnitureTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFurnitureTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > Ifc4x3_add2::IfcFurniture::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcFurnitureTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcFurniture::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcFurnitureTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcFurniture::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[497]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFurniture::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[497]); } const IfcParse::entity& Ifc4x3_add2::IfcFurniture::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[497]); } -Ifc4x3_add2::IfcFurniture::IfcFurniture(IfcEntityInstanceData&& e) : IfcFurnishingElement(std::move(e)) { } -Ifc4x3_add2::IfcFurniture::IfcFurniture(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > v9_PredefinedType) : IfcFurnishingElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFurnitureTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcFurniture::IfcFurniture(const std::weak_ptr& e) : IfcFurnishingElement(e) { } +// Ifc4x3_add2::IfcFurniture::IfcFurniture(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > v9_PredefinedType) : IfcFurnishingElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcFurnitureTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcFurnitureType ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value Ifc4x3_add2::IfcFurnitureType::AssemblyPlace() const { return ::Ifc4x3_add2::IfcAssemblyPlaceEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcFurnitureType::setAssemblyPlace(::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcAssemblyPlaceEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -boost::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > Ifc4x3_add2::IfcFurnitureType::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcFurnitureTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcFurnitureTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +void Ifc4x3_add2::IfcFurnitureType::setAssemblyPlace(const ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcAssemblyPlaceEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +std::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > Ifc4x3_add2::IfcFurnitureType::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcFurnitureTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcFurnitureType::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcFurnitureTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcFurnitureType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[498]); } +// const IfcParse::entity& Ifc4x3_add2::IfcFurnitureType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[498]); } const IfcParse::entity& Ifc4x3_add2::IfcFurnitureType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[498]); } -Ifc4x3_add2::IfcFurnitureType::IfcFurnitureType(IfcEntityInstanceData&& e) : IfcFurnishingElementType(std::move(e)) { } -Ifc4x3_add2::IfcFurnitureType::IfcFurnitureType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value v10_AssemblyPlace, boost::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > v11_PredefinedType) : IfcFurnishingElementType(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcAssemblyPlaceEnum::Class(),(size_t)v10_AssemblyPlace))); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcFurnitureTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcFurnitureType::IfcFurnitureType(const std::weak_ptr& e) : IfcFurnishingElementType(e) { } +// Ifc4x3_add2::IfcFurnitureType::IfcFurnitureType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value v10_AssemblyPlace, std::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > v11_PredefinedType) : IfcFurnishingElementType(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcAssemblyPlaceEnum::Class(),(size_t)v10_AssemblyPlace))); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcFurnitureTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } // Function implementations for IfcGeographicCRS -boost::optional< std::string > Ifc4x3_add2::IfcGeographicCRS::PrimeMeridian() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcGeographicCRS::setPrimeMeridian(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -::Ifc4x3_add2::IfcNamedUnit* Ifc4x3_add2::IfcGeographicCRS::AngleUnit() const { if(get_attribute_value(4).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcNamedUnit>(true); } -void Ifc4x3_add2::IfcGeographicCRS::setAngleUnit(::Ifc4x3_add2::IfcNamedUnit* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcNamedUnit* Ifc4x3_add2::IfcGeographicCRS::HeightUnit() const { if(get_attribute_value(5).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcNamedUnit>(true); } -void Ifc4x3_add2::IfcGeographicCRS::setHeightUnit(::Ifc4x3_add2::IfcNamedUnit* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +std::optional< std::string > Ifc4x3_add2::IfcGeographicCRS::PrimeMeridian() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcGeographicCRS::setPrimeMeridian(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +::Ifc4x3_add2::IfcNamedUnit Ifc4x3_add2::IfcGeographicCRS::AngleUnit() const { if(get_attribute_value(4).isNull()) { return ::Ifc4x3_add2::IfcNamedUnit{}; } return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcNamedUnit>(); } +void Ifc4x3_add2::IfcGeographicCRS::setAngleUnit(const ::Ifc4x3_add2::IfcNamedUnit& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcNamedUnit Ifc4x3_add2::IfcGeographicCRS::HeightUnit() const { if(get_attribute_value(5).isNull()) { return ::Ifc4x3_add2::IfcNamedUnit{}; } return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcNamedUnit>(); } +void Ifc4x3_add2::IfcGeographicCRS::setHeightUnit(const ::Ifc4x3_add2::IfcNamedUnit& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcGeographicCRS::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[500]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGeographicCRS::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[500]); } const IfcParse::entity& Ifc4x3_add2::IfcGeographicCRS::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[500]); } -Ifc4x3_add2::IfcGeographicCRS::IfcGeographicCRS(IfcEntityInstanceData&& e) : IfcCoordinateReferenceSystem(std::move(e)) { } -Ifc4x3_add2::IfcGeographicCRS::IfcGeographicCRS(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_GeodeticDatum, boost::optional< std::string > v4_PrimeMeridian, ::Ifc4x3_add2::IfcNamedUnit* v5_AngleUnit, ::Ifc4x3_add2::IfcNamedUnit* v6_HeightUnit) : IfcCoordinateReferenceSystem(IfcEntityInstanceData(in_memory_attribute_storage(6))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_GeodeticDatum) {set_attribute_value(2, (*v3_GeodeticDatum)); } if (v4_PrimeMeridian) {set_attribute_value(3, (*v4_PrimeMeridian)); }set_attribute_value(4, v5_AngleUnit ? v5_AngleUnit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_HeightUnit ? v6_HeightUnit->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcGeographicCRS::IfcGeographicCRS(const std::weak_ptr& e) : IfcCoordinateReferenceSystem(e) { } +// Ifc4x3_add2::IfcGeographicCRS::IfcGeographicCRS(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::optional< std::string > v3_GeodeticDatum, std::optional< std::string > v4_PrimeMeridian, ::Ifc4x3_add2::IfcNamedUnit v5_AngleUnit, ::Ifc4x3_add2::IfcNamedUnit v6_HeightUnit) : IfcCoordinateReferenceSystem(const std::weak_ptr&(in_memory_attribute_storage(6))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_GeodeticDatum) {set_attribute_value(2, (*v3_GeodeticDatum)); } if (v4_PrimeMeridian) {set_attribute_value(3, (*v4_PrimeMeridian)); } if (v5_AngleUnit) {set_attribute_value(4, (*v5_AngleUnit)); } if (v6_HeightUnit) {set_attribute_value(5, (*v6_HeightUnit)); }; populate_derived(); } // Function implementations for IfcGeographicElement -boost::optional< ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value > Ifc4x3_add2::IfcGeographicElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcGeographicElementTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcGeographicElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value > Ifc4x3_add2::IfcGeographicElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcGeographicElementTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcGeographicElement::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcGeographicElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcGeographicElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[501]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGeographicElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[501]); } const IfcParse::entity& Ifc4x3_add2::IfcGeographicElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[501]); } -Ifc4x3_add2::IfcGeographicElement::IfcGeographicElement(IfcEntityInstanceData&& e) : IfcElement(std::move(e)) { } -Ifc4x3_add2::IfcGeographicElement::IfcGeographicElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value > v9_PredefinedType) : IfcElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGeographicElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcGeographicElement::IfcGeographicElement(const std::weak_ptr& e) : IfcElement(e) { } +// Ifc4x3_add2::IfcGeographicElement::IfcGeographicElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value > v9_PredefinedType) : IfcElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGeographicElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcGeographicElementType ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value Ifc4x3_add2::IfcGeographicElementType::PredefinedType() const { return ::Ifc4x3_add2::IfcGeographicElementTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcGeographicElementType::setPredefinedType(::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcGeographicElementTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcGeographicElementType::setPredefinedType(const ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcGeographicElementTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcGeographicElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[502]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGeographicElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[502]); } const IfcParse::entity& Ifc4x3_add2::IfcGeographicElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[502]); } -Ifc4x3_add2::IfcGeographicElementType::IfcGeographicElementType(IfcEntityInstanceData&& e) : IfcElementType(std::move(e)) { } -Ifc4x3_add2::IfcGeographicElementType::IfcGeographicElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value v10_PredefinedType) : IfcElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcGeographicElementTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcGeographicElementType::IfcGeographicElementType(const std::weak_ptr& e) : IfcElementType(e) { } +// Ifc4x3_add2::IfcGeographicElementType::IfcGeographicElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value v10_PredefinedType) : IfcElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcGeographicElementTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcGeometricCurveSet -const IfcParse::entity& Ifc4x3_add2::IfcGeometricCurveSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[504]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGeometricCurveSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[504]); } const IfcParse::entity& Ifc4x3_add2::IfcGeometricCurveSet::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[504]); } -Ifc4x3_add2::IfcGeometricCurveSet::IfcGeometricCurveSet(IfcEntityInstanceData&& e) : IfcGeometricSet(std::move(e)) { } -Ifc4x3_add2::IfcGeometricCurveSet::IfcGeometricCurveSet(aggregate_of< ::Ifc4x3_add2::IfcGeometricSetSelect >::ptr v1_Elements) : IfcGeometricSet(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Elements)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcGeometricCurveSet::IfcGeometricCurveSet(const std::weak_ptr& e) : IfcGeometricSet(e) { } +// Ifc4x3_add2::IfcGeometricCurveSet::IfcGeometricCurveSet(std::vector< ::Ifc4x3_add2::IfcGeometricSetSelect > v1_Elements) : IfcGeometricSet(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Elements)->generalize());; populate_derived(); } // Function implementations for IfcGeometricRepresentationContext int Ifc4x3_add2::IfcGeometricRepresentationContext::CoordinateSpaceDimension() const { int v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcGeometricRepresentationContext::setCoordinateSpaceDimension(int v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -boost::optional< double > Ifc4x3_add2::IfcGeometricRepresentationContext::Precision() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -::Ifc4x3_add2::IfcAxis2Placement* Ifc4x3_add2::IfcGeometricRepresentationContext::WorldCoordinateSystem() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcAxis2Placement>(true); } -void Ifc4x3_add2::IfcGeometricRepresentationContext::setWorldCoordinateSystem(::Ifc4x3_add2::IfcAxis2Placement* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcGeometricRepresentationContext::TrueNorth() const { if(get_attribute_value(5).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcGeometricRepresentationContext::setTrueNorth(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcGeometricRepresentationContext::setCoordinateSpaceDimension(const int& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +std::optional< double > Ifc4x3_add2::IfcGeometricRepresentationContext::Precision() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcGeometricRepresentationContext::setPrecision(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +::Ifc4x3_add2::IfcAxis2Placement Ifc4x3_add2::IfcGeometricRepresentationContext::WorldCoordinateSystem() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcAxis2Placement>(); } +void Ifc4x3_add2::IfcGeometricRepresentationContext::setWorldCoordinateSystem(const ::Ifc4x3_add2::IfcAxis2Placement& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcGeometricRepresentationContext::TrueNorth() const { if(get_attribute_value(5).isNull()) { return ::Ifc4x3_add2::IfcDirection{}; } return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcGeometricRepresentationContext::setTrueNorth(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcGeometricRepresentationSubContext::list::ptr Ifc4x3_add2::IfcGeometricRepresentationContext::HasSubContexts() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[508], 6)->as(); } -::Ifc4x3_add2::IfcCoordinateOperation::list::ptr Ifc4x3_add2::IfcGeometricRepresentationContext::HasCoordinateOperation() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[243], 0)->as(); } +std::vector<::Ifc4x3_add2::IfcGeometricRepresentationSubContext> Ifc4x3_add2::IfcGeometricRepresentationContext::HasSubContexts() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[508], 6)); } +std::vector<::Ifc4x3_add2::IfcCoordinateOperation> Ifc4x3_add2::IfcGeometricRepresentationContext::HasCoordinateOperation() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[243], 0)); } -const IfcParse::entity& Ifc4x3_add2::IfcGeometricRepresentationContext::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[506]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGeometricRepresentationContext::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[506]); } const IfcParse::entity& Ifc4x3_add2::IfcGeometricRepresentationContext::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[506]); } -Ifc4x3_add2::IfcGeometricRepresentationContext::IfcGeometricRepresentationContext(IfcEntityInstanceData&& e) : IfcRepresentationContext(std::move(e)) { } -Ifc4x3_add2::IfcGeometricRepresentationContext::IfcGeometricRepresentationContext(boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType, int v3_CoordinateSpaceDimension, boost::optional< double > v4_Precision, ::Ifc4x3_add2::IfcAxis2Placement* v5_WorldCoordinateSystem, ::Ifc4x3_add2::IfcDirection* v6_TrueNorth) : IfcRepresentationContext(IfcEntityInstanceData(in_memory_attribute_storage(6))) { if (v1_ContextIdentifier) {set_attribute_value(0, (*v1_ContextIdentifier)); } if (v2_ContextType) {set_attribute_value(1, (*v2_ContextType)); }set_attribute_value(2, (v3_CoordinateSpaceDimension)); if (v4_Precision) {set_attribute_value(3, (*v4_Precision)); }set_attribute_value(4, v5_WorldCoordinateSystem ? v5_WorldCoordinateSystem->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_TrueNorth ? v6_TrueNorth->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcGeometricRepresentationContext::IfcGeometricRepresentationContext(const std::weak_ptr& e) : IfcRepresentationContext(e) { } +// Ifc4x3_add2::IfcGeometricRepresentationContext::IfcGeometricRepresentationContext(std::optional< std::string > v1_ContextIdentifier, std::optional< std::string > v2_ContextType, int v3_CoordinateSpaceDimension, std::optional< double > v4_Precision, ::Ifc4x3_add2::IfcAxis2Placement v5_WorldCoordinateSystem, ::Ifc4x3_add2::IfcDirection v6_TrueNorth) : IfcRepresentationContext(const std::weak_ptr&(in_memory_attribute_storage(6))) { if (v1_ContextIdentifier) {set_attribute_value(0, (*v1_ContextIdentifier)); } if (v2_ContextType) {set_attribute_value(1, (*v2_ContextType)); }set_attribute_value(2, (v3_CoordinateSpaceDimension)); if (v4_Precision) {set_attribute_value(3, (*v4_Precision)); }set_attribute_value(4, (v5_WorldCoordinateSystem)); if (v6_TrueNorth) {set_attribute_value(5, (*v6_TrueNorth)); }; populate_derived(); } // Function implementations for IfcGeometricRepresentationItem -const IfcParse::entity& Ifc4x3_add2::IfcGeometricRepresentationItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[507]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGeometricRepresentationItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[507]); } const IfcParse::entity& Ifc4x3_add2::IfcGeometricRepresentationItem::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[507]); } -Ifc4x3_add2::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem(IfcEntityInstanceData&& e) : IfcRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem() : IfcRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem(const std::weak_ptr& e) : IfcRepresentationItem(e) { } +// Ifc4x3_add2::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem() : IfcRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcGeometricRepresentationSubContext -::Ifc4x3_add2::IfcGeometricRepresentationContext* Ifc4x3_add2::IfcGeometricRepresentationSubContext::ParentContext() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcGeometricRepresentationContext>(true); } -void Ifc4x3_add2::IfcGeometricRepresentationSubContext::setParentContext(::Ifc4x3_add2::IfcGeometricRepresentationContext* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } -boost::optional< double > Ifc4x3_add2::IfcGeometricRepresentationSubContext::TargetScale() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +::Ifc4x3_add2::IfcGeometricRepresentationContext Ifc4x3_add2::IfcGeometricRepresentationSubContext::ParentContext() const { return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcGeometricRepresentationContext>(); } +void Ifc4x3_add2::IfcGeometricRepresentationSubContext::setParentContext(const ::Ifc4x3_add2::IfcGeometricRepresentationContext& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< double > Ifc4x3_add2::IfcGeometricRepresentationSubContext::TargetScale() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcGeometricRepresentationSubContext::setTargetScale(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } ::Ifc4x3_add2::IfcGeometricProjectionEnum::Value Ifc4x3_add2::IfcGeometricRepresentationSubContext::TargetView() const { return ::Ifc4x3_add2::IfcGeometricProjectionEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcGeometricRepresentationSubContext::setTargetView(::Ifc4x3_add2::IfcGeometricProjectionEnum::Value v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcGeometricProjectionEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } -boost::optional< std::string > Ifc4x3_add2::IfcGeometricRepresentationSubContext::UserDefinedTargetView() const { if(get_attribute_value(9).isNull()) { return boost::none; } std::string v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +void Ifc4x3_add2::IfcGeometricRepresentationSubContext::setTargetView(const ::Ifc4x3_add2::IfcGeometricProjectionEnum::Value& v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcGeometricProjectionEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } +std::optional< std::string > Ifc4x3_add2::IfcGeometricRepresentationSubContext::UserDefinedTargetView() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } std::string v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(const std::optional< std::string >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcGeometricRepresentationSubContext::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[508]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGeometricRepresentationSubContext::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[508]); } const IfcParse::entity& Ifc4x3_add2::IfcGeometricRepresentationSubContext::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[508]); } -Ifc4x3_add2::IfcGeometricRepresentationSubContext::IfcGeometricRepresentationSubContext(IfcEntityInstanceData&& e) : IfcGeometricRepresentationContext(std::move(e)) { } -Ifc4x3_add2::IfcGeometricRepresentationSubContext::IfcGeometricRepresentationSubContext(boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType, ::Ifc4x3_add2::IfcGeometricRepresentationContext* v7_ParentContext, boost::optional< double > v8_TargetScale, ::Ifc4x3_add2::IfcGeometricProjectionEnum::Value v9_TargetView, boost::optional< std::string > v10_UserDefinedTargetView) : IfcGeometricRepresentationContext(IfcEntityInstanceData(in_memory_attribute_storage(10))) { if (v1_ContextIdentifier) {set_attribute_value(0, (*v1_ContextIdentifier)); } if (v2_ContextType) {set_attribute_value(1, (*v2_ContextType)); }set_attribute_value(6, v7_ParentContext ? v7_ParentContext->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_TargetScale) {set_attribute_value(7, (*v8_TargetScale)); }set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGeometricProjectionEnum::Class(),(size_t)v9_TargetView))); if (v10_UserDefinedTargetView) {set_attribute_value(9, (*v10_UserDefinedTargetView)); }; populate_derived(); } +// Ifc4x3_add2::IfcGeometricRepresentationSubContext::IfcGeometricRepresentationSubContext(const std::weak_ptr& e) : IfcGeometricRepresentationContext(e) { } +// Ifc4x3_add2::IfcGeometricRepresentationSubContext::IfcGeometricRepresentationSubContext(std::optional< std::string > v1_ContextIdentifier, std::optional< std::string > v2_ContextType, ::Ifc4x3_add2::IfcGeometricRepresentationContext v7_ParentContext, std::optional< double > v8_TargetScale, ::Ifc4x3_add2::IfcGeometricProjectionEnum::Value v9_TargetView, std::optional< std::string > v10_UserDefinedTargetView) : IfcGeometricRepresentationContext(const std::weak_ptr&(in_memory_attribute_storage(10))) { if (v1_ContextIdentifier) {set_attribute_value(0, (*v1_ContextIdentifier)); } if (v2_ContextType) {set_attribute_value(1, (*v2_ContextType)); }set_attribute_value(6, (v7_ParentContext)); if (v8_TargetScale) {set_attribute_value(7, (*v8_TargetScale)); }set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGeometricProjectionEnum::Class(),(size_t)v9_TargetView))); if (v10_UserDefinedTargetView) {set_attribute_value(9, (*v10_UserDefinedTargetView)); }; populate_derived(); } // Function implementations for IfcGeometricSet -aggregate_of< ::Ifc4x3_add2::IfcGeometricSetSelect >::ptr Ifc4x3_add2::IfcGeometricSet::Elements() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcGeometricSetSelect >(); } -void Ifc4x3_add2::IfcGeometricSet::setElements(aggregate_of< ::Ifc4x3_add2::IfcGeometricSetSelect >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcGeometricSetSelect > Ifc4x3_add2::IfcGeometricSet::Elements() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcGeometricSetSelect>(es); } +void Ifc4x3_add2::IfcGeometricSet::setElements(const std::vector< ::Ifc4x3_add2::IfcGeometricSetSelect >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcGeometricSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[509]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGeometricSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[509]); } const IfcParse::entity& Ifc4x3_add2::IfcGeometricSet::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[509]); } -Ifc4x3_add2::IfcGeometricSet::IfcGeometricSet(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcGeometricSet::IfcGeometricSet(aggregate_of< ::Ifc4x3_add2::IfcGeometricSetSelect >::ptr v1_Elements) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Elements)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcGeometricSet::IfcGeometricSet(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcGeometricSet::IfcGeometricSet(std::vector< ::Ifc4x3_add2::IfcGeometricSetSelect > v1_Elements) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Elements)->generalize());; populate_derived(); } // Function implementations for IfcGeomodel -const IfcParse::entity& Ifc4x3_add2::IfcGeomodel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[511]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGeomodel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[511]); } const IfcParse::entity& Ifc4x3_add2::IfcGeomodel::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[511]); } -Ifc4x3_add2::IfcGeomodel::IfcGeomodel(IfcEntityInstanceData&& e) : IfcGeotechnicalAssembly(std::move(e)) { } -Ifc4x3_add2::IfcGeomodel::IfcGeomodel(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalAssembly(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcGeomodel::IfcGeomodel(const std::weak_ptr& e) : IfcGeotechnicalAssembly(e) { } +// Ifc4x3_add2::IfcGeomodel::IfcGeomodel(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcGeotechnicalAssembly(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcGeoslice -const IfcParse::entity& Ifc4x3_add2::IfcGeoslice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[512]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGeoslice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[512]); } const IfcParse::entity& Ifc4x3_add2::IfcGeoslice::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[512]); } -Ifc4x3_add2::IfcGeoslice::IfcGeoslice(IfcEntityInstanceData&& e) : IfcGeotechnicalAssembly(std::move(e)) { } -Ifc4x3_add2::IfcGeoslice::IfcGeoslice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalAssembly(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcGeoslice::IfcGeoslice(const std::weak_ptr& e) : IfcGeotechnicalAssembly(e) { } +// Ifc4x3_add2::IfcGeoslice::IfcGeoslice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcGeotechnicalAssembly(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcGeotechnicalAssembly -const IfcParse::entity& Ifc4x3_add2::IfcGeotechnicalAssembly::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[513]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGeotechnicalAssembly::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[513]); } const IfcParse::entity& Ifc4x3_add2::IfcGeotechnicalAssembly::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[513]); } -Ifc4x3_add2::IfcGeotechnicalAssembly::IfcGeotechnicalAssembly(IfcEntityInstanceData&& e) : IfcGeotechnicalElement(std::move(e)) { } -Ifc4x3_add2::IfcGeotechnicalAssembly::IfcGeotechnicalAssembly(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcGeotechnicalAssembly::IfcGeotechnicalAssembly(const std::weak_ptr& e) : IfcGeotechnicalElement(e) { } +// Ifc4x3_add2::IfcGeotechnicalAssembly::IfcGeotechnicalAssembly(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcGeotechnicalElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcGeotechnicalElement -const IfcParse::entity& Ifc4x3_add2::IfcGeotechnicalElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[514]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGeotechnicalElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[514]); } const IfcParse::entity& Ifc4x3_add2::IfcGeotechnicalElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[514]); } -Ifc4x3_add2::IfcGeotechnicalElement::IfcGeotechnicalElement(IfcEntityInstanceData&& e) : IfcElement(std::move(e)) { } -Ifc4x3_add2::IfcGeotechnicalElement::IfcGeotechnicalElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcGeotechnicalElement::IfcGeotechnicalElement(const std::weak_ptr& e) : IfcElement(e) { } +// Ifc4x3_add2::IfcGeotechnicalElement::IfcGeotechnicalElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcGeotechnicalStratum -boost::optional< ::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Value > Ifc4x3_add2::IfcGeotechnicalStratum::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcGeotechnicalStratum::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Value > Ifc4x3_add2::IfcGeotechnicalStratum::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcGeotechnicalStratum::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcGeotechnicalStratum::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[515]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGeotechnicalStratum::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[515]); } const IfcParse::entity& Ifc4x3_add2::IfcGeotechnicalStratum::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[515]); } -Ifc4x3_add2::IfcGeotechnicalStratum::IfcGeotechnicalStratum(IfcEntityInstanceData&& e) : IfcGeotechnicalElement(std::move(e)) { } -Ifc4x3_add2::IfcGeotechnicalStratum::IfcGeotechnicalStratum(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Value > v9_PredefinedType) : IfcGeotechnicalElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcGeotechnicalStratum::IfcGeotechnicalStratum(const std::weak_ptr& e) : IfcGeotechnicalElement(e) { } +// Ifc4x3_add2::IfcGeotechnicalStratum::IfcGeotechnicalStratum(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Value > v9_PredefinedType) : IfcGeotechnicalElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcGradientCurve -::Ifc4x3_add2::IfcBoundedCurve* Ifc4x3_add2::IfcGradientCurve::BaseCurve() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcBoundedCurve>(true); } -void Ifc4x3_add2::IfcGradientCurve::setBaseCurve(::Ifc4x3_add2::IfcBoundedCurve* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcPlacement* Ifc4x3_add2::IfcGradientCurve::EndPoint() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcPlacement>(true); } -void Ifc4x3_add2::IfcGradientCurve::setEndPoint(::Ifc4x3_add2::IfcPlacement* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcBoundedCurve Ifc4x3_add2::IfcGradientCurve::BaseCurve() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcBoundedCurve>(); } +void Ifc4x3_add2::IfcGradientCurve::setBaseCurve(const ::Ifc4x3_add2::IfcBoundedCurve& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcPlacement Ifc4x3_add2::IfcGradientCurve::EndPoint() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcPlacement{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcPlacement>(); } +void Ifc4x3_add2::IfcGradientCurve::setEndPoint(const ::Ifc4x3_add2::IfcPlacement& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcGradientCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[519]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGradientCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[519]); } const IfcParse::entity& Ifc4x3_add2::IfcGradientCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[519]); } -Ifc4x3_add2::IfcGradientCurve::IfcGradientCurve(IfcEntityInstanceData&& e) : IfcCompositeCurve(std::move(e)) { } -Ifc4x3_add2::IfcGradientCurve::IfcGradientCurve(aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect, ::Ifc4x3_add2::IfcBoundedCurve* v3_BaseCurve, ::Ifc4x3_add2::IfcPlacement* v4_EndPoint) : IfcCompositeCurve(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Segments)->generalize());set_attribute_value(1, (v2_SelfIntersect));set_attribute_value(2, v3_BaseCurve ? v3_BaseCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_EndPoint ? v4_EndPoint->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcGradientCurve::IfcGradientCurve(const std::weak_ptr& e) : IfcCompositeCurve(e) { } +// Ifc4x3_add2::IfcGradientCurve::IfcGradientCurve(std::vector< ::Ifc4x3_add2::IfcSegment > v1_Segments, boost::logic::tribool v2_SelfIntersect, ::Ifc4x3_add2::IfcBoundedCurve v3_BaseCurve, ::Ifc4x3_add2::IfcPlacement v4_EndPoint) : IfcCompositeCurve(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Segments)->generalize());set_attribute_value(1, (v2_SelfIntersect));set_attribute_value(2, (v3_BaseCurve)); if (v4_EndPoint) {set_attribute_value(3, (*v4_EndPoint)); }; populate_derived(); } // Function implementations for IfcGrid -aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr Ifc4x3_add2::IfcGrid::UAxes() const { aggregate_of_instance::ptr es = get_attribute_value(7); return es->as< ::Ifc4x3_add2::IfcGridAxis >(); } -void Ifc4x3_add2::IfcGrid::setUAxes(aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr v) { set_attribute_value(7, (v)->generalize());if constexpr (false)unset_attribute_value(7); } -aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr Ifc4x3_add2::IfcGrid::VAxes() const { aggregate_of_instance::ptr es = get_attribute_value(8); return es->as< ::Ifc4x3_add2::IfcGridAxis >(); } -void Ifc4x3_add2::IfcGrid::setVAxes(aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr v) { set_attribute_value(8, (v)->generalize());if constexpr (false)unset_attribute_value(8); } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr > Ifc4x3_add2::IfcGrid::WAxes() const { if(get_attribute_value(9).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(9); return es->as< ::Ifc4x3_add2::IfcGridAxis >(); } -void Ifc4x3_add2::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr > v) { if (v) {set_attribute_value(9, (*v)->generalize());} else {unset_attribute_value(9);} } -boost::optional< ::Ifc4x3_add2::IfcGridTypeEnum::Value > Ifc4x3_add2::IfcGrid::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcGridTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcGrid::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcGridTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcGridTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::vector< ::Ifc4x3_add2::IfcGridAxis > Ifc4x3_add2::IfcGrid::UAxes() const { std::vector es = get_attribute_value(7); return cast_vector<::Ifc4x3_add2::IfcGridAxis>(es); } +void Ifc4x3_add2::IfcGrid::setUAxes(const std::vector< ::Ifc4x3_add2::IfcGridAxis >& v) { set_attribute_value(7, cast_vector(v));if constexpr (false)unset_attribute_value(7); } +std::vector< ::Ifc4x3_add2::IfcGridAxis > Ifc4x3_add2::IfcGrid::VAxes() const { std::vector es = get_attribute_value(8); return cast_vector<::Ifc4x3_add2::IfcGridAxis>(es); } +void Ifc4x3_add2::IfcGrid::setVAxes(const std::vector< ::Ifc4x3_add2::IfcGridAxis >& v) { set_attribute_value(8, cast_vector(v));if constexpr (false)unset_attribute_value(8); } +std::optional< std::vector< ::Ifc4x3_add2::IfcGridAxis > > Ifc4x3_add2::IfcGrid::WAxes() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(9); return cast_vector<::Ifc4x3_add2::IfcGridAxis>(es); } +void Ifc4x3_add2::IfcGrid::setWAxes(const std::optional< std::vector< ::Ifc4x3_add2::IfcGridAxis > >& v) { if (v) {set_attribute_value(9, cast_vector(*v));} else {unset_attribute_value(9);} } +std::optional< ::Ifc4x3_add2::IfcGridTypeEnum::Value > Ifc4x3_add2::IfcGrid::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcGridTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcGrid::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcGridTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcGridTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcGrid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[520]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGrid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[520]); } const IfcParse::entity& Ifc4x3_add2::IfcGrid::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[520]); } -Ifc4x3_add2::IfcGrid::IfcGrid(IfcEntityInstanceData&& e) : IfcPositioningElement(std::move(e)) { } -Ifc4x3_add2::IfcGrid::IfcGrid(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr v8_UAxes, aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr v9_VAxes, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr > v10_WAxes, boost::optional< ::Ifc4x3_add2::IfcGridTypeEnum::Value > v11_PredefinedType) : IfcPositioningElement(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, (v8_UAxes)->generalize());set_attribute_value(8, (v9_VAxes)->generalize()); if (v10_WAxes) {set_attribute_value(9, (*v10_WAxes)->generalize()); } if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcGridTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcGrid::IfcGrid(const std::weak_ptr& e) : IfcPositioningElement(e) { } +// Ifc4x3_add2::IfcGrid::IfcGrid(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::vector< ::Ifc4x3_add2::IfcGridAxis > v8_UAxes, std::vector< ::Ifc4x3_add2::IfcGridAxis > v9_VAxes, std::optional< std::vector< ::Ifc4x3_add2::IfcGridAxis > > v10_WAxes, std::optional< ::Ifc4x3_add2::IfcGridTypeEnum::Value > v11_PredefinedType) : IfcPositioningElement(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (v8_UAxes)->generalize());set_attribute_value(8, (v9_VAxes)->generalize()); if (v10_WAxes) {set_attribute_value(9, (*v10_WAxes)->generalize()); } if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcGridTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } // Function implementations for IfcGridAxis -boost::optional< std::string > Ifc4x3_add2::IfcGridAxis::AxisTag() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcGridAxis::AxisCurve() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcGridAxis::setAxisCurve(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +std::optional< std::string > Ifc4x3_add2::IfcGridAxis::AxisTag() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcGridAxis::setAxisTag(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcGridAxis::AxisCurve() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcGridAxis::setAxisCurve(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } bool Ifc4x3_add2::IfcGridAxis::SameSense() const { bool v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcGridAxis::setSameSense(bool v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcGridAxis::setSameSense(const bool& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcGrid::list::ptr Ifc4x3_add2::IfcGridAxis::PartOfW() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[520], 9)->as(); } -::Ifc4x3_add2::IfcGrid::list::ptr Ifc4x3_add2::IfcGridAxis::PartOfV() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[520], 8)->as(); } -::Ifc4x3_add2::IfcGrid::list::ptr Ifc4x3_add2::IfcGridAxis::PartOfU() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[520], 7)->as(); } -::Ifc4x3_add2::IfcVirtualGridIntersection::list::ptr Ifc4x3_add2::IfcGridAxis::HasIntersections() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[1277], 0)->as(); } +std::vector<::Ifc4x3_add2::IfcGrid> Ifc4x3_add2::IfcGridAxis::PartOfW() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[520], 9)); } +std::vector<::Ifc4x3_add2::IfcGrid> Ifc4x3_add2::IfcGridAxis::PartOfV() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[520], 8)); } +std::vector<::Ifc4x3_add2::IfcGrid> Ifc4x3_add2::IfcGridAxis::PartOfU() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[520], 7)); } +std::vector<::Ifc4x3_add2::IfcVirtualGridIntersection> Ifc4x3_add2::IfcGridAxis::HasIntersections() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[1277], 0)); } -const IfcParse::entity& Ifc4x3_add2::IfcGridAxis::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[521]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGridAxis::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[521]); } const IfcParse::entity& Ifc4x3_add2::IfcGridAxis::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[521]); } -Ifc4x3_add2::IfcGridAxis::IfcGridAxis(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcGridAxis::IfcGridAxis(boost::optional< std::string > v1_AxisTag, ::Ifc4x3_add2::IfcCurve* v2_AxisCurve, bool v3_SameSense) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_AxisTag) {set_attribute_value(0, (*v1_AxisTag)); }set_attribute_value(1, v2_AxisCurve ? v2_AxisCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, (v3_SameSense));; populate_derived(); } +// Ifc4x3_add2::IfcGridAxis::IfcGridAxis(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcGridAxis::IfcGridAxis(std::optional< std::string > v1_AxisTag, ::Ifc4x3_add2::IfcCurve v2_AxisCurve, bool v3_SameSense) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_AxisTag) {set_attribute_value(0, (*v1_AxisTag)); }set_attribute_value(1, (v2_AxisCurve));set_attribute_value(2, (v3_SameSense));; populate_derived(); } // Function implementations for IfcGridPlacement -::Ifc4x3_add2::IfcVirtualGridIntersection* Ifc4x3_add2::IfcGridPlacement::PlacementLocation() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcVirtualGridIntersection>(true); } -void Ifc4x3_add2::IfcGridPlacement::setPlacementLocation(::Ifc4x3_add2::IfcVirtualGridIntersection* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcGridPlacementDirectionSelect* Ifc4x3_add2::IfcGridPlacement::PlacementRefDirection() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcGridPlacementDirectionSelect>(true); } -void Ifc4x3_add2::IfcGridPlacement::setPlacementRefDirection(::Ifc4x3_add2::IfcGridPlacementDirectionSelect* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcVirtualGridIntersection Ifc4x3_add2::IfcGridPlacement::PlacementLocation() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcVirtualGridIntersection>(); } +void Ifc4x3_add2::IfcGridPlacement::setPlacementLocation(const ::Ifc4x3_add2::IfcVirtualGridIntersection& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcGridPlacementDirectionSelect Ifc4x3_add2::IfcGridPlacement::PlacementRefDirection() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcGridPlacementDirectionSelect{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcGridPlacementDirectionSelect>(); } +void Ifc4x3_add2::IfcGridPlacement::setPlacementRefDirection(const ::Ifc4x3_add2::IfcGridPlacementDirectionSelect& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcGridPlacement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[522]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGridPlacement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[522]); } const IfcParse::entity& Ifc4x3_add2::IfcGridPlacement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[522]); } -Ifc4x3_add2::IfcGridPlacement::IfcGridPlacement(IfcEntityInstanceData&& e) : IfcObjectPlacement(std::move(e)) { } -Ifc4x3_add2::IfcGridPlacement::IfcGridPlacement(::Ifc4x3_add2::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_add2::IfcVirtualGridIntersection* v2_PlacementLocation, ::Ifc4x3_add2::IfcGridPlacementDirectionSelect* v3_PlacementRefDirection) : IfcObjectPlacement(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_PlacementRelTo ? v1_PlacementRelTo->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_PlacementLocation ? v2_PlacementLocation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_PlacementRefDirection ? v3_PlacementRefDirection->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcGridPlacement::IfcGridPlacement(const std::weak_ptr& e) : IfcObjectPlacement(e) { } +// Ifc4x3_add2::IfcGridPlacement::IfcGridPlacement(::Ifc4x3_add2::IfcObjectPlacement v1_PlacementRelTo, ::Ifc4x3_add2::IfcVirtualGridIntersection v2_PlacementLocation, ::Ifc4x3_add2::IfcGridPlacementDirectionSelect v3_PlacementRefDirection) : IfcObjectPlacement(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_PlacementRelTo) {set_attribute_value(0, (*v1_PlacementRelTo)); }set_attribute_value(1, (v2_PlacementLocation)); if (v3_PlacementRefDirection) {set_attribute_value(2, (*v3_PlacementRefDirection)); }; populate_derived(); } // Function implementations for IfcGroup -::Ifc4x3_add2::IfcRelAssignsToGroup::list::ptr Ifc4x3_add2::IfcGroup::IsGroupedBy() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[903], 6)->as(); } -::Ifc4x3_add2::IfcRelReferencedInSpatialStructure::list::ptr Ifc4x3_add2::IfcGroup::ReferencedInStructures() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[942], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssignsToGroup> Ifc4x3_add2::IfcGroup::IsGroupedBy() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[903], 6)); } +std::vector<::Ifc4x3_add2::IfcRelReferencedInSpatialStructure> Ifc4x3_add2::IfcGroup::ReferencedInStructures() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[942], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcGroup::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[525]); } +// const IfcParse::entity& Ifc4x3_add2::IfcGroup::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[525]); } const IfcParse::entity& Ifc4x3_add2::IfcGroup::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[525]); } -Ifc4x3_add2::IfcGroup::IfcGroup(IfcEntityInstanceData&& e) : IfcObject(std::move(e)) { } -Ifc4x3_add2::IfcGroup::IfcGroup(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType) : IfcObject(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }; populate_derived(); } +// Ifc4x3_add2::IfcGroup::IfcGroup(const std::weak_ptr& e) : IfcObject(e) { } +// Ifc4x3_add2::IfcGroup::IfcGroup(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType) : IfcObject(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }; populate_derived(); } // Function implementations for IfcHalfSpaceSolid -::Ifc4x3_add2::IfcSurface* Ifc4x3_add2::IfcHalfSpaceSolid::BaseSurface() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcSurface>(true); } -void Ifc4x3_add2::IfcHalfSpaceSolid::setBaseSurface(::Ifc4x3_add2::IfcSurface* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcSurface Ifc4x3_add2::IfcHalfSpaceSolid::BaseSurface() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcSurface>(); } +void Ifc4x3_add2::IfcHalfSpaceSolid::setBaseSurface(const ::Ifc4x3_add2::IfcSurface& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } bool Ifc4x3_add2::IfcHalfSpaceSolid::AgreementFlag() const { bool v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcHalfSpaceSolid::setAgreementFlag(bool v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcHalfSpaceSolid::setAgreementFlag(const bool& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcHalfSpaceSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[526]); } +// const IfcParse::entity& Ifc4x3_add2::IfcHalfSpaceSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[526]); } const IfcParse::entity& Ifc4x3_add2::IfcHalfSpaceSolid::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[526]); } -Ifc4x3_add2::IfcHalfSpaceSolid::IfcHalfSpaceSolid(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcHalfSpaceSolid::IfcHalfSpaceSolid(::Ifc4x3_add2::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_BaseSurface ? v1_BaseSurface->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_AgreementFlag));; populate_derived(); } +// Ifc4x3_add2::IfcHalfSpaceSolid::IfcHalfSpaceSolid(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcHalfSpaceSolid::IfcHalfSpaceSolid(::Ifc4x3_add2::IfcSurface v1_BaseSurface, bool v2_AgreementFlag) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_BaseSurface));set_attribute_value(1, (v2_AgreementFlag));; populate_derived(); } // Function implementations for IfcHeatExchanger -boost::optional< ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value > Ifc4x3_add2::IfcHeatExchanger::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value > Ifc4x3_add2::IfcHeatExchanger::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcHeatExchanger::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcHeatExchanger::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[528]); } +// const IfcParse::entity& Ifc4x3_add2::IfcHeatExchanger::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[528]); } const IfcParse::entity& Ifc4x3_add2::IfcHeatExchanger::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[528]); } -Ifc4x3_add2::IfcHeatExchanger::IfcHeatExchanger(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcHeatExchanger::IfcHeatExchanger(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcHeatExchanger::IfcHeatExchanger(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcHeatExchanger::IfcHeatExchanger(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcHeatExchangerType ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value Ifc4x3_add2::IfcHeatExchangerType::PredefinedType() const { return ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcHeatExchangerType::setPredefinedType(::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcHeatExchangerType::setPredefinedType(const ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcHeatExchangerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[529]); } +// const IfcParse::entity& Ifc4x3_add2::IfcHeatExchangerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[529]); } const IfcParse::entity& Ifc4x3_add2::IfcHeatExchangerType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[529]); } -Ifc4x3_add2::IfcHeatExchangerType::IfcHeatExchangerType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcHeatExchangerType::IfcHeatExchangerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcHeatExchangerType::IfcHeatExchangerType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcHeatExchangerType::IfcHeatExchangerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcHumidifier -boost::optional< ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value > Ifc4x3_add2::IfcHumidifier::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcHumidifierTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcHumidifierTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value > Ifc4x3_add2::IfcHumidifier::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcHumidifierTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcHumidifier::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcHumidifierTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcHumidifier::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[533]); } +// const IfcParse::entity& Ifc4x3_add2::IfcHumidifier::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[533]); } const IfcParse::entity& Ifc4x3_add2::IfcHumidifier::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[533]); } -Ifc4x3_add2::IfcHumidifier::IfcHumidifier(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcHumidifier::IfcHumidifier(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcHumidifierTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcHumidifier::IfcHumidifier(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcHumidifier::IfcHumidifier(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcHumidifierTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcHumidifierType ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value Ifc4x3_add2::IfcHumidifierType::PredefinedType() const { return ::Ifc4x3_add2::IfcHumidifierTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcHumidifierType::setPredefinedType(::Ifc4x3_add2::IfcHumidifierTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcHumidifierTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcHumidifierType::setPredefinedType(const ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcHumidifierTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcHumidifierType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[534]); } +// const IfcParse::entity& Ifc4x3_add2::IfcHumidifierType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[534]); } const IfcParse::entity& Ifc4x3_add2::IfcHumidifierType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[534]); } -Ifc4x3_add2::IfcHumidifierType::IfcHumidifierType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcHumidifierType::IfcHumidifierType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcHumidifierTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcHumidifierType::IfcHumidifierType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcHumidifierType::IfcHumidifierType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcHumidifierTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcIShapeProfileDef double Ifc4x3_add2::IfcIShapeProfileDef::OverallWidth() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcIShapeProfileDef::setOverallWidth(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcIShapeProfileDef::setOverallWidth(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcIShapeProfileDef::OverallDepth() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcIShapeProfileDef::setOverallDepth(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcIShapeProfileDef::setOverallDepth(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } double Ifc4x3_add2::IfcIShapeProfileDef::WebThickness() const { double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcIShapeProfileDef::setWebThickness(double v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcIShapeProfileDef::setWebThickness(const double& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } double Ifc4x3_add2::IfcIShapeProfileDef::FlangeThickness() const { double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcIShapeProfileDef::setFlangeThickness(double v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -boost::optional< double > Ifc4x3_add2::IfcIShapeProfileDef::FilletRadius() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< double > Ifc4x3_add2::IfcIShapeProfileDef::FlangeEdgeRadius() const { if(get_attribute_value(8).isNull()) { return boost::none; } double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -boost::optional< double > Ifc4x3_add2::IfcIShapeProfileDef::FlangeSlope() const { if(get_attribute_value(9).isNull()) { return boost::none; } double v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +void Ifc4x3_add2::IfcIShapeProfileDef::setFlangeThickness(const double& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< double > Ifc4x3_add2::IfcIShapeProfileDef::FilletRadius() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcIShapeProfileDef::setFilletRadius(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< double > Ifc4x3_add2::IfcIShapeProfileDef::FlangeEdgeRadius() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } double v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcIShapeProfileDef::setFlangeEdgeRadius(const std::optional< double >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< double > Ifc4x3_add2::IfcIShapeProfileDef::FlangeSlope() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } double v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcIShapeProfileDef::setFlangeSlope(const std::optional< double >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcIShapeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[563]); } +// const IfcParse::entity& Ifc4x3_add2::IfcIShapeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[563]); } const IfcParse::entity& Ifc4x3_add2::IfcIShapeProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[563]); } -Ifc4x3_add2::IfcIShapeProfileDef::IfcIShapeProfileDef(IfcEntityInstanceData&& e) : IfcParameterizedProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcIShapeProfileDef::IfcIShapeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_OverallWidth, double v5_OverallDepth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_FlangeEdgeRadius, boost::optional< double > v10_FlangeSlope) : IfcParameterizedProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_OverallWidth));set_attribute_value(4, (v5_OverallDepth));set_attribute_value(5, (v6_WebThickness));set_attribute_value(6, (v7_FlangeThickness)); if (v8_FilletRadius) {set_attribute_value(7, (*v8_FilletRadius)); } if (v9_FlangeEdgeRadius) {set_attribute_value(8, (*v9_FlangeEdgeRadius)); } if (v10_FlangeSlope) {set_attribute_value(9, (*v10_FlangeSlope)); }; populate_derived(); } +// Ifc4x3_add2::IfcIShapeProfileDef::IfcIShapeProfileDef(const std::weak_ptr& e) : IfcParameterizedProfileDef(e) { } +// Ifc4x3_add2::IfcIShapeProfileDef::IfcIShapeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_OverallWidth, double v5_OverallDepth, double v6_WebThickness, double v7_FlangeThickness, std::optional< double > v8_FilletRadius, std::optional< double > v9_FlangeEdgeRadius, std::optional< double > v10_FlangeSlope) : IfcParameterizedProfileDef(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); } if (v3_Position) {set_attribute_value(2, (*v3_Position)); }set_attribute_value(3, (v4_OverallWidth));set_attribute_value(4, (v5_OverallDepth));set_attribute_value(5, (v6_WebThickness));set_attribute_value(6, (v7_FlangeThickness)); if (v8_FilletRadius) {set_attribute_value(7, (*v8_FilletRadius)); } if (v9_FlangeEdgeRadius) {set_attribute_value(8, (*v9_FlangeEdgeRadius)); } if (v10_FlangeSlope) {set_attribute_value(9, (*v10_FlangeSlope)); }; populate_derived(); } // Function implementations for IfcImageTexture std::string Ifc4x3_add2::IfcImageTexture::URLReference() const { std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcImageTexture::setURLReference(std::string v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcImageTexture::setURLReference(const std::string& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcImageTexture::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[538]); } +// const IfcParse::entity& Ifc4x3_add2::IfcImageTexture::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[538]); } const IfcParse::entity& Ifc4x3_add2::IfcImageTexture::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[538]); } -Ifc4x3_add2::IfcImageTexture::IfcImageTexture(IfcEntityInstanceData&& e) : IfcSurfaceTexture(std::move(e)) { } -Ifc4x3_add2::IfcImageTexture::IfcImageTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, std::string v6_URLReference) : IfcSurfaceTexture(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_RepeatS));set_attribute_value(1, (v2_RepeatT)); if (v3_Mode) {set_attribute_value(2, (*v3_Mode)); }set_attribute_value(3, v4_TextureTransform ? v4_TextureTransform->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_Parameter) {set_attribute_value(4, (*v5_Parameter)); }set_attribute_value(5, (v6_URLReference));; populate_derived(); } +// Ifc4x3_add2::IfcImageTexture::IfcImageTexture(const std::weak_ptr& e) : IfcSurfaceTexture(e) { } +// Ifc4x3_add2::IfcImageTexture::IfcImageTexture(bool v1_RepeatS, bool v2_RepeatT, std::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D v4_TextureTransform, std::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, std::string v6_URLReference) : IfcSurfaceTexture(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_RepeatS));set_attribute_value(1, (v2_RepeatT)); if (v3_Mode) {set_attribute_value(2, (*v3_Mode)); } if (v4_TextureTransform) {set_attribute_value(3, (*v4_TextureTransform)); } if (v5_Parameter) {set_attribute_value(4, (*v5_Parameter)); }set_attribute_value(5, (v6_URLReference));; populate_derived(); } // Function implementations for IfcImpactProtectionDevice -boost::optional< ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value > Ifc4x3_add2::IfcImpactProtectionDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcImpactProtectionDevice::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value > Ifc4x3_add2::IfcImpactProtectionDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcImpactProtectionDevice::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcImpactProtectionDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[539]); } +// const IfcParse::entity& Ifc4x3_add2::IfcImpactProtectionDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[539]); } const IfcParse::entity& Ifc4x3_add2::IfcImpactProtectionDevice::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[539]); } -Ifc4x3_add2::IfcImpactProtectionDevice::IfcImpactProtectionDevice(IfcEntityInstanceData&& e) : IfcElementComponent(std::move(e)) { } -Ifc4x3_add2::IfcImpactProtectionDevice::IfcImpactProtectionDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value > v9_PredefinedType) : IfcElementComponent(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcImpactProtectionDevice::IfcImpactProtectionDevice(const std::weak_ptr& e) : IfcElementComponent(e) { } +// Ifc4x3_add2::IfcImpactProtectionDevice::IfcImpactProtectionDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value > v9_PredefinedType) : IfcElementComponent(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcImpactProtectionDeviceType ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value Ifc4x3_add2::IfcImpactProtectionDeviceType::PredefinedType() const { return ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcImpactProtectionDeviceType::setPredefinedType(::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcImpactProtectionDeviceType::setPredefinedType(const ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcImpactProtectionDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[540]); } +// const IfcParse::entity& Ifc4x3_add2::IfcImpactProtectionDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[540]); } const IfcParse::entity& Ifc4x3_add2::IfcImpactProtectionDeviceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[540]); } -Ifc4x3_add2::IfcImpactProtectionDeviceType::IfcImpactProtectionDeviceType(IfcEntityInstanceData&& e) : IfcElementComponentType(std::move(e)) { } -Ifc4x3_add2::IfcImpactProtectionDeviceType::IfcImpactProtectionDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value v10_PredefinedType) : IfcElementComponentType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcImpactProtectionDeviceType::IfcImpactProtectionDeviceType(const std::weak_ptr& e) : IfcElementComponentType(e) { } +// Ifc4x3_add2::IfcImpactProtectionDeviceType::IfcImpactProtectionDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value v10_PredefinedType) : IfcElementComponentType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcIndexedColourMap -::Ifc4x3_add2::IfcTessellatedFaceSet* Ifc4x3_add2::IfcIndexedColourMap::MappedTo() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcTessellatedFaceSet>(true); } -void Ifc4x3_add2::IfcIndexedColourMap::setMappedTo(::Ifc4x3_add2::IfcTessellatedFaceSet* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -boost::optional< double > Ifc4x3_add2::IfcIndexedColourMap::Opacity() const { if(get_attribute_value(1).isNull()) { return boost::none; } double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -::Ifc4x3_add2::IfcColourRgbList* Ifc4x3_add2::IfcIndexedColourMap::Colours() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcColourRgbList>(true); } -void Ifc4x3_add2::IfcIndexedColourMap::setColours(::Ifc4x3_add2::IfcColourRgbList* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcTessellatedFaceSet Ifc4x3_add2::IfcIndexedColourMap::MappedTo() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcTessellatedFaceSet>(); } +void Ifc4x3_add2::IfcIndexedColourMap::setMappedTo(const ::Ifc4x3_add2::IfcTessellatedFaceSet& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< double > Ifc4x3_add2::IfcIndexedColourMap::Opacity() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } double v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcIndexedColourMap::setOpacity(const std::optional< double >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +::Ifc4x3_add2::IfcColourRgbList Ifc4x3_add2::IfcIndexedColourMap::Colours() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcColourRgbList>(); } +void Ifc4x3_add2::IfcIndexedColourMap::setColours(const ::Ifc4x3_add2::IfcColourRgbList& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } std::vector< int > /*[1:?]*/ Ifc4x3_add2::IfcIndexedColourMap::ColourIndex() const { std::vector< int > /*[1:?]*/ v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcIndexedColourMap::setColourIndex(std::vector< int > /*[1:?]*/ v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcIndexedColourMap::setColourIndex(const std::vector< int > /*[1:?]*/& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcIndexedColourMap::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[542]); } +// const IfcParse::entity& Ifc4x3_add2::IfcIndexedColourMap::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[542]); } const IfcParse::entity& Ifc4x3_add2::IfcIndexedColourMap::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[542]); } -Ifc4x3_add2::IfcIndexedColourMap::IfcIndexedColourMap(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcIndexedColourMap::IfcIndexedColourMap(::Ifc4x3_add2::IfcTessellatedFaceSet* v1_MappedTo, boost::optional< double > v2_Opacity, ::Ifc4x3_add2::IfcColourRgbList* v3_Colours, std::vector< int > /*[1:?]*/ v4_ColourIndex) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_MappedTo ? v1_MappedTo->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_Opacity) {set_attribute_value(1, (*v2_Opacity)); }set_attribute_value(2, v3_Colours ? v3_Colours->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_ColourIndex));; populate_derived(); } +// Ifc4x3_add2::IfcIndexedColourMap::IfcIndexedColourMap(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcIndexedColourMap::IfcIndexedColourMap(::Ifc4x3_add2::IfcTessellatedFaceSet v1_MappedTo, std::optional< double > v2_Opacity, ::Ifc4x3_add2::IfcColourRgbList v3_Colours, std::vector< int > /*[1:?]*/ v4_ColourIndex) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_MappedTo)); if (v2_Opacity) {set_attribute_value(1, (*v2_Opacity)); }set_attribute_value(2, (v3_Colours));set_attribute_value(3, (v4_ColourIndex));; populate_derived(); } // Function implementations for IfcIndexedPolyCurve -::Ifc4x3_add2::IfcCartesianPointList* Ifc4x3_add2::IfcIndexedPolyCurve::Points() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCartesianPointList>(true); } -void Ifc4x3_add2::IfcIndexedPolyCurve::setPoints(::Ifc4x3_add2::IfcCartesianPointList* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcSegmentIndexSelect >::ptr > Ifc4x3_add2::IfcIndexedPolyCurve::Segments() const { if(get_attribute_value(1).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcSegmentIndexSelect >(); } -void Ifc4x3_add2::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcSegmentIndexSelect >::ptr > v) { if (v) {set_attribute_value(1, (*v)->generalize());} else {unset_attribute_value(1);} } -boost::optional< bool > Ifc4x3_add2::IfcIndexedPolyCurve::SelfIntersect() const { if(get_attribute_value(2).isNull()) { return boost::none; } bool v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +::Ifc4x3_add2::IfcCartesianPointList Ifc4x3_add2::IfcIndexedPolyCurve::Points() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCartesianPointList>(); } +void Ifc4x3_add2::IfcIndexedPolyCurve::setPoints(const ::Ifc4x3_add2::IfcCartesianPointList& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< std::vector< ::Ifc4x3_add2::IfcSegmentIndexSelect > > Ifc4x3_add2::IfcIndexedPolyCurve::Segments() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcSegmentIndexSelect>(es); } +void Ifc4x3_add2::IfcIndexedPolyCurve::setSegments(const std::optional< std::vector< ::Ifc4x3_add2::IfcSegmentIndexSelect > >& v) { if (v) {set_attribute_value(1, cast_vector(*v));} else {unset_attribute_value(1);} } +std::optional< bool > Ifc4x3_add2::IfcIndexedPolyCurve::SelfIntersect() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } bool v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcIndexedPolyCurve::setSelfIntersect(const std::optional< bool >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -const IfcParse::entity& Ifc4x3_add2::IfcIndexedPolyCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[543]); } +// const IfcParse::entity& Ifc4x3_add2::IfcIndexedPolyCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[543]); } const IfcParse::entity& Ifc4x3_add2::IfcIndexedPolyCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[543]); } -Ifc4x3_add2::IfcIndexedPolyCurve::IfcIndexedPolyCurve(IfcEntityInstanceData&& e) : IfcBoundedCurve(std::move(e)) { } -Ifc4x3_add2::IfcIndexedPolyCurve::IfcIndexedPolyCurve(::Ifc4x3_add2::IfcCartesianPointList* v1_Points, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcSegmentIndexSelect >::ptr > v2_Segments, boost::optional< bool > v3_SelfIntersect) : IfcBoundedCurve(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_Points ? v1_Points->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_Segments) {set_attribute_value(1, (*v2_Segments)->generalize()); } if (v3_SelfIntersect) {set_attribute_value(2, (*v3_SelfIntersect)); }; populate_derived(); } +// Ifc4x3_add2::IfcIndexedPolyCurve::IfcIndexedPolyCurve(const std::weak_ptr& e) : IfcBoundedCurve(e) { } +// Ifc4x3_add2::IfcIndexedPolyCurve::IfcIndexedPolyCurve(::Ifc4x3_add2::IfcCartesianPointList v1_Points, std::optional< std::vector< ::Ifc4x3_add2::IfcSegmentIndexSelect > > v2_Segments, std::optional< bool > v3_SelfIntersect) : IfcBoundedCurve(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Points)); if (v2_Segments) {set_attribute_value(1, (*v2_Segments)->generalize()); } if (v3_SelfIntersect) {set_attribute_value(2, (*v3_SelfIntersect)); }; populate_derived(); } // Function implementations for IfcIndexedPolygonalFace std::vector< int > /*[3:?]*/ Ifc4x3_add2::IfcIndexedPolygonalFace::CoordIndex() const { std::vector< int > /*[3:?]*/ v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcIndexedPolygonalFace::setCoordIndex(std::vector< int > /*[3:?]*/ v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcIndexedPolygonalFace::setCoordIndex(const std::vector< int > /*[3:?]*/& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcPolygonalFaceSet::list::ptr Ifc4x3_add2::IfcIndexedPolygonalFace::ToFaceSet() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[770], 2)->as(); } -::Ifc4x3_add2::IfcTextureCoordinateIndices::list::ptr Ifc4x3_add2::IfcIndexedPolygonalFace::HasTexCoords() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[1194], 1)->as(); } +std::vector<::Ifc4x3_add2::IfcPolygonalFaceSet> Ifc4x3_add2::IfcIndexedPolygonalFace::ToFaceSet() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[770], 2)); } +std::vector<::Ifc4x3_add2::IfcTextureCoordinateIndices> Ifc4x3_add2::IfcIndexedPolygonalFace::HasTexCoords() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[1194], 1)); } -const IfcParse::entity& Ifc4x3_add2::IfcIndexedPolygonalFace::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[544]); } +// const IfcParse::entity& Ifc4x3_add2::IfcIndexedPolygonalFace::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[544]); } const IfcParse::entity& Ifc4x3_add2::IfcIndexedPolygonalFace::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[544]); } -Ifc4x3_add2::IfcIndexedPolygonalFace::IfcIndexedPolygonalFace(IfcEntityInstanceData&& e) : IfcTessellatedItem(std::move(e)) { } -Ifc4x3_add2::IfcIndexedPolygonalFace::IfcIndexedPolygonalFace(std::vector< int > /*[3:?]*/ v1_CoordIndex) : IfcTessellatedItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_CoordIndex));; populate_derived(); } +// Ifc4x3_add2::IfcIndexedPolygonalFace::IfcIndexedPolygonalFace(const std::weak_ptr& e) : IfcTessellatedItem(e) { } +// Ifc4x3_add2::IfcIndexedPolygonalFace::IfcIndexedPolygonalFace(std::vector< int > /*[3:?]*/ v1_CoordIndex) : IfcTessellatedItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_CoordIndex));; populate_derived(); } // Function implementations for IfcIndexedPolygonalFaceWithVoids std::vector< std::vector< int > > Ifc4x3_add2::IfcIndexedPolygonalFaceWithVoids::InnerCoordIndices() const { std::vector< std::vector< int > > v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcIndexedPolygonalFaceWithVoids::setInnerCoordIndices(std::vector< std::vector< int > > v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcIndexedPolygonalFaceWithVoids::setInnerCoordIndices(const std::vector< std::vector< int > >& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcIndexedPolygonalFaceWithVoids::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[545]); } +// const IfcParse::entity& Ifc4x3_add2::IfcIndexedPolygonalFaceWithVoids::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[545]); } const IfcParse::entity& Ifc4x3_add2::IfcIndexedPolygonalFaceWithVoids::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[545]); } -Ifc4x3_add2::IfcIndexedPolygonalFaceWithVoids::IfcIndexedPolygonalFaceWithVoids(IfcEntityInstanceData&& e) : IfcIndexedPolygonalFace(std::move(e)) { } -Ifc4x3_add2::IfcIndexedPolygonalFaceWithVoids::IfcIndexedPolygonalFaceWithVoids(std::vector< int > /*[3:?]*/ v1_CoordIndex, std::vector< std::vector< int > > v2_InnerCoordIndices) : IfcIndexedPolygonalFace(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_CoordIndex));set_attribute_value(1, (v2_InnerCoordIndices));; populate_derived(); } +// Ifc4x3_add2::IfcIndexedPolygonalFaceWithVoids::IfcIndexedPolygonalFaceWithVoids(const std::weak_ptr& e) : IfcIndexedPolygonalFace(e) { } +// Ifc4x3_add2::IfcIndexedPolygonalFaceWithVoids::IfcIndexedPolygonalFaceWithVoids(std::vector< int > /*[3:?]*/ v1_CoordIndex, std::vector< std::vector< int > > v2_InnerCoordIndices) : IfcIndexedPolygonalFace(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_CoordIndex));set_attribute_value(1, (v2_InnerCoordIndices));; populate_derived(); } // Function implementations for IfcIndexedPolygonalTextureMap -aggregate_of< ::Ifc4x3_add2::IfcTextureCoordinateIndices >::ptr Ifc4x3_add2::IfcIndexedPolygonalTextureMap::TexCoordIndices() const { aggregate_of_instance::ptr es = get_attribute_value(3); return es->as< ::Ifc4x3_add2::IfcTextureCoordinateIndices >(); } -void Ifc4x3_add2::IfcIndexedPolygonalTextureMap::setTexCoordIndices(aggregate_of< ::Ifc4x3_add2::IfcTextureCoordinateIndices >::ptr v) { set_attribute_value(3, (v)->generalize());if constexpr (false)unset_attribute_value(3); } +std::vector< ::Ifc4x3_add2::IfcTextureCoordinateIndices > Ifc4x3_add2::IfcIndexedPolygonalTextureMap::TexCoordIndices() const { std::vector es = get_attribute_value(3); return cast_vector<::Ifc4x3_add2::IfcTextureCoordinateIndices>(es); } +void Ifc4x3_add2::IfcIndexedPolygonalTextureMap::setTexCoordIndices(const std::vector< ::Ifc4x3_add2::IfcTextureCoordinateIndices >& v) { set_attribute_value(3, cast_vector(v));if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcIndexedPolygonalTextureMap::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[546]); } +// const IfcParse::entity& Ifc4x3_add2::IfcIndexedPolygonalTextureMap::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[546]); } const IfcParse::entity& Ifc4x3_add2::IfcIndexedPolygonalTextureMap::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[546]); } -Ifc4x3_add2::IfcIndexedPolygonalTextureMap::IfcIndexedPolygonalTextureMap(IfcEntityInstanceData&& e) : IfcIndexedTextureMap(std::move(e)) { } -Ifc4x3_add2::IfcIndexedPolygonalTextureMap::IfcIndexedPolygonalTextureMap(aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v1_Maps, ::Ifc4x3_add2::IfcTessellatedFaceSet* v2_MappedTo, ::Ifc4x3_add2::IfcTextureVertexList* v3_TexCoords, aggregate_of< ::Ifc4x3_add2::IfcTextureCoordinateIndices >::ptr v4_TexCoordIndices) : IfcIndexedTextureMap(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Maps)->generalize());set_attribute_value(1, v2_MappedTo ? v2_MappedTo->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_TexCoords ? v3_TexCoords->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_TexCoordIndices)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcIndexedPolygonalTextureMap::IfcIndexedPolygonalTextureMap(const std::weak_ptr& e) : IfcIndexedTextureMap(e) { } +// Ifc4x3_add2::IfcIndexedPolygonalTextureMap::IfcIndexedPolygonalTextureMap(std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > v1_Maps, ::Ifc4x3_add2::IfcTessellatedFaceSet v2_MappedTo, ::Ifc4x3_add2::IfcTextureVertexList v3_TexCoords, std::vector< ::Ifc4x3_add2::IfcTextureCoordinateIndices > v4_TexCoordIndices) : IfcIndexedTextureMap(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Maps)->generalize());set_attribute_value(1, (v2_MappedTo));set_attribute_value(2, (v3_TexCoords));set_attribute_value(3, (v4_TexCoordIndices)->generalize());; populate_derived(); } // Function implementations for IfcIndexedTextureMap -::Ifc4x3_add2::IfcTessellatedFaceSet* Ifc4x3_add2::IfcIndexedTextureMap::MappedTo() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcTessellatedFaceSet>(true); } -void Ifc4x3_add2::IfcIndexedTextureMap::setMappedTo(::Ifc4x3_add2::IfcTessellatedFaceSet* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcTextureVertexList* Ifc4x3_add2::IfcIndexedTextureMap::TexCoords() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcTextureVertexList>(true); } -void Ifc4x3_add2::IfcIndexedTextureMap::setTexCoords(::Ifc4x3_add2::IfcTextureVertexList* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcTessellatedFaceSet Ifc4x3_add2::IfcIndexedTextureMap::MappedTo() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcTessellatedFaceSet>(); } +void Ifc4x3_add2::IfcIndexedTextureMap::setMappedTo(const ::Ifc4x3_add2::IfcTessellatedFaceSet& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcTextureVertexList Ifc4x3_add2::IfcIndexedTextureMap::TexCoords() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcTextureVertexList>(); } +void Ifc4x3_add2::IfcIndexedTextureMap::setTexCoords(const ::Ifc4x3_add2::IfcTextureVertexList& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcIndexedTextureMap::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[547]); } +// const IfcParse::entity& Ifc4x3_add2::IfcIndexedTextureMap::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[547]); } const IfcParse::entity& Ifc4x3_add2::IfcIndexedTextureMap::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[547]); } -Ifc4x3_add2::IfcIndexedTextureMap::IfcIndexedTextureMap(IfcEntityInstanceData&& e) : IfcTextureCoordinate(std::move(e)) { } -Ifc4x3_add2::IfcIndexedTextureMap::IfcIndexedTextureMap(aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v1_Maps, ::Ifc4x3_add2::IfcTessellatedFaceSet* v2_MappedTo, ::Ifc4x3_add2::IfcTextureVertexList* v3_TexCoords) : IfcTextureCoordinate(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Maps)->generalize());set_attribute_value(1, v2_MappedTo ? v2_MappedTo->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_TexCoords ? v3_TexCoords->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcIndexedTextureMap::IfcIndexedTextureMap(const std::weak_ptr& e) : IfcTextureCoordinate(e) { } +// Ifc4x3_add2::IfcIndexedTextureMap::IfcIndexedTextureMap(std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > v1_Maps, ::Ifc4x3_add2::IfcTessellatedFaceSet v2_MappedTo, ::Ifc4x3_add2::IfcTextureVertexList v3_TexCoords) : IfcTextureCoordinate(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Maps)->generalize());set_attribute_value(1, (v2_MappedTo));set_attribute_value(2, (v3_TexCoords));; populate_derived(); } // Function implementations for IfcIndexedTriangleTextureMap -boost::optional< std::vector< std::vector< int > > > Ifc4x3_add2::IfcIndexedTriangleTextureMap::TexCoordIndex() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::vector< std::vector< int > > v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< std::vector< std::vector< int > > > Ifc4x3_add2::IfcIndexedTriangleTextureMap::TexCoordIndex() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::vector< std::vector< int > > v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcIndexedTriangleTextureMap::setTexCoordIndex(const std::optional< std::vector< std::vector< int > > >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -const IfcParse::entity& Ifc4x3_add2::IfcIndexedTriangleTextureMap::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[548]); } +// const IfcParse::entity& Ifc4x3_add2::IfcIndexedTriangleTextureMap::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[548]); } const IfcParse::entity& Ifc4x3_add2::IfcIndexedTriangleTextureMap::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[548]); } -Ifc4x3_add2::IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(IfcEntityInstanceData&& e) : IfcIndexedTextureMap(std::move(e)) { } -Ifc4x3_add2::IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v1_Maps, ::Ifc4x3_add2::IfcTessellatedFaceSet* v2_MappedTo, ::Ifc4x3_add2::IfcTextureVertexList* v3_TexCoords, boost::optional< std::vector< std::vector< int > > > v4_TexCoordIndex) : IfcIndexedTextureMap(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Maps)->generalize());set_attribute_value(1, v2_MappedTo ? v2_MappedTo->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_TexCoords ? v3_TexCoords->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v4_TexCoordIndex) {set_attribute_value(3, (*v4_TexCoordIndex)); }; populate_derived(); } +// Ifc4x3_add2::IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(const std::weak_ptr& e) : IfcIndexedTextureMap(e) { } +// Ifc4x3_add2::IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > v1_Maps, ::Ifc4x3_add2::IfcTessellatedFaceSet v2_MappedTo, ::Ifc4x3_add2::IfcTextureVertexList v3_TexCoords, std::optional< std::vector< std::vector< int > > > v4_TexCoordIndex) : IfcIndexedTextureMap(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Maps)->generalize());set_attribute_value(1, (v2_MappedTo));set_attribute_value(2, (v3_TexCoords)); if (v4_TexCoordIndex) {set_attribute_value(3, (*v4_TexCoordIndex)); }; populate_derived(); } // Function implementations for IfcInterceptor -boost::optional< ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value > Ifc4x3_add2::IfcInterceptor::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcInterceptorTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcInterceptorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value > Ifc4x3_add2::IfcInterceptor::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcInterceptorTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcInterceptor::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcInterceptorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcInterceptor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[552]); } +// const IfcParse::entity& Ifc4x3_add2::IfcInterceptor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[552]); } const IfcParse::entity& Ifc4x3_add2::IfcInterceptor::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[552]); } -Ifc4x3_add2::IfcInterceptor::IfcInterceptor(IfcEntityInstanceData&& e) : IfcFlowTreatmentDevice(std::move(e)) { } -Ifc4x3_add2::IfcInterceptor::IfcInterceptor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcInterceptorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcInterceptor::IfcInterceptor(const std::weak_ptr& e) : IfcFlowTreatmentDevice(e) { } +// Ifc4x3_add2::IfcInterceptor::IfcInterceptor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcInterceptorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcInterceptorType ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value Ifc4x3_add2::IfcInterceptorType::PredefinedType() const { return ::Ifc4x3_add2::IfcInterceptorTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcInterceptorType::setPredefinedType(::Ifc4x3_add2::IfcInterceptorTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcInterceptorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcInterceptorType::setPredefinedType(const ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcInterceptorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcInterceptorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[553]); } +// const IfcParse::entity& Ifc4x3_add2::IfcInterceptorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[553]); } const IfcParse::entity& Ifc4x3_add2::IfcInterceptorType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[553]); } -Ifc4x3_add2::IfcInterceptorType::IfcInterceptorType(IfcEntityInstanceData&& e) : IfcFlowTreatmentDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcInterceptorType::IfcInterceptorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcInterceptorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcInterceptorType::IfcInterceptorType(const std::weak_ptr& e) : IfcFlowTreatmentDeviceType(e) { } +// Ifc4x3_add2::IfcInterceptorType::IfcInterceptorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcInterceptorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcIntersectionCurve -const IfcParse::entity& Ifc4x3_add2::IfcIntersectionCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[557]); } +// const IfcParse::entity& Ifc4x3_add2::IfcIntersectionCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[557]); } const IfcParse::entity& Ifc4x3_add2::IfcIntersectionCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[557]); } -Ifc4x3_add2::IfcIntersectionCurve::IfcIntersectionCurve(IfcEntityInstanceData&& e) : IfcSurfaceCurve(std::move(e)) { } -Ifc4x3_add2::IfcIntersectionCurve::IfcIntersectionCurve(::Ifc4x3_add2::IfcCurve* v1_Curve3D, aggregate_of< ::Ifc4x3_add2::IfcPcurve >::ptr v2_AssociatedGeometry, ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation) : IfcSurfaceCurve(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_Curve3D ? v1_Curve3D->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_AssociatedGeometry)->generalize());set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Class(),(size_t)v3_MasterRepresentation)));; populate_derived(); } +// Ifc4x3_add2::IfcIntersectionCurve::IfcIntersectionCurve(const std::weak_ptr& e) : IfcSurfaceCurve(e) { } +// Ifc4x3_add2::IfcIntersectionCurve::IfcIntersectionCurve(::Ifc4x3_add2::IfcCurve v1_Curve3D, std::vector< ::Ifc4x3_add2::IfcPcurve > v2_AssociatedGeometry, ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation) : IfcSurfaceCurve(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Curve3D));set_attribute_value(1, (v2_AssociatedGeometry)->generalize());set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Class(),(size_t)v3_MasterRepresentation)));; populate_derived(); } // Function implementations for IfcInventory -boost::optional< ::Ifc4x3_add2::IfcInventoryTypeEnum::Value > Ifc4x3_add2::IfcInventory::PredefinedType() const { if(get_attribute_value(5).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcInventoryTypeEnum::FromString(get_attribute_value(5)); } -void Ifc4x3_add2::IfcInventory::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcInventoryTypeEnum::Value > v) { if (v) {set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcInventoryTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(5);} } -::Ifc4x3_add2::IfcActorSelect* Ifc4x3_add2::IfcInventory::Jurisdiction() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcActorSelect>(true); } -void Ifc4x3_add2::IfcInventory::setJurisdiction(::Ifc4x3_add2::IfcActorSelect* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > Ifc4x3_add2::IfcInventory::ResponsiblePersons() const { if(get_attribute_value(7).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(7); return es->as< ::Ifc4x3_add2::IfcPerson >(); } -void Ifc4x3_add2::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > v) { if (v) {set_attribute_value(7, (*v)->generalize());} else {unset_attribute_value(7);} } -boost::optional< std::string > Ifc4x3_add2::IfcInventory::LastUpdateDate() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -::Ifc4x3_add2::IfcCostValue* Ifc4x3_add2::IfcInventory::CurrentValue() const { if(get_attribute_value(9).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(9)))->as<::Ifc4x3_add2::IfcCostValue>(true); } -void Ifc4x3_add2::IfcInventory::setCurrentValue(::Ifc4x3_add2::IfcCostValue* v) { set_attribute_value(9, v->as());if constexpr (false)unset_attribute_value(9); } -::Ifc4x3_add2::IfcCostValue* Ifc4x3_add2::IfcInventory::OriginalValue() const { if(get_attribute_value(10).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(10)))->as<::Ifc4x3_add2::IfcCostValue>(true); } -void Ifc4x3_add2::IfcInventory::setOriginalValue(::Ifc4x3_add2::IfcCostValue* v) { set_attribute_value(10, v->as());if constexpr (false)unset_attribute_value(10); } +std::optional< ::Ifc4x3_add2::IfcInventoryTypeEnum::Value > Ifc4x3_add2::IfcInventory::PredefinedType() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcInventoryTypeEnum::FromString(get_attribute_value(5)); } +void Ifc4x3_add2::IfcInventory::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcInventoryTypeEnum::Value >& v) { if (v) {set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcInventoryTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(5);} } +::Ifc4x3_add2::IfcActorSelect Ifc4x3_add2::IfcInventory::Jurisdiction() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcActorSelect{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcActorSelect>(); } +void Ifc4x3_add2::IfcInventory::setJurisdiction(const ::Ifc4x3_add2::IfcActorSelect& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > > Ifc4x3_add2::IfcInventory::ResponsiblePersons() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(7); return cast_vector<::Ifc4x3_add2::IfcPerson>(es); } +void Ifc4x3_add2::IfcInventory::setResponsiblePersons(const std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > >& v) { if (v) {set_attribute_value(7, cast_vector(*v));} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcInventory::LastUpdateDate() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcInventory::setLastUpdateDate(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +::Ifc4x3_add2::IfcCostValue Ifc4x3_add2::IfcInventory::CurrentValue() const { if(get_attribute_value(9).isNull()) { return ::Ifc4x3_add2::IfcCostValue{}; } return ((express::Base)(get_attribute_value(9))).as<::Ifc4x3_add2::IfcCostValue>(); } +void Ifc4x3_add2::IfcInventory::setCurrentValue(const ::Ifc4x3_add2::IfcCostValue& v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } +::Ifc4x3_add2::IfcCostValue Ifc4x3_add2::IfcInventory::OriginalValue() const { if(get_attribute_value(10).isNull()) { return ::Ifc4x3_add2::IfcCostValue{}; } return ((express::Base)(get_attribute_value(10))).as<::Ifc4x3_add2::IfcCostValue>(); } +void Ifc4x3_add2::IfcInventory::setOriginalValue(const ::Ifc4x3_add2::IfcCostValue& v) { set_attribute_value(10, v);if constexpr (false)unset_attribute_value(10); } -const IfcParse::entity& Ifc4x3_add2::IfcInventory::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[558]); } +// const IfcParse::entity& Ifc4x3_add2::IfcInventory::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[558]); } const IfcParse::entity& Ifc4x3_add2::IfcInventory::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[558]); } -Ifc4x3_add2::IfcInventory::IfcInventory(IfcEntityInstanceData&& e) : IfcGroup(std::move(e)) { } -Ifc4x3_add2::IfcInventory::IfcInventory(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< ::Ifc4x3_add2::IfcInventoryTypeEnum::Value > v6_PredefinedType, ::Ifc4x3_add2::IfcActorSelect* v7_Jurisdiction, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > v8_ResponsiblePersons, boost::optional< std::string > v9_LastUpdateDate, ::Ifc4x3_add2::IfcCostValue* v10_CurrentValue, ::Ifc4x3_add2::IfcCostValue* v11_OriginalValue) : IfcGroup(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_PredefinedType) {set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcInventoryTypeEnum::Class(),(size_t)*v6_PredefinedType))); }set_attribute_value(6, v7_Jurisdiction ? v7_Jurisdiction->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_ResponsiblePersons) {set_attribute_value(7, (*v8_ResponsiblePersons)->generalize()); } if (v9_LastUpdateDate) {set_attribute_value(8, (*v9_LastUpdateDate)); }set_attribute_value(9, v10_CurrentValue ? v10_CurrentValue->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(10, v11_OriginalValue ? v11_OriginalValue->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcInventory::IfcInventory(const std::weak_ptr& e) : IfcGroup(e) { } +// Ifc4x3_add2::IfcInventory::IfcInventory(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< ::Ifc4x3_add2::IfcInventoryTypeEnum::Value > v6_PredefinedType, ::Ifc4x3_add2::IfcActorSelect v7_Jurisdiction, std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > > v8_ResponsiblePersons, std::optional< std::string > v9_LastUpdateDate, ::Ifc4x3_add2::IfcCostValue v10_CurrentValue, ::Ifc4x3_add2::IfcCostValue v11_OriginalValue) : IfcGroup(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_PredefinedType) {set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcInventoryTypeEnum::Class(),(size_t)*v6_PredefinedType))); } if (v7_Jurisdiction) {set_attribute_value(6, (*v7_Jurisdiction)); } if (v8_ResponsiblePersons) {set_attribute_value(7, (*v8_ResponsiblePersons)->generalize()); } if (v9_LastUpdateDate) {set_attribute_value(8, (*v9_LastUpdateDate)); } if (v10_CurrentValue) {set_attribute_value(9, (*v10_CurrentValue)); } if (v11_OriginalValue) {set_attribute_value(10, (*v11_OriginalValue)); }; populate_derived(); } // Function implementations for IfcIrregularTimeSeries -aggregate_of< ::Ifc4x3_add2::IfcIrregularTimeSeriesValue >::ptr Ifc4x3_add2::IfcIrregularTimeSeries::Values() const { aggregate_of_instance::ptr es = get_attribute_value(8); return es->as< ::Ifc4x3_add2::IfcIrregularTimeSeriesValue >(); } -void Ifc4x3_add2::IfcIrregularTimeSeries::setValues(aggregate_of< ::Ifc4x3_add2::IfcIrregularTimeSeriesValue >::ptr v) { set_attribute_value(8, (v)->generalize());if constexpr (false)unset_attribute_value(8); } +std::vector< ::Ifc4x3_add2::IfcIrregularTimeSeriesValue > Ifc4x3_add2::IfcIrregularTimeSeries::Values() const { std::vector es = get_attribute_value(8); return cast_vector<::Ifc4x3_add2::IfcIrregularTimeSeriesValue>(es); } +void Ifc4x3_add2::IfcIrregularTimeSeries::setValues(const std::vector< ::Ifc4x3_add2::IfcIrregularTimeSeriesValue >& v) { set_attribute_value(8, cast_vector(v));if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcIrregularTimeSeries::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[561]); } +// const IfcParse::entity& Ifc4x3_add2::IfcIrregularTimeSeries::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[561]); } const IfcParse::entity& Ifc4x3_add2::IfcIrregularTimeSeries::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[561]); } -Ifc4x3_add2::IfcIrregularTimeSeries::IfcIrregularTimeSeries(IfcEntityInstanceData&& e) : IfcTimeSeries(std::move(e)) { } -Ifc4x3_add2::IfcIrregularTimeSeries::IfcIrregularTimeSeries(std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_add2::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcUnit* v8_Unit, aggregate_of< ::Ifc4x3_add2::IfcIrregularTimeSeriesValue >::ptr v9_Values) : IfcTimeSeries(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_StartTime));set_attribute_value(3, (v4_EndTime));set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Class(),(size_t)v5_TimeSeriesDataType)));set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)v6_DataOrigin))); if (v7_UserDefinedDataOrigin) {set_attribute_value(6, (*v7_UserDefinedDataOrigin)); }set_attribute_value(7, v8_Unit ? v8_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, (v9_Values)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcIrregularTimeSeries::IfcIrregularTimeSeries(const std::weak_ptr& e) : IfcTimeSeries(e) { } +// Ifc4x3_add2::IfcIrregularTimeSeries::IfcIrregularTimeSeries(std::string v1_Name, std::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_add2::IfcDataOriginEnum::Value v6_DataOrigin, std::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcUnit v8_Unit, std::vector< ::Ifc4x3_add2::IfcIrregularTimeSeriesValue > v9_Values) : IfcTimeSeries(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_StartTime));set_attribute_value(3, (v4_EndTime));set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Class(),(size_t)v5_TimeSeriesDataType)));set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)v6_DataOrigin))); if (v7_UserDefinedDataOrigin) {set_attribute_value(6, (*v7_UserDefinedDataOrigin)); } if (v8_Unit) {set_attribute_value(7, (*v8_Unit)); }set_attribute_value(8, (v9_Values)->generalize());; populate_derived(); } // Function implementations for IfcIrregularTimeSeriesValue std::string Ifc4x3_add2::IfcIrregularTimeSeriesValue::TimeStamp() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcIrregularTimeSeriesValue::setTimeStamp(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr Ifc4x3_add2::IfcIrregularTimeSeriesValue::ListValues() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcValue >(); } -void Ifc4x3_add2::IfcIrregularTimeSeriesValue::setListValues(aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcIrregularTimeSeriesValue::setTimeStamp(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcValue > Ifc4x3_add2::IfcIrregularTimeSeriesValue::ListValues() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcValue>(es); } +void Ifc4x3_add2::IfcIrregularTimeSeriesValue::setListValues(const std::vector< ::Ifc4x3_add2::IfcValue >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcIrregularTimeSeriesValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[562]); } +// const IfcParse::entity& Ifc4x3_add2::IfcIrregularTimeSeriesValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[562]); } const IfcParse::entity& Ifc4x3_add2::IfcIrregularTimeSeriesValue::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[562]); } -Ifc4x3_add2::IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(std::string v1_TimeStamp, aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr v2_ListValues) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_TimeStamp));set_attribute_value(1, (v2_ListValues)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(std::string v1_TimeStamp, std::vector< ::Ifc4x3_add2::IfcValue > v2_ListValues) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_TimeStamp));set_attribute_value(1, (v2_ListValues)->generalize());; populate_derived(); } // Function implementations for IfcJunctionBox -boost::optional< ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value > Ifc4x3_add2::IfcJunctionBox::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value > Ifc4x3_add2::IfcJunctionBox::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcJunctionBox::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcJunctionBox::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[565]); } +// const IfcParse::entity& Ifc4x3_add2::IfcJunctionBox::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[565]); } const IfcParse::entity& Ifc4x3_add2::IfcJunctionBox::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[565]); } -Ifc4x3_add2::IfcJunctionBox::IfcJunctionBox(IfcEntityInstanceData&& e) : IfcFlowFitting(std::move(e)) { } -Ifc4x3_add2::IfcJunctionBox::IfcJunctionBox(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcJunctionBox::IfcJunctionBox(const std::weak_ptr& e) : IfcFlowFitting(e) { } +// Ifc4x3_add2::IfcJunctionBox::IfcJunctionBox(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcJunctionBoxType ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value Ifc4x3_add2::IfcJunctionBoxType::PredefinedType() const { return ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcJunctionBoxType::setPredefinedType(::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcJunctionBoxType::setPredefinedType(const ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcJunctionBoxType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[566]); } +// const IfcParse::entity& Ifc4x3_add2::IfcJunctionBoxType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[566]); } const IfcParse::entity& Ifc4x3_add2::IfcJunctionBoxType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[566]); } -Ifc4x3_add2::IfcJunctionBoxType::IfcJunctionBoxType(IfcEntityInstanceData&& e) : IfcFlowFittingType(std::move(e)) { } -Ifc4x3_add2::IfcJunctionBoxType::IfcJunctionBoxType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcJunctionBoxType::IfcJunctionBoxType(const std::weak_ptr& e) : IfcFlowFittingType(e) { } +// Ifc4x3_add2::IfcJunctionBoxType::IfcJunctionBoxType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcKerb -boost::optional< ::Ifc4x3_add2::IfcKerbTypeEnum::Value > Ifc4x3_add2::IfcKerb::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcKerbTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcKerb::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcKerbTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcKerbTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcKerbTypeEnum::Value > Ifc4x3_add2::IfcKerb::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcKerbTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcKerb::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcKerbTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcKerbTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcKerb::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[568]); } +// const IfcParse::entity& Ifc4x3_add2::IfcKerb::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[568]); } const IfcParse::entity& Ifc4x3_add2::IfcKerb::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[568]); } -Ifc4x3_add2::IfcKerb::IfcKerb(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcKerb::IfcKerb(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcKerbTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcKerbTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcKerb::IfcKerb(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcKerb::IfcKerb(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcKerbTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcKerbTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcKerbType ::Ifc4x3_add2::IfcKerbTypeEnum::Value Ifc4x3_add2::IfcKerbType::PredefinedType() const { return ::Ifc4x3_add2::IfcKerbTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcKerbType::setPredefinedType(::Ifc4x3_add2::IfcKerbTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcKerbTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcKerbType::setPredefinedType(const ::Ifc4x3_add2::IfcKerbTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcKerbTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcKerbType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[569]); } +// const IfcParse::entity& Ifc4x3_add2::IfcKerbType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[569]); } const IfcParse::entity& Ifc4x3_add2::IfcKerbType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[569]); } -Ifc4x3_add2::IfcKerbType::IfcKerbType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcKerbType::IfcKerbType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcKerbTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcKerbTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcKerbType::IfcKerbType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcKerbType::IfcKerbType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcKerbTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcKerbTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcLShapeProfileDef double Ifc4x3_add2::IfcLShapeProfileDef::Depth() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcLShapeProfileDef::setDepth(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -boost::optional< double > Ifc4x3_add2::IfcLShapeProfileDef::Width() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +void Ifc4x3_add2::IfcLShapeProfileDef::setDepth(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< double > Ifc4x3_add2::IfcLShapeProfileDef::Width() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcLShapeProfileDef::setWidth(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } double Ifc4x3_add2::IfcLShapeProfileDef::Thickness() const { double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcLShapeProfileDef::setThickness(double v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -boost::optional< double > Ifc4x3_add2::IfcLShapeProfileDef::FilletRadius() const { if(get_attribute_value(6).isNull()) { return boost::none; } double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< double > Ifc4x3_add2::IfcLShapeProfileDef::EdgeRadius() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< double > Ifc4x3_add2::IfcLShapeProfileDef::LegSlope() const { if(get_attribute_value(8).isNull()) { return boost::none; } double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +void Ifc4x3_add2::IfcLShapeProfileDef::setThickness(const double& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +std::optional< double > Ifc4x3_add2::IfcLShapeProfileDef::FilletRadius() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } double v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcLShapeProfileDef::setFilletRadius(const std::optional< double >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< double > Ifc4x3_add2::IfcLShapeProfileDef::EdgeRadius() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcLShapeProfileDef::setEdgeRadius(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< double > Ifc4x3_add2::IfcLShapeProfileDef::LegSlope() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } double v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcLShapeProfileDef::setLegSlope(const std::optional< double >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcLShapeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[619]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLShapeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[619]); } const IfcParse::entity& Ifc4x3_add2::IfcLShapeProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[619]); } -Ifc4x3_add2::IfcLShapeProfileDef::IfcLShapeProfileDef(IfcEntityInstanceData&& e) : IfcParameterizedProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcLShapeProfileDef::IfcLShapeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_Depth, boost::optional< double > v5_Width, double v6_Thickness, boost::optional< double > v7_FilletRadius, boost::optional< double > v8_EdgeRadius, boost::optional< double > v9_LegSlope) : IfcParameterizedProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_Depth)); if (v5_Width) {set_attribute_value(4, (*v5_Width)); }set_attribute_value(5, (v6_Thickness)); if (v7_FilletRadius) {set_attribute_value(6, (*v7_FilletRadius)); } if (v8_EdgeRadius) {set_attribute_value(7, (*v8_EdgeRadius)); } if (v9_LegSlope) {set_attribute_value(8, (*v9_LegSlope)); }; populate_derived(); } +// Ifc4x3_add2::IfcLShapeProfileDef::IfcLShapeProfileDef(const std::weak_ptr& e) : IfcParameterizedProfileDef(e) { } +// Ifc4x3_add2::IfcLShapeProfileDef::IfcLShapeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_Depth, std::optional< double > v5_Width, double v6_Thickness, std::optional< double > v7_FilletRadius, std::optional< double > v8_EdgeRadius, std::optional< double > v9_LegSlope) : IfcParameterizedProfileDef(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); } if (v3_Position) {set_attribute_value(2, (*v3_Position)); }set_attribute_value(3, (v4_Depth)); if (v5_Width) {set_attribute_value(4, (*v5_Width)); }set_attribute_value(5, (v6_Thickness)); if (v7_FilletRadius) {set_attribute_value(6, (*v7_FilletRadius)); } if (v8_EdgeRadius) {set_attribute_value(7, (*v8_EdgeRadius)); } if (v9_LegSlope) {set_attribute_value(8, (*v9_LegSlope)); }; populate_derived(); } // Function implementations for IfcLaborResource -boost::optional< ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value > Ifc4x3_add2::IfcLaborResource::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcLaborResourceTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcLaborResourceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value > Ifc4x3_add2::IfcLaborResource::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcLaborResourceTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcLaborResource::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcLaborResourceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcLaborResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[574]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLaborResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[574]); } const IfcParse::entity& Ifc4x3_add2::IfcLaborResource::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[574]); } -Ifc4x3_add2::IfcLaborResource::IfcLaborResource(IfcEntityInstanceData&& e) : IfcConstructionResource(std::move(e)) { } -Ifc4x3_add2::IfcLaborResource::IfcLaborResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); }set_attribute_value(7, v8_Usage ? v8_Usage->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v9_BaseCosts) {set_attribute_value(8, (*v9_BaseCosts)->generalize()); }set_attribute_value(9, v10_BaseQuantity ? v10_BaseQuantity->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcLaborResourceTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcLaborResource::IfcLaborResource(const std::weak_ptr& e) : IfcConstructionResource(e) { } +// Ifc4x3_add2::IfcLaborResource::IfcLaborResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime v8_Usage, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v10_BaseQuantity, std::optional< ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); } if (v8_Usage) {set_attribute_value(7, (*v8_Usage)); } if (v9_BaseCosts) {set_attribute_value(8, (*v9_BaseCosts)->generalize()); } if (v10_BaseQuantity) {set_attribute_value(9, (*v10_BaseQuantity)); } if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcLaborResourceTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } // Function implementations for IfcLaborResourceType ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value Ifc4x3_add2::IfcLaborResourceType::PredefinedType() const { return ::Ifc4x3_add2::IfcLaborResourceTypeEnum::FromString(get_attribute_value(11)); } -void Ifc4x3_add2::IfcLaborResourceType::setPredefinedType(::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcLaborResourceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } +void Ifc4x3_add2::IfcLaborResourceType::setPredefinedType(const ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value& v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcLaborResourceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } -const IfcParse::entity& Ifc4x3_add2::IfcLaborResourceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[575]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLaborResourceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[575]); } const IfcParse::entity& Ifc4x3_add2::IfcLaborResourceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[575]); } -Ifc4x3_add2::IfcLaborResourceType::IfcLaborResourceType(IfcEntityInstanceData&& e) : IfcConstructionResourceType(std::move(e)) { } -Ifc4x3_add2::IfcLaborResourceType::IfcLaborResourceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); } if (v10_BaseCosts) {set_attribute_value(9, (*v10_BaseCosts)->generalize()); }set_attribute_value(10, v11_BaseQuantity ? v11_BaseQuantity->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcLaborResourceTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcLaborResourceType::IfcLaborResourceType(const std::weak_ptr& e) : IfcConstructionResourceType(e) { } +// Ifc4x3_add2::IfcLaborResourceType::IfcLaborResourceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v11_BaseQuantity, ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); } if (v10_BaseCosts) {set_attribute_value(9, (*v10_BaseCosts)->generalize()); } if (v11_BaseQuantity) {set_attribute_value(10, (*v11_BaseQuantity)); }set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcLaborResourceTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } // Function implementations for IfcLagTime -::Ifc4x3_add2::IfcTimeOrRatioSelect* Ifc4x3_add2::IfcLagTime::LagValue() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcTimeOrRatioSelect>(true); } -void Ifc4x3_add2::IfcLagTime::setLagValue(::Ifc4x3_add2::IfcTimeOrRatioSelect* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcTimeOrRatioSelect Ifc4x3_add2::IfcLagTime::LagValue() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcTimeOrRatioSelect>(); } +void Ifc4x3_add2::IfcLagTime::setLagValue(const ::Ifc4x3_add2::IfcTimeOrRatioSelect& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } ::Ifc4x3_add2::IfcTaskDurationEnum::Value Ifc4x3_add2::IfcLagTime::DurationType() const { return ::Ifc4x3_add2::IfcTaskDurationEnum::FromString(get_attribute_value(4)); } -void Ifc4x3_add2::IfcLagTime::setDurationType(::Ifc4x3_add2::IfcTaskDurationEnum::Value v) { set_attribute_value(4, EnumerationReference(&::Ifc4x3_add2::IfcTaskDurationEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcLagTime::setDurationType(const ::Ifc4x3_add2::IfcTaskDurationEnum::Value& v) { set_attribute_value(4, EnumerationReference(&::Ifc4x3_add2::IfcTaskDurationEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcLagTime::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[577]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLagTime::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[577]); } const IfcParse::entity& Ifc4x3_add2::IfcLagTime::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[577]); } -Ifc4x3_add2::IfcLagTime::IfcLagTime(IfcEntityInstanceData&& e) : IfcSchedulingTime(std::move(e)) { } -Ifc4x3_add2::IfcLagTime::IfcLagTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcTimeOrRatioSelect* v4_LagValue, ::Ifc4x3_add2::IfcTaskDurationEnum::Value v5_DurationType) : IfcSchedulingTime(IfcEntityInstanceData(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DataOrigin) {set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)*v2_DataOrigin))); } if (v3_UserDefinedDataOrigin) {set_attribute_value(2, (*v3_UserDefinedDataOrigin)); }set_attribute_value(3, v4_LagValue ? v4_LagValue->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcTaskDurationEnum::Class(),(size_t)v5_DurationType)));; populate_derived(); } +// Ifc4x3_add2::IfcLagTime::IfcLagTime(const std::weak_ptr& e) : IfcSchedulingTime(e) { } +// Ifc4x3_add2::IfcLagTime::IfcLagTime(std::optional< std::string > v1_Name, std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, std::optional< std::string > v3_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcTimeOrRatioSelect v4_LagValue, ::Ifc4x3_add2::IfcTaskDurationEnum::Value v5_DurationType) : IfcSchedulingTime(const std::weak_ptr&(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DataOrigin) {set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)*v2_DataOrigin))); } if (v3_UserDefinedDataOrigin) {set_attribute_value(2, (*v3_UserDefinedDataOrigin)); }set_attribute_value(3, (v4_LagValue));set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcTaskDurationEnum::Class(),(size_t)v5_DurationType)));; populate_derived(); } // Function implementations for IfcLamp -boost::optional< ::Ifc4x3_add2::IfcLampTypeEnum::Value > Ifc4x3_add2::IfcLamp::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcLampTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcLamp::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcLampTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcLampTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcLampTypeEnum::Value > Ifc4x3_add2::IfcLamp::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcLampTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcLamp::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcLampTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcLampTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcLamp::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[578]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLamp::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[578]); } const IfcParse::entity& Ifc4x3_add2::IfcLamp::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[578]); } -Ifc4x3_add2::IfcLamp::IfcLamp(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcLamp::IfcLamp(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcLampTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcLampTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcLamp::IfcLamp(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcLamp::IfcLamp(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcLampTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcLampTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcLampType ::Ifc4x3_add2::IfcLampTypeEnum::Value Ifc4x3_add2::IfcLampType::PredefinedType() const { return ::Ifc4x3_add2::IfcLampTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcLampType::setPredefinedType(::Ifc4x3_add2::IfcLampTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcLampTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcLampType::setPredefinedType(const ::Ifc4x3_add2::IfcLampTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcLampTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcLampType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[579]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLampType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[579]); } const IfcParse::entity& Ifc4x3_add2::IfcLampType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[579]); } -Ifc4x3_add2::IfcLampType::IfcLampType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcLampType::IfcLampType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcLampTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcLampTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcLampType::IfcLampType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcLampType::IfcLampType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcLampTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcLampTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcLibraryInformation std::string Ifc4x3_add2::IfcLibraryInformation::Name() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcLibraryInformation::setName(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -boost::optional< std::string > Ifc4x3_add2::IfcLibraryInformation::Version() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -::Ifc4x3_add2::IfcActorSelect* Ifc4x3_add2::IfcLibraryInformation::Publisher() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcActorSelect>(true); } -void Ifc4x3_add2::IfcLibraryInformation::setPublisher(::Ifc4x3_add2::IfcActorSelect* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -boost::optional< std::string > Ifc4x3_add2::IfcLibraryInformation::VersionDate() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< std::string > Ifc4x3_add2::IfcLibraryInformation::Location() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcLibraryInformation::Description() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +void Ifc4x3_add2::IfcLibraryInformation::setName(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< std::string > Ifc4x3_add2::IfcLibraryInformation::Version() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcLibraryInformation::setVersion(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +::Ifc4x3_add2::IfcActorSelect Ifc4x3_add2::IfcLibraryInformation::Publisher() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcActorSelect{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcActorSelect>(); } +void Ifc4x3_add2::IfcLibraryInformation::setPublisher(const ::Ifc4x3_add2::IfcActorSelect& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +std::optional< std::string > Ifc4x3_add2::IfcLibraryInformation::VersionDate() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcLibraryInformation::setVersionDate(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< std::string > Ifc4x3_add2::IfcLibraryInformation::Location() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcLibraryInformation::setLocation(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcLibraryInformation::Description() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcLibraryInformation::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -::Ifc4x3_add2::IfcRelAssociatesLibrary::list::ptr Ifc4x3_add2::IfcLibraryInformation::LibraryInfoForObjects() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[913], 5)->as(); } -::Ifc4x3_add2::IfcLibraryReference::list::ptr Ifc4x3_add2::IfcLibraryInformation::HasLibraryReferences() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[586], 5)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssociatesLibrary> Ifc4x3_add2::IfcLibraryInformation::LibraryInfoForObjects() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[913], 5)); } +std::vector<::Ifc4x3_add2::IfcLibraryReference> Ifc4x3_add2::IfcLibraryInformation::HasLibraryReferences() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[586], 5)); } -const IfcParse::entity& Ifc4x3_add2::IfcLibraryInformation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[585]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLibraryInformation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[585]); } const IfcParse::entity& Ifc4x3_add2::IfcLibraryInformation::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[585]); } -Ifc4x3_add2::IfcLibraryInformation::IfcLibraryInformation(IfcEntityInstanceData&& e) : IfcExternalInformation(std::move(e)) { } -Ifc4x3_add2::IfcLibraryInformation::IfcLibraryInformation(std::string v1_Name, boost::optional< std::string > v2_Version, ::Ifc4x3_add2::IfcActorSelect* v3_Publisher, boost::optional< std::string > v4_VersionDate, boost::optional< std::string > v5_Location, boost::optional< std::string > v6_Description) : IfcExternalInformation(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_Name)); if (v2_Version) {set_attribute_value(1, (*v2_Version)); }set_attribute_value(2, v3_Publisher ? v3_Publisher->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v4_VersionDate) {set_attribute_value(3, (*v4_VersionDate)); } if (v5_Location) {set_attribute_value(4, (*v5_Location)); } if (v6_Description) {set_attribute_value(5, (*v6_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcLibraryInformation::IfcLibraryInformation(const std::weak_ptr& e) : IfcExternalInformation(e) { } +// Ifc4x3_add2::IfcLibraryInformation::IfcLibraryInformation(std::string v1_Name, std::optional< std::string > v2_Version, ::Ifc4x3_add2::IfcActorSelect v3_Publisher, std::optional< std::string > v4_VersionDate, std::optional< std::string > v5_Location, std::optional< std::string > v6_Description) : IfcExternalInformation(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_Name)); if (v2_Version) {set_attribute_value(1, (*v2_Version)); } if (v3_Publisher) {set_attribute_value(2, (*v3_Publisher)); } if (v4_VersionDate) {set_attribute_value(3, (*v4_VersionDate)); } if (v5_Location) {set_attribute_value(4, (*v5_Location)); } if (v6_Description) {set_attribute_value(5, (*v6_Description)); }; populate_derived(); } // Function implementations for IfcLibraryReference -boost::optional< std::string > Ifc4x3_add2::IfcLibraryReference::Description() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcLibraryReference::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< std::string > Ifc4x3_add2::IfcLibraryReference::Language() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -::Ifc4x3_add2::IfcLibraryInformation* Ifc4x3_add2::IfcLibraryReference::ReferencedLibrary() const { if(get_attribute_value(5).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcLibraryInformation>(true); } -void Ifc4x3_add2::IfcLibraryReference::setReferencedLibrary(::Ifc4x3_add2::IfcLibraryInformation* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +std::optional< std::string > Ifc4x3_add2::IfcLibraryReference::Description() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcLibraryReference::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< std::string > Ifc4x3_add2::IfcLibraryReference::Language() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcLibraryReference::setLanguage(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +::Ifc4x3_add2::IfcLibraryInformation Ifc4x3_add2::IfcLibraryReference::ReferencedLibrary() const { if(get_attribute_value(5).isNull()) { return ::Ifc4x3_add2::IfcLibraryInformation{}; } return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcLibraryInformation>(); } +void Ifc4x3_add2::IfcLibraryReference::setReferencedLibrary(const ::Ifc4x3_add2::IfcLibraryInformation& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcRelAssociatesLibrary::list::ptr Ifc4x3_add2::IfcLibraryReference::LibraryRefForObjects() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[913], 5)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssociatesLibrary> Ifc4x3_add2::IfcLibraryReference::LibraryRefForObjects() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[913], 5)); } -const IfcParse::entity& Ifc4x3_add2::IfcLibraryReference::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[586]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLibraryReference::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[586]); } const IfcParse::entity& Ifc4x3_add2::IfcLibraryReference::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[586]); } -Ifc4x3_add2::IfcLibraryReference::IfcLibraryReference(IfcEntityInstanceData&& e) : IfcExternalReference(std::move(e)) { } -Ifc4x3_add2::IfcLibraryReference::IfcLibraryReference(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_Language, ::Ifc4x3_add2::IfcLibraryInformation* v6_ReferencedLibrary) : IfcExternalReference(IfcEntityInstanceData(in_memory_attribute_storage(6))) { if (v1_Location) {set_attribute_value(0, (*v1_Location)); } if (v2_Identification) {set_attribute_value(1, (*v2_Identification)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_Language) {set_attribute_value(4, (*v5_Language)); }set_attribute_value(5, v6_ReferencedLibrary ? v6_ReferencedLibrary->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcLibraryReference::IfcLibraryReference(const std::weak_ptr& e) : IfcExternalReference(e) { } +// Ifc4x3_add2::IfcLibraryReference::IfcLibraryReference(std::optional< std::string > v1_Location, std::optional< std::string > v2_Identification, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_Language, ::Ifc4x3_add2::IfcLibraryInformation v6_ReferencedLibrary) : IfcExternalReference(const std::weak_ptr&(in_memory_attribute_storage(6))) { if (v1_Location) {set_attribute_value(0, (*v1_Location)); } if (v2_Identification) {set_attribute_value(1, (*v2_Identification)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_Language) {set_attribute_value(4, (*v5_Language)); } if (v6_ReferencedLibrary) {set_attribute_value(5, (*v6_ReferencedLibrary)); }; populate_derived(); } // Function implementations for IfcLightDistributionData double Ifc4x3_add2::IfcLightDistributionData::MainPlaneAngle() const { double v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcLightDistributionData::setMainPlaneAngle(double v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcLightDistributionData::setMainPlaneAngle(const double& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } std::vector< double > /*[1:?]*/ Ifc4x3_add2::IfcLightDistributionData::SecondaryPlaneAngle() const { std::vector< double > /*[1:?]*/ v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcLightDistributionData::setSecondaryPlaneAngle(std::vector< double > /*[1:?]*/ v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcLightDistributionData::setSecondaryPlaneAngle(const std::vector< double > /*[1:?]*/& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } std::vector< double > /*[1:?]*/ Ifc4x3_add2::IfcLightDistributionData::LuminousIntensity() const { std::vector< double > /*[1:?]*/ v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcLightDistributionData::setLuminousIntensity(std::vector< double > /*[1:?]*/ v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcLightDistributionData::setLuminousIntensity(const std::vector< double > /*[1:?]*/& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcLightDistributionData::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[589]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLightDistributionData::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[589]); } const IfcParse::entity& Ifc4x3_add2::IfcLightDistributionData::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[589]); } -Ifc4x3_add2::IfcLightDistributionData::IfcLightDistributionData(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcLightDistributionData::IfcLightDistributionData(double v1_MainPlaneAngle, std::vector< double > /*[1:?]*/ v2_SecondaryPlaneAngle, std::vector< double > /*[1:?]*/ v3_LuminousIntensity) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_MainPlaneAngle));set_attribute_value(1, (v2_SecondaryPlaneAngle));set_attribute_value(2, (v3_LuminousIntensity));; populate_derived(); } +// Ifc4x3_add2::IfcLightDistributionData::IfcLightDistributionData(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcLightDistributionData::IfcLightDistributionData(double v1_MainPlaneAngle, std::vector< double > /*[1:?]*/ v2_SecondaryPlaneAngle, std::vector< double > /*[1:?]*/ v3_LuminousIntensity) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_MainPlaneAngle));set_attribute_value(1, (v2_SecondaryPlaneAngle));set_attribute_value(2, (v3_LuminousIntensity));; populate_derived(); } // Function implementations for IfcLightFixture -boost::optional< ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value > Ifc4x3_add2::IfcLightFixture::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcLightFixtureTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcLightFixtureTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value > Ifc4x3_add2::IfcLightFixture::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcLightFixtureTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcLightFixture::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcLightFixtureTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcLightFixture::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[592]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLightFixture::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[592]); } const IfcParse::entity& Ifc4x3_add2::IfcLightFixture::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[592]); } -Ifc4x3_add2::IfcLightFixture::IfcLightFixture(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcLightFixture::IfcLightFixture(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcLightFixtureTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcLightFixture::IfcLightFixture(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcLightFixture::IfcLightFixture(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcLightFixtureTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcLightFixtureType ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value Ifc4x3_add2::IfcLightFixtureType::PredefinedType() const { return ::Ifc4x3_add2::IfcLightFixtureTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcLightFixtureType::setPredefinedType(::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcLightFixtureTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcLightFixtureType::setPredefinedType(const ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcLightFixtureTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcLightFixtureType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[593]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLightFixtureType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[593]); } const IfcParse::entity& Ifc4x3_add2::IfcLightFixtureType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[593]); } -Ifc4x3_add2::IfcLightFixtureType::IfcLightFixtureType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcLightFixtureType::IfcLightFixtureType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcLightFixtureTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcLightFixtureType::IfcLightFixtureType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcLightFixtureType::IfcLightFixtureType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcLightFixtureTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcLightIntensityDistribution ::Ifc4x3_add2::IfcLightDistributionCurveEnum::Value Ifc4x3_add2::IfcLightIntensityDistribution::LightDistributionCurve() const { return ::Ifc4x3_add2::IfcLightDistributionCurveEnum::FromString(get_attribute_value(0)); } -void Ifc4x3_add2::IfcLightIntensityDistribution::setLightDistributionCurve(::Ifc4x3_add2::IfcLightDistributionCurveEnum::Value v) { set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcLightDistributionCurveEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(0); } -aggregate_of< ::Ifc4x3_add2::IfcLightDistributionData >::ptr Ifc4x3_add2::IfcLightIntensityDistribution::DistributionData() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcLightDistributionData >(); } -void Ifc4x3_add2::IfcLightIntensityDistribution::setDistributionData(aggregate_of< ::Ifc4x3_add2::IfcLightDistributionData >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcLightIntensityDistribution::setLightDistributionCurve(const ::Ifc4x3_add2::IfcLightDistributionCurveEnum::Value& v) { set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcLightDistributionCurveEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcLightDistributionData > Ifc4x3_add2::IfcLightIntensityDistribution::DistributionData() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcLightDistributionData>(es); } +void Ifc4x3_add2::IfcLightIntensityDistribution::setDistributionData(const std::vector< ::Ifc4x3_add2::IfcLightDistributionData >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcLightIntensityDistribution::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[595]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLightIntensityDistribution::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[595]); } const IfcParse::entity& Ifc4x3_add2::IfcLightIntensityDistribution::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[595]); } -Ifc4x3_add2::IfcLightIntensityDistribution::IfcLightIntensityDistribution(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcLightIntensityDistribution::IfcLightIntensityDistribution(::Ifc4x3_add2::IfcLightDistributionCurveEnum::Value v1_LightDistributionCurve, aggregate_of< ::Ifc4x3_add2::IfcLightDistributionData >::ptr v2_DistributionData) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcLightDistributionCurveEnum::Class(),(size_t)v1_LightDistributionCurve)));set_attribute_value(1, (v2_DistributionData)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcLightIntensityDistribution::IfcLightIntensityDistribution(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcLightIntensityDistribution::IfcLightIntensityDistribution(::Ifc4x3_add2::IfcLightDistributionCurveEnum::Value v1_LightDistributionCurve, std::vector< ::Ifc4x3_add2::IfcLightDistributionData > v2_DistributionData) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcLightDistributionCurveEnum::Class(),(size_t)v1_LightDistributionCurve)));set_attribute_value(1, (v2_DistributionData)->generalize());; populate_derived(); } // Function implementations for IfcLightSource -boost::optional< std::string > Ifc4x3_add2::IfcLightSource::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcLightSource::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -::Ifc4x3_add2::IfcColourRgb* Ifc4x3_add2::IfcLightSource::LightColour() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcColourRgb>(true); } -void Ifc4x3_add2::IfcLightSource::setLightColour(::Ifc4x3_add2::IfcColourRgb* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -boost::optional< double > Ifc4x3_add2::IfcLightSource::AmbientIntensity() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcLightSource::Intensity() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcLightSource::setIntensity(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< std::string > Ifc4x3_add2::IfcLightSource::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcLightSource::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +::Ifc4x3_add2::IfcColourRgb Ifc4x3_add2::IfcLightSource::LightColour() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcColourRgb>(); } +void Ifc4x3_add2::IfcLightSource::setLightColour(const ::Ifc4x3_add2::IfcColourRgb& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< double > Ifc4x3_add2::IfcLightSource::AmbientIntensity() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcLightSource::setAmbientIntensity(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcLightSource::Intensity() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcLightSource::setIntensity(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -const IfcParse::entity& Ifc4x3_add2::IfcLightSource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[596]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLightSource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[596]); } const IfcParse::entity& Ifc4x3_add2::IfcLightSource::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[596]); } -Ifc4x3_add2::IfcLightSource::IfcLightSource(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcLightSource::IfcLightSource(boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, v2_LightColour ? v2_LightColour->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_AmbientIntensity) {set_attribute_value(2, (*v3_AmbientIntensity)); } if (v4_Intensity) {set_attribute_value(3, (*v4_Intensity)); }; populate_derived(); } +// Ifc4x3_add2::IfcLightSource::IfcLightSource(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcLightSource::IfcLightSource(std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb v2_LightColour, std::optional< double > v3_AmbientIntensity, std::optional< double > v4_Intensity) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (v2_LightColour)); if (v3_AmbientIntensity) {set_attribute_value(2, (*v3_AmbientIntensity)); } if (v4_Intensity) {set_attribute_value(3, (*v4_Intensity)); }; populate_derived(); } // Function implementations for IfcLightSourceAmbient -const IfcParse::entity& Ifc4x3_add2::IfcLightSourceAmbient::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[597]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLightSourceAmbient::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[597]); } const IfcParse::entity& Ifc4x3_add2::IfcLightSourceAmbient::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[597]); } -Ifc4x3_add2::IfcLightSourceAmbient::IfcLightSourceAmbient(IfcEntityInstanceData&& e) : IfcLightSource(std::move(e)) { } -Ifc4x3_add2::IfcLightSourceAmbient::IfcLightSourceAmbient(boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity) : IfcLightSource(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, v2_LightColour ? v2_LightColour->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_AmbientIntensity) {set_attribute_value(2, (*v3_AmbientIntensity)); } if (v4_Intensity) {set_attribute_value(3, (*v4_Intensity)); }; populate_derived(); } +// Ifc4x3_add2::IfcLightSourceAmbient::IfcLightSourceAmbient(const std::weak_ptr& e) : IfcLightSource(e) { } +// Ifc4x3_add2::IfcLightSourceAmbient::IfcLightSourceAmbient(std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb v2_LightColour, std::optional< double > v3_AmbientIntensity, std::optional< double > v4_Intensity) : IfcLightSource(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (v2_LightColour)); if (v3_AmbientIntensity) {set_attribute_value(2, (*v3_AmbientIntensity)); } if (v4_Intensity) {set_attribute_value(3, (*v4_Intensity)); }; populate_derived(); } // Function implementations for IfcLightSourceDirectional -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcLightSourceDirectional::Orientation() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcLightSourceDirectional::setOrientation(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcLightSourceDirectional::Orientation() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcLightSourceDirectional::setOrientation(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcLightSourceDirectional::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[598]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLightSourceDirectional::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[598]); } const IfcParse::entity& Ifc4x3_add2::IfcLightSourceDirectional::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[598]); } -Ifc4x3_add2::IfcLightSourceDirectional::IfcLightSourceDirectional(IfcEntityInstanceData&& e) : IfcLightSource(std::move(e)) { } -Ifc4x3_add2::IfcLightSourceDirectional::IfcLightSourceDirectional(boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcDirection* v5_Orientation) : IfcLightSource(IfcEntityInstanceData(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, v2_LightColour ? v2_LightColour->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_AmbientIntensity) {set_attribute_value(2, (*v3_AmbientIntensity)); } if (v4_Intensity) {set_attribute_value(3, (*v4_Intensity)); }set_attribute_value(4, v5_Orientation ? v5_Orientation->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcLightSourceDirectional::IfcLightSourceDirectional(const std::weak_ptr& e) : IfcLightSource(e) { } +// Ifc4x3_add2::IfcLightSourceDirectional::IfcLightSourceDirectional(std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb v2_LightColour, std::optional< double > v3_AmbientIntensity, std::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcDirection v5_Orientation) : IfcLightSource(const std::weak_ptr&(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (v2_LightColour)); if (v3_AmbientIntensity) {set_attribute_value(2, (*v3_AmbientIntensity)); } if (v4_Intensity) {set_attribute_value(3, (*v4_Intensity)); }set_attribute_value(4, (v5_Orientation));; populate_derived(); } // Function implementations for IfcLightSourceGoniometric -::Ifc4x3_add2::IfcAxis2Placement3D* Ifc4x3_add2::IfcLightSourceGoniometric::Position() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcAxis2Placement3D>(true); } -void Ifc4x3_add2::IfcLightSourceGoniometric::setPosition(::Ifc4x3_add2::IfcAxis2Placement3D* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcColourRgb* Ifc4x3_add2::IfcLightSourceGoniometric::ColourAppearance() const { if(get_attribute_value(5).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcColourRgb>(true); } -void Ifc4x3_add2::IfcLightSourceGoniometric::setColourAppearance(::Ifc4x3_add2::IfcColourRgb* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcAxis2Placement3D Ifc4x3_add2::IfcLightSourceGoniometric::Position() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcAxis2Placement3D>(); } +void Ifc4x3_add2::IfcLightSourceGoniometric::setPosition(const ::Ifc4x3_add2::IfcAxis2Placement3D& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcColourRgb Ifc4x3_add2::IfcLightSourceGoniometric::ColourAppearance() const { if(get_attribute_value(5).isNull()) { return ::Ifc4x3_add2::IfcColourRgb{}; } return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcColourRgb>(); } +void Ifc4x3_add2::IfcLightSourceGoniometric::setColourAppearance(const ::Ifc4x3_add2::IfcColourRgb& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } double Ifc4x3_add2::IfcLightSourceGoniometric::ColourTemperature() const { double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcLightSourceGoniometric::setColourTemperature(double v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +void Ifc4x3_add2::IfcLightSourceGoniometric::setColourTemperature(const double& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } double Ifc4x3_add2::IfcLightSourceGoniometric::LuminousFlux() const { double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcLightSourceGoniometric::setLuminousFlux(double v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } +void Ifc4x3_add2::IfcLightSourceGoniometric::setLuminousFlux(const double& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } ::Ifc4x3_add2::IfcLightEmissionSourceEnum::Value Ifc4x3_add2::IfcLightSourceGoniometric::LightEmissionSource() const { return ::Ifc4x3_add2::IfcLightEmissionSourceEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcLightSourceGoniometric::setLightEmissionSource(::Ifc4x3_add2::IfcLightEmissionSourceEnum::Value v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcLightEmissionSourceEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } -::Ifc4x3_add2::IfcLightDistributionDataSourceSelect* Ifc4x3_add2::IfcLightSourceGoniometric::LightDistributionDataSource() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(9)))->as<::Ifc4x3_add2::IfcLightDistributionDataSourceSelect>(true); } -void Ifc4x3_add2::IfcLightSourceGoniometric::setLightDistributionDataSource(::Ifc4x3_add2::IfcLightDistributionDataSourceSelect* v) { set_attribute_value(9, v->as());if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcLightSourceGoniometric::setLightEmissionSource(const ::Ifc4x3_add2::IfcLightEmissionSourceEnum::Value& v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcLightEmissionSourceEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } +::Ifc4x3_add2::IfcLightDistributionDataSourceSelect Ifc4x3_add2::IfcLightSourceGoniometric::LightDistributionDataSource() const { return ((express::Base)(get_attribute_value(9))).as<::Ifc4x3_add2::IfcLightDistributionDataSourceSelect>(); } +void Ifc4x3_add2::IfcLightSourceGoniometric::setLightDistributionDataSource(const ::Ifc4x3_add2::IfcLightDistributionDataSourceSelect& v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcLightSourceGoniometric::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[599]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLightSourceGoniometric::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[599]); } const IfcParse::entity& Ifc4x3_add2::IfcLightSourceGoniometric::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[599]); } -Ifc4x3_add2::IfcLightSourceGoniometric::IfcLightSourceGoniometric(IfcEntityInstanceData&& e) : IfcLightSource(std::move(e)) { } -Ifc4x3_add2::IfcLightSourceGoniometric::IfcLightSourceGoniometric(boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcAxis2Placement3D* v5_Position, ::Ifc4x3_add2::IfcColourRgb* v6_ColourAppearance, double v7_ColourTemperature, double v8_LuminousFlux, ::Ifc4x3_add2::IfcLightEmissionSourceEnum::Value v9_LightEmissionSource, ::Ifc4x3_add2::IfcLightDistributionDataSourceSelect* v10_LightDistributionDataSource) : IfcLightSource(IfcEntityInstanceData(in_memory_attribute_storage(10))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, v2_LightColour ? v2_LightColour->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_AmbientIntensity) {set_attribute_value(2, (*v3_AmbientIntensity)); } if (v4_Intensity) {set_attribute_value(3, (*v4_Intensity)); }set_attribute_value(4, v5_Position ? v5_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_ColourAppearance ? v6_ColourAppearance->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, (v7_ColourTemperature));set_attribute_value(7, (v8_LuminousFlux));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcLightEmissionSourceEnum::Class(),(size_t)v9_LightEmissionSource)));set_attribute_value(9, v10_LightDistributionDataSource ? v10_LightDistributionDataSource->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcLightSourceGoniometric::IfcLightSourceGoniometric(const std::weak_ptr& e) : IfcLightSource(e) { } +// Ifc4x3_add2::IfcLightSourceGoniometric::IfcLightSourceGoniometric(std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb v2_LightColour, std::optional< double > v3_AmbientIntensity, std::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcAxis2Placement3D v5_Position, ::Ifc4x3_add2::IfcColourRgb v6_ColourAppearance, double v7_ColourTemperature, double v8_LuminousFlux, ::Ifc4x3_add2::IfcLightEmissionSourceEnum::Value v9_LightEmissionSource, ::Ifc4x3_add2::IfcLightDistributionDataSourceSelect v10_LightDistributionDataSource) : IfcLightSource(const std::weak_ptr&(in_memory_attribute_storage(10))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (v2_LightColour)); if (v3_AmbientIntensity) {set_attribute_value(2, (*v3_AmbientIntensity)); } if (v4_Intensity) {set_attribute_value(3, (*v4_Intensity)); }set_attribute_value(4, (v5_Position)); if (v6_ColourAppearance) {set_attribute_value(5, (*v6_ColourAppearance)); }set_attribute_value(6, (v7_ColourTemperature));set_attribute_value(7, (v8_LuminousFlux));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcLightEmissionSourceEnum::Class(),(size_t)v9_LightEmissionSource)));set_attribute_value(9, (v10_LightDistributionDataSource));; populate_derived(); } // Function implementations for IfcLightSourcePositional -::Ifc4x3_add2::IfcCartesianPoint* Ifc4x3_add2::IfcLightSourcePositional::Position() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcCartesianPoint>(true); } -void Ifc4x3_add2::IfcLightSourcePositional::setPosition(::Ifc4x3_add2::IfcCartesianPoint* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcCartesianPoint Ifc4x3_add2::IfcLightSourcePositional::Position() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcCartesianPoint>(); } +void Ifc4x3_add2::IfcLightSourcePositional::setPosition(const ::Ifc4x3_add2::IfcCartesianPoint& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } double Ifc4x3_add2::IfcLightSourcePositional::Radius() const { double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcLightSourcePositional::setRadius(double v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcLightSourcePositional::setRadius(const double& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } double Ifc4x3_add2::IfcLightSourcePositional::ConstantAttenuation() const { double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcLightSourcePositional::setConstantAttenuation(double v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +void Ifc4x3_add2::IfcLightSourcePositional::setConstantAttenuation(const double& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } double Ifc4x3_add2::IfcLightSourcePositional::DistanceAttenuation() const { double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcLightSourcePositional::setDistanceAttenuation(double v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } +void Ifc4x3_add2::IfcLightSourcePositional::setDistanceAttenuation(const double& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } double Ifc4x3_add2::IfcLightSourcePositional::QuadricAttenuation() const { double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcLightSourcePositional::setQuadricAttenuation(double v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcLightSourcePositional::setQuadricAttenuation(const double& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcLightSourcePositional::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[600]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLightSourcePositional::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[600]); } const IfcParse::entity& Ifc4x3_add2::IfcLightSourcePositional::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[600]); } -Ifc4x3_add2::IfcLightSourcePositional::IfcLightSourcePositional(IfcEntityInstanceData&& e) : IfcLightSource(std::move(e)) { } -Ifc4x3_add2::IfcLightSourcePositional::IfcLightSourcePositional(boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation) : IfcLightSource(IfcEntityInstanceData(in_memory_attribute_storage(9))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, v2_LightColour ? v2_LightColour->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_AmbientIntensity) {set_attribute_value(2, (*v3_AmbientIntensity)); } if (v4_Intensity) {set_attribute_value(3, (*v4_Intensity)); }set_attribute_value(4, v5_Position ? v5_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, (v6_Radius));set_attribute_value(6, (v7_ConstantAttenuation));set_attribute_value(7, (v8_DistanceAttenuation));set_attribute_value(8, (v9_QuadricAttenuation));; populate_derived(); } +// Ifc4x3_add2::IfcLightSourcePositional::IfcLightSourcePositional(const std::weak_ptr& e) : IfcLightSource(e) { } +// Ifc4x3_add2::IfcLightSourcePositional::IfcLightSourcePositional(std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb v2_LightColour, std::optional< double > v3_AmbientIntensity, std::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcCartesianPoint v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation) : IfcLightSource(const std::weak_ptr&(in_memory_attribute_storage(9))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (v2_LightColour)); if (v3_AmbientIntensity) {set_attribute_value(2, (*v3_AmbientIntensity)); } if (v4_Intensity) {set_attribute_value(3, (*v4_Intensity)); }set_attribute_value(4, (v5_Position));set_attribute_value(5, (v6_Radius));set_attribute_value(6, (v7_ConstantAttenuation));set_attribute_value(7, (v8_DistanceAttenuation));set_attribute_value(8, (v9_QuadricAttenuation));; populate_derived(); } // Function implementations for IfcLightSourceSpot -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcLightSourceSpot::Orientation() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(9)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcLightSourceSpot::setOrientation(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(9, v->as());if constexpr (false)unset_attribute_value(9); } -boost::optional< double > Ifc4x3_add2::IfcLightSourceSpot::ConcentrationExponent() const { if(get_attribute_value(10).isNull()) { return boost::none; } double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcLightSourceSpot::Orientation() const { return ((express::Base)(get_attribute_value(9))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcLightSourceSpot::setOrientation(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } +std::optional< double > Ifc4x3_add2::IfcLightSourceSpot::ConcentrationExponent() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } double v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcLightSourceSpot::setConcentrationExponent(const std::optional< double >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } double Ifc4x3_add2::IfcLightSourceSpot::SpreadAngle() const { double v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcLightSourceSpot::setSpreadAngle(double v) { set_attribute_value(11, v);if constexpr (false)unset_attribute_value(11); } +void Ifc4x3_add2::IfcLightSourceSpot::setSpreadAngle(const double& v) { set_attribute_value(11, v);if constexpr (false)unset_attribute_value(11); } double Ifc4x3_add2::IfcLightSourceSpot::BeamWidthAngle() const { double v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcLightSourceSpot::setBeamWidthAngle(double v) { set_attribute_value(12, v);if constexpr (false)unset_attribute_value(12); } +void Ifc4x3_add2::IfcLightSourceSpot::setBeamWidthAngle(const double& v) { set_attribute_value(12, v);if constexpr (false)unset_attribute_value(12); } -const IfcParse::entity& Ifc4x3_add2::IfcLightSourceSpot::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[601]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLightSourceSpot::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[601]); } const IfcParse::entity& Ifc4x3_add2::IfcLightSourceSpot::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[601]); } -Ifc4x3_add2::IfcLightSourceSpot::IfcLightSourceSpot(IfcEntityInstanceData&& e) : IfcLightSourcePositional(std::move(e)) { } -Ifc4x3_add2::IfcLightSourceSpot::IfcLightSourceSpot(boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation, ::Ifc4x3_add2::IfcDirection* v10_Orientation, boost::optional< double > v11_ConcentrationExponent, double v12_SpreadAngle, double v13_BeamWidthAngle) : IfcLightSourcePositional(IfcEntityInstanceData(in_memory_attribute_storage(13))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, v2_LightColour ? v2_LightColour->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_AmbientIntensity) {set_attribute_value(2, (*v3_AmbientIntensity)); } if (v4_Intensity) {set_attribute_value(3, (*v4_Intensity)); }set_attribute_value(4, v5_Position ? v5_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, (v6_Radius));set_attribute_value(6, (v7_ConstantAttenuation));set_attribute_value(7, (v8_DistanceAttenuation));set_attribute_value(8, (v9_QuadricAttenuation));set_attribute_value(9, v10_Orientation ? v10_Orientation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v11_ConcentrationExponent) {set_attribute_value(10, (*v11_ConcentrationExponent)); }set_attribute_value(11, (v12_SpreadAngle));set_attribute_value(12, (v13_BeamWidthAngle));; populate_derived(); } +// Ifc4x3_add2::IfcLightSourceSpot::IfcLightSourceSpot(const std::weak_ptr& e) : IfcLightSourcePositional(e) { } +// Ifc4x3_add2::IfcLightSourceSpot::IfcLightSourceSpot(std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb v2_LightColour, std::optional< double > v3_AmbientIntensity, std::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcCartesianPoint v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation, ::Ifc4x3_add2::IfcDirection v10_Orientation, std::optional< double > v11_ConcentrationExponent, double v12_SpreadAngle, double v13_BeamWidthAngle) : IfcLightSourcePositional(const std::weak_ptr&(in_memory_attribute_storage(13))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (v2_LightColour)); if (v3_AmbientIntensity) {set_attribute_value(2, (*v3_AmbientIntensity)); } if (v4_Intensity) {set_attribute_value(3, (*v4_Intensity)); }set_attribute_value(4, (v5_Position));set_attribute_value(5, (v6_Radius));set_attribute_value(6, (v7_ConstantAttenuation));set_attribute_value(7, (v8_DistanceAttenuation));set_attribute_value(8, (v9_QuadricAttenuation));set_attribute_value(9, (v10_Orientation)); if (v11_ConcentrationExponent) {set_attribute_value(10, (*v11_ConcentrationExponent)); }set_attribute_value(11, (v12_SpreadAngle));set_attribute_value(12, (v13_BeamWidthAngle));; populate_derived(); } // Function implementations for IfcLine -::Ifc4x3_add2::IfcCartesianPoint* Ifc4x3_add2::IfcLine::Pnt() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCartesianPoint>(true); } -void Ifc4x3_add2::IfcLine::setPnt(::Ifc4x3_add2::IfcCartesianPoint* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcVector* Ifc4x3_add2::IfcLine::Dir() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcVector>(true); } -void Ifc4x3_add2::IfcLine::setDir(::Ifc4x3_add2::IfcVector* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcCartesianPoint Ifc4x3_add2::IfcLine::Pnt() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCartesianPoint>(); } +void Ifc4x3_add2::IfcLine::setPnt(const ::Ifc4x3_add2::IfcCartesianPoint& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcVector Ifc4x3_add2::IfcLine::Dir() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcVector>(); } +void Ifc4x3_add2::IfcLine::setDir(const ::Ifc4x3_add2::IfcVector& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcLine::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[602]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLine::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[602]); } const IfcParse::entity& Ifc4x3_add2::IfcLine::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[602]); } -Ifc4x3_add2::IfcLine::IfcLine(IfcEntityInstanceData&& e) : IfcCurve(std::move(e)) { } -Ifc4x3_add2::IfcLine::IfcLine(::Ifc4x3_add2::IfcCartesianPoint* v1_Pnt, ::Ifc4x3_add2::IfcVector* v2_Dir) : IfcCurve(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Pnt ? v1_Pnt->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Dir ? v2_Dir->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcLine::IfcLine(const std::weak_ptr& e) : IfcCurve(e) { } +// Ifc4x3_add2::IfcLine::IfcLine(::Ifc4x3_add2::IfcCartesianPoint v1_Pnt, ::Ifc4x3_add2::IfcVector v2_Dir) : IfcCurve(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Pnt));set_attribute_value(1, (v2_Dir));; populate_derived(); } // Function implementations for IfcLinearElement -const IfcParse::entity& Ifc4x3_add2::IfcLinearElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[603]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLinearElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[603]); } const IfcParse::entity& Ifc4x3_add2::IfcLinearElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[603]); } -Ifc4x3_add2::IfcLinearElement::IfcLinearElement(IfcEntityInstanceData&& e) : IfcProduct(std::move(e)) { } -Ifc4x3_add2::IfcLinearElement::IfcLinearElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation) : IfcProduct(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcLinearElement::IfcLinearElement(const std::weak_ptr& e) : IfcProduct(e) { } +// Ifc4x3_add2::IfcLinearElement::IfcLinearElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation) : IfcProduct(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }; populate_derived(); } // Function implementations for IfcLinearPlacement -::Ifc4x3_add2::IfcAxis2PlacementLinear* Ifc4x3_add2::IfcLinearPlacement::RelativePlacement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcAxis2PlacementLinear>(true); } -void Ifc4x3_add2::IfcLinearPlacement::setRelativePlacement(::Ifc4x3_add2::IfcAxis2PlacementLinear* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcAxis2Placement3D* Ifc4x3_add2::IfcLinearPlacement::CartesianPosition() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcAxis2Placement3D>(true); } -void Ifc4x3_add2::IfcLinearPlacement::setCartesianPosition(::Ifc4x3_add2::IfcAxis2Placement3D* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcAxis2PlacementLinear Ifc4x3_add2::IfcLinearPlacement::RelativePlacement() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcAxis2PlacementLinear>(); } +void Ifc4x3_add2::IfcLinearPlacement::setRelativePlacement(const ::Ifc4x3_add2::IfcAxis2PlacementLinear& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcAxis2Placement3D Ifc4x3_add2::IfcLinearPlacement::CartesianPosition() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcAxis2Placement3D{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcAxis2Placement3D>(); } +void Ifc4x3_add2::IfcLinearPlacement::setCartesianPosition(const ::Ifc4x3_add2::IfcAxis2Placement3D& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcLinearPlacement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[606]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLinearPlacement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[606]); } const IfcParse::entity& Ifc4x3_add2::IfcLinearPlacement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[606]); } -Ifc4x3_add2::IfcLinearPlacement::IfcLinearPlacement(IfcEntityInstanceData&& e) : IfcObjectPlacement(std::move(e)) { } -Ifc4x3_add2::IfcLinearPlacement::IfcLinearPlacement(::Ifc4x3_add2::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_add2::IfcAxis2PlacementLinear* v2_RelativePlacement, ::Ifc4x3_add2::IfcAxis2Placement3D* v3_CartesianPosition) : IfcObjectPlacement(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_PlacementRelTo ? v1_PlacementRelTo->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_RelativePlacement ? v2_RelativePlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_CartesianPosition ? v3_CartesianPosition->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcLinearPlacement::IfcLinearPlacement(const std::weak_ptr& e) : IfcObjectPlacement(e) { } +// Ifc4x3_add2::IfcLinearPlacement::IfcLinearPlacement(::Ifc4x3_add2::IfcObjectPlacement v1_PlacementRelTo, ::Ifc4x3_add2::IfcAxis2PlacementLinear v2_RelativePlacement, ::Ifc4x3_add2::IfcAxis2Placement3D v3_CartesianPosition) : IfcObjectPlacement(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_PlacementRelTo) {set_attribute_value(0, (*v1_PlacementRelTo)); }set_attribute_value(1, (v2_RelativePlacement)); if (v3_CartesianPosition) {set_attribute_value(2, (*v3_CartesianPosition)); }; populate_derived(); } // Function implementations for IfcLinearPositioningElement -const IfcParse::entity& Ifc4x3_add2::IfcLinearPositioningElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[607]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLinearPositioningElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[607]); } const IfcParse::entity& Ifc4x3_add2::IfcLinearPositioningElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[607]); } -Ifc4x3_add2::IfcLinearPositioningElement::IfcLinearPositioningElement(IfcEntityInstanceData&& e) : IfcPositioningElement(std::move(e)) { } -Ifc4x3_add2::IfcLinearPositioningElement::IfcLinearPositioningElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation) : IfcPositioningElement(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcLinearPositioningElement::IfcLinearPositioningElement(const std::weak_ptr& e) : IfcPositioningElement(e) { } +// Ifc4x3_add2::IfcLinearPositioningElement::IfcLinearPositioningElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation) : IfcPositioningElement(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }; populate_derived(); } // Function implementations for IfcLiquidTerminal -boost::optional< ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value > Ifc4x3_add2::IfcLiquidTerminal::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcLiquidTerminal::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value > Ifc4x3_add2::IfcLiquidTerminal::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcLiquidTerminal::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcLiquidTerminal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[611]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLiquidTerminal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[611]); } const IfcParse::entity& Ifc4x3_add2::IfcLiquidTerminal::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[611]); } -Ifc4x3_add2::IfcLiquidTerminal::IfcLiquidTerminal(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcLiquidTerminal::IfcLiquidTerminal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcLiquidTerminal::IfcLiquidTerminal(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcLiquidTerminal::IfcLiquidTerminal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcLiquidTerminalType ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value Ifc4x3_add2::IfcLiquidTerminalType::PredefinedType() const { return ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcLiquidTerminalType::setPredefinedType(::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcLiquidTerminalType::setPredefinedType(const ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcLiquidTerminalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[612]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLiquidTerminalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[612]); } const IfcParse::entity& Ifc4x3_add2::IfcLiquidTerminalType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[612]); } -Ifc4x3_add2::IfcLiquidTerminalType::IfcLiquidTerminalType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcLiquidTerminalType::IfcLiquidTerminalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcLiquidTerminalType::IfcLiquidTerminalType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcLiquidTerminalType::IfcLiquidTerminalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcLocalPlacement -::Ifc4x3_add2::IfcAxis2Placement* Ifc4x3_add2::IfcLocalPlacement::RelativePlacement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcAxis2Placement>(true); } -void Ifc4x3_add2::IfcLocalPlacement::setRelativePlacement(::Ifc4x3_add2::IfcAxis2Placement* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcAxis2Placement Ifc4x3_add2::IfcLocalPlacement::RelativePlacement() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcAxis2Placement>(); } +void Ifc4x3_add2::IfcLocalPlacement::setRelativePlacement(const ::Ifc4x3_add2::IfcAxis2Placement& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcLocalPlacement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[615]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLocalPlacement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[615]); } const IfcParse::entity& Ifc4x3_add2::IfcLocalPlacement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[615]); } -Ifc4x3_add2::IfcLocalPlacement::IfcLocalPlacement(IfcEntityInstanceData&& e) : IfcObjectPlacement(std::move(e)) { } -Ifc4x3_add2::IfcLocalPlacement::IfcLocalPlacement(::Ifc4x3_add2::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_add2::IfcAxis2Placement* v2_RelativePlacement) : IfcObjectPlacement(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_PlacementRelTo ? v1_PlacementRelTo->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_RelativePlacement ? v2_RelativePlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcLocalPlacement::IfcLocalPlacement(const std::weak_ptr& e) : IfcObjectPlacement(e) { } +// Ifc4x3_add2::IfcLocalPlacement::IfcLocalPlacement(::Ifc4x3_add2::IfcObjectPlacement v1_PlacementRelTo, ::Ifc4x3_add2::IfcAxis2Placement v2_RelativePlacement) : IfcObjectPlacement(const std::weak_ptr&(in_memory_attribute_storage(2))) { if (v1_PlacementRelTo) {set_attribute_value(0, (*v1_PlacementRelTo)); }set_attribute_value(1, (v2_RelativePlacement));; populate_derived(); } // Function implementations for IfcLoop -const IfcParse::entity& Ifc4x3_add2::IfcLoop::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[618]); } +// const IfcParse::entity& Ifc4x3_add2::IfcLoop::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[618]); } const IfcParse::entity& Ifc4x3_add2::IfcLoop::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[618]); } -Ifc4x3_add2::IfcLoop::IfcLoop(IfcEntityInstanceData&& e) : IfcTopologicalRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcLoop::IfcLoop() : IfcTopologicalRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcLoop::IfcLoop(const std::weak_ptr& e) : IfcTopologicalRepresentationItem(e) { } +// Ifc4x3_add2::IfcLoop::IfcLoop() : IfcTopologicalRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcManifoldSolidBrep -::Ifc4x3_add2::IfcClosedShell* Ifc4x3_add2::IfcManifoldSolidBrep::Outer() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcClosedShell>(true); } -void Ifc4x3_add2::IfcManifoldSolidBrep::setOuter(::Ifc4x3_add2::IfcClosedShell* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcClosedShell Ifc4x3_add2::IfcManifoldSolidBrep::Outer() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcClosedShell>(); } +void Ifc4x3_add2::IfcManifoldSolidBrep::setOuter(const ::Ifc4x3_add2::IfcClosedShell& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcManifoldSolidBrep::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[625]); } +// const IfcParse::entity& Ifc4x3_add2::IfcManifoldSolidBrep::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[625]); } const IfcParse::entity& Ifc4x3_add2::IfcManifoldSolidBrep::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[625]); } -Ifc4x3_add2::IfcManifoldSolidBrep::IfcManifoldSolidBrep(IfcEntityInstanceData&& e) : IfcSolidModel(std::move(e)) { } -Ifc4x3_add2::IfcManifoldSolidBrep::IfcManifoldSolidBrep(::Ifc4x3_add2::IfcClosedShell* v1_Outer) : IfcSolidModel(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, v1_Outer ? v1_Outer->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcManifoldSolidBrep::IfcManifoldSolidBrep(const std::weak_ptr& e) : IfcSolidModel(e) { } +// Ifc4x3_add2::IfcManifoldSolidBrep::IfcManifoldSolidBrep(::Ifc4x3_add2::IfcClosedShell v1_Outer) : IfcSolidModel(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Outer));; populate_derived(); } // Function implementations for IfcMapConversion double Ifc4x3_add2::IfcMapConversion::Eastings() const { double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcMapConversion::setEastings(double v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcMapConversion::setEastings(const double& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } double Ifc4x3_add2::IfcMapConversion::Northings() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcMapConversion::setNorthings(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcMapConversion::setNorthings(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcMapConversion::OrthogonalHeight() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcMapConversion::setOrthogonalHeight(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -boost::optional< double > Ifc4x3_add2::IfcMapConversion::XAxisAbscissa() const { if(get_attribute_value(5).isNull()) { return boost::none; } double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< double > Ifc4x3_add2::IfcMapConversion::XAxisOrdinate() const { if(get_attribute_value(6).isNull()) { return boost::none; } double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< double > Ifc4x3_add2::IfcMapConversion::Scale() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcMapConversion::setScale(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +void Ifc4x3_add2::IfcMapConversion::setOrthogonalHeight(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +std::optional< double > Ifc4x3_add2::IfcMapConversion::XAxisAbscissa() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } double v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcMapConversion::setXAxisAbscissa(const std::optional< double >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< double > Ifc4x3_add2::IfcMapConversion::XAxisOrdinate() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } double v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcMapConversion::setXAxisOrdinate(const std::optional< double >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< double > Ifc4x3_add2::IfcMapConversion::Scale() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcMapConversion::setScale(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -const IfcParse::entity& Ifc4x3_add2::IfcMapConversion::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[626]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMapConversion::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[626]); } const IfcParse::entity& Ifc4x3_add2::IfcMapConversion::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[626]); } -Ifc4x3_add2::IfcMapConversion::IfcMapConversion(IfcEntityInstanceData&& e) : IfcCoordinateOperation(std::move(e)) { } -Ifc4x3_add2::IfcMapConversion::IfcMapConversion(::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect* v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem* v2_TargetCRS, double v3_Eastings, double v4_Northings, double v5_OrthogonalHeight, boost::optional< double > v6_XAxisAbscissa, boost::optional< double > v7_XAxisOrdinate, boost::optional< double > v8_Scale) : IfcCoordinateOperation(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, v1_SourceCRS ? v1_SourceCRS->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_TargetCRS ? v2_TargetCRS->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, (v3_Eastings));set_attribute_value(3, (v4_Northings));set_attribute_value(4, (v5_OrthogonalHeight)); if (v6_XAxisAbscissa) {set_attribute_value(5, (*v6_XAxisAbscissa)); } if (v7_XAxisOrdinate) {set_attribute_value(6, (*v7_XAxisOrdinate)); } if (v8_Scale) {set_attribute_value(7, (*v8_Scale)); }; populate_derived(); } +// Ifc4x3_add2::IfcMapConversion::IfcMapConversion(const std::weak_ptr& e) : IfcCoordinateOperation(e) { } +// Ifc4x3_add2::IfcMapConversion::IfcMapConversion(::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem v2_TargetCRS, double v3_Eastings, double v4_Northings, double v5_OrthogonalHeight, std::optional< double > v6_XAxisAbscissa, std::optional< double > v7_XAxisOrdinate, std::optional< double > v8_Scale) : IfcCoordinateOperation(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_SourceCRS));set_attribute_value(1, (v2_TargetCRS));set_attribute_value(2, (v3_Eastings));set_attribute_value(3, (v4_Northings));set_attribute_value(4, (v5_OrthogonalHeight)); if (v6_XAxisAbscissa) {set_attribute_value(5, (*v6_XAxisAbscissa)); } if (v7_XAxisOrdinate) {set_attribute_value(6, (*v7_XAxisOrdinate)); } if (v8_Scale) {set_attribute_value(7, (*v8_Scale)); }; populate_derived(); } // Function implementations for IfcMapConversionScaled double Ifc4x3_add2::IfcMapConversionScaled::FactorX() const { double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcMapConversionScaled::setFactorX(double v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcMapConversionScaled::setFactorX(const double& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } double Ifc4x3_add2::IfcMapConversionScaled::FactorY() const { double v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcMapConversionScaled::setFactorY(double v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcMapConversionScaled::setFactorY(const double& v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } double Ifc4x3_add2::IfcMapConversionScaled::FactorZ() const { double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcMapConversionScaled::setFactorZ(double v) { set_attribute_value(10, v);if constexpr (false)unset_attribute_value(10); } +void Ifc4x3_add2::IfcMapConversionScaled::setFactorZ(const double& v) { set_attribute_value(10, v);if constexpr (false)unset_attribute_value(10); } -const IfcParse::entity& Ifc4x3_add2::IfcMapConversionScaled::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[627]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMapConversionScaled::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[627]); } const IfcParse::entity& Ifc4x3_add2::IfcMapConversionScaled::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[627]); } -Ifc4x3_add2::IfcMapConversionScaled::IfcMapConversionScaled(IfcEntityInstanceData&& e) : IfcMapConversion(std::move(e)) { } -Ifc4x3_add2::IfcMapConversionScaled::IfcMapConversionScaled(::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect* v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem* v2_TargetCRS, double v3_Eastings, double v4_Northings, double v5_OrthogonalHeight, boost::optional< double > v6_XAxisAbscissa, boost::optional< double > v7_XAxisOrdinate, boost::optional< double > v8_Scale, double v9_FactorX, double v10_FactorY, double v11_FactorZ) : IfcMapConversion(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, v1_SourceCRS ? v1_SourceCRS->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_TargetCRS ? v2_TargetCRS->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, (v3_Eastings));set_attribute_value(3, (v4_Northings));set_attribute_value(4, (v5_OrthogonalHeight)); if (v6_XAxisAbscissa) {set_attribute_value(5, (*v6_XAxisAbscissa)); } if (v7_XAxisOrdinate) {set_attribute_value(6, (*v7_XAxisOrdinate)); } if (v8_Scale) {set_attribute_value(7, (*v8_Scale)); }set_attribute_value(8, (v9_FactorX));set_attribute_value(9, (v10_FactorY));set_attribute_value(10, (v11_FactorZ));; populate_derived(); } +// Ifc4x3_add2::IfcMapConversionScaled::IfcMapConversionScaled(const std::weak_ptr& e) : IfcMapConversion(e) { } +// Ifc4x3_add2::IfcMapConversionScaled::IfcMapConversionScaled(::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem v2_TargetCRS, double v3_Eastings, double v4_Northings, double v5_OrthogonalHeight, std::optional< double > v6_XAxisAbscissa, std::optional< double > v7_XAxisOrdinate, std::optional< double > v8_Scale, double v9_FactorX, double v10_FactorY, double v11_FactorZ) : IfcMapConversion(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_SourceCRS));set_attribute_value(1, (v2_TargetCRS));set_attribute_value(2, (v3_Eastings));set_attribute_value(3, (v4_Northings));set_attribute_value(4, (v5_OrthogonalHeight)); if (v6_XAxisAbscissa) {set_attribute_value(5, (*v6_XAxisAbscissa)); } if (v7_XAxisOrdinate) {set_attribute_value(6, (*v7_XAxisOrdinate)); } if (v8_Scale) {set_attribute_value(7, (*v8_Scale)); }set_attribute_value(8, (v9_FactorX));set_attribute_value(9, (v10_FactorY));set_attribute_value(10, (v11_FactorZ));; populate_derived(); } // Function implementations for IfcMappedItem -::Ifc4x3_add2::IfcRepresentationMap* Ifc4x3_add2::IfcMappedItem::MappingSource() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcRepresentationMap>(true); } -void Ifc4x3_add2::IfcMappedItem::setMappingSource(::Ifc4x3_add2::IfcRepresentationMap* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcCartesianTransformationOperator* Ifc4x3_add2::IfcMappedItem::MappingTarget() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcCartesianTransformationOperator>(true); } -void Ifc4x3_add2::IfcMappedItem::setMappingTarget(::Ifc4x3_add2::IfcCartesianTransformationOperator* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcRepresentationMap Ifc4x3_add2::IfcMappedItem::MappingSource() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcRepresentationMap>(); } +void Ifc4x3_add2::IfcMappedItem::setMappingSource(const ::Ifc4x3_add2::IfcRepresentationMap& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcCartesianTransformationOperator Ifc4x3_add2::IfcMappedItem::MappingTarget() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcCartesianTransformationOperator>(); } +void Ifc4x3_add2::IfcMappedItem::setMappingTarget(const ::Ifc4x3_add2::IfcCartesianTransformationOperator& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcMappedItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[628]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMappedItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[628]); } const IfcParse::entity& Ifc4x3_add2::IfcMappedItem::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[628]); } -Ifc4x3_add2::IfcMappedItem::IfcMappedItem(IfcEntityInstanceData&& e) : IfcRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcMappedItem::IfcMappedItem(::Ifc4x3_add2::IfcRepresentationMap* v1_MappingSource, ::Ifc4x3_add2::IfcCartesianTransformationOperator* v2_MappingTarget) : IfcRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_MappingSource ? v1_MappingSource->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_MappingTarget ? v2_MappingTarget->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcMappedItem::IfcMappedItem(const std::weak_ptr& e) : IfcRepresentationItem(e) { } +// Ifc4x3_add2::IfcMappedItem::IfcMappedItem(::Ifc4x3_add2::IfcRepresentationMap v1_MappingSource, ::Ifc4x3_add2::IfcCartesianTransformationOperator v2_MappingTarget) : IfcRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_MappingSource));set_attribute_value(1, (v2_MappingTarget));; populate_derived(); } // Function implementations for IfcMarineFacility -boost::optional< ::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Value > Ifc4x3_add2::IfcMarineFacility::PredefinedType() const { if(get_attribute_value(9).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcMarineFacilityTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcMarineFacility::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Value > v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } +std::optional< ::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Value > Ifc4x3_add2::IfcMarineFacility::PredefinedType() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcMarineFacilityTypeEnum::FromString(get_attribute_value(9)); } +void Ifc4x3_add2::IfcMarineFacility::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Value >& v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcMarineFacility::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[629]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMarineFacility::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[629]); } const IfcParse::entity& Ifc4x3_add2::IfcMarineFacility::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[629]); } -Ifc4x3_add2::IfcMarineFacility::IfcMarineFacility(IfcEntityInstanceData&& e) : IfcFacility(std::move(e)) { } -Ifc4x3_add2::IfcMarineFacility::IfcMarineFacility(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< ::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Value > v10_PredefinedType) : IfcFacility(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcMarineFacility::IfcMarineFacility(const std::weak_ptr& e) : IfcFacility(e) { } +// Ifc4x3_add2::IfcMarineFacility::IfcMarineFacility(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< ::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Value > v10_PredefinedType) : IfcFacility(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } // Function implementations for IfcMarinePart -boost::optional< ::Ifc4x3_add2::IfcMarinePartTypeEnum::Value > Ifc4x3_add2::IfcMarinePart::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcMarinePartTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcMarinePart::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMarinePartTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcMarinePartTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcMarinePartTypeEnum::Value > Ifc4x3_add2::IfcMarinePart::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcMarinePartTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcMarinePart::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMarinePartTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcMarinePartTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcMarinePart::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[631]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMarinePart::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[631]); } const IfcParse::entity& Ifc4x3_add2::IfcMarinePart::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[631]); } -Ifc4x3_add2::IfcMarinePart::IfcMarinePart(IfcEntityInstanceData&& e) : IfcFacilityPart(std::move(e)) { } -Ifc4x3_add2::IfcMarinePart::IfcMarinePart(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, boost::optional< ::Ifc4x3_add2::IfcMarinePartTypeEnum::Value > v11_PredefinedType) : IfcFacilityPart(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFacilityUsageEnum::Class(),(size_t)v10_UsageType))); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcMarinePartTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcMarinePart::IfcMarinePart(const std::weak_ptr& e) : IfcFacilityPart(e) { } +// Ifc4x3_add2::IfcMarinePart::IfcMarinePart(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, std::optional< ::Ifc4x3_add2::IfcMarinePartTypeEnum::Value > v11_PredefinedType) : IfcFacilityPart(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFacilityUsageEnum::Class(),(size_t)v10_UsageType))); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcMarinePartTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } // Function implementations for IfcMaterial std::string Ifc4x3_add2::IfcMaterial::Name() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcMaterial::setName(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -boost::optional< std::string > Ifc4x3_add2::IfcMaterial::Description() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcMaterial::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::string > Ifc4x3_add2::IfcMaterial::Category() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcMaterial::setCategory(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +void Ifc4x3_add2::IfcMaterial::setName(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< std::string > Ifc4x3_add2::IfcMaterial::Description() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcMaterial::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcMaterial::Category() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcMaterial::setCategory(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -::Ifc4x3_add2::IfcMaterialDefinitionRepresentation::list::ptr Ifc4x3_add2::IfcMaterial::HasRepresentation() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[642], 3)->as(); } -::Ifc4x3_add2::IfcMaterialRelationship::list::ptr Ifc4x3_add2::IfcMaterial::IsRelatedWith() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[654], 3)->as(); } -::Ifc4x3_add2::IfcMaterialRelationship::list::ptr Ifc4x3_add2::IfcMaterial::RelatesTo() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[654], 2)->as(); } +std::vector<::Ifc4x3_add2::IfcMaterialDefinitionRepresentation> Ifc4x3_add2::IfcMaterial::HasRepresentation() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[642], 3)); } +std::vector<::Ifc4x3_add2::IfcMaterialRelationship> Ifc4x3_add2::IfcMaterial::IsRelatedWith() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[654], 3)); } +std::vector<::Ifc4x3_add2::IfcMaterialRelationship> Ifc4x3_add2::IfcMaterial::RelatesTo() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[654], 2)); } -const IfcParse::entity& Ifc4x3_add2::IfcMaterial::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[637]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterial::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[637]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterial::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[637]); } -Ifc4x3_add2::IfcMaterial::IfcMaterial(IfcEntityInstanceData&& e) : IfcMaterialDefinition(std::move(e)) { } -Ifc4x3_add2::IfcMaterial::IfcMaterial(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_Category) : IfcMaterialDefinition(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_Category) {set_attribute_value(2, (*v3_Category)); }; populate_derived(); } +// Ifc4x3_add2::IfcMaterial::IfcMaterial(const std::weak_ptr& e) : IfcMaterialDefinition(e) { } +// Ifc4x3_add2::IfcMaterial::IfcMaterial(std::string v1_Name, std::optional< std::string > v2_Description, std::optional< std::string > v3_Category) : IfcMaterialDefinition(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_Category) {set_attribute_value(2, (*v3_Category)); }; populate_derived(); } // Function implementations for IfcMaterialClassificationRelationship -aggregate_of< ::Ifc4x3_add2::IfcClassificationSelect >::ptr Ifc4x3_add2::IfcMaterialClassificationRelationship::MaterialClassifications() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcClassificationSelect >(); } -void Ifc4x3_add2::IfcMaterialClassificationRelationship::setMaterialClassifications(aggregate_of< ::Ifc4x3_add2::IfcClassificationSelect >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcMaterial* Ifc4x3_add2::IfcMaterialClassificationRelationship::ClassifiedMaterial() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcMaterial>(true); } -void Ifc4x3_add2::IfcMaterialClassificationRelationship::setClassifiedMaterial(::Ifc4x3_add2::IfcMaterial* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +std::vector< ::Ifc4x3_add2::IfcClassificationSelect > Ifc4x3_add2::IfcMaterialClassificationRelationship::MaterialClassifications() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcClassificationSelect>(es); } +void Ifc4x3_add2::IfcMaterialClassificationRelationship::setMaterialClassifications(const std::vector< ::Ifc4x3_add2::IfcClassificationSelect >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcMaterial Ifc4x3_add2::IfcMaterialClassificationRelationship::ClassifiedMaterial() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcMaterial>(); } +void Ifc4x3_add2::IfcMaterialClassificationRelationship::setClassifiedMaterial(const ::Ifc4x3_add2::IfcMaterial& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialClassificationRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[638]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialClassificationRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[638]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialClassificationRelationship::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[638]); } -Ifc4x3_add2::IfcMaterialClassificationRelationship::IfcMaterialClassificationRelationship(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcMaterialClassificationRelationship::IfcMaterialClassificationRelationship(aggregate_of< ::Ifc4x3_add2::IfcClassificationSelect >::ptr v1_MaterialClassifications, ::Ifc4x3_add2::IfcMaterial* v2_ClassifiedMaterial) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_MaterialClassifications)->generalize());set_attribute_value(1, v2_ClassifiedMaterial ? v2_ClassifiedMaterial->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcMaterialClassificationRelationship::IfcMaterialClassificationRelationship(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcMaterialClassificationRelationship::IfcMaterialClassificationRelationship(std::vector< ::Ifc4x3_add2::IfcClassificationSelect > v1_MaterialClassifications, ::Ifc4x3_add2::IfcMaterial v2_ClassifiedMaterial) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_MaterialClassifications)->generalize());set_attribute_value(1, (v2_ClassifiedMaterial));; populate_derived(); } // Function implementations for IfcMaterialConstituent -boost::optional< std::string > Ifc4x3_add2::IfcMaterialConstituent::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcMaterialConstituent::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcMaterialConstituent::Description() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -::Ifc4x3_add2::IfcMaterial* Ifc4x3_add2::IfcMaterialConstituent::Material() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcMaterial>(true); } -void Ifc4x3_add2::IfcMaterialConstituent::setMaterial(::Ifc4x3_add2::IfcMaterial* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -boost::optional< double > Ifc4x3_add2::IfcMaterialConstituent::Fraction() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcMaterialConstituent::setFraction(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< std::string > Ifc4x3_add2::IfcMaterialConstituent::Category() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcMaterialConstituent::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcMaterialConstituent::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcMaterialConstituent::Description() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcMaterialConstituent::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +::Ifc4x3_add2::IfcMaterial Ifc4x3_add2::IfcMaterialConstituent::Material() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcMaterial>(); } +void Ifc4x3_add2::IfcMaterialConstituent::setMaterial(const ::Ifc4x3_add2::IfcMaterial& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +std::optional< double > Ifc4x3_add2::IfcMaterialConstituent::Fraction() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcMaterialConstituent::setFraction(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< std::string > Ifc4x3_add2::IfcMaterialConstituent::Category() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcMaterialConstituent::setCategory(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -::Ifc4x3_add2::IfcMaterialConstituentSet::list::ptr Ifc4x3_add2::IfcMaterialConstituent::ToMaterialConstituentSet() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[640], 2)->as(); } +std::vector<::Ifc4x3_add2::IfcMaterialConstituentSet> Ifc4x3_add2::IfcMaterialConstituent::ToMaterialConstituentSet() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[640], 2)); } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialConstituent::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[639]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialConstituent::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[639]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialConstituent::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[639]); } -Ifc4x3_add2::IfcMaterialConstituent::IfcMaterialConstituent(IfcEntityInstanceData&& e) : IfcMaterialDefinition(std::move(e)) { } -Ifc4x3_add2::IfcMaterialConstituent::IfcMaterialConstituent(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial* v3_Material, boost::optional< double > v4_Fraction, boost::optional< std::string > v5_Category) : IfcMaterialDefinition(IfcEntityInstanceData(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_Material ? v3_Material->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v4_Fraction) {set_attribute_value(3, (*v4_Fraction)); } if (v5_Category) {set_attribute_value(4, (*v5_Category)); }; populate_derived(); } +// Ifc4x3_add2::IfcMaterialConstituent::IfcMaterialConstituent(const std::weak_ptr& e) : IfcMaterialDefinition(e) { } +// Ifc4x3_add2::IfcMaterialConstituent::IfcMaterialConstituent(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial v3_Material, std::optional< double > v4_Fraction, std::optional< std::string > v5_Category) : IfcMaterialDefinition(const std::weak_ptr&(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_Material)); if (v4_Fraction) {set_attribute_value(3, (*v4_Fraction)); } if (v5_Category) {set_attribute_value(4, (*v5_Category)); }; populate_derived(); } // Function implementations for IfcMaterialConstituentSet -boost::optional< std::string > Ifc4x3_add2::IfcMaterialConstituentSet::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcMaterialConstituentSet::Description() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcMaterialConstituent >::ptr > Ifc4x3_add2::IfcMaterialConstituentSet::MaterialConstituents() const { if(get_attribute_value(2).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcMaterialConstituent >(); } -void Ifc4x3_add2::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcMaterialConstituent >::ptr > v) { if (v) {set_attribute_value(2, (*v)->generalize());} else {unset_attribute_value(2);} } +std::optional< std::string > Ifc4x3_add2::IfcMaterialConstituentSet::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcMaterialConstituentSet::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcMaterialConstituentSet::Description() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcMaterialConstituentSet::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcMaterialConstituent > > Ifc4x3_add2::IfcMaterialConstituentSet::MaterialConstituents() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcMaterialConstituent>(es); } +void Ifc4x3_add2::IfcMaterialConstituentSet::setMaterialConstituents(const std::optional< std::vector< ::Ifc4x3_add2::IfcMaterialConstituent > >& v) { if (v) {set_attribute_value(2, cast_vector(*v));} else {unset_attribute_value(2);} } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialConstituentSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[640]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialConstituentSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[640]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialConstituentSet::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[640]); } -Ifc4x3_add2::IfcMaterialConstituentSet::IfcMaterialConstituentSet(IfcEntityInstanceData&& e) : IfcMaterialDefinition(std::move(e)) { } -Ifc4x3_add2::IfcMaterialConstituentSet::IfcMaterialConstituentSet(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcMaterialConstituent >::ptr > v3_MaterialConstituents) : IfcMaterialDefinition(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_MaterialConstituents) {set_attribute_value(2, (*v3_MaterialConstituents)->generalize()); }; populate_derived(); } +// Ifc4x3_add2::IfcMaterialConstituentSet::IfcMaterialConstituentSet(const std::weak_ptr& e) : IfcMaterialDefinition(e) { } +// Ifc4x3_add2::IfcMaterialConstituentSet::IfcMaterialConstituentSet(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::optional< std::vector< ::Ifc4x3_add2::IfcMaterialConstituent > > v3_MaterialConstituents) : IfcMaterialDefinition(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_MaterialConstituents) {set_attribute_value(2, (*v3_MaterialConstituents)->generalize()); }; populate_derived(); } // Function implementations for IfcMaterialDefinition -::Ifc4x3_add2::IfcRelAssociatesMaterial::list::ptr Ifc4x3_add2::IfcMaterialDefinition::AssociatedTo() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[914], 5)->as(); } -::Ifc4x3_add2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_add2::IfcMaterialDefinition::HasExternalReferences() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[427], 3)->as(); } -::Ifc4x3_add2::IfcMaterialProperties::list::ptr Ifc4x3_add2::IfcMaterialDefinition::HasProperties() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[653], 3)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssociatesMaterial> Ifc4x3_add2::IfcMaterialDefinition::AssociatedTo() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[914], 5)); } +std::vector<::Ifc4x3_add2::IfcExternalReferenceRelationship> Ifc4x3_add2::IfcMaterialDefinition::HasExternalReferences() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[427], 3)); } +std::vector<::Ifc4x3_add2::IfcMaterialProperties> Ifc4x3_add2::IfcMaterialDefinition::HasProperties() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[653], 3)); } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialDefinition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[641]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialDefinition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[641]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialDefinition::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[641]); } -Ifc4x3_add2::IfcMaterialDefinition::IfcMaterialDefinition(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcMaterialDefinition::IfcMaterialDefinition() : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcMaterialDefinition::IfcMaterialDefinition(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcMaterialDefinition::IfcMaterialDefinition() : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcMaterialDefinitionRepresentation -::Ifc4x3_add2::IfcMaterial* Ifc4x3_add2::IfcMaterialDefinitionRepresentation::RepresentedMaterial() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcMaterial>(true); } -void Ifc4x3_add2::IfcMaterialDefinitionRepresentation::setRepresentedMaterial(::Ifc4x3_add2::IfcMaterial* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcMaterial Ifc4x3_add2::IfcMaterialDefinitionRepresentation::RepresentedMaterial() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcMaterial>(); } +void Ifc4x3_add2::IfcMaterialDefinitionRepresentation::setRepresentedMaterial(const ::Ifc4x3_add2::IfcMaterial& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialDefinitionRepresentation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[642]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialDefinitionRepresentation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[642]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialDefinitionRepresentation::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[642]); } -Ifc4x3_add2::IfcMaterialDefinitionRepresentation::IfcMaterialDefinitionRepresentation(IfcEntityInstanceData&& e) : IfcProductRepresentation(std::move(e)) { } -Ifc4x3_add2::IfcMaterialDefinitionRepresentation::IfcMaterialDefinitionRepresentation(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcRepresentation >::ptr v3_Representations, ::Ifc4x3_add2::IfcMaterial* v4_RepresentedMaterial) : IfcProductRepresentation(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_Representations)->generalize());set_attribute_value(3, v4_RepresentedMaterial ? v4_RepresentedMaterial->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcMaterialDefinitionRepresentation::IfcMaterialDefinitionRepresentation(const std::weak_ptr& e) : IfcProductRepresentation(e) { } +// Ifc4x3_add2::IfcMaterialDefinitionRepresentation::IfcMaterialDefinitionRepresentation(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcRepresentation > v3_Representations, ::Ifc4x3_add2::IfcMaterial v4_RepresentedMaterial) : IfcProductRepresentation(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_Representations)->generalize());set_attribute_value(3, (v4_RepresentedMaterial));; populate_derived(); } // Function implementations for IfcMaterialLayer -::Ifc4x3_add2::IfcMaterial* Ifc4x3_add2::IfcMaterialLayer::Material() const { if(get_attribute_value(0).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcMaterial>(true); } -void Ifc4x3_add2::IfcMaterialLayer::setMaterial(::Ifc4x3_add2::IfcMaterial* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcMaterial Ifc4x3_add2::IfcMaterialLayer::Material() const { if(get_attribute_value(0).isNull()) { return ::Ifc4x3_add2::IfcMaterial{}; } return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcMaterial>(); } +void Ifc4x3_add2::IfcMaterialLayer::setMaterial(const ::Ifc4x3_add2::IfcMaterial& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } double Ifc4x3_add2::IfcMaterialLayer::LayerThickness() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcMaterialLayer::setLayerThickness(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -boost::optional< boost::logic::tribool > Ifc4x3_add2::IfcMaterialLayer::IsVentilated() const { if(get_attribute_value(2).isNull()) { return boost::none; } boost::logic::tribool v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< std::string > Ifc4x3_add2::IfcMaterialLayer::Name() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcMaterialLayer::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< std::string > Ifc4x3_add2::IfcMaterialLayer::Description() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcMaterialLayer::Category() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< int > Ifc4x3_add2::IfcMaterialLayer::Priority() const { if(get_attribute_value(6).isNull()) { return boost::none; } int v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcMaterialLayer::setPriority(boost::optional< int > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +void Ifc4x3_add2::IfcMaterialLayer::setLayerThickness(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< boost::logic::tribool > Ifc4x3_add2::IfcMaterialLayer::IsVentilated() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } boost::logic::tribool v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcMaterialLayer::setIsVentilated(const std::optional< boost::logic::tribool >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::string > Ifc4x3_add2::IfcMaterialLayer::Name() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcMaterialLayer::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< std::string > Ifc4x3_add2::IfcMaterialLayer::Description() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcMaterialLayer::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcMaterialLayer::Category() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcMaterialLayer::setCategory(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< int > Ifc4x3_add2::IfcMaterialLayer::Priority() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } int v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcMaterialLayer::setPriority(const std::optional< int >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -::Ifc4x3_add2::IfcMaterialLayerSet::list::ptr Ifc4x3_add2::IfcMaterialLayer::ToMaterialLayerSet() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[644], 0)->as(); } +std::vector<::Ifc4x3_add2::IfcMaterialLayerSet> Ifc4x3_add2::IfcMaterialLayer::ToMaterialLayerSet() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[644], 0)); } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialLayer::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[643]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialLayer::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[643]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialLayer::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[643]); } -Ifc4x3_add2::IfcMaterialLayer::IfcMaterialLayer(IfcEntityInstanceData&& e) : IfcMaterialDefinition(std::move(e)) { } -Ifc4x3_add2::IfcMaterialLayer::IfcMaterialLayer(::Ifc4x3_add2::IfcMaterial* v1_Material, double v2_LayerThickness, boost::optional< boost::logic::tribool > v3_IsVentilated, boost::optional< std::string > v4_Name, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Category, boost::optional< int > v7_Priority) : IfcMaterialDefinition(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, v1_Material ? v1_Material->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_LayerThickness)); if (v3_IsVentilated) {set_attribute_value(2, (*v3_IsVentilated)); } if (v4_Name) {set_attribute_value(3, (*v4_Name)); } if (v5_Description) {set_attribute_value(4, (*v5_Description)); } if (v6_Category) {set_attribute_value(5, (*v6_Category)); } if (v7_Priority) {set_attribute_value(6, (*v7_Priority)); }; populate_derived(); } +// Ifc4x3_add2::IfcMaterialLayer::IfcMaterialLayer(const std::weak_ptr& e) : IfcMaterialDefinition(e) { } +// Ifc4x3_add2::IfcMaterialLayer::IfcMaterialLayer(::Ifc4x3_add2::IfcMaterial v1_Material, double v2_LayerThickness, std::optional< boost::logic::tribool > v3_IsVentilated, std::optional< std::string > v4_Name, std::optional< std::string > v5_Description, std::optional< std::string > v6_Category, std::optional< int > v7_Priority) : IfcMaterialDefinition(const std::weak_ptr&(in_memory_attribute_storage(7))) { if (v1_Material) {set_attribute_value(0, (*v1_Material)); }set_attribute_value(1, (v2_LayerThickness)); if (v3_IsVentilated) {set_attribute_value(2, (*v3_IsVentilated)); } if (v4_Name) {set_attribute_value(3, (*v4_Name)); } if (v5_Description) {set_attribute_value(4, (*v5_Description)); } if (v6_Category) {set_attribute_value(5, (*v6_Category)); } if (v7_Priority) {set_attribute_value(6, (*v7_Priority)); }; populate_derived(); } // Function implementations for IfcMaterialLayerSet -aggregate_of< ::Ifc4x3_add2::IfcMaterialLayer >::ptr Ifc4x3_add2::IfcMaterialLayerSet::MaterialLayers() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcMaterialLayer >(); } -void Ifc4x3_add2::IfcMaterialLayerSet::setMaterialLayers(aggregate_of< ::Ifc4x3_add2::IfcMaterialLayer >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } -boost::optional< std::string > Ifc4x3_add2::IfcMaterialLayerSet::LayerSetName() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::string > Ifc4x3_add2::IfcMaterialLayerSet::Description() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::vector< ::Ifc4x3_add2::IfcMaterialLayer > Ifc4x3_add2::IfcMaterialLayerSet::MaterialLayers() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcMaterialLayer>(es); } +void Ifc4x3_add2::IfcMaterialLayerSet::setMaterialLayers(const std::vector< ::Ifc4x3_add2::IfcMaterialLayer >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } +std::optional< std::string > Ifc4x3_add2::IfcMaterialLayerSet::LayerSetName() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcMaterialLayerSet::setLayerSetName(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcMaterialLayerSet::Description() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcMaterialLayerSet::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialLayerSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[644]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialLayerSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[644]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialLayerSet::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[644]); } -Ifc4x3_add2::IfcMaterialLayerSet::IfcMaterialLayerSet(IfcEntityInstanceData&& e) : IfcMaterialDefinition(std::move(e)) { } -Ifc4x3_add2::IfcMaterialLayerSet::IfcMaterialLayerSet(aggregate_of< ::Ifc4x3_add2::IfcMaterialLayer >::ptr v1_MaterialLayers, boost::optional< std::string > v2_LayerSetName, boost::optional< std::string > v3_Description) : IfcMaterialDefinition(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_MaterialLayers)->generalize()); if (v2_LayerSetName) {set_attribute_value(1, (*v2_LayerSetName)); } if (v3_Description) {set_attribute_value(2, (*v3_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcMaterialLayerSet::IfcMaterialLayerSet(const std::weak_ptr& e) : IfcMaterialDefinition(e) { } +// Ifc4x3_add2::IfcMaterialLayerSet::IfcMaterialLayerSet(std::vector< ::Ifc4x3_add2::IfcMaterialLayer > v1_MaterialLayers, std::optional< std::string > v2_LayerSetName, std::optional< std::string > v3_Description) : IfcMaterialDefinition(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_MaterialLayers)->generalize()); if (v2_LayerSetName) {set_attribute_value(1, (*v2_LayerSetName)); } if (v3_Description) {set_attribute_value(2, (*v3_Description)); }; populate_derived(); } // Function implementations for IfcMaterialLayerSetUsage -::Ifc4x3_add2::IfcMaterialLayerSet* Ifc4x3_add2::IfcMaterialLayerSetUsage::ForLayerSet() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcMaterialLayerSet>(true); } -void Ifc4x3_add2::IfcMaterialLayerSetUsage::setForLayerSet(::Ifc4x3_add2::IfcMaterialLayerSet* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcMaterialLayerSet Ifc4x3_add2::IfcMaterialLayerSetUsage::ForLayerSet() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcMaterialLayerSet>(); } +void Ifc4x3_add2::IfcMaterialLayerSetUsage::setForLayerSet(const ::Ifc4x3_add2::IfcMaterialLayerSet& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value Ifc4x3_add2::IfcMaterialLayerSetUsage::LayerSetDirection() const { return ::Ifc4x3_add2::IfcLayerSetDirectionEnum::FromString(get_attribute_value(1)); } -void Ifc4x3_add2::IfcMaterialLayerSetUsage::setLayerSetDirection(::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value v) { set_attribute_value(1, EnumerationReference(&::Ifc4x3_add2::IfcLayerSetDirectionEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcMaterialLayerSetUsage::setLayerSetDirection(const ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value& v) { set_attribute_value(1, EnumerationReference(&::Ifc4x3_add2::IfcLayerSetDirectionEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(1); } ::Ifc4x3_add2::IfcDirectionSenseEnum::Value Ifc4x3_add2::IfcMaterialLayerSetUsage::DirectionSense() const { return ::Ifc4x3_add2::IfcDirectionSenseEnum::FromString(get_attribute_value(2)); } -void Ifc4x3_add2::IfcMaterialLayerSetUsage::setDirectionSense(::Ifc4x3_add2::IfcDirectionSenseEnum::Value v) { set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcDirectionSenseEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcMaterialLayerSetUsage::setDirectionSense(const ::Ifc4x3_add2::IfcDirectionSenseEnum::Value& v) { set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcDirectionSenseEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(2); } double Ifc4x3_add2::IfcMaterialLayerSetUsage::OffsetFromReferenceLine() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcMaterialLayerSetUsage::setOffsetFromReferenceLine(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -boost::optional< double > Ifc4x3_add2::IfcMaterialLayerSetUsage::ReferenceExtent() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +void Ifc4x3_add2::IfcMaterialLayerSetUsage::setOffsetFromReferenceLine(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< double > Ifc4x3_add2::IfcMaterialLayerSetUsage::ReferenceExtent() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcMaterialLayerSetUsage::setReferenceExtent(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialLayerSetUsage::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[645]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialLayerSetUsage::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[645]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialLayerSetUsage::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[645]); } -Ifc4x3_add2::IfcMaterialLayerSetUsage::IfcMaterialLayerSetUsage(IfcEntityInstanceData&& e) : IfcMaterialUsageDefinition(std::move(e)) { } -Ifc4x3_add2::IfcMaterialLayerSetUsage::IfcMaterialLayerSetUsage(::Ifc4x3_add2::IfcMaterialLayerSet* v1_ForLayerSet, ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value v2_LayerSetDirection, ::Ifc4x3_add2::IfcDirectionSenseEnum::Value v3_DirectionSense, double v4_OffsetFromReferenceLine, boost::optional< double > v5_ReferenceExtent) : IfcMaterialUsageDefinition(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_ForLayerSet ? v1_ForLayerSet->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcLayerSetDirectionEnum::Class(),(size_t)v2_LayerSetDirection)));set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcDirectionSenseEnum::Class(),(size_t)v3_DirectionSense)));set_attribute_value(3, (v4_OffsetFromReferenceLine)); if (v5_ReferenceExtent) {set_attribute_value(4, (*v5_ReferenceExtent)); }; populate_derived(); } +// Ifc4x3_add2::IfcMaterialLayerSetUsage::IfcMaterialLayerSetUsage(const std::weak_ptr& e) : IfcMaterialUsageDefinition(e) { } +// Ifc4x3_add2::IfcMaterialLayerSetUsage::IfcMaterialLayerSetUsage(::Ifc4x3_add2::IfcMaterialLayerSet v1_ForLayerSet, ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value v2_LayerSetDirection, ::Ifc4x3_add2::IfcDirectionSenseEnum::Value v3_DirectionSense, double v4_OffsetFromReferenceLine, std::optional< double > v5_ReferenceExtent) : IfcMaterialUsageDefinition(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_ForLayerSet));set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcLayerSetDirectionEnum::Class(),(size_t)v2_LayerSetDirection)));set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcDirectionSenseEnum::Class(),(size_t)v3_DirectionSense)));set_attribute_value(3, (v4_OffsetFromReferenceLine)); if (v5_ReferenceExtent) {set_attribute_value(4, (*v5_ReferenceExtent)); }; populate_derived(); } // Function implementations for IfcMaterialLayerWithOffsets ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value Ifc4x3_add2::IfcMaterialLayerWithOffsets::OffsetDirection() const { return ::Ifc4x3_add2::IfcLayerSetDirectionEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcMaterialLayerWithOffsets::setOffsetDirection(::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcLayerSetDirectionEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } +void Ifc4x3_add2::IfcMaterialLayerWithOffsets::setOffsetDirection(const ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value& v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcLayerSetDirectionEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } std::vector< double > /*[1:2]*/ Ifc4x3_add2::IfcMaterialLayerWithOffsets::OffsetValues() const { std::vector< double > /*[1:2]*/ v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcMaterialLayerWithOffsets::setOffsetValues(std::vector< double > /*[1:2]*/ v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcMaterialLayerWithOffsets::setOffsetValues(const std::vector< double > /*[1:2]*/& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialLayerWithOffsets::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[646]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialLayerWithOffsets::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[646]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialLayerWithOffsets::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[646]); } -Ifc4x3_add2::IfcMaterialLayerWithOffsets::IfcMaterialLayerWithOffsets(IfcEntityInstanceData&& e) : IfcMaterialLayer(std::move(e)) { } -Ifc4x3_add2::IfcMaterialLayerWithOffsets::IfcMaterialLayerWithOffsets(::Ifc4x3_add2::IfcMaterial* v1_Material, double v2_LayerThickness, boost::optional< boost::logic::tribool > v3_IsVentilated, boost::optional< std::string > v4_Name, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Category, boost::optional< int > v7_Priority, ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value v8_OffsetDirection, std::vector< double > /*[1:2]*/ v9_OffsetValues) : IfcMaterialLayer(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, v1_Material ? v1_Material->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_LayerThickness)); if (v3_IsVentilated) {set_attribute_value(2, (*v3_IsVentilated)); } if (v4_Name) {set_attribute_value(3, (*v4_Name)); } if (v5_Description) {set_attribute_value(4, (*v5_Description)); } if (v6_Category) {set_attribute_value(5, (*v6_Category)); } if (v7_Priority) {set_attribute_value(6, (*v7_Priority)); }set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcLayerSetDirectionEnum::Class(),(size_t)v8_OffsetDirection)));set_attribute_value(8, (v9_OffsetValues));; populate_derived(); } +// Ifc4x3_add2::IfcMaterialLayerWithOffsets::IfcMaterialLayerWithOffsets(const std::weak_ptr& e) : IfcMaterialLayer(e) { } +// Ifc4x3_add2::IfcMaterialLayerWithOffsets::IfcMaterialLayerWithOffsets(::Ifc4x3_add2::IfcMaterial v1_Material, double v2_LayerThickness, std::optional< boost::logic::tribool > v3_IsVentilated, std::optional< std::string > v4_Name, std::optional< std::string > v5_Description, std::optional< std::string > v6_Category, std::optional< int > v7_Priority, ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value v8_OffsetDirection, std::vector< double > /*[1:2]*/ v9_OffsetValues) : IfcMaterialLayer(const std::weak_ptr&(in_memory_attribute_storage(9))) { if (v1_Material) {set_attribute_value(0, (*v1_Material)); }set_attribute_value(1, (v2_LayerThickness)); if (v3_IsVentilated) {set_attribute_value(2, (*v3_IsVentilated)); } if (v4_Name) {set_attribute_value(3, (*v4_Name)); } if (v5_Description) {set_attribute_value(4, (*v5_Description)); } if (v6_Category) {set_attribute_value(5, (*v6_Category)); } if (v7_Priority) {set_attribute_value(6, (*v7_Priority)); }set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcLayerSetDirectionEnum::Class(),(size_t)v8_OffsetDirection)));set_attribute_value(8, (v9_OffsetValues));; populate_derived(); } // Function implementations for IfcMaterialList -aggregate_of< ::Ifc4x3_add2::IfcMaterial >::ptr Ifc4x3_add2::IfcMaterialList::Materials() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcMaterial >(); } -void Ifc4x3_add2::IfcMaterialList::setMaterials(aggregate_of< ::Ifc4x3_add2::IfcMaterial >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcMaterial > Ifc4x3_add2::IfcMaterialList::Materials() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcMaterial>(es); } +void Ifc4x3_add2::IfcMaterialList::setMaterials(const std::vector< ::Ifc4x3_add2::IfcMaterial >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialList::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[647]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialList::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[647]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialList::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[647]); } -Ifc4x3_add2::IfcMaterialList::IfcMaterialList(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcMaterialList::IfcMaterialList(aggregate_of< ::Ifc4x3_add2::IfcMaterial >::ptr v1_Materials) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Materials)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcMaterialList::IfcMaterialList(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcMaterialList::IfcMaterialList(std::vector< ::Ifc4x3_add2::IfcMaterial > v1_Materials) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Materials)->generalize());; populate_derived(); } // Function implementations for IfcMaterialProfile -boost::optional< std::string > Ifc4x3_add2::IfcMaterialProfile::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcMaterialProfile::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcMaterialProfile::Description() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -::Ifc4x3_add2::IfcMaterial* Ifc4x3_add2::IfcMaterialProfile::Material() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcMaterial>(true); } -void Ifc4x3_add2::IfcMaterialProfile::setMaterial(::Ifc4x3_add2::IfcMaterial* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcProfileDef* Ifc4x3_add2::IfcMaterialProfile::Profile() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcProfileDef>(true); } -void Ifc4x3_add2::IfcMaterialProfile::setProfile(::Ifc4x3_add2::IfcProfileDef* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -boost::optional< int > Ifc4x3_add2::IfcMaterialProfile::Priority() const { if(get_attribute_value(4).isNull()) { return boost::none; } int v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcMaterialProfile::setPriority(boost::optional< int > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcMaterialProfile::Category() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcMaterialProfile::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcMaterialProfile::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcMaterialProfile::Description() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcMaterialProfile::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +::Ifc4x3_add2::IfcMaterial Ifc4x3_add2::IfcMaterialProfile::Material() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcMaterial{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcMaterial>(); } +void Ifc4x3_add2::IfcMaterialProfile::setMaterial(const ::Ifc4x3_add2::IfcMaterial& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcProfileDef Ifc4x3_add2::IfcMaterialProfile::Profile() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcProfileDef>(); } +void Ifc4x3_add2::IfcMaterialProfile::setProfile(const ::Ifc4x3_add2::IfcProfileDef& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< int > Ifc4x3_add2::IfcMaterialProfile::Priority() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } int v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcMaterialProfile::setPriority(const std::optional< int >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcMaterialProfile::Category() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcMaterialProfile::setCategory(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -::Ifc4x3_add2::IfcMaterialProfileSet::list::ptr Ifc4x3_add2::IfcMaterialProfile::ToMaterialProfileSet() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[649], 2)->as(); } +std::vector<::Ifc4x3_add2::IfcMaterialProfileSet> Ifc4x3_add2::IfcMaterialProfile::ToMaterialProfileSet() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[649], 2)); } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialProfile::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[648]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialProfile::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[648]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialProfile::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[648]); } -Ifc4x3_add2::IfcMaterialProfile::IfcMaterialProfile(IfcEntityInstanceData&& e) : IfcMaterialDefinition(std::move(e)) { } -Ifc4x3_add2::IfcMaterialProfile::IfcMaterialProfile(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial* v3_Material, ::Ifc4x3_add2::IfcProfileDef* v4_Profile, boost::optional< int > v5_Priority, boost::optional< std::string > v6_Category) : IfcMaterialDefinition(IfcEntityInstanceData(in_memory_attribute_storage(6))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_Material ? v3_Material->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_Profile ? v4_Profile->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_Priority) {set_attribute_value(4, (*v5_Priority)); } if (v6_Category) {set_attribute_value(5, (*v6_Category)); }; populate_derived(); } +// Ifc4x3_add2::IfcMaterialProfile::IfcMaterialProfile(const std::weak_ptr& e) : IfcMaterialDefinition(e) { } +// Ifc4x3_add2::IfcMaterialProfile::IfcMaterialProfile(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial v3_Material, ::Ifc4x3_add2::IfcProfileDef v4_Profile, std::optional< int > v5_Priority, std::optional< std::string > v6_Category) : IfcMaterialDefinition(const std::weak_ptr&(in_memory_attribute_storage(6))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_Material) {set_attribute_value(2, (*v3_Material)); }set_attribute_value(3, (v4_Profile)); if (v5_Priority) {set_attribute_value(4, (*v5_Priority)); } if (v6_Category) {set_attribute_value(5, (*v6_Category)); }; populate_derived(); } // Function implementations for IfcMaterialProfileSet -boost::optional< std::string > Ifc4x3_add2::IfcMaterialProfileSet::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcMaterialProfileSet::Description() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -aggregate_of< ::Ifc4x3_add2::IfcMaterialProfile >::ptr Ifc4x3_add2::IfcMaterialProfileSet::MaterialProfiles() const { aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcMaterialProfile >(); } -void Ifc4x3_add2::IfcMaterialProfileSet::setMaterialProfiles(aggregate_of< ::Ifc4x3_add2::IfcMaterialProfile >::ptr v) { set_attribute_value(2, (v)->generalize());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcCompositeProfileDef* Ifc4x3_add2::IfcMaterialProfileSet::CompositeProfile() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcCompositeProfileDef>(true); } -void Ifc4x3_add2::IfcMaterialProfileSet::setCompositeProfile(::Ifc4x3_add2::IfcCompositeProfileDef* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcMaterialProfileSet::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcMaterialProfileSet::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcMaterialProfileSet::Description() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcMaterialProfileSet::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::vector< ::Ifc4x3_add2::IfcMaterialProfile > Ifc4x3_add2::IfcMaterialProfileSet::MaterialProfiles() const { std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcMaterialProfile>(es); } +void Ifc4x3_add2::IfcMaterialProfileSet::setMaterialProfiles(const std::vector< ::Ifc4x3_add2::IfcMaterialProfile >& v) { set_attribute_value(2, cast_vector(v));if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcCompositeProfileDef Ifc4x3_add2::IfcMaterialProfileSet::CompositeProfile() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcCompositeProfileDef{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcCompositeProfileDef>(); } +void Ifc4x3_add2::IfcMaterialProfileSet::setCompositeProfile(const ::Ifc4x3_add2::IfcCompositeProfileDef& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialProfileSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[649]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialProfileSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[649]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialProfileSet::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[649]); } -Ifc4x3_add2::IfcMaterialProfileSet::IfcMaterialProfileSet(IfcEntityInstanceData&& e) : IfcMaterialDefinition(std::move(e)) { } -Ifc4x3_add2::IfcMaterialProfileSet::IfcMaterialProfileSet(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcMaterialProfile >::ptr v3_MaterialProfiles, ::Ifc4x3_add2::IfcCompositeProfileDef* v4_CompositeProfile) : IfcMaterialDefinition(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_MaterialProfiles)->generalize());set_attribute_value(3, v4_CompositeProfile ? v4_CompositeProfile->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcMaterialProfileSet::IfcMaterialProfileSet(const std::weak_ptr& e) : IfcMaterialDefinition(e) { } +// Ifc4x3_add2::IfcMaterialProfileSet::IfcMaterialProfileSet(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcMaterialProfile > v3_MaterialProfiles, ::Ifc4x3_add2::IfcCompositeProfileDef v4_CompositeProfile) : IfcMaterialDefinition(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_MaterialProfiles)->generalize()); if (v4_CompositeProfile) {set_attribute_value(3, (*v4_CompositeProfile)); }; populate_derived(); } // Function implementations for IfcMaterialProfileSetUsage -::Ifc4x3_add2::IfcMaterialProfileSet* Ifc4x3_add2::IfcMaterialProfileSetUsage::ForProfileSet() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcMaterialProfileSet>(true); } -void Ifc4x3_add2::IfcMaterialProfileSetUsage::setForProfileSet(::Ifc4x3_add2::IfcMaterialProfileSet* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -boost::optional< int > Ifc4x3_add2::IfcMaterialProfileSetUsage::CardinalPoint() const { if(get_attribute_value(1).isNull()) { return boost::none; } int v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< double > Ifc4x3_add2::IfcMaterialProfileSetUsage::ReferenceExtent() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +::Ifc4x3_add2::IfcMaterialProfileSet Ifc4x3_add2::IfcMaterialProfileSetUsage::ForProfileSet() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcMaterialProfileSet>(); } +void Ifc4x3_add2::IfcMaterialProfileSetUsage::setForProfileSet(const ::Ifc4x3_add2::IfcMaterialProfileSet& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< int > Ifc4x3_add2::IfcMaterialProfileSetUsage::CardinalPoint() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } int v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcMaterialProfileSetUsage::setCardinalPoint(const std::optional< int >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< double > Ifc4x3_add2::IfcMaterialProfileSetUsage::ReferenceExtent() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcMaterialProfileSetUsage::setReferenceExtent(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialProfileSetUsage::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[650]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialProfileSetUsage::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[650]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialProfileSetUsage::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[650]); } -Ifc4x3_add2::IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(IfcEntityInstanceData&& e) : IfcMaterialUsageDefinition(std::move(e)) { } -Ifc4x3_add2::IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(::Ifc4x3_add2::IfcMaterialProfileSet* v1_ForProfileSet, boost::optional< int > v2_CardinalPoint, boost::optional< double > v3_ReferenceExtent) : IfcMaterialUsageDefinition(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_ForProfileSet ? v1_ForProfileSet->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_CardinalPoint) {set_attribute_value(1, (*v2_CardinalPoint)); } if (v3_ReferenceExtent) {set_attribute_value(2, (*v3_ReferenceExtent)); }; populate_derived(); } +// Ifc4x3_add2::IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(const std::weak_ptr& e) : IfcMaterialUsageDefinition(e) { } +// Ifc4x3_add2::IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(::Ifc4x3_add2::IfcMaterialProfileSet v1_ForProfileSet, std::optional< int > v2_CardinalPoint, std::optional< double > v3_ReferenceExtent) : IfcMaterialUsageDefinition(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_ForProfileSet)); if (v2_CardinalPoint) {set_attribute_value(1, (*v2_CardinalPoint)); } if (v3_ReferenceExtent) {set_attribute_value(2, (*v3_ReferenceExtent)); }; populate_derived(); } // Function implementations for IfcMaterialProfileSetUsageTapering -::Ifc4x3_add2::IfcMaterialProfileSet* Ifc4x3_add2::IfcMaterialProfileSetUsageTapering::ForProfileEndSet() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcMaterialProfileSet>(true); } -void Ifc4x3_add2::IfcMaterialProfileSetUsageTapering::setForProfileEndSet(::Ifc4x3_add2::IfcMaterialProfileSet* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -boost::optional< int > Ifc4x3_add2::IfcMaterialProfileSetUsageTapering::CardinalEndPoint() const { if(get_attribute_value(4).isNull()) { return boost::none; } int v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +::Ifc4x3_add2::IfcMaterialProfileSet Ifc4x3_add2::IfcMaterialProfileSetUsageTapering::ForProfileEndSet() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcMaterialProfileSet>(); } +void Ifc4x3_add2::IfcMaterialProfileSetUsageTapering::setForProfileEndSet(const ::Ifc4x3_add2::IfcMaterialProfileSet& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< int > Ifc4x3_add2::IfcMaterialProfileSetUsageTapering::CardinalEndPoint() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } int v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(const std::optional< int >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialProfileSetUsageTapering::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[651]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialProfileSetUsageTapering::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[651]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialProfileSetUsageTapering::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[651]); } -Ifc4x3_add2::IfcMaterialProfileSetUsageTapering::IfcMaterialProfileSetUsageTapering(IfcEntityInstanceData&& e) : IfcMaterialProfileSetUsage(std::move(e)) { } -Ifc4x3_add2::IfcMaterialProfileSetUsageTapering::IfcMaterialProfileSetUsageTapering(::Ifc4x3_add2::IfcMaterialProfileSet* v1_ForProfileSet, boost::optional< int > v2_CardinalPoint, boost::optional< double > v3_ReferenceExtent, ::Ifc4x3_add2::IfcMaterialProfileSet* v4_ForProfileEndSet, boost::optional< int > v5_CardinalEndPoint) : IfcMaterialProfileSetUsage(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_ForProfileSet ? v1_ForProfileSet->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_CardinalPoint) {set_attribute_value(1, (*v2_CardinalPoint)); } if (v3_ReferenceExtent) {set_attribute_value(2, (*v3_ReferenceExtent)); }set_attribute_value(3, v4_ForProfileEndSet ? v4_ForProfileEndSet->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_CardinalEndPoint) {set_attribute_value(4, (*v5_CardinalEndPoint)); }; populate_derived(); } +// Ifc4x3_add2::IfcMaterialProfileSetUsageTapering::IfcMaterialProfileSetUsageTapering(const std::weak_ptr& e) : IfcMaterialProfileSetUsage(e) { } +// Ifc4x3_add2::IfcMaterialProfileSetUsageTapering::IfcMaterialProfileSetUsageTapering(::Ifc4x3_add2::IfcMaterialProfileSet v1_ForProfileSet, std::optional< int > v2_CardinalPoint, std::optional< double > v3_ReferenceExtent, ::Ifc4x3_add2::IfcMaterialProfileSet v4_ForProfileEndSet, std::optional< int > v5_CardinalEndPoint) : IfcMaterialProfileSetUsage(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_ForProfileSet)); if (v2_CardinalPoint) {set_attribute_value(1, (*v2_CardinalPoint)); } if (v3_ReferenceExtent) {set_attribute_value(2, (*v3_ReferenceExtent)); }set_attribute_value(3, (v4_ForProfileEndSet)); if (v5_CardinalEndPoint) {set_attribute_value(4, (*v5_CardinalEndPoint)); }; populate_derived(); } // Function implementations for IfcMaterialProfileWithOffsets std::vector< double > /*[1:2]*/ Ifc4x3_add2::IfcMaterialProfileWithOffsets::OffsetValues() const { std::vector< double > /*[1:2]*/ v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcMaterialProfileWithOffsets::setOffsetValues(std::vector< double > /*[1:2]*/ v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +void Ifc4x3_add2::IfcMaterialProfileWithOffsets::setOffsetValues(const std::vector< double > /*[1:2]*/& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialProfileWithOffsets::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[652]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialProfileWithOffsets::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[652]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialProfileWithOffsets::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[652]); } -Ifc4x3_add2::IfcMaterialProfileWithOffsets::IfcMaterialProfileWithOffsets(IfcEntityInstanceData&& e) : IfcMaterialProfile(std::move(e)) { } -Ifc4x3_add2::IfcMaterialProfileWithOffsets::IfcMaterialProfileWithOffsets(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial* v3_Material, ::Ifc4x3_add2::IfcProfileDef* v4_Profile, boost::optional< int > v5_Priority, boost::optional< std::string > v6_Category, std::vector< double > /*[1:2]*/ v7_OffsetValues) : IfcMaterialProfile(IfcEntityInstanceData(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_Material ? v3_Material->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_Profile ? v4_Profile->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_Priority) {set_attribute_value(4, (*v5_Priority)); } if (v6_Category) {set_attribute_value(5, (*v6_Category)); }set_attribute_value(6, (v7_OffsetValues));; populate_derived(); } +// Ifc4x3_add2::IfcMaterialProfileWithOffsets::IfcMaterialProfileWithOffsets(const std::weak_ptr& e) : IfcMaterialProfile(e) { } +// Ifc4x3_add2::IfcMaterialProfileWithOffsets::IfcMaterialProfileWithOffsets(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial v3_Material, ::Ifc4x3_add2::IfcProfileDef v4_Profile, std::optional< int > v5_Priority, std::optional< std::string > v6_Category, std::vector< double > /*[1:2]*/ v7_OffsetValues) : IfcMaterialProfile(const std::weak_ptr&(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_Material) {set_attribute_value(2, (*v3_Material)); }set_attribute_value(3, (v4_Profile)); if (v5_Priority) {set_attribute_value(4, (*v5_Priority)); } if (v6_Category) {set_attribute_value(5, (*v6_Category)); }set_attribute_value(6, (v7_OffsetValues));; populate_derived(); } // Function implementations for IfcMaterialProperties -::Ifc4x3_add2::IfcMaterialDefinition* Ifc4x3_add2::IfcMaterialProperties::Material() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcMaterialDefinition>(true); } -void Ifc4x3_add2::IfcMaterialProperties::setMaterial(::Ifc4x3_add2::IfcMaterialDefinition* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcMaterialDefinition Ifc4x3_add2::IfcMaterialProperties::Material() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcMaterialDefinition>(); } +void Ifc4x3_add2::IfcMaterialProperties::setMaterial(const ::Ifc4x3_add2::IfcMaterialDefinition& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[653]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[653]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialProperties::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[653]); } -Ifc4x3_add2::IfcMaterialProperties::IfcMaterialProperties(IfcEntityInstanceData&& e) : IfcExtendedProperties(std::move(e)) { } -Ifc4x3_add2::IfcMaterialProperties::IfcMaterialProperties(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v3_Properties, ::Ifc4x3_add2::IfcMaterialDefinition* v4_Material) : IfcExtendedProperties(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_Properties)->generalize());set_attribute_value(3, v4_Material ? v4_Material->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcMaterialProperties::IfcMaterialProperties(const std::weak_ptr& e) : IfcExtendedProperties(e) { } +// Ifc4x3_add2::IfcMaterialProperties::IfcMaterialProperties(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcProperty > v3_Properties, ::Ifc4x3_add2::IfcMaterialDefinition v4_Material) : IfcExtendedProperties(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_Properties)->generalize());set_attribute_value(3, (v4_Material));; populate_derived(); } // Function implementations for IfcMaterialRelationship -::Ifc4x3_add2::IfcMaterial* Ifc4x3_add2::IfcMaterialRelationship::RelatingMaterial() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcMaterial>(true); } -void Ifc4x3_add2::IfcMaterialRelationship::setRelatingMaterial(::Ifc4x3_add2::IfcMaterial* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -aggregate_of< ::Ifc4x3_add2::IfcMaterial >::ptr Ifc4x3_add2::IfcMaterialRelationship::RelatedMaterials() const { aggregate_of_instance::ptr es = get_attribute_value(3); return es->as< ::Ifc4x3_add2::IfcMaterial >(); } -void Ifc4x3_add2::IfcMaterialRelationship::setRelatedMaterials(aggregate_of< ::Ifc4x3_add2::IfcMaterial >::ptr v) { set_attribute_value(3, (v)->generalize());if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcMaterialRelationship::MaterialExpression() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcMaterialRelationship::setMaterialExpression(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +::Ifc4x3_add2::IfcMaterial Ifc4x3_add2::IfcMaterialRelationship::RelatingMaterial() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcMaterial>(); } +void Ifc4x3_add2::IfcMaterialRelationship::setRelatingMaterial(const ::Ifc4x3_add2::IfcMaterial& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +std::vector< ::Ifc4x3_add2::IfcMaterial > Ifc4x3_add2::IfcMaterialRelationship::RelatedMaterials() const { std::vector es = get_attribute_value(3); return cast_vector<::Ifc4x3_add2::IfcMaterial>(es); } +void Ifc4x3_add2::IfcMaterialRelationship::setRelatedMaterials(const std::vector< ::Ifc4x3_add2::IfcMaterial >& v) { set_attribute_value(3, cast_vector(v));if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcMaterialRelationship::MaterialExpression() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcMaterialRelationship::setMaterialExpression(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[654]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[654]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialRelationship::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[654]); } -Ifc4x3_add2::IfcMaterialRelationship::IfcMaterialRelationship(IfcEntityInstanceData&& e) : IfcResourceLevelRelationship(std::move(e)) { } -Ifc4x3_add2::IfcMaterialRelationship::IfcMaterialRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial* v3_RelatingMaterial, aggregate_of< ::Ifc4x3_add2::IfcMaterial >::ptr v4_RelatedMaterials, boost::optional< std::string > v5_MaterialExpression) : IfcResourceLevelRelationship(IfcEntityInstanceData(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_RelatingMaterial ? v3_RelatingMaterial->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_RelatedMaterials)->generalize()); if (v5_MaterialExpression) {set_attribute_value(4, (*v5_MaterialExpression)); }; populate_derived(); } +// Ifc4x3_add2::IfcMaterialRelationship::IfcMaterialRelationship(const std::weak_ptr& e) : IfcResourceLevelRelationship(e) { } +// Ifc4x3_add2::IfcMaterialRelationship::IfcMaterialRelationship(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial v3_RelatingMaterial, std::vector< ::Ifc4x3_add2::IfcMaterial > v4_RelatedMaterials, std::optional< std::string > v5_MaterialExpression) : IfcResourceLevelRelationship(const std::weak_ptr&(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_RelatingMaterial));set_attribute_value(3, (v4_RelatedMaterials)->generalize()); if (v5_MaterialExpression) {set_attribute_value(4, (*v5_MaterialExpression)); }; populate_derived(); } // Function implementations for IfcMaterialUsageDefinition -::Ifc4x3_add2::IfcRelAssociatesMaterial::list::ptr Ifc4x3_add2::IfcMaterialUsageDefinition::AssociatedTo() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[914], 5)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssociatesMaterial> Ifc4x3_add2::IfcMaterialUsageDefinition::AssociatedTo() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[914], 5)); } -const IfcParse::entity& Ifc4x3_add2::IfcMaterialUsageDefinition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[656]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMaterialUsageDefinition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[656]); } const IfcParse::entity& Ifc4x3_add2::IfcMaterialUsageDefinition::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[656]); } -Ifc4x3_add2::IfcMaterialUsageDefinition::IfcMaterialUsageDefinition(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcMaterialUsageDefinition::IfcMaterialUsageDefinition() : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcMaterialUsageDefinition::IfcMaterialUsageDefinition(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcMaterialUsageDefinition::IfcMaterialUsageDefinition() : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcMeasureWithUnit -::Ifc4x3_add2::IfcValue* Ifc4x3_add2::IfcMeasureWithUnit::ValueComponent() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcValue>(true); } -void Ifc4x3_add2::IfcMeasureWithUnit::setValueComponent(::Ifc4x3_add2::IfcValue* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcUnit* Ifc4x3_add2::IfcMeasureWithUnit::UnitComponent() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcUnit>(true); } -void Ifc4x3_add2::IfcMeasureWithUnit::setUnitComponent(::Ifc4x3_add2::IfcUnit* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcValue Ifc4x3_add2::IfcMeasureWithUnit::ValueComponent() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcValue>(); } +void Ifc4x3_add2::IfcMeasureWithUnit::setValueComponent(const ::Ifc4x3_add2::IfcValue& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcUnit Ifc4x3_add2::IfcMeasureWithUnit::UnitComponent() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcUnit>(); } +void Ifc4x3_add2::IfcMeasureWithUnit::setUnitComponent(const ::Ifc4x3_add2::IfcUnit& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcMeasureWithUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[658]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMeasureWithUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[658]); } const IfcParse::entity& Ifc4x3_add2::IfcMeasureWithUnit::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[658]); } -Ifc4x3_add2::IfcMeasureWithUnit::IfcMeasureWithUnit(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcMeasureWithUnit::IfcMeasureWithUnit(::Ifc4x3_add2::IfcValue* v1_ValueComponent, ::Ifc4x3_add2::IfcUnit* v2_UnitComponent) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_ValueComponent ? v1_ValueComponent->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_UnitComponent ? v2_UnitComponent->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcMeasureWithUnit::IfcMeasureWithUnit(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcMeasureWithUnit::IfcMeasureWithUnit(::Ifc4x3_add2::IfcValue v1_ValueComponent, ::Ifc4x3_add2::IfcUnit v2_UnitComponent) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_ValueComponent));set_attribute_value(1, (v2_UnitComponent));; populate_derived(); } // Function implementations for IfcMechanicalFastener -boost::optional< double > Ifc4x3_add2::IfcMechanicalFastener::NominalDiameter() const { if(get_attribute_value(8).isNull()) { return boost::none; } double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -boost::optional< double > Ifc4x3_add2::IfcMechanicalFastener::NominalLength() const { if(get_attribute_value(9).isNull()) { return boost::none; } double v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -boost::optional< ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value > Ifc4x3_add2::IfcMechanicalFastener::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< double > Ifc4x3_add2::IfcMechanicalFastener::NominalDiameter() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } double v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcMechanicalFastener::setNominalDiameter(const std::optional< double >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< double > Ifc4x3_add2::IfcMechanicalFastener::NominalLength() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } double v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcMechanicalFastener::setNominalLength(const std::optional< double >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value > Ifc4x3_add2::IfcMechanicalFastener::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcMechanicalFastener::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcMechanicalFastener::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[659]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMechanicalFastener::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[659]); } const IfcParse::entity& Ifc4x3_add2::IfcMechanicalFastener::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[659]); } -Ifc4x3_add2::IfcMechanicalFastener::IfcMechanicalFastener(IfcEntityInstanceData&& e) : IfcElementComponent(std::move(e)) { } -Ifc4x3_add2::IfcMechanicalFastener::IfcMechanicalFastener(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_NominalDiameter, boost::optional< double > v10_NominalLength, boost::optional< ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value > v11_PredefinedType) : IfcElementComponent(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_NominalDiameter) {set_attribute_value(8, (*v9_NominalDiameter)); } if (v10_NominalLength) {set_attribute_value(9, (*v10_NominalLength)); } if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcMechanicalFastener::IfcMechanicalFastener(const std::weak_ptr& e) : IfcElementComponent(e) { } +// Ifc4x3_add2::IfcMechanicalFastener::IfcMechanicalFastener(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< double > v9_NominalDiameter, std::optional< double > v10_NominalLength, std::optional< ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value > v11_PredefinedType) : IfcElementComponent(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_NominalDiameter) {set_attribute_value(8, (*v9_NominalDiameter)); } if (v10_NominalLength) {set_attribute_value(9, (*v10_NominalLength)); } if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } // Function implementations for IfcMechanicalFastenerType ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value Ifc4x3_add2::IfcMechanicalFastenerType::PredefinedType() const { return ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcMechanicalFastenerType::setPredefinedType(::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -boost::optional< double > Ifc4x3_add2::IfcMechanicalFastenerType::NominalDiameter() const { if(get_attribute_value(10).isNull()) { return boost::none; } double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< double > Ifc4x3_add2::IfcMechanicalFastenerType::NominalLength() const { if(get_attribute_value(11).isNull()) { return boost::none; } double v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +void Ifc4x3_add2::IfcMechanicalFastenerType::setPredefinedType(const ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +std::optional< double > Ifc4x3_add2::IfcMechanicalFastenerType::NominalDiameter() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } double v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcMechanicalFastenerType::setNominalDiameter(const std::optional< double >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< double > Ifc4x3_add2::IfcMechanicalFastenerType::NominalLength() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } double v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcMechanicalFastenerType::setNominalLength(const std::optional< double >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -const IfcParse::entity& Ifc4x3_add2::IfcMechanicalFastenerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[660]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMechanicalFastenerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[660]); } const IfcParse::entity& Ifc4x3_add2::IfcMechanicalFastenerType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[660]); } -Ifc4x3_add2::IfcMechanicalFastenerType::IfcMechanicalFastenerType(IfcEntityInstanceData&& e) : IfcElementComponentType(std::move(e)) { } -Ifc4x3_add2::IfcMechanicalFastenerType::IfcMechanicalFastenerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_NominalLength) : IfcElementComponentType(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Class(),(size_t)v10_PredefinedType))); if (v11_NominalDiameter) {set_attribute_value(10, (*v11_NominalDiameter)); } if (v12_NominalLength) {set_attribute_value(11, (*v12_NominalLength)); }; populate_derived(); } +// Ifc4x3_add2::IfcMechanicalFastenerType::IfcMechanicalFastenerType(const std::weak_ptr& e) : IfcElementComponentType(e) { } +// Ifc4x3_add2::IfcMechanicalFastenerType::IfcMechanicalFastenerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value v10_PredefinedType, std::optional< double > v11_NominalDiameter, std::optional< double > v12_NominalLength) : IfcElementComponentType(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Class(),(size_t)v10_PredefinedType))); if (v11_NominalDiameter) {set_attribute_value(10, (*v11_NominalDiameter)); } if (v12_NominalLength) {set_attribute_value(11, (*v12_NominalLength)); }; populate_derived(); } // Function implementations for IfcMedicalDevice -boost::optional< ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value > Ifc4x3_add2::IfcMedicalDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value > Ifc4x3_add2::IfcMedicalDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcMedicalDevice::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcMedicalDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[662]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMedicalDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[662]); } const IfcParse::entity& Ifc4x3_add2::IfcMedicalDevice::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[662]); } -Ifc4x3_add2::IfcMedicalDevice::IfcMedicalDevice(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcMedicalDevice::IfcMedicalDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcMedicalDevice::IfcMedicalDevice(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcMedicalDevice::IfcMedicalDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcMedicalDeviceType ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value Ifc4x3_add2::IfcMedicalDeviceType::PredefinedType() const { return ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcMedicalDeviceType::setPredefinedType(::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcMedicalDeviceType::setPredefinedType(const ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcMedicalDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[663]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMedicalDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[663]); } const IfcParse::entity& Ifc4x3_add2::IfcMedicalDeviceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[663]); } -Ifc4x3_add2::IfcMedicalDeviceType::IfcMedicalDeviceType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcMedicalDeviceType::IfcMedicalDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcMedicalDeviceType::IfcMedicalDeviceType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcMedicalDeviceType::IfcMedicalDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcMember -boost::optional< ::Ifc4x3_add2::IfcMemberTypeEnum::Value > Ifc4x3_add2::IfcMember::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcMemberTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcMember::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMemberTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcMemberTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcMemberTypeEnum::Value > Ifc4x3_add2::IfcMember::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcMemberTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcMember::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMemberTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcMemberTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcMember::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[665]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMember::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[665]); } const IfcParse::entity& Ifc4x3_add2::IfcMember::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[665]); } -Ifc4x3_add2::IfcMember::IfcMember(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcMember::IfcMember(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcMemberTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcMemberTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcMember::IfcMember(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcMember::IfcMember(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcMemberTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcMemberTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcMemberType ::Ifc4x3_add2::IfcMemberTypeEnum::Value Ifc4x3_add2::IfcMemberType::PredefinedType() const { return ::Ifc4x3_add2::IfcMemberTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcMemberType::setPredefinedType(::Ifc4x3_add2::IfcMemberTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcMemberTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcMemberType::setPredefinedType(const ::Ifc4x3_add2::IfcMemberTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcMemberTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcMemberType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[666]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMemberType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[666]); } const IfcParse::entity& Ifc4x3_add2::IfcMemberType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[666]); } -Ifc4x3_add2::IfcMemberType::IfcMemberType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcMemberType::IfcMemberType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMemberTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcMemberTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcMemberType::IfcMemberType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcMemberType::IfcMemberType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMemberTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcMemberTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcMetric ::Ifc4x3_add2::IfcBenchmarkEnum::Value Ifc4x3_add2::IfcMetric::Benchmark() const { return ::Ifc4x3_add2::IfcBenchmarkEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcMetric::setBenchmark(::Ifc4x3_add2::IfcBenchmarkEnum::Value v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcBenchmarkEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } -boost::optional< std::string > Ifc4x3_add2::IfcMetric::ValueSource() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcMetric::setValueSource(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -::Ifc4x3_add2::IfcMetricValueSelect* Ifc4x3_add2::IfcMetric::DataValue() const { if(get_attribute_value(9).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(9)))->as<::Ifc4x3_add2::IfcMetricValueSelect>(true); } -void Ifc4x3_add2::IfcMetric::setDataValue(::Ifc4x3_add2::IfcMetricValueSelect* v) { set_attribute_value(9, v->as());if constexpr (false)unset_attribute_value(9); } -::Ifc4x3_add2::IfcReference* Ifc4x3_add2::IfcMetric::ReferencePath() const { if(get_attribute_value(10).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(10)))->as<::Ifc4x3_add2::IfcReference>(true); } -void Ifc4x3_add2::IfcMetric::setReferencePath(::Ifc4x3_add2::IfcReference* v) { set_attribute_value(10, v->as());if constexpr (false)unset_attribute_value(10); } +void Ifc4x3_add2::IfcMetric::setBenchmark(const ::Ifc4x3_add2::IfcBenchmarkEnum::Value& v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcBenchmarkEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } +std::optional< std::string > Ifc4x3_add2::IfcMetric::ValueSource() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcMetric::setValueSource(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +::Ifc4x3_add2::IfcMetricValueSelect Ifc4x3_add2::IfcMetric::DataValue() const { if(get_attribute_value(9).isNull()) { return ::Ifc4x3_add2::IfcMetricValueSelect{}; } return ((express::Base)(get_attribute_value(9))).as<::Ifc4x3_add2::IfcMetricValueSelect>(); } +void Ifc4x3_add2::IfcMetric::setDataValue(const ::Ifc4x3_add2::IfcMetricValueSelect& v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } +::Ifc4x3_add2::IfcReference Ifc4x3_add2::IfcMetric::ReferencePath() const { if(get_attribute_value(10).isNull()) { return ::Ifc4x3_add2::IfcReference{}; } return ((express::Base)(get_attribute_value(10))).as<::Ifc4x3_add2::IfcReference>(); } +void Ifc4x3_add2::IfcMetric::setReferencePath(const ::Ifc4x3_add2::IfcReference& v) { set_attribute_value(10, v);if constexpr (false)unset_attribute_value(10); } -const IfcParse::entity& Ifc4x3_add2::IfcMetric::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[668]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMetric::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[668]); } const IfcParse::entity& Ifc4x3_add2::IfcMetric::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[668]); } -Ifc4x3_add2::IfcMetric::IfcMetric(IfcEntityInstanceData&& e) : IfcConstraint(std::move(e)) { } -Ifc4x3_add2::IfcMetric::IfcMetric(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc4x3_add2::IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, ::Ifc4x3_add2::IfcBenchmarkEnum::Value v8_Benchmark, boost::optional< std::string > v9_ValueSource, ::Ifc4x3_add2::IfcMetricValueSelect* v10_DataValue, ::Ifc4x3_add2::IfcReference* v11_ReferencePath) : IfcConstraint(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcConstraintEnum::Class(),(size_t)v3_ConstraintGrade))); if (v4_ConstraintSource) {set_attribute_value(3, (*v4_ConstraintSource)); }set_attribute_value(4, v5_CreatingActor ? v5_CreatingActor->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v6_CreationTime) {set_attribute_value(5, (*v6_CreationTime)); } if (v7_UserDefinedGrade) {set_attribute_value(6, (*v7_UserDefinedGrade)); }set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcBenchmarkEnum::Class(),(size_t)v8_Benchmark))); if (v9_ValueSource) {set_attribute_value(8, (*v9_ValueSource)); }set_attribute_value(9, v10_DataValue ? v10_DataValue->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(10, v11_ReferencePath ? v11_ReferencePath->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcMetric::IfcMetric(const std::weak_ptr& e) : IfcConstraint(e) { } +// Ifc4x3_add2::IfcMetric::IfcMetric(std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcConstraintEnum::Value v3_ConstraintGrade, std::optional< std::string > v4_ConstraintSource, ::Ifc4x3_add2::IfcActorSelect v5_CreatingActor, std::optional< std::string > v6_CreationTime, std::optional< std::string > v7_UserDefinedGrade, ::Ifc4x3_add2::IfcBenchmarkEnum::Value v8_Benchmark, std::optional< std::string > v9_ValueSource, ::Ifc4x3_add2::IfcMetricValueSelect v10_DataValue, ::Ifc4x3_add2::IfcReference v11_ReferencePath) : IfcConstraint(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcConstraintEnum::Class(),(size_t)v3_ConstraintGrade))); if (v4_ConstraintSource) {set_attribute_value(3, (*v4_ConstraintSource)); } if (v5_CreatingActor) {set_attribute_value(4, (*v5_CreatingActor)); } if (v6_CreationTime) {set_attribute_value(5, (*v6_CreationTime)); } if (v7_UserDefinedGrade) {set_attribute_value(6, (*v7_UserDefinedGrade)); }set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcBenchmarkEnum::Class(),(size_t)v8_Benchmark))); if (v9_ValueSource) {set_attribute_value(8, (*v9_ValueSource)); } if (v10_DataValue) {set_attribute_value(9, (*v10_DataValue)); } if (v11_ReferencePath) {set_attribute_value(10, (*v11_ReferencePath)); }; populate_derived(); } // Function implementations for IfcMirroredProfileDef -const IfcParse::entity& Ifc4x3_add2::IfcMirroredProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[670]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMirroredProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[670]); } const IfcParse::entity& Ifc4x3_add2::IfcMirroredProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[670]); } -Ifc4x3_add2::IfcMirroredProfileDef::IfcMirroredProfileDef(IfcEntityInstanceData&& e) : IfcDerivedProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcMirroredProfileDef::IfcMirroredProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcProfileDef* v3_ParentProfile, boost::optional< std::string > v5_Label) : IfcDerivedProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_ParentProfile ? v3_ParentProfile->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_Label) {set_attribute_value(4, (*v5_Label)); }; populate_derived(); } +// Ifc4x3_add2::IfcMirroredProfileDef::IfcMirroredProfileDef(const std::weak_ptr& e) : IfcDerivedProfileDef(e) { } +// Ifc4x3_add2::IfcMirroredProfileDef::IfcMirroredProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcProfileDef v3_ParentProfile, std::optional< std::string > v5_Label) : IfcDerivedProfileDef(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, (v3_ParentProfile)); if (v5_Label) {set_attribute_value(4, (*v5_Label)); }; populate_derived(); } // Function implementations for IfcMobileTelecommunicationsAppliance -boost::optional< ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > Ifc4x3_add2::IfcMobileTelecommunicationsAppliance::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcMobileTelecommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > Ifc4x3_add2::IfcMobileTelecommunicationsAppliance::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcMobileTelecommunicationsAppliance::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcMobileTelecommunicationsAppliance::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[671]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMobileTelecommunicationsAppliance::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[671]); } const IfcParse::entity& Ifc4x3_add2::IfcMobileTelecommunicationsAppliance::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[671]); } -Ifc4x3_add2::IfcMobileTelecommunicationsAppliance::IfcMobileTelecommunicationsAppliance(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcMobileTelecommunicationsAppliance::IfcMobileTelecommunicationsAppliance(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcMobileTelecommunicationsAppliance::IfcMobileTelecommunicationsAppliance(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcMobileTelecommunicationsAppliance::IfcMobileTelecommunicationsAppliance(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcMobileTelecommunicationsApplianceType ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value Ifc4x3_add2::IfcMobileTelecommunicationsApplianceType::PredefinedType() const { return ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcMobileTelecommunicationsApplianceType::setPredefinedType(::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcMobileTelecommunicationsApplianceType::setPredefinedType(const ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcMobileTelecommunicationsApplianceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[672]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMobileTelecommunicationsApplianceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[672]); } const IfcParse::entity& Ifc4x3_add2::IfcMobileTelecommunicationsApplianceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[672]); } -Ifc4x3_add2::IfcMobileTelecommunicationsApplianceType::IfcMobileTelecommunicationsApplianceType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcMobileTelecommunicationsApplianceType::IfcMobileTelecommunicationsApplianceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcMobileTelecommunicationsApplianceType::IfcMobileTelecommunicationsApplianceType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcMobileTelecommunicationsApplianceType::IfcMobileTelecommunicationsApplianceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcMonetaryUnit std::string Ifc4x3_add2::IfcMonetaryUnit::Currency() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcMonetaryUnit::setCurrency(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcMonetaryUnit::setCurrency(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcMonetaryUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[685]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMonetaryUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[685]); } const IfcParse::entity& Ifc4x3_add2::IfcMonetaryUnit::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[685]); } -Ifc4x3_add2::IfcMonetaryUnit::IfcMonetaryUnit(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcMonetaryUnit::IfcMonetaryUnit(std::string v1_Currency) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Currency));; populate_derived(); } +// Ifc4x3_add2::IfcMonetaryUnit::IfcMonetaryUnit(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcMonetaryUnit::IfcMonetaryUnit(std::string v1_Currency) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Currency));; populate_derived(); } // Function implementations for IfcMooringDevice -boost::optional< ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value > Ifc4x3_add2::IfcMooringDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcMooringDevice::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value > Ifc4x3_add2::IfcMooringDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcMooringDevice::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcMooringDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[687]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMooringDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[687]); } const IfcParse::entity& Ifc4x3_add2::IfcMooringDevice::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[687]); } -Ifc4x3_add2::IfcMooringDevice::IfcMooringDevice(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcMooringDevice::IfcMooringDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcMooringDevice::IfcMooringDevice(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcMooringDevice::IfcMooringDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcMooringDeviceType ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value Ifc4x3_add2::IfcMooringDeviceType::PredefinedType() const { return ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcMooringDeviceType::setPredefinedType(::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcMooringDeviceType::setPredefinedType(const ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcMooringDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[688]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMooringDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[688]); } const IfcParse::entity& Ifc4x3_add2::IfcMooringDeviceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[688]); } -Ifc4x3_add2::IfcMooringDeviceType::IfcMooringDeviceType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcMooringDeviceType::IfcMooringDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcMooringDeviceType::IfcMooringDeviceType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcMooringDeviceType::IfcMooringDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcMotorConnection -boost::optional< ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value > Ifc4x3_add2::IfcMotorConnection::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value > Ifc4x3_add2::IfcMotorConnection::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcMotorConnection::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcMotorConnection::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[690]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMotorConnection::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[690]); } const IfcParse::entity& Ifc4x3_add2::IfcMotorConnection::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[690]); } -Ifc4x3_add2::IfcMotorConnection::IfcMotorConnection(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcMotorConnection::IfcMotorConnection(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcMotorConnection::IfcMotorConnection(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcMotorConnection::IfcMotorConnection(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcMotorConnectionType ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value Ifc4x3_add2::IfcMotorConnectionType::PredefinedType() const { return ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcMotorConnectionType::setPredefinedType(::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcMotorConnectionType::setPredefinedType(const ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcMotorConnectionType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[691]); } +// const IfcParse::entity& Ifc4x3_add2::IfcMotorConnectionType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[691]); } const IfcParse::entity& Ifc4x3_add2::IfcMotorConnectionType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[691]); } -Ifc4x3_add2::IfcMotorConnectionType::IfcMotorConnectionType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcMotorConnectionType::IfcMotorConnectionType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcMotorConnectionType::IfcMotorConnectionType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcMotorConnectionType::IfcMotorConnectionType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcNamedUnit -::Ifc4x3_add2::IfcDimensionalExponents* Ifc4x3_add2::IfcNamedUnit::Dimensions() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcDimensionalExponents>(true); } -void Ifc4x3_add2::IfcNamedUnit::setDimensions(::Ifc4x3_add2::IfcDimensionalExponents* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcDimensionalExponents Ifc4x3_add2::IfcNamedUnit::Dimensions() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcDimensionalExponents>(); } +void Ifc4x3_add2::IfcNamedUnit::setDimensions(const ::Ifc4x3_add2::IfcDimensionalExponents& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } ::Ifc4x3_add2::IfcUnitEnum::Value Ifc4x3_add2::IfcNamedUnit::UnitType() const { return ::Ifc4x3_add2::IfcUnitEnum::FromString(get_attribute_value(1)); } -void Ifc4x3_add2::IfcNamedUnit::setUnitType(::Ifc4x3_add2::IfcUnitEnum::Value v) { set_attribute_value(1, EnumerationReference(&::Ifc4x3_add2::IfcUnitEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcNamedUnit::setUnitType(const ::Ifc4x3_add2::IfcUnitEnum::Value& v) { set_attribute_value(1, EnumerationReference(&::Ifc4x3_add2::IfcUnitEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcNamedUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[693]); } +// const IfcParse::entity& Ifc4x3_add2::IfcNamedUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[693]); } const IfcParse::entity& Ifc4x3_add2::IfcNamedUnit::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[693]); } -Ifc4x3_add2::IfcNamedUnit::IfcNamedUnit(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcNamedUnit::IfcNamedUnit(::Ifc4x3_add2::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Dimensions ? v1_Dimensions->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcUnitEnum::Class(),(size_t)v2_UnitType)));; populate_derived(); } +// Ifc4x3_add2::IfcNamedUnit::IfcNamedUnit(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcNamedUnit::IfcNamedUnit(::Ifc4x3_add2::IfcDimensionalExponents v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Dimensions));set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcUnitEnum::Class(),(size_t)v2_UnitType)));; populate_derived(); } // Function implementations for IfcNavigationElement -boost::optional< ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value > Ifc4x3_add2::IfcNavigationElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcNavigationElementTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcNavigationElement::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcNavigationElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value > Ifc4x3_add2::IfcNavigationElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcNavigationElementTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcNavigationElement::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcNavigationElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcNavigationElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[694]); } +// const IfcParse::entity& Ifc4x3_add2::IfcNavigationElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[694]); } const IfcParse::entity& Ifc4x3_add2::IfcNavigationElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[694]); } -Ifc4x3_add2::IfcNavigationElement::IfcNavigationElement(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcNavigationElement::IfcNavigationElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcNavigationElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcNavigationElement::IfcNavigationElement(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcNavigationElement::IfcNavigationElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcNavigationElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcNavigationElementType ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value Ifc4x3_add2::IfcNavigationElementType::PredefinedType() const { return ::Ifc4x3_add2::IfcNavigationElementTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcNavigationElementType::setPredefinedType(::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcNavigationElementTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcNavigationElementType::setPredefinedType(const ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcNavigationElementTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcNavigationElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[695]); } +// const IfcParse::entity& Ifc4x3_add2::IfcNavigationElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[695]); } const IfcParse::entity& Ifc4x3_add2::IfcNavigationElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[695]); } -Ifc4x3_add2::IfcNavigationElementType::IfcNavigationElementType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcNavigationElementType::IfcNavigationElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcNavigationElementTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcNavigationElementType::IfcNavigationElementType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcNavigationElementType::IfcNavigationElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcNavigationElementTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcObject -boost::optional< std::string > Ifc4x3_add2::IfcObject::ObjectType() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcObject::setObjectType(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcObject::ObjectType() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcObject::setObjectType(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -::Ifc4x3_add2::IfcRelDefinesByObject::list::ptr Ifc4x3_add2::IfcObject::IsDeclaredBy() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[932], 4)->as(); } -::Ifc4x3_add2::IfcRelDefinesByObject::list::ptr Ifc4x3_add2::IfcObject::Declares() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[932], 5)->as(); } -::Ifc4x3_add2::IfcRelDefinesByType::list::ptr Ifc4x3_add2::IfcObject::IsTypedBy() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[935], 4)->as(); } -::Ifc4x3_add2::IfcRelDefinesByProperties::list::ptr Ifc4x3_add2::IfcObject::IsDefinedBy() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[933], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelDefinesByObject> Ifc4x3_add2::IfcObject::IsDeclaredBy() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[932], 4)); } +std::vector<::Ifc4x3_add2::IfcRelDefinesByObject> Ifc4x3_add2::IfcObject::Declares() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[932], 5)); } +std::vector<::Ifc4x3_add2::IfcRelDefinesByType> Ifc4x3_add2::IfcObject::IsTypedBy() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[935], 4)); } +std::vector<::Ifc4x3_add2::IfcRelDefinesByProperties> Ifc4x3_add2::IfcObject::IsDefinedBy() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[933], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcObject::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[700]); } +// const IfcParse::entity& Ifc4x3_add2::IfcObject::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[700]); } const IfcParse::entity& Ifc4x3_add2::IfcObject::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[700]); } -Ifc4x3_add2::IfcObject::IfcObject(IfcEntityInstanceData&& e) : IfcObjectDefinition(std::move(e)) { } -Ifc4x3_add2::IfcObject::IfcObject(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType) : IfcObjectDefinition(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }; populate_derived(); } +// Ifc4x3_add2::IfcObject::IfcObject(const std::weak_ptr& e) : IfcObjectDefinition(e) { } +// Ifc4x3_add2::IfcObject::IfcObject(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType) : IfcObjectDefinition(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }; populate_derived(); } // Function implementations for IfcObjectDefinition -::Ifc4x3_add2::IfcRelAssigns::list::ptr Ifc4x3_add2::IfcObjectDefinition::HasAssignments() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[900], 4)->as(); } -::Ifc4x3_add2::IfcRelNests::list::ptr Ifc4x3_add2::IfcObjectDefinition::Nests() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[939], 5)->as(); } -::Ifc4x3_add2::IfcRelNests::list::ptr Ifc4x3_add2::IfcObjectDefinition::IsNestedBy() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[939], 4)->as(); } -::Ifc4x3_add2::IfcRelDeclares::list::ptr Ifc4x3_add2::IfcObjectDefinition::HasContext() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[929], 5)->as(); } -::Ifc4x3_add2::IfcRelAggregates::list::ptr Ifc4x3_add2::IfcObjectDefinition::IsDecomposedBy() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[899], 4)->as(); } -::Ifc4x3_add2::IfcRelAggregates::list::ptr Ifc4x3_add2::IfcObjectDefinition::Decomposes() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[899], 5)->as(); } -::Ifc4x3_add2::IfcRelAssociates::list::ptr Ifc4x3_add2::IfcObjectDefinition::HasAssociations() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[908], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssigns> Ifc4x3_add2::IfcObjectDefinition::HasAssignments() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[900], 4)); } +std::vector<::Ifc4x3_add2::IfcRelNests> Ifc4x3_add2::IfcObjectDefinition::Nests() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[939], 5)); } +std::vector<::Ifc4x3_add2::IfcRelNests> Ifc4x3_add2::IfcObjectDefinition::IsNestedBy() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[939], 4)); } +std::vector<::Ifc4x3_add2::IfcRelDeclares> Ifc4x3_add2::IfcObjectDefinition::HasContext() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[929], 5)); } +std::vector<::Ifc4x3_add2::IfcRelAggregates> Ifc4x3_add2::IfcObjectDefinition::IsDecomposedBy() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[899], 4)); } +std::vector<::Ifc4x3_add2::IfcRelAggregates> Ifc4x3_add2::IfcObjectDefinition::Decomposes() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[899], 5)); } +std::vector<::Ifc4x3_add2::IfcRelAssociates> Ifc4x3_add2::IfcObjectDefinition::HasAssociations() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[908], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcObjectDefinition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[701]); } +// const IfcParse::entity& Ifc4x3_add2::IfcObjectDefinition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[701]); } const IfcParse::entity& Ifc4x3_add2::IfcObjectDefinition::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[701]); } -Ifc4x3_add2::IfcObjectDefinition::IfcObjectDefinition(IfcEntityInstanceData&& e) : IfcRoot(std::move(e)) { } -Ifc4x3_add2::IfcObjectDefinition::IfcObjectDefinition(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRoot(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcObjectDefinition::IfcObjectDefinition(const std::weak_ptr& e) : IfcRoot(e) { } +// Ifc4x3_add2::IfcObjectDefinition::IfcObjectDefinition(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description) : IfcRoot(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } // Function implementations for IfcObjectPlacement -::Ifc4x3_add2::IfcObjectPlacement* Ifc4x3_add2::IfcObjectPlacement::PlacementRelTo() const { if(get_attribute_value(0).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcObjectPlacement>(true); } -void Ifc4x3_add2::IfcObjectPlacement::setPlacementRelTo(::Ifc4x3_add2::IfcObjectPlacement* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcObjectPlacement Ifc4x3_add2::IfcObjectPlacement::PlacementRelTo() const { if(get_attribute_value(0).isNull()) { return ::Ifc4x3_add2::IfcObjectPlacement{}; } return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcObjectPlacement>(); } +void Ifc4x3_add2::IfcObjectPlacement::setPlacementRelTo(const ::Ifc4x3_add2::IfcObjectPlacement& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcProduct::list::ptr Ifc4x3_add2::IfcObjectPlacement::PlacesObject() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[800], 5)->as(); } -::Ifc4x3_add2::IfcObjectPlacement::list::ptr Ifc4x3_add2::IfcObjectPlacement::ReferencedByPlacements() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[704], 0)->as(); } +std::vector<::Ifc4x3_add2::IfcProduct> Ifc4x3_add2::IfcObjectPlacement::PlacesObject() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[800], 5)); } +std::vector<::Ifc4x3_add2::IfcObjectPlacement> Ifc4x3_add2::IfcObjectPlacement::ReferencedByPlacements() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[704], 0)); } -const IfcParse::entity& Ifc4x3_add2::IfcObjectPlacement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[704]); } +// const IfcParse::entity& Ifc4x3_add2::IfcObjectPlacement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[704]); } const IfcParse::entity& Ifc4x3_add2::IfcObjectPlacement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[704]); } -Ifc4x3_add2::IfcObjectPlacement::IfcObjectPlacement(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcObjectPlacement::IfcObjectPlacement(::Ifc4x3_add2::IfcObjectPlacement* v1_PlacementRelTo) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, v1_PlacementRelTo ? v1_PlacementRelTo->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcObjectPlacement::IfcObjectPlacement(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcObjectPlacement::IfcObjectPlacement(::Ifc4x3_add2::IfcObjectPlacement v1_PlacementRelTo) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(1))) { if (v1_PlacementRelTo) {set_attribute_value(0, (*v1_PlacementRelTo)); }; populate_derived(); } // Function implementations for IfcObjective -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcConstraint >::ptr > Ifc4x3_add2::IfcObjective::BenchmarkValues() const { if(get_attribute_value(7).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(7); return es->as< ::Ifc4x3_add2::IfcConstraint >(); } -void Ifc4x3_add2::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcConstraint >::ptr > v) { if (v) {set_attribute_value(7, (*v)->generalize());} else {unset_attribute_value(7);} } -boost::optional< ::Ifc4x3_add2::IfcLogicalOperatorEnum::Value > Ifc4x3_add2::IfcObjective::LogicalAggregator() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcLogicalOperatorEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4x3_add2::IfcLogicalOperatorEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcLogicalOperatorEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcConstraint > > Ifc4x3_add2::IfcObjective::BenchmarkValues() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(7); return cast_vector<::Ifc4x3_add2::IfcConstraint>(es); } +void Ifc4x3_add2::IfcObjective::setBenchmarkValues(const std::optional< std::vector< ::Ifc4x3_add2::IfcConstraint > >& v) { if (v) {set_attribute_value(7, cast_vector(*v));} else {unset_attribute_value(7);} } +std::optional< ::Ifc4x3_add2::IfcLogicalOperatorEnum::Value > Ifc4x3_add2::IfcObjective::LogicalAggregator() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcLogicalOperatorEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcObjective::setLogicalAggregator(const std::optional< ::Ifc4x3_add2::IfcLogicalOperatorEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcLogicalOperatorEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } ::Ifc4x3_add2::IfcObjectiveEnum::Value Ifc4x3_add2::IfcObjective::ObjectiveQualifier() const { return ::Ifc4x3_add2::IfcObjectiveEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcObjective::setObjectiveQualifier(::Ifc4x3_add2::IfcObjectiveEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcObjectiveEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -boost::optional< std::string > Ifc4x3_add2::IfcObjective::UserDefinedQualifier() const { if(get_attribute_value(10).isNull()) { return boost::none; } std::string v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +void Ifc4x3_add2::IfcObjective::setObjectiveQualifier(const ::Ifc4x3_add2::IfcObjectiveEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcObjectiveEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +std::optional< std::string > Ifc4x3_add2::IfcObjective::UserDefinedQualifier() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } std::string v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcObjective::setUserDefinedQualifier(const std::optional< std::string >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcObjective::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[702]); } +// const IfcParse::entity& Ifc4x3_add2::IfcObjective::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[702]); } const IfcParse::entity& Ifc4x3_add2::IfcObjective::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[702]); } -Ifc4x3_add2::IfcObjective::IfcObjective(IfcEntityInstanceData&& e) : IfcConstraint(std::move(e)) { } -Ifc4x3_add2::IfcObjective::IfcObjective(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc4x3_add2::IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcConstraint >::ptr > v8_BenchmarkValues, boost::optional< ::Ifc4x3_add2::IfcLogicalOperatorEnum::Value > v9_LogicalAggregator, ::Ifc4x3_add2::IfcObjectiveEnum::Value v10_ObjectiveQualifier, boost::optional< std::string > v11_UserDefinedQualifier) : IfcConstraint(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcConstraintEnum::Class(),(size_t)v3_ConstraintGrade))); if (v4_ConstraintSource) {set_attribute_value(3, (*v4_ConstraintSource)); }set_attribute_value(4, v5_CreatingActor ? v5_CreatingActor->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v6_CreationTime) {set_attribute_value(5, (*v6_CreationTime)); } if (v7_UserDefinedGrade) {set_attribute_value(6, (*v7_UserDefinedGrade)); } if (v8_BenchmarkValues) {set_attribute_value(7, (*v8_BenchmarkValues)->generalize()); } if (v9_LogicalAggregator) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcLogicalOperatorEnum::Class(),(size_t)*v9_LogicalAggregator))); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcObjectiveEnum::Class(),(size_t)v10_ObjectiveQualifier))); if (v11_UserDefinedQualifier) {set_attribute_value(10, (*v11_UserDefinedQualifier)); }; populate_derived(); } +// Ifc4x3_add2::IfcObjective::IfcObjective(const std::weak_ptr& e) : IfcConstraint(e) { } +// Ifc4x3_add2::IfcObjective::IfcObjective(std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcConstraintEnum::Value v3_ConstraintGrade, std::optional< std::string > v4_ConstraintSource, ::Ifc4x3_add2::IfcActorSelect v5_CreatingActor, std::optional< std::string > v6_CreationTime, std::optional< std::string > v7_UserDefinedGrade, std::optional< std::vector< ::Ifc4x3_add2::IfcConstraint > > v8_BenchmarkValues, std::optional< ::Ifc4x3_add2::IfcLogicalOperatorEnum::Value > v9_LogicalAggregator, ::Ifc4x3_add2::IfcObjectiveEnum::Value v10_ObjectiveQualifier, std::optional< std::string > v11_UserDefinedQualifier) : IfcConstraint(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcConstraintEnum::Class(),(size_t)v3_ConstraintGrade))); if (v4_ConstraintSource) {set_attribute_value(3, (*v4_ConstraintSource)); } if (v5_CreatingActor) {set_attribute_value(4, (*v5_CreatingActor)); } if (v6_CreationTime) {set_attribute_value(5, (*v6_CreationTime)); } if (v7_UserDefinedGrade) {set_attribute_value(6, (*v7_UserDefinedGrade)); } if (v8_BenchmarkValues) {set_attribute_value(7, (*v8_BenchmarkValues)->generalize()); } if (v9_LogicalAggregator) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcLogicalOperatorEnum::Class(),(size_t)*v9_LogicalAggregator))); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcObjectiveEnum::Class(),(size_t)v10_ObjectiveQualifier))); if (v11_UserDefinedQualifier) {set_attribute_value(10, (*v11_UserDefinedQualifier)); }; populate_derived(); } // Function implementations for IfcOccupant -boost::optional< ::Ifc4x3_add2::IfcOccupantTypeEnum::Value > Ifc4x3_add2::IfcOccupant::PredefinedType() const { if(get_attribute_value(6).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcOccupantTypeEnum::FromString(get_attribute_value(6)); } -void Ifc4x3_add2::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcOccupantTypeEnum::Value > v) { if (v) {set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcOccupantTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(6);} } +std::optional< ::Ifc4x3_add2::IfcOccupantTypeEnum::Value > Ifc4x3_add2::IfcOccupant::PredefinedType() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcOccupantTypeEnum::FromString(get_attribute_value(6)); } +void Ifc4x3_add2::IfcOccupant::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcOccupantTypeEnum::Value >& v) { if (v) {set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcOccupantTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(6);} } -const IfcParse::entity& Ifc4x3_add2::IfcOccupant::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[706]); } +// const IfcParse::entity& Ifc4x3_add2::IfcOccupant::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[706]); } const IfcParse::entity& Ifc4x3_add2::IfcOccupant::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[706]); } -Ifc4x3_add2::IfcOccupant::IfcOccupant(IfcEntityInstanceData&& e) : IfcActor(std::move(e)) { } -Ifc4x3_add2::IfcOccupant::IfcOccupant(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcActorSelect* v6_TheActor, boost::optional< ::Ifc4x3_add2::IfcOccupantTypeEnum::Value > v7_PredefinedType) : IfcActor(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_TheActor ? v6_TheActor->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcOccupantTypeEnum::Class(),(size_t)*v7_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcOccupant::IfcOccupant(const std::weak_ptr& e) : IfcActor(e) { } +// Ifc4x3_add2::IfcOccupant::IfcOccupant(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcActorSelect v6_TheActor, std::optional< ::Ifc4x3_add2::IfcOccupantTypeEnum::Value > v7_PredefinedType) : IfcActor(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, (v6_TheActor)); if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcOccupantTypeEnum::Class(),(size_t)*v7_PredefinedType))); }; populate_derived(); } // Function implementations for IfcOffsetCurve -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcOffsetCurve::BasisCurve() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcOffsetCurve::setBasisCurve(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcOffsetCurve::BasisCurve() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcOffsetCurve::setBasisCurve(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcOffsetCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[708]); } +// const IfcParse::entity& Ifc4x3_add2::IfcOffsetCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[708]); } const IfcParse::entity& Ifc4x3_add2::IfcOffsetCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[708]); } -Ifc4x3_add2::IfcOffsetCurve::IfcOffsetCurve(IfcEntityInstanceData&& e) : IfcCurve(std::move(e)) { } -Ifc4x3_add2::IfcOffsetCurve::IfcOffsetCurve(::Ifc4x3_add2::IfcCurve* v1_BasisCurve) : IfcCurve(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, v1_BasisCurve ? v1_BasisCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcOffsetCurve::IfcOffsetCurve(const std::weak_ptr& e) : IfcCurve(e) { } +// Ifc4x3_add2::IfcOffsetCurve::IfcOffsetCurve(::Ifc4x3_add2::IfcCurve v1_BasisCurve) : IfcCurve(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_BasisCurve));; populate_derived(); } // Function implementations for IfcOffsetCurve2D double Ifc4x3_add2::IfcOffsetCurve2D::Distance() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcOffsetCurve2D::setDistance(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcOffsetCurve2D::setDistance(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } boost::logic::tribool Ifc4x3_add2::IfcOffsetCurve2D::SelfIntersect() const { boost::logic::tribool v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcOffsetCurve2D::setSelfIntersect(boost::logic::tribool v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcOffsetCurve2D::setSelfIntersect(const boost::logic::tribool& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcOffsetCurve2D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[709]); } +// const IfcParse::entity& Ifc4x3_add2::IfcOffsetCurve2D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[709]); } const IfcParse::entity& Ifc4x3_add2::IfcOffsetCurve2D::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[709]); } -Ifc4x3_add2::IfcOffsetCurve2D::IfcOffsetCurve2D(IfcEntityInstanceData&& e) : IfcOffsetCurve(std::move(e)) { } -Ifc4x3_add2::IfcOffsetCurve2D::IfcOffsetCurve2D(::Ifc4x3_add2::IfcCurve* v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect) : IfcOffsetCurve(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_BasisCurve ? v1_BasisCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Distance));set_attribute_value(2, (v3_SelfIntersect));; populate_derived(); } +// Ifc4x3_add2::IfcOffsetCurve2D::IfcOffsetCurve2D(const std::weak_ptr& e) : IfcOffsetCurve(e) { } +// Ifc4x3_add2::IfcOffsetCurve2D::IfcOffsetCurve2D(::Ifc4x3_add2::IfcCurve v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect) : IfcOffsetCurve(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_BasisCurve));set_attribute_value(1, (v2_Distance));set_attribute_value(2, (v3_SelfIntersect));; populate_derived(); } // Function implementations for IfcOffsetCurve3D double Ifc4x3_add2::IfcOffsetCurve3D::Distance() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcOffsetCurve3D::setDistance(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcOffsetCurve3D::setDistance(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } boost::logic::tribool Ifc4x3_add2::IfcOffsetCurve3D::SelfIntersect() const { boost::logic::tribool v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcOffsetCurve3D::setSelfIntersect(boost::logic::tribool v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcOffsetCurve3D::RefDirection() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcOffsetCurve3D::setRefDirection(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcOffsetCurve3D::setSelfIntersect(const boost::logic::tribool& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcOffsetCurve3D::RefDirection() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcOffsetCurve3D::setRefDirection(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcOffsetCurve3D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[710]); } +// const IfcParse::entity& Ifc4x3_add2::IfcOffsetCurve3D::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[710]); } const IfcParse::entity& Ifc4x3_add2::IfcOffsetCurve3D::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[710]); } -Ifc4x3_add2::IfcOffsetCurve3D::IfcOffsetCurve3D(IfcEntityInstanceData&& e) : IfcOffsetCurve(std::move(e)) { } -Ifc4x3_add2::IfcOffsetCurve3D::IfcOffsetCurve3D(::Ifc4x3_add2::IfcCurve* v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect, ::Ifc4x3_add2::IfcDirection* v4_RefDirection) : IfcOffsetCurve(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_BasisCurve ? v1_BasisCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Distance));set_attribute_value(2, (v3_SelfIntersect));set_attribute_value(3, v4_RefDirection ? v4_RefDirection->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcOffsetCurve3D::IfcOffsetCurve3D(const std::weak_ptr& e) : IfcOffsetCurve(e) { } +// Ifc4x3_add2::IfcOffsetCurve3D::IfcOffsetCurve3D(::Ifc4x3_add2::IfcCurve v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect, ::Ifc4x3_add2::IfcDirection v4_RefDirection) : IfcOffsetCurve(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_BasisCurve));set_attribute_value(1, (v2_Distance));set_attribute_value(2, (v3_SelfIntersect));set_attribute_value(3, (v4_RefDirection));; populate_derived(); } // Function implementations for IfcOffsetCurveByDistances -aggregate_of< ::Ifc4x3_add2::IfcPointByDistanceExpression >::ptr Ifc4x3_add2::IfcOffsetCurveByDistances::OffsetValues() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcPointByDistanceExpression >(); } -void Ifc4x3_add2::IfcOffsetCurveByDistances::setOffsetValues(aggregate_of< ::Ifc4x3_add2::IfcPointByDistanceExpression >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } -boost::optional< std::string > Ifc4x3_add2::IfcOffsetCurveByDistances::Tag() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcOffsetCurveByDistances::setTag(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::vector< ::Ifc4x3_add2::IfcPointByDistanceExpression > Ifc4x3_add2::IfcOffsetCurveByDistances::OffsetValues() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcPointByDistanceExpression>(es); } +void Ifc4x3_add2::IfcOffsetCurveByDistances::setOffsetValues(const std::vector< ::Ifc4x3_add2::IfcPointByDistanceExpression >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } +std::optional< std::string > Ifc4x3_add2::IfcOffsetCurveByDistances::Tag() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcOffsetCurveByDistances::setTag(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -const IfcParse::entity& Ifc4x3_add2::IfcOffsetCurveByDistances::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[711]); } +// const IfcParse::entity& Ifc4x3_add2::IfcOffsetCurveByDistances::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[711]); } const IfcParse::entity& Ifc4x3_add2::IfcOffsetCurveByDistances::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[711]); } -Ifc4x3_add2::IfcOffsetCurveByDistances::IfcOffsetCurveByDistances(IfcEntityInstanceData&& e) : IfcOffsetCurve(std::move(e)) { } -Ifc4x3_add2::IfcOffsetCurveByDistances::IfcOffsetCurveByDistances(::Ifc4x3_add2::IfcCurve* v1_BasisCurve, aggregate_of< ::Ifc4x3_add2::IfcPointByDistanceExpression >::ptr v2_OffsetValues, boost::optional< std::string > v3_Tag) : IfcOffsetCurve(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_BasisCurve ? v1_BasisCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_OffsetValues)->generalize()); if (v3_Tag) {set_attribute_value(2, (*v3_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcOffsetCurveByDistances::IfcOffsetCurveByDistances(const std::weak_ptr& e) : IfcOffsetCurve(e) { } +// Ifc4x3_add2::IfcOffsetCurveByDistances::IfcOffsetCurveByDistances(::Ifc4x3_add2::IfcCurve v1_BasisCurve, std::vector< ::Ifc4x3_add2::IfcPointByDistanceExpression > v2_OffsetValues, std::optional< std::string > v3_Tag) : IfcOffsetCurve(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_BasisCurve));set_attribute_value(1, (v2_OffsetValues)->generalize()); if (v3_Tag) {set_attribute_value(2, (*v3_Tag)); }; populate_derived(); } // Function implementations for IfcOpenCrossProfileDef bool Ifc4x3_add2::IfcOpenCrossProfileDef::HorizontalWidths() const { bool v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcOpenCrossProfileDef::setHorizontalWidths(bool v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcOpenCrossProfileDef::setHorizontalWidths(const bool& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } std::vector< double > /*[1:?]*/ Ifc4x3_add2::IfcOpenCrossProfileDef::Widths() const { std::vector< double > /*[1:?]*/ v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcOpenCrossProfileDef::setWidths(std::vector< double > /*[1:?]*/ v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcOpenCrossProfileDef::setWidths(const std::vector< double > /*[1:?]*/& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } std::vector< double > /*[1:?]*/ Ifc4x3_add2::IfcOpenCrossProfileDef::Slopes() const { std::vector< double > /*[1:?]*/ v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcOpenCrossProfileDef::setSlopes(std::vector< double > /*[1:?]*/ v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -boost::optional< std::vector< std::string > /*[2:?]*/ > Ifc4x3_add2::IfcOpenCrossProfileDef::Tags() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::vector< std::string > /*[2:?]*/ v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcOpenCrossProfileDef::setTags(boost::optional< std::vector< std::string > /*[2:?]*/ > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -::Ifc4x3_add2::IfcCartesianPoint* Ifc4x3_add2::IfcOpenCrossProfileDef::OffsetPoint() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcCartesianPoint>(true); } -void Ifc4x3_add2::IfcOpenCrossProfileDef::setOffsetPoint(::Ifc4x3_add2::IfcCartesianPoint* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +void Ifc4x3_add2::IfcOpenCrossProfileDef::setSlopes(const std::vector< double > /*[1:?]*/& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +std::optional< std::vector< std::string > /*[2:?]*/ > Ifc4x3_add2::IfcOpenCrossProfileDef::Tags() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::vector< std::string > /*[2:?]*/ v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcOpenCrossProfileDef::setTags(const std::optional< std::vector< std::string > /*[2:?]*/ >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +::Ifc4x3_add2::IfcCartesianPoint Ifc4x3_add2::IfcOpenCrossProfileDef::OffsetPoint() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcCartesianPoint{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcCartesianPoint>(); } +void Ifc4x3_add2::IfcOpenCrossProfileDef::setOffsetPoint(const ::Ifc4x3_add2::IfcCartesianPoint& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcOpenCrossProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[712]); } +// const IfcParse::entity& Ifc4x3_add2::IfcOpenCrossProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[712]); } const IfcParse::entity& Ifc4x3_add2::IfcOpenCrossProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[712]); } -Ifc4x3_add2::IfcOpenCrossProfileDef::IfcOpenCrossProfileDef(IfcEntityInstanceData&& e) : IfcProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcOpenCrossProfileDef::IfcOpenCrossProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, bool v3_HorizontalWidths, std::vector< double > /*[1:?]*/ v4_Widths, std::vector< double > /*[1:?]*/ v5_Slopes, boost::optional< std::vector< std::string > /*[2:?]*/ > v6_Tags, ::Ifc4x3_add2::IfcCartesianPoint* v7_OffsetPoint) : IfcProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, (v3_HorizontalWidths));set_attribute_value(3, (v4_Widths));set_attribute_value(4, (v5_Slopes)); if (v6_Tags) {set_attribute_value(5, (*v6_Tags)); }set_attribute_value(6, v7_OffsetPoint ? v7_OffsetPoint->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcOpenCrossProfileDef::IfcOpenCrossProfileDef(const std::weak_ptr& e) : IfcProfileDef(e) { } +// Ifc4x3_add2::IfcOpenCrossProfileDef::IfcOpenCrossProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, bool v3_HorizontalWidths, std::vector< double > /*[1:?]*/ v4_Widths, std::vector< double > /*[1:?]*/ v5_Slopes, std::optional< std::vector< std::string > /*[2:?]*/ > v6_Tags, ::Ifc4x3_add2::IfcCartesianPoint v7_OffsetPoint) : IfcProfileDef(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, (v3_HorizontalWidths));set_attribute_value(3, (v4_Widths));set_attribute_value(4, (v5_Slopes)); if (v6_Tags) {set_attribute_value(5, (*v6_Tags)); } if (v7_OffsetPoint) {set_attribute_value(6, (*v7_OffsetPoint)); }; populate_derived(); } // Function implementations for IfcOpenShell -const IfcParse::entity& Ifc4x3_add2::IfcOpenShell::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[715]); } +// const IfcParse::entity& Ifc4x3_add2::IfcOpenShell::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[715]); } const IfcParse::entity& Ifc4x3_add2::IfcOpenShell::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[715]); } -Ifc4x3_add2::IfcOpenShell::IfcOpenShell(IfcEntityInstanceData&& e) : IfcConnectedFaceSet(std::move(e)) { } -Ifc4x3_add2::IfcOpenShell::IfcOpenShell(aggregate_of< ::Ifc4x3_add2::IfcFace >::ptr v1_CfsFaces) : IfcConnectedFaceSet(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_CfsFaces)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcOpenShell::IfcOpenShell(const std::weak_ptr& e) : IfcConnectedFaceSet(e) { } +// Ifc4x3_add2::IfcOpenShell::IfcOpenShell(std::vector< ::Ifc4x3_add2::IfcFace > v1_CfsFaces) : IfcConnectedFaceSet(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_CfsFaces)->generalize());; populate_derived(); } // Function implementations for IfcOpeningElement -boost::optional< ::Ifc4x3_add2::IfcOpeningElementTypeEnum::Value > Ifc4x3_add2::IfcOpeningElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcOpeningElementTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcOpeningElementTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcOpeningElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcOpeningElementTypeEnum::Value > Ifc4x3_add2::IfcOpeningElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcOpeningElementTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcOpeningElement::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcOpeningElementTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcOpeningElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -::Ifc4x3_add2::IfcRelFillsElement::list::ptr Ifc4x3_add2::IfcOpeningElement::HasFillings() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[936], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelFillsElement> Ifc4x3_add2::IfcOpeningElement::HasFillings() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[936], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcOpeningElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[713]); } +// const IfcParse::entity& Ifc4x3_add2::IfcOpeningElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[713]); } const IfcParse::entity& Ifc4x3_add2::IfcOpeningElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[713]); } -Ifc4x3_add2::IfcOpeningElement::IfcOpeningElement(IfcEntityInstanceData&& e) : IfcFeatureElementSubtraction(std::move(e)) { } -Ifc4x3_add2::IfcOpeningElement::IfcOpeningElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcOpeningElementTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementSubtraction(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcOpeningElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcOpeningElement::IfcOpeningElement(const std::weak_ptr& e) : IfcFeatureElementSubtraction(e) { } +// Ifc4x3_add2::IfcOpeningElement::IfcOpeningElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcOpeningElementTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementSubtraction(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcOpeningElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcOrganization -boost::optional< std::string > Ifc4x3_add2::IfcOrganization::Identification() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcOrganization::setIdentification(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcOrganization::Identification() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcOrganization::setIdentification(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } std::string Ifc4x3_add2::IfcOrganization::Name() const { std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcOrganization::setName(std::string v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -boost::optional< std::string > Ifc4x3_add2::IfcOrganization::Description() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcOrganization::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > Ifc4x3_add2::IfcOrganization::Roles() const { if(get_attribute_value(3).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(3); return es->as< ::Ifc4x3_add2::IfcActorRole >(); } -void Ifc4x3_add2::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > v) { if (v) {set_attribute_value(3, (*v)->generalize());} else {unset_attribute_value(3);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAddress >::ptr > Ifc4x3_add2::IfcOrganization::Addresses() const { if(get_attribute_value(4).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(4); return es->as< ::Ifc4x3_add2::IfcAddress >(); } -void Ifc4x3_add2::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAddress >::ptr > v) { if (v) {set_attribute_value(4, (*v)->generalize());} else {unset_attribute_value(4);} } +void Ifc4x3_add2::IfcOrganization::setName(const std::string& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< std::string > Ifc4x3_add2::IfcOrganization::Description() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcOrganization::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > > Ifc4x3_add2::IfcOrganization::Roles() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(3); return cast_vector<::Ifc4x3_add2::IfcActorRole>(es); } +void Ifc4x3_add2::IfcOrganization::setRoles(const std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > >& v) { if (v) {set_attribute_value(3, cast_vector(*v));} else {unset_attribute_value(3);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcAddress > > Ifc4x3_add2::IfcOrganization::Addresses() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(4); return cast_vector<::Ifc4x3_add2::IfcAddress>(es); } +void Ifc4x3_add2::IfcOrganization::setAddresses(const std::optional< std::vector< ::Ifc4x3_add2::IfcAddress > >& v) { if (v) {set_attribute_value(4, cast_vector(*v));} else {unset_attribute_value(4);} } -::Ifc4x3_add2::IfcOrganizationRelationship::list::ptr Ifc4x3_add2::IfcOrganization::IsRelatedBy() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[717], 3)->as(); } -::Ifc4x3_add2::IfcOrganizationRelationship::list::ptr Ifc4x3_add2::IfcOrganization::Relates() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[717], 2)->as(); } -::Ifc4x3_add2::IfcPersonAndOrganization::list::ptr Ifc4x3_add2::IfcOrganization::Engages() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[738], 1)->as(); } +std::vector<::Ifc4x3_add2::IfcOrganizationRelationship> Ifc4x3_add2::IfcOrganization::IsRelatedBy() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[717], 3)); } +std::vector<::Ifc4x3_add2::IfcOrganizationRelationship> Ifc4x3_add2::IfcOrganization::Relates() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[717], 2)); } +std::vector<::Ifc4x3_add2::IfcPersonAndOrganization> Ifc4x3_add2::IfcOrganization::Engages() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[738], 1)); } -const IfcParse::entity& Ifc4x3_add2::IfcOrganization::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[716]); } +// const IfcParse::entity& Ifc4x3_add2::IfcOrganization::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[716]); } const IfcParse::entity& Ifc4x3_add2::IfcOrganization::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[716]); } -Ifc4x3_add2::IfcOrganization::IfcOrganization(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcOrganization::IfcOrganization(boost::optional< std::string > v1_Identification, std::string v2_Name, boost::optional< std::string > v3_Description, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > v4_Roles, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAddress >::ptr > v5_Addresses) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(5))) { if (v1_Identification) {set_attribute_value(0, (*v1_Identification)); }set_attribute_value(1, (v2_Name)); if (v3_Description) {set_attribute_value(2, (*v3_Description)); } if (v4_Roles) {set_attribute_value(3, (*v4_Roles)->generalize()); } if (v5_Addresses) {set_attribute_value(4, (*v5_Addresses)->generalize()); }; populate_derived(); } +// Ifc4x3_add2::IfcOrganization::IfcOrganization(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcOrganization::IfcOrganization(std::optional< std::string > v1_Identification, std::string v2_Name, std::optional< std::string > v3_Description, std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > > v4_Roles, std::optional< std::vector< ::Ifc4x3_add2::IfcAddress > > v5_Addresses) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(5))) { if (v1_Identification) {set_attribute_value(0, (*v1_Identification)); }set_attribute_value(1, (v2_Name)); if (v3_Description) {set_attribute_value(2, (*v3_Description)); } if (v4_Roles) {set_attribute_value(3, (*v4_Roles)->generalize()); } if (v5_Addresses) {set_attribute_value(4, (*v5_Addresses)->generalize()); }; populate_derived(); } // Function implementations for IfcOrganizationRelationship -::Ifc4x3_add2::IfcOrganization* Ifc4x3_add2::IfcOrganizationRelationship::RelatingOrganization() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcOrganization>(true); } -void Ifc4x3_add2::IfcOrganizationRelationship::setRelatingOrganization(::Ifc4x3_add2::IfcOrganization* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -aggregate_of< ::Ifc4x3_add2::IfcOrganization >::ptr Ifc4x3_add2::IfcOrganizationRelationship::RelatedOrganizations() const { aggregate_of_instance::ptr es = get_attribute_value(3); return es->as< ::Ifc4x3_add2::IfcOrganization >(); } -void Ifc4x3_add2::IfcOrganizationRelationship::setRelatedOrganizations(aggregate_of< ::Ifc4x3_add2::IfcOrganization >::ptr v) { set_attribute_value(3, (v)->generalize());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcOrganization Ifc4x3_add2::IfcOrganizationRelationship::RelatingOrganization() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcOrganization>(); } +void Ifc4x3_add2::IfcOrganizationRelationship::setRelatingOrganization(const ::Ifc4x3_add2::IfcOrganization& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +std::vector< ::Ifc4x3_add2::IfcOrganization > Ifc4x3_add2::IfcOrganizationRelationship::RelatedOrganizations() const { std::vector es = get_attribute_value(3); return cast_vector<::Ifc4x3_add2::IfcOrganization>(es); } +void Ifc4x3_add2::IfcOrganizationRelationship::setRelatedOrganizations(const std::vector< ::Ifc4x3_add2::IfcOrganization >& v) { set_attribute_value(3, cast_vector(v));if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcOrganizationRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[717]); } +// const IfcParse::entity& Ifc4x3_add2::IfcOrganizationRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[717]); } const IfcParse::entity& Ifc4x3_add2::IfcOrganizationRelationship::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[717]); } -Ifc4x3_add2::IfcOrganizationRelationship::IfcOrganizationRelationship(IfcEntityInstanceData&& e) : IfcResourceLevelRelationship(std::move(e)) { } -Ifc4x3_add2::IfcOrganizationRelationship::IfcOrganizationRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcOrganization* v3_RelatingOrganization, aggregate_of< ::Ifc4x3_add2::IfcOrganization >::ptr v4_RelatedOrganizations) : IfcResourceLevelRelationship(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_RelatingOrganization ? v3_RelatingOrganization->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_RelatedOrganizations)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcOrganizationRelationship::IfcOrganizationRelationship(const std::weak_ptr& e) : IfcResourceLevelRelationship(e) { } +// Ifc4x3_add2::IfcOrganizationRelationship::IfcOrganizationRelationship(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcOrganization v3_RelatingOrganization, std::vector< ::Ifc4x3_add2::IfcOrganization > v4_RelatedOrganizations) : IfcResourceLevelRelationship(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_RelatingOrganization));set_attribute_value(3, (v4_RelatedOrganizations)->generalize());; populate_derived(); } // Function implementations for IfcOrientedEdge -::Ifc4x3_add2::IfcEdge* Ifc4x3_add2::IfcOrientedEdge::EdgeElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcEdge>(true); } -void Ifc4x3_add2::IfcOrientedEdge::setEdgeElement(::Ifc4x3_add2::IfcEdge* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcEdge Ifc4x3_add2::IfcOrientedEdge::EdgeElement() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcEdge>(); } +void Ifc4x3_add2::IfcOrientedEdge::setEdgeElement(const ::Ifc4x3_add2::IfcEdge& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } bool Ifc4x3_add2::IfcOrientedEdge::Orientation() const { bool v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcOrientedEdge::setOrientation(bool v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcOrientedEdge::setOrientation(const bool& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcOrientedEdge::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[718]); } +// const IfcParse::entity& Ifc4x3_add2::IfcOrientedEdge::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[718]); } const IfcParse::entity& Ifc4x3_add2::IfcOrientedEdge::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[718]); } -Ifc4x3_add2::IfcOrientedEdge::IfcOrientedEdge(IfcEntityInstanceData&& e) : IfcEdge(std::move(e)) { } -Ifc4x3_add2::IfcOrientedEdge::IfcOrientedEdge(::Ifc4x3_add2::IfcEdge* v3_EdgeElement, bool v4_Orientation) : IfcEdge(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(2, v3_EdgeElement ? v3_EdgeElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_Orientation));; populate_derived(); } +// Ifc4x3_add2::IfcOrientedEdge::IfcOrientedEdge(const std::weak_ptr& e) : IfcEdge(e) { } +// Ifc4x3_add2::IfcOrientedEdge::IfcOrientedEdge(::Ifc4x3_add2::IfcEdge v3_EdgeElement, bool v4_Orientation) : IfcEdge(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(2, (v3_EdgeElement));set_attribute_value(3, (v4_Orientation));; populate_derived(); } // Function implementations for IfcOuterBoundaryCurve -const IfcParse::entity& Ifc4x3_add2::IfcOuterBoundaryCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[719]); } +// const IfcParse::entity& Ifc4x3_add2::IfcOuterBoundaryCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[719]); } const IfcParse::entity& Ifc4x3_add2::IfcOuterBoundaryCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[719]); } -Ifc4x3_add2::IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(IfcEntityInstanceData&& e) : IfcBoundaryCurve(std::move(e)) { } -Ifc4x3_add2::IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcBoundaryCurve(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Segments)->generalize());set_attribute_value(1, (v2_SelfIntersect));; populate_derived(); } +// Ifc4x3_add2::IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(const std::weak_ptr& e) : IfcBoundaryCurve(e) { } +// Ifc4x3_add2::IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(std::vector< ::Ifc4x3_add2::IfcSegment > v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcBoundaryCurve(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Segments)->generalize());set_attribute_value(1, (v2_SelfIntersect));; populate_derived(); } // Function implementations for IfcOutlet -boost::optional< ::Ifc4x3_add2::IfcOutletTypeEnum::Value > Ifc4x3_add2::IfcOutlet::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcOutletTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcOutletTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcOutletTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcOutletTypeEnum::Value > Ifc4x3_add2::IfcOutlet::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcOutletTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcOutlet::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcOutletTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcOutletTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcOutlet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[720]); } +// const IfcParse::entity& Ifc4x3_add2::IfcOutlet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[720]); } const IfcParse::entity& Ifc4x3_add2::IfcOutlet::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[720]); } -Ifc4x3_add2::IfcOutlet::IfcOutlet(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcOutlet::IfcOutlet(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcOutletTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcOutletTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcOutlet::IfcOutlet(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcOutlet::IfcOutlet(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcOutletTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcOutletTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcOutletType ::Ifc4x3_add2::IfcOutletTypeEnum::Value Ifc4x3_add2::IfcOutletType::PredefinedType() const { return ::Ifc4x3_add2::IfcOutletTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcOutletType::setPredefinedType(::Ifc4x3_add2::IfcOutletTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcOutletTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcOutletType::setPredefinedType(const ::Ifc4x3_add2::IfcOutletTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcOutletTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcOutletType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[721]); } +// const IfcParse::entity& Ifc4x3_add2::IfcOutletType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[721]); } const IfcParse::entity& Ifc4x3_add2::IfcOutletType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[721]); } -Ifc4x3_add2::IfcOutletType::IfcOutletType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcOutletType::IfcOutletType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcOutletTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcOutletTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcOutletType::IfcOutletType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcOutletType::IfcOutletType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcOutletTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcOutletTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcOwnerHistory -::Ifc4x3_add2::IfcPersonAndOrganization* Ifc4x3_add2::IfcOwnerHistory::OwningUser() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcPersonAndOrganization>(true); } -void Ifc4x3_add2::IfcOwnerHistory::setOwningUser(::Ifc4x3_add2::IfcPersonAndOrganization* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcApplication* Ifc4x3_add2::IfcOwnerHistory::OwningApplication() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcApplication>(true); } -void Ifc4x3_add2::IfcOwnerHistory::setOwningApplication(::Ifc4x3_add2::IfcApplication* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -boost::optional< ::Ifc4x3_add2::IfcStateEnum::Value > Ifc4x3_add2::IfcOwnerHistory::State() const { if(get_attribute_value(2).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcStateEnum::FromString(get_attribute_value(2)); } -void Ifc4x3_add2::IfcOwnerHistory::setState(boost::optional< ::Ifc4x3_add2::IfcStateEnum::Value > v) { if (v) {set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcStateEnum::Class(), (size_t) *v));} else {unset_attribute_value(2);} } -boost::optional< ::Ifc4x3_add2::IfcChangeActionEnum::Value > Ifc4x3_add2::IfcOwnerHistory::ChangeAction() const { if(get_attribute_value(3).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcChangeActionEnum::FromString(get_attribute_value(3)); } -void Ifc4x3_add2::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4x3_add2::IfcChangeActionEnum::Value > v) { if (v) {set_attribute_value(3, EnumerationReference(&::Ifc4x3_add2::IfcChangeActionEnum::Class(), (size_t) *v));} else {unset_attribute_value(3);} } -boost::optional< int > Ifc4x3_add2::IfcOwnerHistory::LastModifiedDate() const { if(get_attribute_value(4).isNull()) { return boost::none; } int v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -::Ifc4x3_add2::IfcPersonAndOrganization* Ifc4x3_add2::IfcOwnerHistory::LastModifyingUser() const { if(get_attribute_value(5).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcPersonAndOrganization>(true); } -void Ifc4x3_add2::IfcOwnerHistory::setLastModifyingUser(::Ifc4x3_add2::IfcPersonAndOrganization* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcApplication* Ifc4x3_add2::IfcOwnerHistory::LastModifyingApplication() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcApplication>(true); } -void Ifc4x3_add2::IfcOwnerHistory::setLastModifyingApplication(::Ifc4x3_add2::IfcApplication* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcPersonAndOrganization Ifc4x3_add2::IfcOwnerHistory::OwningUser() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcPersonAndOrganization>(); } +void Ifc4x3_add2::IfcOwnerHistory::setOwningUser(const ::Ifc4x3_add2::IfcPersonAndOrganization& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcApplication Ifc4x3_add2::IfcOwnerHistory::OwningApplication() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcApplication>(); } +void Ifc4x3_add2::IfcOwnerHistory::setOwningApplication(const ::Ifc4x3_add2::IfcApplication& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< ::Ifc4x3_add2::IfcStateEnum::Value > Ifc4x3_add2::IfcOwnerHistory::State() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcStateEnum::FromString(get_attribute_value(2)); } +void Ifc4x3_add2::IfcOwnerHistory::setState(const std::optional< ::Ifc4x3_add2::IfcStateEnum::Value >& v) { if (v) {set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcStateEnum::Class(), (size_t) *v));} else {unset_attribute_value(2);} } +std::optional< ::Ifc4x3_add2::IfcChangeActionEnum::Value > Ifc4x3_add2::IfcOwnerHistory::ChangeAction() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcChangeActionEnum::FromString(get_attribute_value(3)); } +void Ifc4x3_add2::IfcOwnerHistory::setChangeAction(const std::optional< ::Ifc4x3_add2::IfcChangeActionEnum::Value >& v) { if (v) {set_attribute_value(3, EnumerationReference(&::Ifc4x3_add2::IfcChangeActionEnum::Class(), (size_t) *v));} else {unset_attribute_value(3);} } +std::optional< int > Ifc4x3_add2::IfcOwnerHistory::LastModifiedDate() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } int v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcOwnerHistory::setLastModifiedDate(const std::optional< int >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +::Ifc4x3_add2::IfcPersonAndOrganization Ifc4x3_add2::IfcOwnerHistory::LastModifyingUser() const { if(get_attribute_value(5).isNull()) { return ::Ifc4x3_add2::IfcPersonAndOrganization{}; } return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcPersonAndOrganization>(); } +void Ifc4x3_add2::IfcOwnerHistory::setLastModifyingUser(const ::Ifc4x3_add2::IfcPersonAndOrganization& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcApplication Ifc4x3_add2::IfcOwnerHistory::LastModifyingApplication() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcApplication{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcApplication>(); } +void Ifc4x3_add2::IfcOwnerHistory::setLastModifyingApplication(const ::Ifc4x3_add2::IfcApplication& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } int Ifc4x3_add2::IfcOwnerHistory::CreationDate() const { int v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcOwnerHistory::setCreationDate(int v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } +void Ifc4x3_add2::IfcOwnerHistory::setCreationDate(const int& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } -const IfcParse::entity& Ifc4x3_add2::IfcOwnerHistory::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[723]); } +// const IfcParse::entity& Ifc4x3_add2::IfcOwnerHistory::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[723]); } const IfcParse::entity& Ifc4x3_add2::IfcOwnerHistory::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[723]); } -Ifc4x3_add2::IfcOwnerHistory::IfcOwnerHistory(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcOwnerHistory::IfcOwnerHistory(::Ifc4x3_add2::IfcPersonAndOrganization* v1_OwningUser, ::Ifc4x3_add2::IfcApplication* v2_OwningApplication, boost::optional< ::Ifc4x3_add2::IfcStateEnum::Value > v3_State, boost::optional< ::Ifc4x3_add2::IfcChangeActionEnum::Value > v4_ChangeAction, boost::optional< int > v5_LastModifiedDate, ::Ifc4x3_add2::IfcPersonAndOrganization* v6_LastModifyingUser, ::Ifc4x3_add2::IfcApplication* v7_LastModifyingApplication, int v8_CreationDate) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, v1_OwningUser ? v1_OwningUser->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_OwningApplication ? v2_OwningApplication->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_State) {set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcStateEnum::Class(),(size_t)*v3_State))); } if (v4_ChangeAction) {set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcChangeActionEnum::Class(),(size_t)*v4_ChangeAction))); } if (v5_LastModifiedDate) {set_attribute_value(4, (*v5_LastModifiedDate)); }set_attribute_value(5, v6_LastModifyingUser ? v6_LastModifyingUser->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_LastModifyingApplication ? v7_LastModifyingApplication->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, (v8_CreationDate));; populate_derived(); } +// Ifc4x3_add2::IfcOwnerHistory::IfcOwnerHistory(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcOwnerHistory::IfcOwnerHistory(::Ifc4x3_add2::IfcPersonAndOrganization v1_OwningUser, ::Ifc4x3_add2::IfcApplication v2_OwningApplication, std::optional< ::Ifc4x3_add2::IfcStateEnum::Value > v3_State, std::optional< ::Ifc4x3_add2::IfcChangeActionEnum::Value > v4_ChangeAction, std::optional< int > v5_LastModifiedDate, ::Ifc4x3_add2::IfcPersonAndOrganization v6_LastModifyingUser, ::Ifc4x3_add2::IfcApplication v7_LastModifyingApplication, int v8_CreationDate) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_OwningUser));set_attribute_value(1, (v2_OwningApplication)); if (v3_State) {set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcStateEnum::Class(),(size_t)*v3_State))); } if (v4_ChangeAction) {set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcChangeActionEnum::Class(),(size_t)*v4_ChangeAction))); } if (v5_LastModifiedDate) {set_attribute_value(4, (*v5_LastModifiedDate)); } if (v6_LastModifyingUser) {set_attribute_value(5, (*v6_LastModifyingUser)); } if (v7_LastModifyingApplication) {set_attribute_value(6, (*v7_LastModifyingApplication)); }set_attribute_value(7, (v8_CreationDate));; populate_derived(); } // Function implementations for IfcParameterizedProfileDef -::Ifc4x3_add2::IfcAxis2Placement2D* Ifc4x3_add2::IfcParameterizedProfileDef::Position() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcAxis2Placement2D>(true); } -void Ifc4x3_add2::IfcParameterizedProfileDef::setPosition(::Ifc4x3_add2::IfcAxis2Placement2D* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcAxis2Placement2D Ifc4x3_add2::IfcParameterizedProfileDef::Position() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcAxis2Placement2D{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcAxis2Placement2D>(); } +void Ifc4x3_add2::IfcParameterizedProfileDef::setPosition(const ::Ifc4x3_add2::IfcAxis2Placement2D& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcParameterizedProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[724]); } +// const IfcParse::entity& Ifc4x3_add2::IfcParameterizedProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[724]); } const IfcParse::entity& Ifc4x3_add2::IfcParameterizedProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[724]); } -Ifc4x3_add2::IfcParameterizedProfileDef::IfcParameterizedProfileDef(IfcEntityInstanceData&& e) : IfcProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcParameterizedProfileDef::IfcParameterizedProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position) : IfcProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcParameterizedProfileDef::IfcParameterizedProfileDef(const std::weak_ptr& e) : IfcProfileDef(e) { } +// Ifc4x3_add2::IfcParameterizedProfileDef::IfcParameterizedProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position) : IfcProfileDef(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); } if (v3_Position) {set_attribute_value(2, (*v3_Position)); }; populate_derived(); } // Function implementations for IfcPath -aggregate_of< ::Ifc4x3_add2::IfcOrientedEdge >::ptr Ifc4x3_add2::IfcPath::EdgeList() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcOrientedEdge >(); } -void Ifc4x3_add2::IfcPath::setEdgeList(aggregate_of< ::Ifc4x3_add2::IfcOrientedEdge >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcOrientedEdge > Ifc4x3_add2::IfcPath::EdgeList() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcOrientedEdge>(es); } +void Ifc4x3_add2::IfcPath::setEdgeList(const std::vector< ::Ifc4x3_add2::IfcOrientedEdge >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcPath::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[726]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPath::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[726]); } const IfcParse::entity& Ifc4x3_add2::IfcPath::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[726]); } -Ifc4x3_add2::IfcPath::IfcPath(IfcEntityInstanceData&& e) : IfcTopologicalRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcPath::IfcPath(aggregate_of< ::Ifc4x3_add2::IfcOrientedEdge >::ptr v1_EdgeList) : IfcTopologicalRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_EdgeList)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcPath::IfcPath(const std::weak_ptr& e) : IfcTopologicalRepresentationItem(e) { } +// Ifc4x3_add2::IfcPath::IfcPath(std::vector< ::Ifc4x3_add2::IfcOrientedEdge > v1_EdgeList) : IfcTopologicalRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_EdgeList)->generalize());; populate_derived(); } // Function implementations for IfcPavement -boost::optional< ::Ifc4x3_add2::IfcPavementTypeEnum::Value > Ifc4x3_add2::IfcPavement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcPavementTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcPavement::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPavementTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcPavementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcPavementTypeEnum::Value > Ifc4x3_add2::IfcPavement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcPavementTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcPavement::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPavementTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcPavementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcPavement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[727]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPavement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[727]); } const IfcParse::entity& Ifc4x3_add2::IfcPavement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[727]); } -Ifc4x3_add2::IfcPavement::IfcPavement(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcPavement::IfcPavement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcPavementTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcPavementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcPavement::IfcPavement(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcPavement::IfcPavement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcPavementTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcPavementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcPavementType ::Ifc4x3_add2::IfcPavementTypeEnum::Value Ifc4x3_add2::IfcPavementType::PredefinedType() const { return ::Ifc4x3_add2::IfcPavementTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcPavementType::setPredefinedType(::Ifc4x3_add2::IfcPavementTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcPavementTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcPavementType::setPredefinedType(const ::Ifc4x3_add2::IfcPavementTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcPavementTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcPavementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[728]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPavementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[728]); } const IfcParse::entity& Ifc4x3_add2::IfcPavementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[728]); } -Ifc4x3_add2::IfcPavementType::IfcPavementType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcPavementType::IfcPavementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPavementTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcPavementTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcPavementType::IfcPavementType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcPavementType::IfcPavementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPavementTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcPavementTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcPcurve -::Ifc4x3_add2::IfcSurface* Ifc4x3_add2::IfcPcurve::BasisSurface() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcSurface>(true); } -void Ifc4x3_add2::IfcPcurve::setBasisSurface(::Ifc4x3_add2::IfcSurface* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcPcurve::ReferenceCurve() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcPcurve::setReferenceCurve(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcSurface Ifc4x3_add2::IfcPcurve::BasisSurface() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcSurface>(); } +void Ifc4x3_add2::IfcPcurve::setBasisSurface(const ::Ifc4x3_add2::IfcSurface& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcPcurve::ReferenceCurve() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcPcurve::setReferenceCurve(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcPcurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[730]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPcurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[730]); } const IfcParse::entity& Ifc4x3_add2::IfcPcurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[730]); } -Ifc4x3_add2::IfcPcurve::IfcPcurve(IfcEntityInstanceData&& e) : IfcCurve(std::move(e)) { } -Ifc4x3_add2::IfcPcurve::IfcPcurve(::Ifc4x3_add2::IfcSurface* v1_BasisSurface, ::Ifc4x3_add2::IfcCurve* v2_ReferenceCurve) : IfcCurve(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_BasisSurface ? v1_BasisSurface->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_ReferenceCurve ? v2_ReferenceCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPcurve::IfcPcurve(const std::weak_ptr& e) : IfcCurve(e) { } +// Ifc4x3_add2::IfcPcurve::IfcPcurve(::Ifc4x3_add2::IfcSurface v1_BasisSurface, ::Ifc4x3_add2::IfcCurve v2_ReferenceCurve) : IfcCurve(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_BasisSurface));set_attribute_value(1, (v2_ReferenceCurve));; populate_derived(); } // Function implementations for IfcPerformanceHistory std::string Ifc4x3_add2::IfcPerformanceHistory::LifeCyclePhase() const { std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcPerformanceHistory::setLifeCyclePhase(std::string v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -boost::optional< ::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Value > Ifc4x3_add2::IfcPerformanceHistory::PredefinedType() const { if(get_attribute_value(7).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Value > v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } +void Ifc4x3_add2::IfcPerformanceHistory::setLifeCyclePhase(const std::string& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< ::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Value > Ifc4x3_add2::IfcPerformanceHistory::PredefinedType() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::FromString(get_attribute_value(7)); } +void Ifc4x3_add2::IfcPerformanceHistory::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Value >& v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } -const IfcParse::entity& Ifc4x3_add2::IfcPerformanceHistory::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[731]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPerformanceHistory::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[731]); } const IfcParse::entity& Ifc4x3_add2::IfcPerformanceHistory::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[731]); } -Ifc4x3_add2::IfcPerformanceHistory::IfcPerformanceHistory(IfcEntityInstanceData&& e) : IfcControl(std::move(e)) { } -Ifc4x3_add2::IfcPerformanceHistory::IfcPerformanceHistory(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_LifeCyclePhase, boost::optional< ::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Value > v8_PredefinedType) : IfcControl(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); }set_attribute_value(6, (v7_LifeCyclePhase)); if (v8_PredefinedType) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Class(),(size_t)*v8_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcPerformanceHistory::IfcPerformanceHistory(const std::weak_ptr& e) : IfcControl(e) { } +// Ifc4x3_add2::IfcPerformanceHistory::IfcPerformanceHistory(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::string v7_LifeCyclePhase, std::optional< ::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Value > v8_PredefinedType) : IfcControl(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); }set_attribute_value(6, (v7_LifeCyclePhase)); if (v8_PredefinedType) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Class(),(size_t)*v8_PredefinedType))); }; populate_derived(); } // Function implementations for IfcPermeableCoveringProperties ::Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Value Ifc4x3_add2::IfcPermeableCoveringProperties::OperationType() const { return ::Ifc4x3_add2::IfcPermeableCoveringOperationEnum::FromString(get_attribute_value(4)); } -void Ifc4x3_add2::IfcPermeableCoveringProperties::setOperationType(::Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Value v) { set_attribute_value(4, EnumerationReference(&::Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcPermeableCoveringProperties::setOperationType(const ::Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Value& v) { set_attribute_value(4, EnumerationReference(&::Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(4); } ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value Ifc4x3_add2::IfcPermeableCoveringProperties::PanelPosition() const { return ::Ifc4x3_add2::IfcWindowPanelPositionEnum::FromString(get_attribute_value(5)); } -void Ifc4x3_add2::IfcPermeableCoveringProperties::setPanelPosition(::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value v) { set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcWindowPanelPositionEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(5); } -boost::optional< double > Ifc4x3_add2::IfcPermeableCoveringProperties::FrameDepth() const { if(get_attribute_value(6).isNull()) { return boost::none; } double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< double > Ifc4x3_add2::IfcPermeableCoveringProperties::FrameThickness() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -::Ifc4x3_add2::IfcShapeAspect* Ifc4x3_add2::IfcPermeableCoveringProperties::ShapeAspectStyle() const { if(get_attribute_value(8).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(8)))->as<::Ifc4x3_add2::IfcShapeAspect>(true); } -void Ifc4x3_add2::IfcPermeableCoveringProperties::setShapeAspectStyle(::Ifc4x3_add2::IfcShapeAspect* v) { set_attribute_value(8, v->as());if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcPermeableCoveringProperties::setPanelPosition(const ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value& v) { set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcWindowPanelPositionEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(5); } +std::optional< double > Ifc4x3_add2::IfcPermeableCoveringProperties::FrameDepth() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } double v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcPermeableCoveringProperties::setFrameDepth(const std::optional< double >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< double > Ifc4x3_add2::IfcPermeableCoveringProperties::FrameThickness() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcPermeableCoveringProperties::setFrameThickness(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +::Ifc4x3_add2::IfcShapeAspect Ifc4x3_add2::IfcPermeableCoveringProperties::ShapeAspectStyle() const { if(get_attribute_value(8).isNull()) { return ::Ifc4x3_add2::IfcShapeAspect{}; } return ((express::Base)(get_attribute_value(8))).as<::Ifc4x3_add2::IfcShapeAspect>(); } +void Ifc4x3_add2::IfcPermeableCoveringProperties::setShapeAspectStyle(const ::Ifc4x3_add2::IfcShapeAspect& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcPermeableCoveringProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[734]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPermeableCoveringProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[734]); } const IfcParse::entity& Ifc4x3_add2::IfcPermeableCoveringProperties::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[734]); } -Ifc4x3_add2::IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(IfcEntityInstanceData&& e) : IfcPreDefinedPropertySet(std::move(e)) { } -Ifc4x3_add2::IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Value v5_OperationType, ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, ::Ifc4x3_add2::IfcShapeAspect* v9_ShapeAspectStyle) : IfcPreDefinedPropertySet(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Class(),(size_t)v5_OperationType)));set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcWindowPanelPositionEnum::Class(),(size_t)v6_PanelPosition))); if (v7_FrameDepth) {set_attribute_value(6, (*v7_FrameDepth)); } if (v8_FrameThickness) {set_attribute_value(7, (*v8_FrameThickness)); }set_attribute_value(8, v9_ShapeAspectStyle ? v9_ShapeAspectStyle->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(const std::weak_ptr& e) : IfcPreDefinedPropertySet(e) { } +// Ifc4x3_add2::IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Value v5_OperationType, ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value v6_PanelPosition, std::optional< double > v7_FrameDepth, std::optional< double > v8_FrameThickness, ::Ifc4x3_add2::IfcShapeAspect v9_ShapeAspectStyle) : IfcPreDefinedPropertySet(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Class(),(size_t)v5_OperationType)));set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcWindowPanelPositionEnum::Class(),(size_t)v6_PanelPosition))); if (v7_FrameDepth) {set_attribute_value(6, (*v7_FrameDepth)); } if (v8_FrameThickness) {set_attribute_value(7, (*v8_FrameThickness)); } if (v9_ShapeAspectStyle) {set_attribute_value(8, (*v9_ShapeAspectStyle)); }; populate_derived(); } // Function implementations for IfcPermit -boost::optional< ::Ifc4x3_add2::IfcPermitTypeEnum::Value > Ifc4x3_add2::IfcPermit::PredefinedType() const { if(get_attribute_value(6).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcPermitTypeEnum::FromString(get_attribute_value(6)); } -void Ifc4x3_add2::IfcPermit::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPermitTypeEnum::Value > v) { if (v) {set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcPermitTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(6);} } -boost::optional< std::string > Ifc4x3_add2::IfcPermit::Status() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcPermit::setStatus(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< std::string > Ifc4x3_add2::IfcPermit::LongDescription() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcPermit::setLongDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcPermitTypeEnum::Value > Ifc4x3_add2::IfcPermit::PredefinedType() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcPermitTypeEnum::FromString(get_attribute_value(6)); } +void Ifc4x3_add2::IfcPermit::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPermitTypeEnum::Value >& v) { if (v) {set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcPermitTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcPermit::Status() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcPermit::setStatus(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcPermit::LongDescription() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcPermit::setLongDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcPermit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[735]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPermit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[735]); } const IfcParse::entity& Ifc4x3_add2::IfcPermit::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[735]); } -Ifc4x3_add2::IfcPermit::IfcPermit(IfcEntityInstanceData&& e) : IfcControl(std::move(e)) { } -Ifc4x3_add2::IfcPermit::IfcPermit(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< ::Ifc4x3_add2::IfcPermitTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription) : IfcControl(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcPermitTypeEnum::Class(),(size_t)*v7_PredefinedType))); } if (v8_Status) {set_attribute_value(7, (*v8_Status)); } if (v9_LongDescription) {set_attribute_value(8, (*v9_LongDescription)); }; populate_derived(); } +// Ifc4x3_add2::IfcPermit::IfcPermit(const std::weak_ptr& e) : IfcControl(e) { } +// Ifc4x3_add2::IfcPermit::IfcPermit(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< ::Ifc4x3_add2::IfcPermitTypeEnum::Value > v7_PredefinedType, std::optional< std::string > v8_Status, std::optional< std::string > v9_LongDescription) : IfcControl(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcPermitTypeEnum::Class(),(size_t)*v7_PredefinedType))); } if (v8_Status) {set_attribute_value(7, (*v8_Status)); } if (v9_LongDescription) {set_attribute_value(8, (*v9_LongDescription)); }; populate_derived(); } // Function implementations for IfcPerson -boost::optional< std::string > Ifc4x3_add2::IfcPerson::Identification() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcPerson::setIdentification(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcPerson::FamilyName() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcPerson::setFamilyName(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::string > Ifc4x3_add2::IfcPerson::GivenName() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcPerson::setGivenName(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcPerson::MiddleNames() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcPerson::PrefixTitles() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcPerson::SuffixTitles() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > Ifc4x3_add2::IfcPerson::Roles() const { if(get_attribute_value(6).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(6); return es->as< ::Ifc4x3_add2::IfcActorRole >(); } -void Ifc4x3_add2::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > v) { if (v) {set_attribute_value(6, (*v)->generalize());} else {unset_attribute_value(6);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAddress >::ptr > Ifc4x3_add2::IfcPerson::Addresses() const { if(get_attribute_value(7).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(7); return es->as< ::Ifc4x3_add2::IfcAddress >(); } -void Ifc4x3_add2::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAddress >::ptr > v) { if (v) {set_attribute_value(7, (*v)->generalize());} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcPerson::Identification() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcPerson::setIdentification(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcPerson::FamilyName() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcPerson::setFamilyName(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcPerson::GivenName() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcPerson::setGivenName(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcPerson::MiddleNames() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcPerson::setMiddleNames(const std::optional< std::vector< std::string > /*[1:?]*/ >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcPerson::PrefixTitles() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcPerson::setPrefixTitles(const std::optional< std::vector< std::string > /*[1:?]*/ >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcPerson::SuffixTitles() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcPerson::setSuffixTitles(const std::optional< std::vector< std::string > /*[1:?]*/ >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > > Ifc4x3_add2::IfcPerson::Roles() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(6); return cast_vector<::Ifc4x3_add2::IfcActorRole>(es); } +void Ifc4x3_add2::IfcPerson::setRoles(const std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > >& v) { if (v) {set_attribute_value(6, cast_vector(*v));} else {unset_attribute_value(6);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcAddress > > Ifc4x3_add2::IfcPerson::Addresses() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(7); return cast_vector<::Ifc4x3_add2::IfcAddress>(es); } +void Ifc4x3_add2::IfcPerson::setAddresses(const std::optional< std::vector< ::Ifc4x3_add2::IfcAddress > >& v) { if (v) {set_attribute_value(7, cast_vector(*v));} else {unset_attribute_value(7);} } -::Ifc4x3_add2::IfcPersonAndOrganization::list::ptr Ifc4x3_add2::IfcPerson::EngagedIn() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[738], 0)->as(); } +std::vector<::Ifc4x3_add2::IfcPersonAndOrganization> Ifc4x3_add2::IfcPerson::EngagedIn() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[738], 0)); } -const IfcParse::entity& Ifc4x3_add2::IfcPerson::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[737]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPerson::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[737]); } const IfcParse::entity& Ifc4x3_add2::IfcPerson::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[737]); } -Ifc4x3_add2::IfcPerson::IfcPerson(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcPerson::IfcPerson(boost::optional< std::string > v1_Identification, boost::optional< std::string > v2_FamilyName, boost::optional< std::string > v3_GivenName, boost::optional< std::vector< std::string > /*[1:?]*/ > v4_MiddleNames, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_PrefixTitles, boost::optional< std::vector< std::string > /*[1:?]*/ > v6_SuffixTitles, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > v7_Roles, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAddress >::ptr > v8_Addresses) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(8))) { if (v1_Identification) {set_attribute_value(0, (*v1_Identification)); } if (v2_FamilyName) {set_attribute_value(1, (*v2_FamilyName)); } if (v3_GivenName) {set_attribute_value(2, (*v3_GivenName)); } if (v4_MiddleNames) {set_attribute_value(3, (*v4_MiddleNames)); } if (v5_PrefixTitles) {set_attribute_value(4, (*v5_PrefixTitles)); } if (v6_SuffixTitles) {set_attribute_value(5, (*v6_SuffixTitles)); } if (v7_Roles) {set_attribute_value(6, (*v7_Roles)->generalize()); } if (v8_Addresses) {set_attribute_value(7, (*v8_Addresses)->generalize()); }; populate_derived(); } +// Ifc4x3_add2::IfcPerson::IfcPerson(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcPerson::IfcPerson(std::optional< std::string > v1_Identification, std::optional< std::string > v2_FamilyName, std::optional< std::string > v3_GivenName, std::optional< std::vector< std::string > /*[1:?]*/ > v4_MiddleNames, std::optional< std::vector< std::string > /*[1:?]*/ > v5_PrefixTitles, std::optional< std::vector< std::string > /*[1:?]*/ > v6_SuffixTitles, std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > > v7_Roles, std::optional< std::vector< ::Ifc4x3_add2::IfcAddress > > v8_Addresses) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(8))) { if (v1_Identification) {set_attribute_value(0, (*v1_Identification)); } if (v2_FamilyName) {set_attribute_value(1, (*v2_FamilyName)); } if (v3_GivenName) {set_attribute_value(2, (*v3_GivenName)); } if (v4_MiddleNames) {set_attribute_value(3, (*v4_MiddleNames)); } if (v5_PrefixTitles) {set_attribute_value(4, (*v5_PrefixTitles)); } if (v6_SuffixTitles) {set_attribute_value(5, (*v6_SuffixTitles)); } if (v7_Roles) {set_attribute_value(6, (*v7_Roles)->generalize()); } if (v8_Addresses) {set_attribute_value(7, (*v8_Addresses)->generalize()); }; populate_derived(); } // Function implementations for IfcPersonAndOrganization -::Ifc4x3_add2::IfcPerson* Ifc4x3_add2::IfcPersonAndOrganization::ThePerson() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcPerson>(true); } -void Ifc4x3_add2::IfcPersonAndOrganization::setThePerson(::Ifc4x3_add2::IfcPerson* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcOrganization* Ifc4x3_add2::IfcPersonAndOrganization::TheOrganization() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcOrganization>(true); } -void Ifc4x3_add2::IfcPersonAndOrganization::setTheOrganization(::Ifc4x3_add2::IfcOrganization* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > Ifc4x3_add2::IfcPersonAndOrganization::Roles() const { if(get_attribute_value(2).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcActorRole >(); } -void Ifc4x3_add2::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > v) { if (v) {set_attribute_value(2, (*v)->generalize());} else {unset_attribute_value(2);} } +::Ifc4x3_add2::IfcPerson Ifc4x3_add2::IfcPersonAndOrganization::ThePerson() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcPerson>(); } +void Ifc4x3_add2::IfcPersonAndOrganization::setThePerson(const ::Ifc4x3_add2::IfcPerson& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcOrganization Ifc4x3_add2::IfcPersonAndOrganization::TheOrganization() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcOrganization>(); } +void Ifc4x3_add2::IfcPersonAndOrganization::setTheOrganization(const ::Ifc4x3_add2::IfcOrganization& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > > Ifc4x3_add2::IfcPersonAndOrganization::Roles() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcActorRole>(es); } +void Ifc4x3_add2::IfcPersonAndOrganization::setRoles(const std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > >& v) { if (v) {set_attribute_value(2, cast_vector(*v));} else {unset_attribute_value(2);} } -const IfcParse::entity& Ifc4x3_add2::IfcPersonAndOrganization::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[738]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPersonAndOrganization::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[738]); } const IfcParse::entity& Ifc4x3_add2::IfcPersonAndOrganization::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[738]); } -Ifc4x3_add2::IfcPersonAndOrganization::IfcPersonAndOrganization(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcPersonAndOrganization::IfcPersonAndOrganization(::Ifc4x3_add2::IfcPerson* v1_ThePerson, ::Ifc4x3_add2::IfcOrganization* v2_TheOrganization, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > v3_Roles) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_ThePerson ? v1_ThePerson->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_TheOrganization ? v2_TheOrganization->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Roles) {set_attribute_value(2, (*v3_Roles)->generalize()); }; populate_derived(); } +// Ifc4x3_add2::IfcPersonAndOrganization::IfcPersonAndOrganization(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcPersonAndOrganization::IfcPersonAndOrganization(::Ifc4x3_add2::IfcPerson v1_ThePerson, ::Ifc4x3_add2::IfcOrganization v2_TheOrganization, std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > > v3_Roles) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_ThePerson));set_attribute_value(1, (v2_TheOrganization)); if (v3_Roles) {set_attribute_value(2, (*v3_Roles)->generalize()); }; populate_derived(); } // Function implementations for IfcPhysicalComplexQuantity -aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr Ifc4x3_add2::IfcPhysicalComplexQuantity::HasQuantities() const { aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcPhysicalQuantity >(); } -void Ifc4x3_add2::IfcPhysicalComplexQuantity::setHasQuantities(aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr v) { set_attribute_value(2, (v)->generalize());if constexpr (false)unset_attribute_value(2); } +std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity > Ifc4x3_add2::IfcPhysicalComplexQuantity::HasQuantities() const { std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcPhysicalQuantity>(es); } +void Ifc4x3_add2::IfcPhysicalComplexQuantity::setHasQuantities(const std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity >& v) { set_attribute_value(2, cast_vector(v));if constexpr (false)unset_attribute_value(2); } std::string Ifc4x3_add2::IfcPhysicalComplexQuantity::Discrimination() const { std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcPhysicalComplexQuantity::setDiscrimination(std::string v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcPhysicalComplexQuantity::Quality() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcPhysicalComplexQuantity::Usage() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +void Ifc4x3_add2::IfcPhysicalComplexQuantity::setDiscrimination(const std::string& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcPhysicalComplexQuantity::Quality() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcPhysicalComplexQuantity::setQuality(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcPhysicalComplexQuantity::Usage() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcPhysicalComplexQuantity::setUsage(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -const IfcParse::entity& Ifc4x3_add2::IfcPhysicalComplexQuantity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[740]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPhysicalComplexQuantity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[740]); } const IfcParse::entity& Ifc4x3_add2::IfcPhysicalComplexQuantity::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[740]); } -Ifc4x3_add2::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(IfcEntityInstanceData&& e) : IfcPhysicalQuantity(std::move(e)) { } -Ifc4x3_add2::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(std::string v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr v3_HasQuantities, std::string v4_Discrimination, boost::optional< std::string > v5_Quality, boost::optional< std::string > v6_Usage) : IfcPhysicalQuantity(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_HasQuantities)->generalize());set_attribute_value(3, (v4_Discrimination)); if (v5_Quality) {set_attribute_value(4, (*v5_Quality)); } if (v6_Usage) {set_attribute_value(5, (*v6_Usage)); }; populate_derived(); } +// Ifc4x3_add2::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(const std::weak_ptr& e) : IfcPhysicalQuantity(e) { } +// Ifc4x3_add2::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(std::string v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity > v3_HasQuantities, std::string v4_Discrimination, std::optional< std::string > v5_Quality, std::optional< std::string > v6_Usage) : IfcPhysicalQuantity(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_HasQuantities)->generalize());set_attribute_value(3, (v4_Discrimination)); if (v5_Quality) {set_attribute_value(4, (*v5_Quality)); } if (v6_Usage) {set_attribute_value(5, (*v6_Usage)); }; populate_derived(); } // Function implementations for IfcPhysicalQuantity std::string Ifc4x3_add2::IfcPhysicalQuantity::Name() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcPhysicalQuantity::setName(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -boost::optional< std::string > Ifc4x3_add2::IfcPhysicalQuantity::Description() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +void Ifc4x3_add2::IfcPhysicalQuantity::setName(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< std::string > Ifc4x3_add2::IfcPhysicalQuantity::Description() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcPhysicalQuantity::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -::Ifc4x3_add2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_add2::IfcPhysicalQuantity::HasExternalReferences() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[427], 3)->as(); } -::Ifc4x3_add2::IfcPhysicalComplexQuantity::list::ptr Ifc4x3_add2::IfcPhysicalQuantity::PartOfComplex() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[740], 2)->as(); } +std::vector<::Ifc4x3_add2::IfcExternalReferenceRelationship> Ifc4x3_add2::IfcPhysicalQuantity::HasExternalReferences() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[427], 3)); } +std::vector<::Ifc4x3_add2::IfcPhysicalComplexQuantity> Ifc4x3_add2::IfcPhysicalQuantity::PartOfComplex() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[740], 2)); } -const IfcParse::entity& Ifc4x3_add2::IfcPhysicalQuantity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[742]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPhysicalQuantity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[742]); } const IfcParse::entity& Ifc4x3_add2::IfcPhysicalQuantity::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[742]); } -Ifc4x3_add2::IfcPhysicalQuantity::IfcPhysicalQuantity(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcPhysicalQuantity::IfcPhysicalQuantity(std::string v1_Name, boost::optional< std::string > v2_Description) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcPhysicalQuantity::IfcPhysicalQuantity(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcPhysicalQuantity::IfcPhysicalQuantity(std::string v1_Name, std::optional< std::string > v2_Description) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }; populate_derived(); } // Function implementations for IfcPhysicalSimpleQuantity -::Ifc4x3_add2::IfcNamedUnit* Ifc4x3_add2::IfcPhysicalSimpleQuantity::Unit() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcNamedUnit>(true); } -void Ifc4x3_add2::IfcPhysicalSimpleQuantity::setUnit(::Ifc4x3_add2::IfcNamedUnit* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcNamedUnit Ifc4x3_add2::IfcPhysicalSimpleQuantity::Unit() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcNamedUnit{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcNamedUnit>(); } +void Ifc4x3_add2::IfcPhysicalSimpleQuantity::setUnit(const ::Ifc4x3_add2::IfcNamedUnit& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcPhysicalSimpleQuantity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[743]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPhysicalSimpleQuantity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[743]); } const IfcParse::entity& Ifc4x3_add2::IfcPhysicalSimpleQuantity::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[743]); } -Ifc4x3_add2::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(IfcEntityInstanceData&& e) : IfcPhysicalQuantity(std::move(e)) { } -Ifc4x3_add2::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit) : IfcPhysicalQuantity(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_Unit ? v3_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(const std::weak_ptr& e) : IfcPhysicalQuantity(e) { } +// Ifc4x3_add2::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit) : IfcPhysicalQuantity(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_Unit) {set_attribute_value(2, (*v3_Unit)); }; populate_derived(); } // Function implementations for IfcPile -boost::optional< ::Ifc4x3_add2::IfcPileTypeEnum::Value > Ifc4x3_add2::IfcPile::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcPileTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcPile::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPileTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcPileTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -boost::optional< ::Ifc4x3_add2::IfcPileConstructionEnum::Value > Ifc4x3_add2::IfcPile::ConstructionType() const { if(get_attribute_value(9).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcPileConstructionEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcPile::setConstructionType(boost::optional< ::Ifc4x3_add2::IfcPileConstructionEnum::Value > v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcPileConstructionEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } +std::optional< ::Ifc4x3_add2::IfcPileTypeEnum::Value > Ifc4x3_add2::IfcPile::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcPileTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcPile::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPileTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcPileTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcPileConstructionEnum::Value > Ifc4x3_add2::IfcPile::ConstructionType() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcPileConstructionEnum::FromString(get_attribute_value(9)); } +void Ifc4x3_add2::IfcPile::setConstructionType(const std::optional< ::Ifc4x3_add2::IfcPileConstructionEnum::Value >& v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcPileConstructionEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcPile::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[744]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPile::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[744]); } const IfcParse::entity& Ifc4x3_add2::IfcPile::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[744]); } -Ifc4x3_add2::IfcPile::IfcPile(IfcEntityInstanceData&& e) : IfcDeepFoundation(std::move(e)) { } -Ifc4x3_add2::IfcPile::IfcPile(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcPileTypeEnum::Value > v9_PredefinedType, boost::optional< ::Ifc4x3_add2::IfcPileConstructionEnum::Value > v10_ConstructionType) : IfcDeepFoundation(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcPileTypeEnum::Class(),(size_t)*v9_PredefinedType))); } if (v10_ConstructionType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcPileConstructionEnum::Class(),(size_t)*v10_ConstructionType))); }; populate_derived(); } +// Ifc4x3_add2::IfcPile::IfcPile(const std::weak_ptr& e) : IfcDeepFoundation(e) { } +// Ifc4x3_add2::IfcPile::IfcPile(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcPileTypeEnum::Value > v9_PredefinedType, std::optional< ::Ifc4x3_add2::IfcPileConstructionEnum::Value > v10_ConstructionType) : IfcDeepFoundation(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcPileTypeEnum::Class(),(size_t)*v9_PredefinedType))); } if (v10_ConstructionType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcPileConstructionEnum::Class(),(size_t)*v10_ConstructionType))); }; populate_derived(); } // Function implementations for IfcPileType ::Ifc4x3_add2::IfcPileTypeEnum::Value Ifc4x3_add2::IfcPileType::PredefinedType() const { return ::Ifc4x3_add2::IfcPileTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcPileType::setPredefinedType(::Ifc4x3_add2::IfcPileTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcPileTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcPileType::setPredefinedType(const ::Ifc4x3_add2::IfcPileTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcPileTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcPileType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[746]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPileType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[746]); } const IfcParse::entity& Ifc4x3_add2::IfcPileType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[746]); } -Ifc4x3_add2::IfcPileType::IfcPileType(IfcEntityInstanceData&& e) : IfcDeepFoundationType(std::move(e)) { } -Ifc4x3_add2::IfcPileType::IfcPileType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPileTypeEnum::Value v10_PredefinedType) : IfcDeepFoundationType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcPileTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcPileType::IfcPileType(const std::weak_ptr& e) : IfcDeepFoundationType(e) { } +// Ifc4x3_add2::IfcPileType::IfcPileType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPileTypeEnum::Value v10_PredefinedType) : IfcDeepFoundationType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcPileTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcPipeFitting -boost::optional< ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value > Ifc4x3_add2::IfcPipeFitting::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcPipeFittingTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcPipeFittingTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value > Ifc4x3_add2::IfcPipeFitting::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcPipeFittingTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcPipeFitting::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcPipeFittingTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcPipeFitting::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[748]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPipeFitting::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[748]); } const IfcParse::entity& Ifc4x3_add2::IfcPipeFitting::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[748]); } -Ifc4x3_add2::IfcPipeFitting::IfcPipeFitting(IfcEntityInstanceData&& e) : IfcFlowFitting(std::move(e)) { } -Ifc4x3_add2::IfcPipeFitting::IfcPipeFitting(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcPipeFittingTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcPipeFitting::IfcPipeFitting(const std::weak_ptr& e) : IfcFlowFitting(e) { } +// Ifc4x3_add2::IfcPipeFitting::IfcPipeFitting(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcPipeFittingTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcPipeFittingType ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value Ifc4x3_add2::IfcPipeFittingType::PredefinedType() const { return ::Ifc4x3_add2::IfcPipeFittingTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcPipeFittingType::setPredefinedType(::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcPipeFittingTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcPipeFittingType::setPredefinedType(const ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcPipeFittingTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcPipeFittingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[749]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPipeFittingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[749]); } const IfcParse::entity& Ifc4x3_add2::IfcPipeFittingType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[749]); } -Ifc4x3_add2::IfcPipeFittingType::IfcPipeFittingType(IfcEntityInstanceData&& e) : IfcFlowFittingType(std::move(e)) { } -Ifc4x3_add2::IfcPipeFittingType::IfcPipeFittingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcPipeFittingTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcPipeFittingType::IfcPipeFittingType(const std::weak_ptr& e) : IfcFlowFittingType(e) { } +// Ifc4x3_add2::IfcPipeFittingType::IfcPipeFittingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcPipeFittingTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcPipeSegment -boost::optional< ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value > Ifc4x3_add2::IfcPipeSegment::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value > Ifc4x3_add2::IfcPipeSegment::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcPipeSegment::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcPipeSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[751]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPipeSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[751]); } const IfcParse::entity& Ifc4x3_add2::IfcPipeSegment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[751]); } -Ifc4x3_add2::IfcPipeSegment::IfcPipeSegment(IfcEntityInstanceData&& e) : IfcFlowSegment(std::move(e)) { } -Ifc4x3_add2::IfcPipeSegment::IfcPipeSegment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcPipeSegment::IfcPipeSegment(const std::weak_ptr& e) : IfcFlowSegment(e) { } +// Ifc4x3_add2::IfcPipeSegment::IfcPipeSegment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcPipeSegmentType ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value Ifc4x3_add2::IfcPipeSegmentType::PredefinedType() const { return ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcPipeSegmentType::setPredefinedType(::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcPipeSegmentType::setPredefinedType(const ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcPipeSegmentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[752]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPipeSegmentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[752]); } const IfcParse::entity& Ifc4x3_add2::IfcPipeSegmentType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[752]); } -Ifc4x3_add2::IfcPipeSegmentType::IfcPipeSegmentType(IfcEntityInstanceData&& e) : IfcFlowSegmentType(std::move(e)) { } -Ifc4x3_add2::IfcPipeSegmentType::IfcPipeSegmentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcPipeSegmentType::IfcPipeSegmentType(const std::weak_ptr& e) : IfcFlowSegmentType(e) { } +// Ifc4x3_add2::IfcPipeSegmentType::IfcPipeSegmentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcPixelTexture int Ifc4x3_add2::IfcPixelTexture::Width() const { int v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcPixelTexture::setWidth(int v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcPixelTexture::setWidth(const int& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } int Ifc4x3_add2::IfcPixelTexture::Height() const { int v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcPixelTexture::setHeight(int v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +void Ifc4x3_add2::IfcPixelTexture::setHeight(const int& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } int Ifc4x3_add2::IfcPixelTexture::ColourComponents() const { int v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcPixelTexture::setColourComponents(int v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } +void Ifc4x3_add2::IfcPixelTexture::setColourComponents(const int& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } std::vector< boost::dynamic_bitset<> > /*[1:?]*/ Ifc4x3_add2::IfcPixelTexture::Pixel() const { std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcPixelTexture::setPixel(std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcPixelTexture::setPixel(const std::vector< boost::dynamic_bitset<> > /*[1:?]*/& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcPixelTexture::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[754]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPixelTexture::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[754]); } const IfcParse::entity& Ifc4x3_add2::IfcPixelTexture::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[754]); } -Ifc4x3_add2::IfcPixelTexture::IfcPixelTexture(IfcEntityInstanceData&& e) : IfcSurfaceTexture(std::move(e)) { } -Ifc4x3_add2::IfcPixelTexture::IfcPixelTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, int v6_Width, int v7_Height, int v8_ColourComponents, std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v9_Pixel) : IfcSurfaceTexture(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_RepeatS));set_attribute_value(1, (v2_RepeatT)); if (v3_Mode) {set_attribute_value(2, (*v3_Mode)); }set_attribute_value(3, v4_TextureTransform ? v4_TextureTransform->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_Parameter) {set_attribute_value(4, (*v5_Parameter)); }set_attribute_value(5, (v6_Width));set_attribute_value(6, (v7_Height));set_attribute_value(7, (v8_ColourComponents));set_attribute_value(8, (v9_Pixel));; populate_derived(); } +// Ifc4x3_add2::IfcPixelTexture::IfcPixelTexture(const std::weak_ptr& e) : IfcSurfaceTexture(e) { } +// Ifc4x3_add2::IfcPixelTexture::IfcPixelTexture(bool v1_RepeatS, bool v2_RepeatT, std::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D v4_TextureTransform, std::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, int v6_Width, int v7_Height, int v8_ColourComponents, std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v9_Pixel) : IfcSurfaceTexture(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_RepeatS));set_attribute_value(1, (v2_RepeatT)); if (v3_Mode) {set_attribute_value(2, (*v3_Mode)); } if (v4_TextureTransform) {set_attribute_value(3, (*v4_TextureTransform)); } if (v5_Parameter) {set_attribute_value(4, (*v5_Parameter)); }set_attribute_value(5, (v6_Width));set_attribute_value(6, (v7_Height));set_attribute_value(7, (v8_ColourComponents));set_attribute_value(8, (v9_Pixel));; populate_derived(); } // Function implementations for IfcPlacement -::Ifc4x3_add2::IfcPoint* Ifc4x3_add2::IfcPlacement::Location() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcPoint>(true); } -void Ifc4x3_add2::IfcPlacement::setLocation(::Ifc4x3_add2::IfcPoint* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcPoint Ifc4x3_add2::IfcPlacement::Location() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcPoint>(); } +void Ifc4x3_add2::IfcPlacement::setLocation(const ::Ifc4x3_add2::IfcPoint& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcPlacement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[755]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPlacement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[755]); } const IfcParse::entity& Ifc4x3_add2::IfcPlacement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[755]); } -Ifc4x3_add2::IfcPlacement::IfcPlacement(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcPlacement::IfcPlacement(::Ifc4x3_add2::IfcPoint* v1_Location) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, v1_Location ? v1_Location->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPlacement::IfcPlacement(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcPlacement::IfcPlacement(::Ifc4x3_add2::IfcPoint v1_Location) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Location));; populate_derived(); } // Function implementations for IfcPlanarBox -::Ifc4x3_add2::IfcAxis2Placement* Ifc4x3_add2::IfcPlanarBox::Placement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcAxis2Placement>(true); } -void Ifc4x3_add2::IfcPlanarBox::setPlacement(::Ifc4x3_add2::IfcAxis2Placement* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcAxis2Placement Ifc4x3_add2::IfcPlanarBox::Placement() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcAxis2Placement>(); } +void Ifc4x3_add2::IfcPlanarBox::setPlacement(const ::Ifc4x3_add2::IfcAxis2Placement& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcPlanarBox::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[756]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPlanarBox::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[756]); } const IfcParse::entity& Ifc4x3_add2::IfcPlanarBox::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[756]); } -Ifc4x3_add2::IfcPlanarBox::IfcPlanarBox(IfcEntityInstanceData&& e) : IfcPlanarExtent(std::move(e)) { } -Ifc4x3_add2::IfcPlanarBox::IfcPlanarBox(double v1_SizeInX, double v2_SizeInY, ::Ifc4x3_add2::IfcAxis2Placement* v3_Placement) : IfcPlanarExtent(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_SizeInX));set_attribute_value(1, (v2_SizeInY));set_attribute_value(2, v3_Placement ? v3_Placement->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPlanarBox::IfcPlanarBox(const std::weak_ptr& e) : IfcPlanarExtent(e) { } +// Ifc4x3_add2::IfcPlanarBox::IfcPlanarBox(double v1_SizeInX, double v2_SizeInY, ::Ifc4x3_add2::IfcAxis2Placement v3_Placement) : IfcPlanarExtent(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_SizeInX));set_attribute_value(1, (v2_SizeInY));set_attribute_value(2, (v3_Placement));; populate_derived(); } // Function implementations for IfcPlanarExtent double Ifc4x3_add2::IfcPlanarExtent::SizeInX() const { double v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcPlanarExtent::setSizeInX(double v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcPlanarExtent::setSizeInX(const double& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } double Ifc4x3_add2::IfcPlanarExtent::SizeInY() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcPlanarExtent::setSizeInY(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcPlanarExtent::setSizeInY(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcPlanarExtent::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[757]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPlanarExtent::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[757]); } const IfcParse::entity& Ifc4x3_add2::IfcPlanarExtent::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[757]); } -Ifc4x3_add2::IfcPlanarExtent::IfcPlanarExtent(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcPlanarExtent::IfcPlanarExtent(double v1_SizeInX, double v2_SizeInY) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_SizeInX));set_attribute_value(1, (v2_SizeInY));; populate_derived(); } +// Ifc4x3_add2::IfcPlanarExtent::IfcPlanarExtent(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcPlanarExtent::IfcPlanarExtent(double v1_SizeInX, double v2_SizeInY) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_SizeInX));set_attribute_value(1, (v2_SizeInY));; populate_derived(); } // Function implementations for IfcPlane -const IfcParse::entity& Ifc4x3_add2::IfcPlane::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[759]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPlane::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[759]); } const IfcParse::entity& Ifc4x3_add2::IfcPlane::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[759]); } -Ifc4x3_add2::IfcPlane::IfcPlane(IfcEntityInstanceData&& e) : IfcElementarySurface(std::move(e)) { } -Ifc4x3_add2::IfcPlane::IfcPlane(::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position) : IfcElementarySurface(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPlane::IfcPlane(const std::weak_ptr& e) : IfcElementarySurface(e) { } +// Ifc4x3_add2::IfcPlane::IfcPlane(::Ifc4x3_add2::IfcAxis2Placement3D v1_Position) : IfcElementarySurface(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Position));; populate_derived(); } // Function implementations for IfcPlate -boost::optional< ::Ifc4x3_add2::IfcPlateTypeEnum::Value > Ifc4x3_add2::IfcPlate::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcPlateTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcPlate::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPlateTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcPlateTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcPlateTypeEnum::Value > Ifc4x3_add2::IfcPlate::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcPlateTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcPlate::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPlateTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcPlateTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcPlate::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[761]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPlate::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[761]); } const IfcParse::entity& Ifc4x3_add2::IfcPlate::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[761]); } -Ifc4x3_add2::IfcPlate::IfcPlate(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcPlate::IfcPlate(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcPlateTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcPlateTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcPlate::IfcPlate(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcPlate::IfcPlate(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcPlateTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcPlateTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcPlateType ::Ifc4x3_add2::IfcPlateTypeEnum::Value Ifc4x3_add2::IfcPlateType::PredefinedType() const { return ::Ifc4x3_add2::IfcPlateTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcPlateType::setPredefinedType(::Ifc4x3_add2::IfcPlateTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcPlateTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcPlateType::setPredefinedType(const ::Ifc4x3_add2::IfcPlateTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcPlateTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcPlateType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[762]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPlateType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[762]); } const IfcParse::entity& Ifc4x3_add2::IfcPlateType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[762]); } -Ifc4x3_add2::IfcPlateType::IfcPlateType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcPlateType::IfcPlateType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPlateTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcPlateTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcPlateType::IfcPlateType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcPlateType::IfcPlateType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPlateTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcPlateTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcPoint -const IfcParse::entity& Ifc4x3_add2::IfcPoint::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[764]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPoint::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[764]); } const IfcParse::entity& Ifc4x3_add2::IfcPoint::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[764]); } -Ifc4x3_add2::IfcPoint::IfcPoint(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcPoint::IfcPoint() : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcPoint::IfcPoint(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcPoint::IfcPoint() : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcPointByDistanceExpression -::Ifc4x3_add2::IfcCurveMeasureSelect* Ifc4x3_add2::IfcPointByDistanceExpression::DistanceAlong() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCurveMeasureSelect>(true); } -void Ifc4x3_add2::IfcPointByDistanceExpression::setDistanceAlong(::Ifc4x3_add2::IfcCurveMeasureSelect* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -boost::optional< double > Ifc4x3_add2::IfcPointByDistanceExpression::OffsetLateral() const { if(get_attribute_value(1).isNull()) { return boost::none; } double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcPointByDistanceExpression::setOffsetLateral(boost::optional< double > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< double > Ifc4x3_add2::IfcPointByDistanceExpression::OffsetVertical() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcPointByDistanceExpression::setOffsetVertical(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcPointByDistanceExpression::OffsetLongitudinal() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcPointByDistanceExpression::setOffsetLongitudinal(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcPointByDistanceExpression::BasisCurve() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcPointByDistanceExpression::setBasisCurve(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcCurveMeasureSelect Ifc4x3_add2::IfcPointByDistanceExpression::DistanceAlong() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCurveMeasureSelect>(); } +void Ifc4x3_add2::IfcPointByDistanceExpression::setDistanceAlong(const ::Ifc4x3_add2::IfcCurveMeasureSelect& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< double > Ifc4x3_add2::IfcPointByDistanceExpression::OffsetLateral() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } double v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcPointByDistanceExpression::setOffsetLateral(const std::optional< double >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< double > Ifc4x3_add2::IfcPointByDistanceExpression::OffsetVertical() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcPointByDistanceExpression::setOffsetVertical(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcPointByDistanceExpression::OffsetLongitudinal() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcPointByDistanceExpression::setOffsetLongitudinal(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcPointByDistanceExpression::BasisCurve() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcPointByDistanceExpression::setBasisCurve(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcPointByDistanceExpression::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[765]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPointByDistanceExpression::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[765]); } const IfcParse::entity& Ifc4x3_add2::IfcPointByDistanceExpression::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[765]); } -Ifc4x3_add2::IfcPointByDistanceExpression::IfcPointByDistanceExpression(IfcEntityInstanceData&& e) : IfcPoint(std::move(e)) { } -Ifc4x3_add2::IfcPointByDistanceExpression::IfcPointByDistanceExpression(::Ifc4x3_add2::IfcCurveMeasureSelect* v1_DistanceAlong, boost::optional< double > v2_OffsetLateral, boost::optional< double > v3_OffsetVertical, boost::optional< double > v4_OffsetLongitudinal, ::Ifc4x3_add2::IfcCurve* v5_BasisCurve) : IfcPoint(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_DistanceAlong ? v1_DistanceAlong->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_OffsetLateral) {set_attribute_value(1, (*v2_OffsetLateral)); } if (v3_OffsetVertical) {set_attribute_value(2, (*v3_OffsetVertical)); } if (v4_OffsetLongitudinal) {set_attribute_value(3, (*v4_OffsetLongitudinal)); }set_attribute_value(4, v5_BasisCurve ? v5_BasisCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPointByDistanceExpression::IfcPointByDistanceExpression(const std::weak_ptr& e) : IfcPoint(e) { } +// Ifc4x3_add2::IfcPointByDistanceExpression::IfcPointByDistanceExpression(::Ifc4x3_add2::IfcCurveMeasureSelect v1_DistanceAlong, std::optional< double > v2_OffsetLateral, std::optional< double > v3_OffsetVertical, std::optional< double > v4_OffsetLongitudinal, ::Ifc4x3_add2::IfcCurve v5_BasisCurve) : IfcPoint(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_DistanceAlong)); if (v2_OffsetLateral) {set_attribute_value(1, (*v2_OffsetLateral)); } if (v3_OffsetVertical) {set_attribute_value(2, (*v3_OffsetVertical)); } if (v4_OffsetLongitudinal) {set_attribute_value(3, (*v4_OffsetLongitudinal)); }set_attribute_value(4, (v5_BasisCurve));; populate_derived(); } // Function implementations for IfcPointOnCurve -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcPointOnCurve::BasisCurve() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcPointOnCurve::setBasisCurve(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcPointOnCurve::BasisCurve() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcPointOnCurve::setBasisCurve(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } double Ifc4x3_add2::IfcPointOnCurve::PointParameter() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcPointOnCurve::setPointParameter(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcPointOnCurve::setPointParameter(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcPointOnCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[766]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPointOnCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[766]); } const IfcParse::entity& Ifc4x3_add2::IfcPointOnCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[766]); } -Ifc4x3_add2::IfcPointOnCurve::IfcPointOnCurve(IfcEntityInstanceData&& e) : IfcPoint(std::move(e)) { } -Ifc4x3_add2::IfcPointOnCurve::IfcPointOnCurve(::Ifc4x3_add2::IfcCurve* v1_BasisCurve, double v2_PointParameter) : IfcPoint(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_BasisCurve ? v1_BasisCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_PointParameter));; populate_derived(); } +// Ifc4x3_add2::IfcPointOnCurve::IfcPointOnCurve(const std::weak_ptr& e) : IfcPoint(e) { } +// Ifc4x3_add2::IfcPointOnCurve::IfcPointOnCurve(::Ifc4x3_add2::IfcCurve v1_BasisCurve, double v2_PointParameter) : IfcPoint(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_BasisCurve));set_attribute_value(1, (v2_PointParameter));; populate_derived(); } // Function implementations for IfcPointOnSurface -::Ifc4x3_add2::IfcSurface* Ifc4x3_add2::IfcPointOnSurface::BasisSurface() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcSurface>(true); } -void Ifc4x3_add2::IfcPointOnSurface::setBasisSurface(::Ifc4x3_add2::IfcSurface* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcSurface Ifc4x3_add2::IfcPointOnSurface::BasisSurface() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcSurface>(); } +void Ifc4x3_add2::IfcPointOnSurface::setBasisSurface(const ::Ifc4x3_add2::IfcSurface& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } double Ifc4x3_add2::IfcPointOnSurface::PointParameterU() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcPointOnSurface::setPointParameterU(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcPointOnSurface::setPointParameterU(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } double Ifc4x3_add2::IfcPointOnSurface::PointParameterV() const { double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcPointOnSurface::setPointParameterV(double v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcPointOnSurface::setPointParameterV(const double& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcPointOnSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[767]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPointOnSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[767]); } const IfcParse::entity& Ifc4x3_add2::IfcPointOnSurface::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[767]); } -Ifc4x3_add2::IfcPointOnSurface::IfcPointOnSurface(IfcEntityInstanceData&& e) : IfcPoint(std::move(e)) { } -Ifc4x3_add2::IfcPointOnSurface::IfcPointOnSurface(::Ifc4x3_add2::IfcSurface* v1_BasisSurface, double v2_PointParameterU, double v3_PointParameterV) : IfcPoint(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_BasisSurface ? v1_BasisSurface->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_PointParameterU));set_attribute_value(2, (v3_PointParameterV));; populate_derived(); } +// Ifc4x3_add2::IfcPointOnSurface::IfcPointOnSurface(const std::weak_ptr& e) : IfcPoint(e) { } +// Ifc4x3_add2::IfcPointOnSurface::IfcPointOnSurface(::Ifc4x3_add2::IfcSurface v1_BasisSurface, double v2_PointParameterU, double v3_PointParameterV) : IfcPoint(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_BasisSurface));set_attribute_value(1, (v2_PointParameterU));set_attribute_value(2, (v3_PointParameterV));; populate_derived(); } // Function implementations for IfcPolyLoop -aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr Ifc4x3_add2::IfcPolyLoop::Polygon() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcCartesianPoint >(); } -void Ifc4x3_add2::IfcPolyLoop::setPolygon(aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcCartesianPoint > Ifc4x3_add2::IfcPolyLoop::Polygon() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcCartesianPoint>(es); } +void Ifc4x3_add2::IfcPolyLoop::setPolygon(const std::vector< ::Ifc4x3_add2::IfcCartesianPoint >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcPolyLoop::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[772]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPolyLoop::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[772]); } const IfcParse::entity& Ifc4x3_add2::IfcPolyLoop::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[772]); } -Ifc4x3_add2::IfcPolyLoop::IfcPolyLoop(IfcEntityInstanceData&& e) : IfcLoop(std::move(e)) { } -Ifc4x3_add2::IfcPolyLoop::IfcPolyLoop(aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v1_Polygon) : IfcLoop(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Polygon)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcPolyLoop::IfcPolyLoop(const std::weak_ptr& e) : IfcLoop(e) { } +// Ifc4x3_add2::IfcPolyLoop::IfcPolyLoop(std::vector< ::Ifc4x3_add2::IfcCartesianPoint > v1_Polygon) : IfcLoop(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Polygon)->generalize());; populate_derived(); } // Function implementations for IfcPolygonalBoundedHalfSpace -::Ifc4x3_add2::IfcAxis2Placement3D* Ifc4x3_add2::IfcPolygonalBoundedHalfSpace::Position() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcAxis2Placement3D>(true); } -void Ifc4x3_add2::IfcPolygonalBoundedHalfSpace::setPosition(::Ifc4x3_add2::IfcAxis2Placement3D* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcBoundedCurve* Ifc4x3_add2::IfcPolygonalBoundedHalfSpace::PolygonalBoundary() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcBoundedCurve>(true); } -void Ifc4x3_add2::IfcPolygonalBoundedHalfSpace::setPolygonalBoundary(::Ifc4x3_add2::IfcBoundedCurve* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcAxis2Placement3D Ifc4x3_add2::IfcPolygonalBoundedHalfSpace::Position() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcAxis2Placement3D>(); } +void Ifc4x3_add2::IfcPolygonalBoundedHalfSpace::setPosition(const ::Ifc4x3_add2::IfcAxis2Placement3D& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcBoundedCurve Ifc4x3_add2::IfcPolygonalBoundedHalfSpace::PolygonalBoundary() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcBoundedCurve>(); } +void Ifc4x3_add2::IfcPolygonalBoundedHalfSpace::setPolygonalBoundary(const ::Ifc4x3_add2::IfcBoundedCurve& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcPolygonalBoundedHalfSpace::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[769]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPolygonalBoundedHalfSpace::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[769]); } const IfcParse::entity& Ifc4x3_add2::IfcPolygonalBoundedHalfSpace::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[769]); } -Ifc4x3_add2::IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(IfcEntityInstanceData&& e) : IfcHalfSpaceSolid(std::move(e)) { } -Ifc4x3_add2::IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(::Ifc4x3_add2::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag, ::Ifc4x3_add2::IfcAxis2Placement3D* v3_Position, ::Ifc4x3_add2::IfcBoundedCurve* v4_PolygonalBoundary) : IfcHalfSpaceSolid(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_BaseSurface ? v1_BaseSurface->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_AgreementFlag));set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_PolygonalBoundary ? v4_PolygonalBoundary->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(const std::weak_ptr& e) : IfcHalfSpaceSolid(e) { } +// Ifc4x3_add2::IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(::Ifc4x3_add2::IfcSurface v1_BaseSurface, bool v2_AgreementFlag, ::Ifc4x3_add2::IfcAxis2Placement3D v3_Position, ::Ifc4x3_add2::IfcBoundedCurve v4_PolygonalBoundary) : IfcHalfSpaceSolid(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_BaseSurface));set_attribute_value(1, (v2_AgreementFlag));set_attribute_value(2, (v3_Position));set_attribute_value(3, (v4_PolygonalBoundary));; populate_derived(); } // Function implementations for IfcPolygonalFaceSet -boost::optional< bool > Ifc4x3_add2::IfcPolygonalFaceSet::Closed() const { if(get_attribute_value(1).isNull()) { return boost::none; } bool v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -aggregate_of< ::Ifc4x3_add2::IfcIndexedPolygonalFace >::ptr Ifc4x3_add2::IfcPolygonalFaceSet::Faces() const { aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcIndexedPolygonalFace >(); } -void Ifc4x3_add2::IfcPolygonalFaceSet::setFaces(aggregate_of< ::Ifc4x3_add2::IfcIndexedPolygonalFace >::ptr v) { set_attribute_value(2, (v)->generalize());if constexpr (false)unset_attribute_value(2); } -boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_add2::IfcPolygonalFaceSet::PnIndex() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< bool > Ifc4x3_add2::IfcPolygonalFaceSet::Closed() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } bool v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcPolygonalFaceSet::setClosed(const std::optional< bool >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::vector< ::Ifc4x3_add2::IfcIndexedPolygonalFace > Ifc4x3_add2::IfcPolygonalFaceSet::Faces() const { std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcIndexedPolygonalFace>(es); } +void Ifc4x3_add2::IfcPolygonalFaceSet::setFaces(const std::vector< ::Ifc4x3_add2::IfcIndexedPolygonalFace >& v) { set_attribute_value(2, cast_vector(v));if constexpr (false)unset_attribute_value(2); } +std::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_add2::IfcPolygonalFaceSet::PnIndex() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::vector< int > /*[1:?]*/ v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcPolygonalFaceSet::setPnIndex(const std::optional< std::vector< int > /*[1:?]*/ >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -const IfcParse::entity& Ifc4x3_add2::IfcPolygonalFaceSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[770]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPolygonalFaceSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[770]); } const IfcParse::entity& Ifc4x3_add2::IfcPolygonalFaceSet::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[770]); } -Ifc4x3_add2::IfcPolygonalFaceSet::IfcPolygonalFaceSet(IfcEntityInstanceData&& e) : IfcTessellatedFaceSet(std::move(e)) { } -Ifc4x3_add2::IfcPolygonalFaceSet::IfcPolygonalFaceSet(::Ifc4x3_add2::IfcCartesianPointList3D* v1_Coordinates, boost::optional< bool > v2_Closed, aggregate_of< ::Ifc4x3_add2::IfcIndexedPolygonalFace >::ptr v3_Faces, boost::optional< std::vector< int > /*[1:?]*/ > v4_PnIndex) : IfcTessellatedFaceSet(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_Coordinates ? v1_Coordinates->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_Closed) {set_attribute_value(1, (*v2_Closed)); }set_attribute_value(2, (v3_Faces)->generalize()); if (v4_PnIndex) {set_attribute_value(3, (*v4_PnIndex)); }; populate_derived(); } +// Ifc4x3_add2::IfcPolygonalFaceSet::IfcPolygonalFaceSet(const std::weak_ptr& e) : IfcTessellatedFaceSet(e) { } +// Ifc4x3_add2::IfcPolygonalFaceSet::IfcPolygonalFaceSet(::Ifc4x3_add2::IfcCartesianPointList3D v1_Coordinates, std::optional< bool > v2_Closed, std::vector< ::Ifc4x3_add2::IfcIndexedPolygonalFace > v3_Faces, std::optional< std::vector< int > /*[1:?]*/ > v4_PnIndex) : IfcTessellatedFaceSet(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Coordinates)); if (v2_Closed) {set_attribute_value(1, (*v2_Closed)); }set_attribute_value(2, (v3_Faces)->generalize()); if (v4_PnIndex) {set_attribute_value(3, (*v4_PnIndex)); }; populate_derived(); } // Function implementations for IfcPolyline -aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr Ifc4x3_add2::IfcPolyline::Points() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcCartesianPoint >(); } -void Ifc4x3_add2::IfcPolyline::setPoints(aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcCartesianPoint > Ifc4x3_add2::IfcPolyline::Points() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcCartesianPoint>(es); } +void Ifc4x3_add2::IfcPolyline::setPoints(const std::vector< ::Ifc4x3_add2::IfcCartesianPoint >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcPolyline::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[771]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPolyline::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[771]); } const IfcParse::entity& Ifc4x3_add2::IfcPolyline::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[771]); } -Ifc4x3_add2::IfcPolyline::IfcPolyline(IfcEntityInstanceData&& e) : IfcBoundedCurve(std::move(e)) { } -Ifc4x3_add2::IfcPolyline::IfcPolyline(aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v1_Points) : IfcBoundedCurve(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Points)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcPolyline::IfcPolyline(const std::weak_ptr& e) : IfcBoundedCurve(e) { } +// Ifc4x3_add2::IfcPolyline::IfcPolyline(std::vector< ::Ifc4x3_add2::IfcCartesianPoint > v1_Points) : IfcBoundedCurve(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Points)->generalize());; populate_derived(); } // Function implementations for IfcPolynomialCurve -::Ifc4x3_add2::IfcPlacement* Ifc4x3_add2::IfcPolynomialCurve::Position() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcPlacement>(true); } -void Ifc4x3_add2::IfcPolynomialCurve::setPosition(::Ifc4x3_add2::IfcPlacement* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -boost::optional< std::vector< double > /*[2:?]*/ > Ifc4x3_add2::IfcPolynomialCurve::CoefficientsX() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::vector< double > /*[2:?]*/ v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcPolynomialCurve::setCoefficientsX(boost::optional< std::vector< double > /*[2:?]*/ > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::vector< double > /*[2:?]*/ > Ifc4x3_add2::IfcPolynomialCurve::CoefficientsY() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::vector< double > /*[2:?]*/ v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcPolynomialCurve::setCoefficientsY(boost::optional< std::vector< double > /*[2:?]*/ > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< std::vector< double > /*[2:?]*/ > Ifc4x3_add2::IfcPolynomialCurve::CoefficientsZ() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::vector< double > /*[2:?]*/ v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcPolynomialCurve::setCoefficientsZ(boost::optional< std::vector< double > /*[2:?]*/ > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +::Ifc4x3_add2::IfcPlacement Ifc4x3_add2::IfcPolynomialCurve::Position() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcPlacement>(); } +void Ifc4x3_add2::IfcPolynomialCurve::setPosition(const ::Ifc4x3_add2::IfcPlacement& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< std::vector< double > /*[2:?]*/ > Ifc4x3_add2::IfcPolynomialCurve::CoefficientsX() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::vector< double > /*[2:?]*/ v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcPolynomialCurve::setCoefficientsX(const std::optional< std::vector< double > /*[2:?]*/ >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::vector< double > /*[2:?]*/ > Ifc4x3_add2::IfcPolynomialCurve::CoefficientsY() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::vector< double > /*[2:?]*/ v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcPolynomialCurve::setCoefficientsY(const std::optional< std::vector< double > /*[2:?]*/ >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::vector< double > /*[2:?]*/ > Ifc4x3_add2::IfcPolynomialCurve::CoefficientsZ() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::vector< double > /*[2:?]*/ v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcPolynomialCurve::setCoefficientsZ(const std::optional< std::vector< double > /*[2:?]*/ >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -const IfcParse::entity& Ifc4x3_add2::IfcPolynomialCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[773]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPolynomialCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[773]); } const IfcParse::entity& Ifc4x3_add2::IfcPolynomialCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[773]); } -Ifc4x3_add2::IfcPolynomialCurve::IfcPolynomialCurve(IfcEntityInstanceData&& e) : IfcCurve(std::move(e)) { } -Ifc4x3_add2::IfcPolynomialCurve::IfcPolynomialCurve(::Ifc4x3_add2::IfcPlacement* v1_Position, boost::optional< std::vector< double > /*[2:?]*/ > v2_CoefficientsX, boost::optional< std::vector< double > /*[2:?]*/ > v3_CoefficientsY, boost::optional< std::vector< double > /*[2:?]*/ > v4_CoefficientsZ) : IfcCurve(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_CoefficientsX) {set_attribute_value(1, (*v2_CoefficientsX)); } if (v3_CoefficientsY) {set_attribute_value(2, (*v3_CoefficientsY)); } if (v4_CoefficientsZ) {set_attribute_value(3, (*v4_CoefficientsZ)); }; populate_derived(); } +// Ifc4x3_add2::IfcPolynomialCurve::IfcPolynomialCurve(const std::weak_ptr& e) : IfcCurve(e) { } +// Ifc4x3_add2::IfcPolynomialCurve::IfcPolynomialCurve(::Ifc4x3_add2::IfcPlacement v1_Position, std::optional< std::vector< double > /*[2:?]*/ > v2_CoefficientsX, std::optional< std::vector< double > /*[2:?]*/ > v3_CoefficientsY, std::optional< std::vector< double > /*[2:?]*/ > v4_CoefficientsZ) : IfcCurve(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Position)); if (v2_CoefficientsX) {set_attribute_value(1, (*v2_CoefficientsX)); } if (v3_CoefficientsY) {set_attribute_value(2, (*v3_CoefficientsY)); } if (v4_CoefficientsZ) {set_attribute_value(3, (*v4_CoefficientsZ)); }; populate_derived(); } // Function implementations for IfcPort -::Ifc4x3_add2::IfcRelConnectsPortToElement::list::ptr Ifc4x3_add2::IfcPort::ContainedIn() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[921], 4)->as(); } -::Ifc4x3_add2::IfcRelConnectsPorts::list::ptr Ifc4x3_add2::IfcPort::ConnectedFrom() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[920], 5)->as(); } -::Ifc4x3_add2::IfcRelConnectsPorts::list::ptr Ifc4x3_add2::IfcPort::ConnectedTo() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[920], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelConnectsPortToElement> Ifc4x3_add2::IfcPort::ContainedIn() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[921], 4)); } +std::vector<::Ifc4x3_add2::IfcRelConnectsPorts> Ifc4x3_add2::IfcPort::ConnectedFrom() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[920], 5)); } +std::vector<::Ifc4x3_add2::IfcRelConnectsPorts> Ifc4x3_add2::IfcPort::ConnectedTo() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[920], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcPort::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[774]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPort::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[774]); } const IfcParse::entity& Ifc4x3_add2::IfcPort::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[774]); } -Ifc4x3_add2::IfcPort::IfcPort(IfcEntityInstanceData&& e) : IfcProduct(std::move(e)) { } -Ifc4x3_add2::IfcPort::IfcPort(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation) : IfcProduct(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPort::IfcPort(const std::weak_ptr& e) : IfcProduct(e) { } +// Ifc4x3_add2::IfcPort::IfcPort(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation) : IfcProduct(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }; populate_derived(); } // Function implementations for IfcPositioningElement -::Ifc4x3_add2::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_add2::IfcPositioningElement::ContainedInStructure() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[926], 4)->as(); } -::Ifc4x3_add2::IfcRelPositions::list::ptr Ifc4x3_add2::IfcPositioningElement::Positions() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[940], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelContainedInSpatialStructure> Ifc4x3_add2::IfcPositioningElement::ContainedInStructure() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[926], 4)); } +std::vector<::Ifc4x3_add2::IfcRelPositions> Ifc4x3_add2::IfcPositioningElement::Positions() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[940], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcPositioningElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[775]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPositioningElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[775]); } const IfcParse::entity& Ifc4x3_add2::IfcPositioningElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[775]); } -Ifc4x3_add2::IfcPositioningElement::IfcPositioningElement(IfcEntityInstanceData&& e) : IfcProduct(std::move(e)) { } -Ifc4x3_add2::IfcPositioningElement::IfcPositioningElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation) : IfcProduct(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPositioningElement::IfcPositioningElement(const std::weak_ptr& e) : IfcProduct(e) { } +// Ifc4x3_add2::IfcPositioningElement::IfcPositioningElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation) : IfcProduct(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }; populate_derived(); } // Function implementations for IfcPostalAddress -boost::optional< std::string > Ifc4x3_add2::IfcPostalAddress::InternalLocation() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcPostalAddress::AddressLines() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcPostalAddress::PostalBox() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< std::string > Ifc4x3_add2::IfcPostalAddress::Town() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcPostalAddress::setTown(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< std::string > Ifc4x3_add2::IfcPostalAddress::Region() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcPostalAddress::setRegion(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< std::string > Ifc4x3_add2::IfcPostalAddress::PostalCode() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -boost::optional< std::string > Ifc4x3_add2::IfcPostalAddress::Country() const { if(get_attribute_value(9).isNull()) { return boost::none; } std::string v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcPostalAddress::setCountry(boost::optional< std::string > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< std::string > Ifc4x3_add2::IfcPostalAddress::InternalLocation() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcPostalAddress::setInternalLocation(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcPostalAddress::AddressLines() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcPostalAddress::setAddressLines(const std::optional< std::vector< std::string > /*[1:?]*/ >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcPostalAddress::PostalBox() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcPostalAddress::setPostalBox(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcPostalAddress::Town() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcPostalAddress::setTown(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcPostalAddress::Region() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcPostalAddress::setRegion(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcPostalAddress::PostalCode() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcPostalAddress::setPostalCode(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< std::string > Ifc4x3_add2::IfcPostalAddress::Country() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } std::string v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcPostalAddress::setCountry(const std::optional< std::string >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcPostalAddress::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[780]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPostalAddress::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[780]); } const IfcParse::entity& Ifc4x3_add2::IfcPostalAddress::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[780]); } -Ifc4x3_add2::IfcPostalAddress::IfcPostalAddress(IfcEntityInstanceData&& e) : IfcAddress(std::move(e)) { } -Ifc4x3_add2::IfcPostalAddress::IfcPostalAddress(boost::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose, boost::optional< std::string > v4_InternalLocation, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_AddressLines, boost::optional< std::string > v6_PostalBox, boost::optional< std::string > v7_Town, boost::optional< std::string > v8_Region, boost::optional< std::string > v9_PostalCode, boost::optional< std::string > v10_Country) : IfcAddress(IfcEntityInstanceData(in_memory_attribute_storage(10))) { if (v1_Purpose) {set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcAddressTypeEnum::Class(),(size_t)*v1_Purpose))); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_UserDefinedPurpose) {set_attribute_value(2, (*v3_UserDefinedPurpose)); } if (v4_InternalLocation) {set_attribute_value(3, (*v4_InternalLocation)); } if (v5_AddressLines) {set_attribute_value(4, (*v5_AddressLines)); } if (v6_PostalBox) {set_attribute_value(5, (*v6_PostalBox)); } if (v7_Town) {set_attribute_value(6, (*v7_Town)); } if (v8_Region) {set_attribute_value(7, (*v8_Region)); } if (v9_PostalCode) {set_attribute_value(8, (*v9_PostalCode)); } if (v10_Country) {set_attribute_value(9, (*v10_Country)); }; populate_derived(); } +// Ifc4x3_add2::IfcPostalAddress::IfcPostalAddress(const std::weak_ptr& e) : IfcAddress(e) { } +// Ifc4x3_add2::IfcPostalAddress::IfcPostalAddress(std::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > v1_Purpose, std::optional< std::string > v2_Description, std::optional< std::string > v3_UserDefinedPurpose, std::optional< std::string > v4_InternalLocation, std::optional< std::vector< std::string > /*[1:?]*/ > v5_AddressLines, std::optional< std::string > v6_PostalBox, std::optional< std::string > v7_Town, std::optional< std::string > v8_Region, std::optional< std::string > v9_PostalCode, std::optional< std::string > v10_Country) : IfcAddress(const std::weak_ptr&(in_memory_attribute_storage(10))) { if (v1_Purpose) {set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcAddressTypeEnum::Class(),(size_t)*v1_Purpose))); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_UserDefinedPurpose) {set_attribute_value(2, (*v3_UserDefinedPurpose)); } if (v4_InternalLocation) {set_attribute_value(3, (*v4_InternalLocation)); } if (v5_AddressLines) {set_attribute_value(4, (*v5_AddressLines)); } if (v6_PostalBox) {set_attribute_value(5, (*v6_PostalBox)); } if (v7_Town) {set_attribute_value(6, (*v7_Town)); } if (v8_Region) {set_attribute_value(7, (*v8_Region)); } if (v9_PostalCode) {set_attribute_value(8, (*v9_PostalCode)); } if (v10_Country) {set_attribute_value(9, (*v10_Country)); }; populate_derived(); } // Function implementations for IfcPreDefinedColour -const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedColour::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[782]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedColour::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[782]); } const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedColour::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[782]); } -Ifc4x3_add2::IfcPreDefinedColour::IfcPreDefinedColour(IfcEntityInstanceData&& e) : IfcPreDefinedItem(std::move(e)) { } -Ifc4x3_add2::IfcPreDefinedColour::IfcPreDefinedColour(std::string v1_Name) : IfcPreDefinedItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Name));; populate_derived(); } +// Ifc4x3_add2::IfcPreDefinedColour::IfcPreDefinedColour(const std::weak_ptr& e) : IfcPreDefinedItem(e) { } +// Ifc4x3_add2::IfcPreDefinedColour::IfcPreDefinedColour(std::string v1_Name) : IfcPreDefinedItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Name));; populate_derived(); } // Function implementations for IfcPreDefinedCurveFont -const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedCurveFont::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[783]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedCurveFont::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[783]); } const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedCurveFont::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[783]); } -Ifc4x3_add2::IfcPreDefinedCurveFont::IfcPreDefinedCurveFont(IfcEntityInstanceData&& e) : IfcPreDefinedItem(std::move(e)) { } -Ifc4x3_add2::IfcPreDefinedCurveFont::IfcPreDefinedCurveFont(std::string v1_Name) : IfcPreDefinedItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Name));; populate_derived(); } +// Ifc4x3_add2::IfcPreDefinedCurveFont::IfcPreDefinedCurveFont(const std::weak_ptr& e) : IfcPreDefinedItem(e) { } +// Ifc4x3_add2::IfcPreDefinedCurveFont::IfcPreDefinedCurveFont(std::string v1_Name) : IfcPreDefinedItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Name));; populate_derived(); } // Function implementations for IfcPreDefinedItem std::string Ifc4x3_add2::IfcPreDefinedItem::Name() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcPreDefinedItem::setName(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcPreDefinedItem::setName(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[784]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[784]); } const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedItem::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[784]); } -Ifc4x3_add2::IfcPreDefinedItem::IfcPreDefinedItem(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcPreDefinedItem::IfcPreDefinedItem(std::string v1_Name) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Name));; populate_derived(); } +// Ifc4x3_add2::IfcPreDefinedItem::IfcPreDefinedItem(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcPreDefinedItem::IfcPreDefinedItem(std::string v1_Name) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Name));; populate_derived(); } // Function implementations for IfcPreDefinedProperties -const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[785]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[785]); } const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedProperties::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[785]); } -Ifc4x3_add2::IfcPreDefinedProperties::IfcPreDefinedProperties(IfcEntityInstanceData&& e) : IfcPropertyAbstraction(std::move(e)) { } -Ifc4x3_add2::IfcPreDefinedProperties::IfcPreDefinedProperties() : IfcPropertyAbstraction(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcPreDefinedProperties::IfcPreDefinedProperties(const std::weak_ptr& e) : IfcPropertyAbstraction(e) { } +// Ifc4x3_add2::IfcPreDefinedProperties::IfcPreDefinedProperties() : IfcPropertyAbstraction(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcPreDefinedPropertySet -const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedPropertySet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[786]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedPropertySet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[786]); } const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedPropertySet::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[786]); } -Ifc4x3_add2::IfcPreDefinedPropertySet::IfcPreDefinedPropertySet(IfcEntityInstanceData&& e) : IfcPropertySetDefinition(std::move(e)) { } -Ifc4x3_add2::IfcPreDefinedPropertySet::IfcPreDefinedPropertySet(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertySetDefinition(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcPreDefinedPropertySet::IfcPreDefinedPropertySet(const std::weak_ptr& e) : IfcPropertySetDefinition(e) { } +// Ifc4x3_add2::IfcPreDefinedPropertySet::IfcPreDefinedPropertySet(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description) : IfcPropertySetDefinition(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } // Function implementations for IfcPreDefinedTextFont -const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedTextFont::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[787]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedTextFont::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[787]); } const IfcParse::entity& Ifc4x3_add2::IfcPreDefinedTextFont::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[787]); } -Ifc4x3_add2::IfcPreDefinedTextFont::IfcPreDefinedTextFont(IfcEntityInstanceData&& e) : IfcPreDefinedItem(std::move(e)) { } -Ifc4x3_add2::IfcPreDefinedTextFont::IfcPreDefinedTextFont(std::string v1_Name) : IfcPreDefinedItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Name));; populate_derived(); } +// Ifc4x3_add2::IfcPreDefinedTextFont::IfcPreDefinedTextFont(const std::weak_ptr& e) : IfcPreDefinedItem(e) { } +// Ifc4x3_add2::IfcPreDefinedTextFont::IfcPreDefinedTextFont(std::string v1_Name) : IfcPreDefinedItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Name));; populate_derived(); } // Function implementations for IfcPresentationItem -const IfcParse::entity& Ifc4x3_add2::IfcPresentationItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[790]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPresentationItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[790]); } const IfcParse::entity& Ifc4x3_add2::IfcPresentationItem::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[790]); } -Ifc4x3_add2::IfcPresentationItem::IfcPresentationItem(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcPresentationItem::IfcPresentationItem() : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcPresentationItem::IfcPresentationItem(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcPresentationItem::IfcPresentationItem() : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcPresentationLayerAssignment std::string Ifc4x3_add2::IfcPresentationLayerAssignment::Name() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcPresentationLayerAssignment::setName(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -boost::optional< std::string > Ifc4x3_add2::IfcPresentationLayerAssignment::Description() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -aggregate_of< ::Ifc4x3_add2::IfcLayeredItem >::ptr Ifc4x3_add2::IfcPresentationLayerAssignment::AssignedItems() const { aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcLayeredItem >(); } -void Ifc4x3_add2::IfcPresentationLayerAssignment::setAssignedItems(aggregate_of< ::Ifc4x3_add2::IfcLayeredItem >::ptr v) { set_attribute_value(2, (v)->generalize());if constexpr (false)unset_attribute_value(2); } -boost::optional< std::string > Ifc4x3_add2::IfcPresentationLayerAssignment::Identifier() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +void Ifc4x3_add2::IfcPresentationLayerAssignment::setName(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< std::string > Ifc4x3_add2::IfcPresentationLayerAssignment::Description() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcPresentationLayerAssignment::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::vector< ::Ifc4x3_add2::IfcLayeredItem > Ifc4x3_add2::IfcPresentationLayerAssignment::AssignedItems() const { std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcLayeredItem>(es); } +void Ifc4x3_add2::IfcPresentationLayerAssignment::setAssignedItems(const std::vector< ::Ifc4x3_add2::IfcLayeredItem >& v) { set_attribute_value(2, cast_vector(v));if constexpr (false)unset_attribute_value(2); } +std::optional< std::string > Ifc4x3_add2::IfcPresentationLayerAssignment::Identifier() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcPresentationLayerAssignment::setIdentifier(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -const IfcParse::entity& Ifc4x3_add2::IfcPresentationLayerAssignment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[791]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPresentationLayerAssignment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[791]); } const IfcParse::entity& Ifc4x3_add2::IfcPresentationLayerAssignment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[791]); } -Ifc4x3_add2::IfcPresentationLayerAssignment::IfcPresentationLayerAssignment(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcPresentationLayerAssignment::IfcPresentationLayerAssignment(std::string v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcLayeredItem >::ptr v3_AssignedItems, boost::optional< std::string > v4_Identifier) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_AssignedItems)->generalize()); if (v4_Identifier) {set_attribute_value(3, (*v4_Identifier)); }; populate_derived(); } +// Ifc4x3_add2::IfcPresentationLayerAssignment::IfcPresentationLayerAssignment(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcPresentationLayerAssignment::IfcPresentationLayerAssignment(std::string v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcLayeredItem > v3_AssignedItems, std::optional< std::string > v4_Identifier) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_AssignedItems)->generalize()); if (v4_Identifier) {set_attribute_value(3, (*v4_Identifier)); }; populate_derived(); } // Function implementations for IfcPresentationLayerWithStyle boost::logic::tribool Ifc4x3_add2::IfcPresentationLayerWithStyle::LayerOn() const { boost::logic::tribool v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcPresentationLayerWithStyle::setLayerOn(boost::logic::tribool v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcPresentationLayerWithStyle::setLayerOn(const boost::logic::tribool& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } boost::logic::tribool Ifc4x3_add2::IfcPresentationLayerWithStyle::LayerFrozen() const { boost::logic::tribool v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcPresentationLayerWithStyle::setLayerFrozen(boost::logic::tribool v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcPresentationLayerWithStyle::setLayerFrozen(const boost::logic::tribool& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } boost::logic::tribool Ifc4x3_add2::IfcPresentationLayerWithStyle::LayerBlocked() const { boost::logic::tribool v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcPresentationLayerWithStyle::setLayerBlocked(boost::logic::tribool v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -aggregate_of< ::Ifc4x3_add2::IfcPresentationStyle >::ptr Ifc4x3_add2::IfcPresentationLayerWithStyle::LayerStyles() const { aggregate_of_instance::ptr es = get_attribute_value(7); return es->as< ::Ifc4x3_add2::IfcPresentationStyle >(); } -void Ifc4x3_add2::IfcPresentationLayerWithStyle::setLayerStyles(aggregate_of< ::Ifc4x3_add2::IfcPresentationStyle >::ptr v) { set_attribute_value(7, (v)->generalize());if constexpr (false)unset_attribute_value(7); } +void Ifc4x3_add2::IfcPresentationLayerWithStyle::setLayerBlocked(const boost::logic::tribool& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::vector< ::Ifc4x3_add2::IfcPresentationStyle > Ifc4x3_add2::IfcPresentationLayerWithStyle::LayerStyles() const { std::vector es = get_attribute_value(7); return cast_vector<::Ifc4x3_add2::IfcPresentationStyle>(es); } +void Ifc4x3_add2::IfcPresentationLayerWithStyle::setLayerStyles(const std::vector< ::Ifc4x3_add2::IfcPresentationStyle >& v) { set_attribute_value(7, cast_vector(v));if constexpr (false)unset_attribute_value(7); } -const IfcParse::entity& Ifc4x3_add2::IfcPresentationLayerWithStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[792]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPresentationLayerWithStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[792]); } const IfcParse::entity& Ifc4x3_add2::IfcPresentationLayerWithStyle::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[792]); } -Ifc4x3_add2::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(IfcEntityInstanceData&& e) : IfcPresentationLayerAssignment(std::move(e)) { } -Ifc4x3_add2::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(std::string v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcLayeredItem >::ptr v3_AssignedItems, boost::optional< std::string > v4_Identifier, boost::logic::tribool v5_LayerOn, boost::logic::tribool v6_LayerFrozen, boost::logic::tribool v7_LayerBlocked, aggregate_of< ::Ifc4x3_add2::IfcPresentationStyle >::ptr v8_LayerStyles) : IfcPresentationLayerAssignment(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_AssignedItems)->generalize()); if (v4_Identifier) {set_attribute_value(3, (*v4_Identifier)); }set_attribute_value(4, (v5_LayerOn));set_attribute_value(5, (v6_LayerFrozen));set_attribute_value(6, (v7_LayerBlocked));set_attribute_value(7, (v8_LayerStyles)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(const std::weak_ptr& e) : IfcPresentationLayerAssignment(e) { } +// Ifc4x3_add2::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(std::string v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcLayeredItem > v3_AssignedItems, std::optional< std::string > v4_Identifier, boost::logic::tribool v5_LayerOn, boost::logic::tribool v6_LayerFrozen, boost::logic::tribool v7_LayerBlocked, std::vector< ::Ifc4x3_add2::IfcPresentationStyle > v8_LayerStyles) : IfcPresentationLayerAssignment(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_AssignedItems)->generalize()); if (v4_Identifier) {set_attribute_value(3, (*v4_Identifier)); }set_attribute_value(4, (v5_LayerOn));set_attribute_value(5, (v6_LayerFrozen));set_attribute_value(6, (v7_LayerBlocked));set_attribute_value(7, (v8_LayerStyles)->generalize());; populate_derived(); } // Function implementations for IfcPresentationStyle -boost::optional< std::string > Ifc4x3_add2::IfcPresentationStyle::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcPresentationStyle::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcPresentationStyle::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcPresentationStyle::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -const IfcParse::entity& Ifc4x3_add2::IfcPresentationStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[793]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPresentationStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[793]); } const IfcParse::entity& Ifc4x3_add2::IfcPresentationStyle::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[793]); } -Ifc4x3_add2::IfcPresentationStyle::IfcPresentationStyle(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcPresentationStyle::IfcPresentationStyle(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(1))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }; populate_derived(); } +// Ifc4x3_add2::IfcPresentationStyle::IfcPresentationStyle(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcPresentationStyle::IfcPresentationStyle(std::optional< std::string > v1_Name) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(1))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }; populate_derived(); } // Function implementations for IfcProcedure -boost::optional< ::Ifc4x3_add2::IfcProcedureTypeEnum::Value > Ifc4x3_add2::IfcProcedure::PredefinedType() const { if(get_attribute_value(7).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcProcedureTypeEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcProcedureTypeEnum::Value > v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcProcedureTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } +std::optional< ::Ifc4x3_add2::IfcProcedureTypeEnum::Value > Ifc4x3_add2::IfcProcedure::PredefinedType() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcProcedureTypeEnum::FromString(get_attribute_value(7)); } +void Ifc4x3_add2::IfcProcedure::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcProcedureTypeEnum::Value >& v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcProcedureTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } -const IfcParse::entity& Ifc4x3_add2::IfcProcedure::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[795]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProcedure::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[795]); } const IfcParse::entity& Ifc4x3_add2::IfcProcedure::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[795]); } -Ifc4x3_add2::IfcProcedure::IfcProcedure(IfcEntityInstanceData&& e) : IfcProcess(std::move(e)) { } -Ifc4x3_add2::IfcProcedure::IfcProcedure(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, boost::optional< ::Ifc4x3_add2::IfcProcedureTypeEnum::Value > v8_PredefinedType) : IfcProcess(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); } if (v8_PredefinedType) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcProcedureTypeEnum::Class(),(size_t)*v8_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcProcedure::IfcProcedure(const std::weak_ptr& e) : IfcProcess(e) { } +// Ifc4x3_add2::IfcProcedure::IfcProcedure(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, std::optional< ::Ifc4x3_add2::IfcProcedureTypeEnum::Value > v8_PredefinedType) : IfcProcess(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); } if (v8_PredefinedType) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcProcedureTypeEnum::Class(),(size_t)*v8_PredefinedType))); }; populate_derived(); } // Function implementations for IfcProcedureType ::Ifc4x3_add2::IfcProcedureTypeEnum::Value Ifc4x3_add2::IfcProcedureType::PredefinedType() const { return ::Ifc4x3_add2::IfcProcedureTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcProcedureType::setPredefinedType(::Ifc4x3_add2::IfcProcedureTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcProcedureTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcProcedureType::setPredefinedType(const ::Ifc4x3_add2::IfcProcedureTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcProcedureTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcProcedureType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[796]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProcedureType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[796]); } const IfcParse::entity& Ifc4x3_add2::IfcProcedureType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[796]); } -Ifc4x3_add2::IfcProcedureType::IfcProcedureType(IfcEntityInstanceData&& e) : IfcTypeProcess(std::move(e)) { } -Ifc4x3_add2::IfcProcedureType::IfcProcedureType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, ::Ifc4x3_add2::IfcProcedureTypeEnum::Value v10_PredefinedType) : IfcTypeProcess(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ProcessType) {set_attribute_value(8, (*v9_ProcessType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcProcedureTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcProcedureType::IfcProcedureType(const std::weak_ptr& e) : IfcTypeProcess(e) { } +// Ifc4x3_add2::IfcProcedureType::IfcProcedureType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ProcessType, ::Ifc4x3_add2::IfcProcedureTypeEnum::Value v10_PredefinedType) : IfcTypeProcess(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ProcessType) {set_attribute_value(8, (*v9_ProcessType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcProcedureTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcProcess -boost::optional< std::string > Ifc4x3_add2::IfcProcess::Identification() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcProcess::setIdentification(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< std::string > Ifc4x3_add2::IfcProcess::LongDescription() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcProcess::setLongDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcProcess::Identification() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcProcess::setIdentification(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcProcess::LongDescription() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcProcess::setLongDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -::Ifc4x3_add2::IfcRelSequence::list::ptr Ifc4x3_add2::IfcProcess::IsPredecessorTo() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[943], 4)->as(); } -::Ifc4x3_add2::IfcRelSequence::list::ptr Ifc4x3_add2::IfcProcess::IsSuccessorFrom() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[943], 5)->as(); } -::Ifc4x3_add2::IfcRelAssignsToProcess::list::ptr Ifc4x3_add2::IfcProcess::OperatesOn() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[905], 6)->as(); } +std::vector<::Ifc4x3_add2::IfcRelSequence> Ifc4x3_add2::IfcProcess::IsPredecessorTo() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[943], 4)); } +std::vector<::Ifc4x3_add2::IfcRelSequence> Ifc4x3_add2::IfcProcess::IsSuccessorFrom() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[943], 5)); } +std::vector<::Ifc4x3_add2::IfcRelAssignsToProcess> Ifc4x3_add2::IfcProcess::OperatesOn() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[905], 6)); } -const IfcParse::entity& Ifc4x3_add2::IfcProcess::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[798]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProcess::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[798]); } const IfcParse::entity& Ifc4x3_add2::IfcProcess::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[798]); } -Ifc4x3_add2::IfcProcess::IfcProcess(IfcEntityInstanceData&& e) : IfcObject(std::move(e)) { } -Ifc4x3_add2::IfcProcess::IfcProcess(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription) : IfcObject(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); }; populate_derived(); } +// Ifc4x3_add2::IfcProcess::IfcProcess(const std::weak_ptr& e) : IfcObject(e) { } +// Ifc4x3_add2::IfcProcess::IfcProcess(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription) : IfcObject(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); }; populate_derived(); } // Function implementations for IfcProduct -::Ifc4x3_add2::IfcObjectPlacement* Ifc4x3_add2::IfcProduct::ObjectPlacement() const { if(get_attribute_value(5).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcObjectPlacement>(true); } -void Ifc4x3_add2::IfcProduct::setObjectPlacement(::Ifc4x3_add2::IfcObjectPlacement* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcProductRepresentation* Ifc4x3_add2::IfcProduct::Representation() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcProductRepresentation>(true); } -void Ifc4x3_add2::IfcProduct::setRepresentation(::Ifc4x3_add2::IfcProductRepresentation* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcObjectPlacement Ifc4x3_add2::IfcProduct::ObjectPlacement() const { if(get_attribute_value(5).isNull()) { return ::Ifc4x3_add2::IfcObjectPlacement{}; } return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcObjectPlacement>(); } +void Ifc4x3_add2::IfcProduct::setObjectPlacement(const ::Ifc4x3_add2::IfcObjectPlacement& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcProductRepresentation Ifc4x3_add2::IfcProduct::Representation() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcProductRepresentation{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcProductRepresentation>(); } +void Ifc4x3_add2::IfcProduct::setRepresentation(const ::Ifc4x3_add2::IfcProductRepresentation& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -::Ifc4x3_add2::IfcRelAssignsToProduct::list::ptr Ifc4x3_add2::IfcProduct::ReferencedBy() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[906], 6)->as(); } -::Ifc4x3_add2::IfcRelPositions::list::ptr Ifc4x3_add2::IfcProduct::PositionedRelativeTo() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[940], 5)->as(); } -::Ifc4x3_add2::IfcRelReferencedInSpatialStructure::list::ptr Ifc4x3_add2::IfcProduct::ReferencedInStructures() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[942], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssignsToProduct> Ifc4x3_add2::IfcProduct::ReferencedBy() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[906], 6)); } +std::vector<::Ifc4x3_add2::IfcRelPositions> Ifc4x3_add2::IfcProduct::PositionedRelativeTo() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[940], 5)); } +std::vector<::Ifc4x3_add2::IfcRelReferencedInSpatialStructure> Ifc4x3_add2::IfcProduct::ReferencedInStructures() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[942], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcProduct::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[800]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProduct::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[800]); } const IfcParse::entity& Ifc4x3_add2::IfcProduct::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[800]); } -Ifc4x3_add2::IfcProduct::IfcProduct(IfcEntityInstanceData&& e) : IfcObject(std::move(e)) { } -Ifc4x3_add2::IfcProduct::IfcProduct(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation) : IfcObject(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcProduct::IfcProduct(const std::weak_ptr& e) : IfcObject(e) { } +// Ifc4x3_add2::IfcProduct::IfcProduct(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation) : IfcObject(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }; populate_derived(); } // Function implementations for IfcProductDefinitionShape -::Ifc4x3_add2::IfcProduct::list::ptr Ifc4x3_add2::IfcProductDefinitionShape::ShapeOfProduct() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[800], 6)->as(); } -::Ifc4x3_add2::IfcShapeAspect::list::ptr Ifc4x3_add2::IfcProductDefinitionShape::HasShapeAspects() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[1006], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcProduct> Ifc4x3_add2::IfcProductDefinitionShape::ShapeOfProduct() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[800], 6)); } +std::vector<::Ifc4x3_add2::IfcShapeAspect> Ifc4x3_add2::IfcProductDefinitionShape::HasShapeAspects() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[1006], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcProductDefinitionShape::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[801]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProductDefinitionShape::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[801]); } const IfcParse::entity& Ifc4x3_add2::IfcProductDefinitionShape::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[801]); } -Ifc4x3_add2::IfcProductDefinitionShape::IfcProductDefinitionShape(IfcEntityInstanceData&& e) : IfcProductRepresentation(std::move(e)) { } -Ifc4x3_add2::IfcProductDefinitionShape::IfcProductDefinitionShape(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcRepresentation >::ptr v3_Representations) : IfcProductRepresentation(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_Representations)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcProductDefinitionShape::IfcProductDefinitionShape(const std::weak_ptr& e) : IfcProductRepresentation(e) { } +// Ifc4x3_add2::IfcProductDefinitionShape::IfcProductDefinitionShape(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcRepresentation > v3_Representations) : IfcProductRepresentation(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_Representations)->generalize());; populate_derived(); } // Function implementations for IfcProductRepresentation -boost::optional< std::string > Ifc4x3_add2::IfcProductRepresentation::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcProductRepresentation::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcProductRepresentation::Description() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -aggregate_of< ::Ifc4x3_add2::IfcRepresentation >::ptr Ifc4x3_add2::IfcProductRepresentation::Representations() const { aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcRepresentation >(); } -void Ifc4x3_add2::IfcProductRepresentation::setRepresentations(aggregate_of< ::Ifc4x3_add2::IfcRepresentation >::ptr v) { set_attribute_value(2, (v)->generalize());if constexpr (false)unset_attribute_value(2); } +std::optional< std::string > Ifc4x3_add2::IfcProductRepresentation::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcProductRepresentation::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcProductRepresentation::Description() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcProductRepresentation::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::vector< ::Ifc4x3_add2::IfcRepresentation > Ifc4x3_add2::IfcProductRepresentation::Representations() const { std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcRepresentation>(es); } +void Ifc4x3_add2::IfcProductRepresentation::setRepresentations(const std::vector< ::Ifc4x3_add2::IfcRepresentation >& v) { set_attribute_value(2, cast_vector(v));if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcProductRepresentation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[802]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProductRepresentation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[802]); } const IfcParse::entity& Ifc4x3_add2::IfcProductRepresentation::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[802]); } -Ifc4x3_add2::IfcProductRepresentation::IfcProductRepresentation(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcProductRepresentation::IfcProductRepresentation(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcRepresentation >::ptr v3_Representations) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_Representations)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcProductRepresentation::IfcProductRepresentation(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcProductRepresentation::IfcProductRepresentation(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcRepresentation > v3_Representations) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_Representations)->generalize());; populate_derived(); } // Function implementations for IfcProfileDef ::Ifc4x3_add2::IfcProfileTypeEnum::Value Ifc4x3_add2::IfcProfileDef::ProfileType() const { return ::Ifc4x3_add2::IfcProfileTypeEnum::FromString(get_attribute_value(0)); } -void Ifc4x3_add2::IfcProfileDef::setProfileType(::Ifc4x3_add2::IfcProfileTypeEnum::Value v) { set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(0); } -boost::optional< std::string > Ifc4x3_add2::IfcProfileDef::ProfileName() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcProfileDef::setProfileName(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +void Ifc4x3_add2::IfcProfileDef::setProfileType(const ::Ifc4x3_add2::IfcProfileTypeEnum::Value& v) { set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(0); } +std::optional< std::string > Ifc4x3_add2::IfcProfileDef::ProfileName() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcProfileDef::setProfileName(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -::Ifc4x3_add2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_add2::IfcProfileDef::HasExternalReference() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[427], 3)->as(); } -::Ifc4x3_add2::IfcProfileProperties::list::ptr Ifc4x3_add2::IfcProfileDef::HasProperties() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[806], 3)->as(); } +std::vector<::Ifc4x3_add2::IfcExternalReferenceRelationship> Ifc4x3_add2::IfcProfileDef::HasExternalReference() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[427], 3)); } +std::vector<::Ifc4x3_add2::IfcProfileProperties> Ifc4x3_add2::IfcProfileDef::HasProperties() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[806], 3)); } -const IfcParse::entity& Ifc4x3_add2::IfcProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[805]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[805]); } const IfcParse::entity& Ifc4x3_add2::IfcProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[805]); } -Ifc4x3_add2::IfcProfileDef::IfcProfileDef(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcProfileDef::IfcProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }; populate_derived(); } +// Ifc4x3_add2::IfcProfileDef::IfcProfileDef(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcProfileDef::IfcProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }; populate_derived(); } // Function implementations for IfcProfileProperties -::Ifc4x3_add2::IfcProfileDef* Ifc4x3_add2::IfcProfileProperties::ProfileDefinition() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcProfileDef>(true); } -void Ifc4x3_add2::IfcProfileProperties::setProfileDefinition(::Ifc4x3_add2::IfcProfileDef* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcProfileDef Ifc4x3_add2::IfcProfileProperties::ProfileDefinition() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcProfileDef>(); } +void Ifc4x3_add2::IfcProfileProperties::setProfileDefinition(const ::Ifc4x3_add2::IfcProfileDef& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcProfileProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[806]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProfileProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[806]); } const IfcParse::entity& Ifc4x3_add2::IfcProfileProperties::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[806]); } -Ifc4x3_add2::IfcProfileProperties::IfcProfileProperties(IfcEntityInstanceData&& e) : IfcExtendedProperties(std::move(e)) { } -Ifc4x3_add2::IfcProfileProperties::IfcProfileProperties(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v3_Properties, ::Ifc4x3_add2::IfcProfileDef* v4_ProfileDefinition) : IfcExtendedProperties(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_Properties)->generalize());set_attribute_value(3, v4_ProfileDefinition ? v4_ProfileDefinition->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcProfileProperties::IfcProfileProperties(const std::weak_ptr& e) : IfcExtendedProperties(e) { } +// Ifc4x3_add2::IfcProfileProperties::IfcProfileProperties(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcProperty > v3_Properties, ::Ifc4x3_add2::IfcProfileDef v4_ProfileDefinition) : IfcExtendedProperties(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_Properties)->generalize());set_attribute_value(3, (v4_ProfileDefinition));; populate_derived(); } // Function implementations for IfcProject -const IfcParse::entity& Ifc4x3_add2::IfcProject::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[808]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProject::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[808]); } const IfcParse::entity& Ifc4x3_add2::IfcProject::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[808]); } -Ifc4x3_add2::IfcProject::IfcProject(IfcEntityInstanceData&& e) : IfcContext(std::move(e)) { } -Ifc4x3_add2::IfcProject::IfcProject(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< std::string > v7_Phase, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationContext >::ptr > v8_RepresentationContexts, ::Ifc4x3_add2::IfcUnitAssignment* v9_UnitsInContext) : IfcContext(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_LongName) {set_attribute_value(5, (*v6_LongName)); } if (v7_Phase) {set_attribute_value(6, (*v7_Phase)); } if (v8_RepresentationContexts) {set_attribute_value(7, (*v8_RepresentationContexts)->generalize()); }set_attribute_value(8, v9_UnitsInContext ? v9_UnitsInContext->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcProject::IfcProject(const std::weak_ptr& e) : IfcContext(e) { } +// Ifc4x3_add2::IfcProject::IfcProject(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_LongName, std::optional< std::string > v7_Phase, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationContext > > v8_RepresentationContexts, ::Ifc4x3_add2::IfcUnitAssignment v9_UnitsInContext) : IfcContext(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_LongName) {set_attribute_value(5, (*v6_LongName)); } if (v7_Phase) {set_attribute_value(6, (*v7_Phase)); } if (v8_RepresentationContexts) {set_attribute_value(7, (*v8_RepresentationContexts)->generalize()); } if (v9_UnitsInContext) {set_attribute_value(8, (*v9_UnitsInContext)); }; populate_derived(); } // Function implementations for IfcProjectLibrary -const IfcParse::entity& Ifc4x3_add2::IfcProjectLibrary::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[813]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProjectLibrary::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[813]); } const IfcParse::entity& Ifc4x3_add2::IfcProjectLibrary::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[813]); } -Ifc4x3_add2::IfcProjectLibrary::IfcProjectLibrary(IfcEntityInstanceData&& e) : IfcContext(std::move(e)) { } -Ifc4x3_add2::IfcProjectLibrary::IfcProjectLibrary(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< std::string > v7_Phase, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationContext >::ptr > v8_RepresentationContexts, ::Ifc4x3_add2::IfcUnitAssignment* v9_UnitsInContext) : IfcContext(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_LongName) {set_attribute_value(5, (*v6_LongName)); } if (v7_Phase) {set_attribute_value(6, (*v7_Phase)); } if (v8_RepresentationContexts) {set_attribute_value(7, (*v8_RepresentationContexts)->generalize()); }set_attribute_value(8, v9_UnitsInContext ? v9_UnitsInContext->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcProjectLibrary::IfcProjectLibrary(const std::weak_ptr& e) : IfcContext(e) { } +// Ifc4x3_add2::IfcProjectLibrary::IfcProjectLibrary(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_LongName, std::optional< std::string > v7_Phase, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationContext > > v8_RepresentationContexts, ::Ifc4x3_add2::IfcUnitAssignment v9_UnitsInContext) : IfcContext(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_LongName) {set_attribute_value(5, (*v6_LongName)); } if (v7_Phase) {set_attribute_value(6, (*v7_Phase)); } if (v8_RepresentationContexts) {set_attribute_value(7, (*v8_RepresentationContexts)->generalize()); } if (v9_UnitsInContext) {set_attribute_value(8, (*v9_UnitsInContext)); }; populate_derived(); } // Function implementations for IfcProjectOrder -boost::optional< ::Ifc4x3_add2::IfcProjectOrderTypeEnum::Value > Ifc4x3_add2::IfcProjectOrder::PredefinedType() const { if(get_attribute_value(6).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcProjectOrderTypeEnum::FromString(get_attribute_value(6)); } -void Ifc4x3_add2::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcProjectOrderTypeEnum::Value > v) { if (v) {set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcProjectOrderTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(6);} } -boost::optional< std::string > Ifc4x3_add2::IfcProjectOrder::Status() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcProjectOrder::setStatus(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< std::string > Ifc4x3_add2::IfcProjectOrder::LongDescription() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcProjectOrderTypeEnum::Value > Ifc4x3_add2::IfcProjectOrder::PredefinedType() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcProjectOrderTypeEnum::FromString(get_attribute_value(6)); } +void Ifc4x3_add2::IfcProjectOrder::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcProjectOrderTypeEnum::Value >& v) { if (v) {set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcProjectOrderTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcProjectOrder::Status() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcProjectOrder::setStatus(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcProjectOrder::LongDescription() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcProjectOrder::setLongDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcProjectOrder::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[814]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProjectOrder::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[814]); } const IfcParse::entity& Ifc4x3_add2::IfcProjectOrder::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[814]); } -Ifc4x3_add2::IfcProjectOrder::IfcProjectOrder(IfcEntityInstanceData&& e) : IfcControl(std::move(e)) { } -Ifc4x3_add2::IfcProjectOrder::IfcProjectOrder(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< ::Ifc4x3_add2::IfcProjectOrderTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription) : IfcControl(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcProjectOrderTypeEnum::Class(),(size_t)*v7_PredefinedType))); } if (v8_Status) {set_attribute_value(7, (*v8_Status)); } if (v9_LongDescription) {set_attribute_value(8, (*v9_LongDescription)); }; populate_derived(); } +// Ifc4x3_add2::IfcProjectOrder::IfcProjectOrder(const std::weak_ptr& e) : IfcControl(e) { } +// Ifc4x3_add2::IfcProjectOrder::IfcProjectOrder(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< ::Ifc4x3_add2::IfcProjectOrderTypeEnum::Value > v7_PredefinedType, std::optional< std::string > v8_Status, std::optional< std::string > v9_LongDescription) : IfcControl(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_PredefinedType) {set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcProjectOrderTypeEnum::Class(),(size_t)*v7_PredefinedType))); } if (v8_Status) {set_attribute_value(7, (*v8_Status)); } if (v9_LongDescription) {set_attribute_value(8, (*v9_LongDescription)); }; populate_derived(); } // Function implementations for IfcProjectedCRS -boost::optional< std::string > Ifc4x3_add2::IfcProjectedCRS::VerticalDatum() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcProjectedCRS::setVerticalDatum(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< std::string > Ifc4x3_add2::IfcProjectedCRS::MapProjection() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcProjectedCRS::MapZone() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -::Ifc4x3_add2::IfcNamedUnit* Ifc4x3_add2::IfcProjectedCRS::MapUnit() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcNamedUnit>(true); } -void Ifc4x3_add2::IfcProjectedCRS::setMapUnit(::Ifc4x3_add2::IfcNamedUnit* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +std::optional< std::string > Ifc4x3_add2::IfcProjectedCRS::VerticalDatum() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcProjectedCRS::setVerticalDatum(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< std::string > Ifc4x3_add2::IfcProjectedCRS::MapProjection() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcProjectedCRS::setMapProjection(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcProjectedCRS::MapZone() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcProjectedCRS::setMapZone(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +::Ifc4x3_add2::IfcNamedUnit Ifc4x3_add2::IfcProjectedCRS::MapUnit() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcNamedUnit{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcNamedUnit>(); } +void Ifc4x3_add2::IfcProjectedCRS::setMapUnit(const ::Ifc4x3_add2::IfcNamedUnit& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcProjectedCRS::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[809]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProjectedCRS::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[809]); } const IfcParse::entity& Ifc4x3_add2::IfcProjectedCRS::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[809]); } -Ifc4x3_add2::IfcProjectedCRS::IfcProjectedCRS(IfcEntityInstanceData&& e) : IfcCoordinateReferenceSystem(std::move(e)) { } -Ifc4x3_add2::IfcProjectedCRS::IfcProjectedCRS(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_GeodeticDatum, boost::optional< std::string > v4_VerticalDatum, boost::optional< std::string > v5_MapProjection, boost::optional< std::string > v6_MapZone, ::Ifc4x3_add2::IfcNamedUnit* v7_MapUnit) : IfcCoordinateReferenceSystem(IfcEntityInstanceData(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_GeodeticDatum) {set_attribute_value(2, (*v3_GeodeticDatum)); } if (v4_VerticalDatum) {set_attribute_value(3, (*v4_VerticalDatum)); } if (v5_MapProjection) {set_attribute_value(4, (*v5_MapProjection)); } if (v6_MapZone) {set_attribute_value(5, (*v6_MapZone)); }set_attribute_value(6, v7_MapUnit ? v7_MapUnit->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcProjectedCRS::IfcProjectedCRS(const std::weak_ptr& e) : IfcCoordinateReferenceSystem(e) { } +// Ifc4x3_add2::IfcProjectedCRS::IfcProjectedCRS(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::optional< std::string > v3_GeodeticDatum, std::optional< std::string > v4_VerticalDatum, std::optional< std::string > v5_MapProjection, std::optional< std::string > v6_MapZone, ::Ifc4x3_add2::IfcNamedUnit v7_MapUnit) : IfcCoordinateReferenceSystem(const std::weak_ptr&(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_GeodeticDatum) {set_attribute_value(2, (*v3_GeodeticDatum)); } if (v4_VerticalDatum) {set_attribute_value(3, (*v4_VerticalDatum)); } if (v5_MapProjection) {set_attribute_value(4, (*v5_MapProjection)); } if (v6_MapZone) {set_attribute_value(5, (*v6_MapZone)); } if (v7_MapUnit) {set_attribute_value(6, (*v7_MapUnit)); }; populate_derived(); } // Function implementations for IfcProjectionElement -boost::optional< ::Ifc4x3_add2::IfcProjectionElementTypeEnum::Value > Ifc4x3_add2::IfcProjectionElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcProjectionElementTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcProjectionElementTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcProjectionElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcProjectionElementTypeEnum::Value > Ifc4x3_add2::IfcProjectionElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcProjectionElementTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcProjectionElement::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcProjectionElementTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcProjectionElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcProjectionElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[811]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProjectionElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[811]); } const IfcParse::entity& Ifc4x3_add2::IfcProjectionElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[811]); } -Ifc4x3_add2::IfcProjectionElement::IfcProjectionElement(IfcEntityInstanceData&& e) : IfcFeatureElementAddition(std::move(e)) { } -Ifc4x3_add2::IfcProjectionElement::IfcProjectionElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcProjectionElementTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementAddition(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcProjectionElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcProjectionElement::IfcProjectionElement(const std::weak_ptr& e) : IfcFeatureElementAddition(e) { } +// Ifc4x3_add2::IfcProjectionElement::IfcProjectionElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcProjectionElementTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementAddition(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcProjectionElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcProperty std::string Ifc4x3_add2::IfcProperty::Name() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcProperty::setName(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -boost::optional< std::string > Ifc4x3_add2::IfcProperty::Specification() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcProperty::setSpecification(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +void Ifc4x3_add2::IfcProperty::setName(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< std::string > Ifc4x3_add2::IfcProperty::Specification() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcProperty::setSpecification(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -::Ifc4x3_add2::IfcPropertySet::list::ptr Ifc4x3_add2::IfcProperty::PartOfPset() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[825], 4)->as(); } -::Ifc4x3_add2::IfcPropertyDependencyRelationship::list::ptr Ifc4x3_add2::IfcProperty::PropertyForDependance() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[820], 2)->as(); } -::Ifc4x3_add2::IfcPropertyDependencyRelationship::list::ptr Ifc4x3_add2::IfcProperty::PropertyDependsOn() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[820], 3)->as(); } -::Ifc4x3_add2::IfcComplexProperty::list::ptr Ifc4x3_add2::IfcProperty::PartOfComplex() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[189], 3)->as(); } -::Ifc4x3_add2::IfcResourceConstraintRelationship::list::ptr Ifc4x3_add2::IfcProperty::HasConstraints() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[956], 3)->as(); } -::Ifc4x3_add2::IfcResourceApprovalRelationship::list::ptr Ifc4x3_add2::IfcProperty::HasApprovals() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[955], 2)->as(); } +std::vector<::Ifc4x3_add2::IfcPropertySet> Ifc4x3_add2::IfcProperty::PartOfPset() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[825], 4)); } +std::vector<::Ifc4x3_add2::IfcPropertyDependencyRelationship> Ifc4x3_add2::IfcProperty::PropertyForDependance() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[820], 2)); } +std::vector<::Ifc4x3_add2::IfcPropertyDependencyRelationship> Ifc4x3_add2::IfcProperty::PropertyDependsOn() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[820], 3)); } +std::vector<::Ifc4x3_add2::IfcComplexProperty> Ifc4x3_add2::IfcProperty::PartOfComplex() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[189], 3)); } +std::vector<::Ifc4x3_add2::IfcResourceConstraintRelationship> Ifc4x3_add2::IfcProperty::HasConstraints() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[956], 3)); } +std::vector<::Ifc4x3_add2::IfcResourceApprovalRelationship> Ifc4x3_add2::IfcProperty::HasApprovals() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[955], 2)); } -const IfcParse::entity& Ifc4x3_add2::IfcProperty::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[816]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProperty::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[816]); } const IfcParse::entity& Ifc4x3_add2::IfcProperty::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[816]); } -Ifc4x3_add2::IfcProperty::IfcProperty(IfcEntityInstanceData&& e) : IfcPropertyAbstraction(std::move(e)) { } -Ifc4x3_add2::IfcProperty::IfcProperty(std::string v1_Name, boost::optional< std::string > v2_Specification) : IfcPropertyAbstraction(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); }; populate_derived(); } +// Ifc4x3_add2::IfcProperty::IfcProperty(const std::weak_ptr& e) : IfcPropertyAbstraction(e) { } +// Ifc4x3_add2::IfcProperty::IfcProperty(std::string v1_Name, std::optional< std::string > v2_Specification) : IfcPropertyAbstraction(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); }; populate_derived(); } // Function implementations for IfcPropertyAbstraction -::Ifc4x3_add2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_add2::IfcPropertyAbstraction::HasExternalReferences() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[427], 3)->as(); } +std::vector<::Ifc4x3_add2::IfcExternalReferenceRelationship> Ifc4x3_add2::IfcPropertyAbstraction::HasExternalReferences() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[427], 3)); } -const IfcParse::entity& Ifc4x3_add2::IfcPropertyAbstraction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[817]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPropertyAbstraction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[817]); } const IfcParse::entity& Ifc4x3_add2::IfcPropertyAbstraction::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[817]); } -Ifc4x3_add2::IfcPropertyAbstraction::IfcPropertyAbstraction(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcPropertyAbstraction::IfcPropertyAbstraction() : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcPropertyAbstraction::IfcPropertyAbstraction(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcPropertyAbstraction::IfcPropertyAbstraction() : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcPropertyBoundedValue -::Ifc4x3_add2::IfcValue* Ifc4x3_add2::IfcPropertyBoundedValue::UpperBoundValue() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcValue>(true); } -void Ifc4x3_add2::IfcPropertyBoundedValue::setUpperBoundValue(::Ifc4x3_add2::IfcValue* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcValue* Ifc4x3_add2::IfcPropertyBoundedValue::LowerBoundValue() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcValue>(true); } -void Ifc4x3_add2::IfcPropertyBoundedValue::setLowerBoundValue(::Ifc4x3_add2::IfcValue* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -::Ifc4x3_add2::IfcUnit* Ifc4x3_add2::IfcPropertyBoundedValue::Unit() const { if(get_attribute_value(4).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcUnit>(true); } -void Ifc4x3_add2::IfcPropertyBoundedValue::setUnit(::Ifc4x3_add2::IfcUnit* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcValue* Ifc4x3_add2::IfcPropertyBoundedValue::SetPointValue() const { if(get_attribute_value(5).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcValue>(true); } -void Ifc4x3_add2::IfcPropertyBoundedValue::setSetPointValue(::Ifc4x3_add2::IfcValue* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcValue Ifc4x3_add2::IfcPropertyBoundedValue::UpperBoundValue() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcValue{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcValue>(); } +void Ifc4x3_add2::IfcPropertyBoundedValue::setUpperBoundValue(const ::Ifc4x3_add2::IfcValue& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcValue Ifc4x3_add2::IfcPropertyBoundedValue::LowerBoundValue() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcValue{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcValue>(); } +void Ifc4x3_add2::IfcPropertyBoundedValue::setLowerBoundValue(const ::Ifc4x3_add2::IfcValue& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcUnit Ifc4x3_add2::IfcPropertyBoundedValue::Unit() const { if(get_attribute_value(4).isNull()) { return ::Ifc4x3_add2::IfcUnit{}; } return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcUnit>(); } +void Ifc4x3_add2::IfcPropertyBoundedValue::setUnit(const ::Ifc4x3_add2::IfcUnit& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcValue Ifc4x3_add2::IfcPropertyBoundedValue::SetPointValue() const { if(get_attribute_value(5).isNull()) { return ::Ifc4x3_add2::IfcValue{}; } return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcValue>(); } +void Ifc4x3_add2::IfcPropertyBoundedValue::setSetPointValue(const ::Ifc4x3_add2::IfcValue& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcPropertyBoundedValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[818]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPropertyBoundedValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[818]); } const IfcParse::entity& Ifc4x3_add2::IfcPropertyBoundedValue::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[818]); } -Ifc4x3_add2::IfcPropertyBoundedValue::IfcPropertyBoundedValue(IfcEntityInstanceData&& e) : IfcSimpleProperty(std::move(e)) { } -Ifc4x3_add2::IfcPropertyBoundedValue::IfcPropertyBoundedValue(std::string v1_Name, boost::optional< std::string > v2_Specification, ::Ifc4x3_add2::IfcValue* v3_UpperBoundValue, ::Ifc4x3_add2::IfcValue* v4_LowerBoundValue, ::Ifc4x3_add2::IfcUnit* v5_Unit, ::Ifc4x3_add2::IfcValue* v6_SetPointValue) : IfcSimpleProperty(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); }set_attribute_value(2, v3_UpperBoundValue ? v3_UpperBoundValue->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_LowerBoundValue ? v4_LowerBoundValue->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, v5_Unit ? v5_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_SetPointValue ? v6_SetPointValue->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPropertyBoundedValue::IfcPropertyBoundedValue(const std::weak_ptr& e) : IfcSimpleProperty(e) { } +// Ifc4x3_add2::IfcPropertyBoundedValue::IfcPropertyBoundedValue(std::string v1_Name, std::optional< std::string > v2_Specification, ::Ifc4x3_add2::IfcValue v3_UpperBoundValue, ::Ifc4x3_add2::IfcValue v4_LowerBoundValue, ::Ifc4x3_add2::IfcUnit v5_Unit, ::Ifc4x3_add2::IfcValue v6_SetPointValue) : IfcSimpleProperty(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); } if (v3_UpperBoundValue) {set_attribute_value(2, (*v3_UpperBoundValue)); } if (v4_LowerBoundValue) {set_attribute_value(3, (*v4_LowerBoundValue)); } if (v5_Unit) {set_attribute_value(4, (*v5_Unit)); } if (v6_SetPointValue) {set_attribute_value(5, (*v6_SetPointValue)); }; populate_derived(); } // Function implementations for IfcPropertyDefinition -::Ifc4x3_add2::IfcRelDeclares::list::ptr Ifc4x3_add2::IfcPropertyDefinition::HasContext() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[929], 5)->as(); } -::Ifc4x3_add2::IfcRelAssociates::list::ptr Ifc4x3_add2::IfcPropertyDefinition::HasAssociations() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[908], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelDeclares> Ifc4x3_add2::IfcPropertyDefinition::HasContext() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[929], 5)); } +std::vector<::Ifc4x3_add2::IfcRelAssociates> Ifc4x3_add2::IfcPropertyDefinition::HasAssociations() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[908], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcPropertyDefinition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[819]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPropertyDefinition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[819]); } const IfcParse::entity& Ifc4x3_add2::IfcPropertyDefinition::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[819]); } -Ifc4x3_add2::IfcPropertyDefinition::IfcPropertyDefinition(IfcEntityInstanceData&& e) : IfcRoot(std::move(e)) { } -Ifc4x3_add2::IfcPropertyDefinition::IfcPropertyDefinition(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRoot(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcPropertyDefinition::IfcPropertyDefinition(const std::weak_ptr& e) : IfcRoot(e) { } +// Ifc4x3_add2::IfcPropertyDefinition::IfcPropertyDefinition(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description) : IfcRoot(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } // Function implementations for IfcPropertyDependencyRelationship -::Ifc4x3_add2::IfcProperty* Ifc4x3_add2::IfcPropertyDependencyRelationship::DependingProperty() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcProperty>(true); } -void Ifc4x3_add2::IfcPropertyDependencyRelationship::setDependingProperty(::Ifc4x3_add2::IfcProperty* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcProperty* Ifc4x3_add2::IfcPropertyDependencyRelationship::DependantProperty() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcProperty>(true); } -void Ifc4x3_add2::IfcPropertyDependencyRelationship::setDependantProperty(::Ifc4x3_add2::IfcProperty* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcPropertyDependencyRelationship::Expression() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +::Ifc4x3_add2::IfcProperty Ifc4x3_add2::IfcPropertyDependencyRelationship::DependingProperty() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcProperty>(); } +void Ifc4x3_add2::IfcPropertyDependencyRelationship::setDependingProperty(const ::Ifc4x3_add2::IfcProperty& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcProperty Ifc4x3_add2::IfcPropertyDependencyRelationship::DependantProperty() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcProperty>(); } +void Ifc4x3_add2::IfcPropertyDependencyRelationship::setDependantProperty(const ::Ifc4x3_add2::IfcProperty& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcPropertyDependencyRelationship::Expression() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcPropertyDependencyRelationship::setExpression(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcPropertyDependencyRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[820]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPropertyDependencyRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[820]); } const IfcParse::entity& Ifc4x3_add2::IfcPropertyDependencyRelationship::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[820]); } -Ifc4x3_add2::IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship(IfcEntityInstanceData&& e) : IfcResourceLevelRelationship(std::move(e)) { } -Ifc4x3_add2::IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcProperty* v3_DependingProperty, ::Ifc4x3_add2::IfcProperty* v4_DependantProperty, boost::optional< std::string > v5_Expression) : IfcResourceLevelRelationship(IfcEntityInstanceData(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_DependingProperty ? v3_DependingProperty->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_DependantProperty ? v4_DependantProperty->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_Expression) {set_attribute_value(4, (*v5_Expression)); }; populate_derived(); } +// Ifc4x3_add2::IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship(const std::weak_ptr& e) : IfcResourceLevelRelationship(e) { } +// Ifc4x3_add2::IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcProperty v3_DependingProperty, ::Ifc4x3_add2::IfcProperty v4_DependantProperty, std::optional< std::string > v5_Expression) : IfcResourceLevelRelationship(const std::weak_ptr&(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_DependingProperty));set_attribute_value(3, (v4_DependantProperty)); if (v5_Expression) {set_attribute_value(4, (*v5_Expression)); }; populate_derived(); } // Function implementations for IfcPropertyEnumeratedValue -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > Ifc4x3_add2::IfcPropertyEnumeratedValue::EnumerationValues() const { if(get_attribute_value(2).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcValue >(); } -void Ifc4x3_add2::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v) { if (v) {set_attribute_value(2, (*v)->generalize());} else {unset_attribute_value(2);} } -::Ifc4x3_add2::IfcPropertyEnumeration* Ifc4x3_add2::IfcPropertyEnumeratedValue::EnumerationReference() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcPropertyEnumeration>(true); } -void Ifc4x3_add2::IfcPropertyEnumeratedValue::setEnumerationReference(::Ifc4x3_add2::IfcPropertyEnumeration* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > Ifc4x3_add2::IfcPropertyEnumeratedValue::EnumerationValues() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcValue>(es); } +void Ifc4x3_add2::IfcPropertyEnumeratedValue::setEnumerationValues(const std::optional< std::vector< ::Ifc4x3_add2::IfcValue > >& v) { if (v) {set_attribute_value(2, cast_vector(*v));} else {unset_attribute_value(2);} } +::Ifc4x3_add2::IfcPropertyEnumeration Ifc4x3_add2::IfcPropertyEnumeratedValue::EnumerationReference() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcPropertyEnumeration{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcPropertyEnumeration>(); } +void Ifc4x3_add2::IfcPropertyEnumeratedValue::setEnumerationReference(const ::Ifc4x3_add2::IfcPropertyEnumeration& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcPropertyEnumeratedValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[821]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPropertyEnumeratedValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[821]); } const IfcParse::entity& Ifc4x3_add2::IfcPropertyEnumeratedValue::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[821]); } -Ifc4x3_add2::IfcPropertyEnumeratedValue::IfcPropertyEnumeratedValue(IfcEntityInstanceData&& e) : IfcSimpleProperty(std::move(e)) { } -Ifc4x3_add2::IfcPropertyEnumeratedValue::IfcPropertyEnumeratedValue(std::string v1_Name, boost::optional< std::string > v2_Specification, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v3_EnumerationValues, ::Ifc4x3_add2::IfcPropertyEnumeration* v4_EnumerationReference) : IfcSimpleProperty(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); } if (v3_EnumerationValues) {set_attribute_value(2, (*v3_EnumerationValues)->generalize()); }set_attribute_value(3, v4_EnumerationReference ? v4_EnumerationReference->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPropertyEnumeratedValue::IfcPropertyEnumeratedValue(const std::weak_ptr& e) : IfcSimpleProperty(e) { } +// Ifc4x3_add2::IfcPropertyEnumeratedValue::IfcPropertyEnumeratedValue(std::string v1_Name, std::optional< std::string > v2_Specification, std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > v3_EnumerationValues, ::Ifc4x3_add2::IfcPropertyEnumeration v4_EnumerationReference) : IfcSimpleProperty(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); } if (v3_EnumerationValues) {set_attribute_value(2, (*v3_EnumerationValues)->generalize()); } if (v4_EnumerationReference) {set_attribute_value(3, (*v4_EnumerationReference)); }; populate_derived(); } // Function implementations for IfcPropertyEnumeration std::string Ifc4x3_add2::IfcPropertyEnumeration::Name() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcPropertyEnumeration::setName(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr Ifc4x3_add2::IfcPropertyEnumeration::EnumerationValues() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcValue >(); } -void Ifc4x3_add2::IfcPropertyEnumeration::setEnumerationValues(aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcUnit* Ifc4x3_add2::IfcPropertyEnumeration::Unit() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcUnit>(true); } -void Ifc4x3_add2::IfcPropertyEnumeration::setUnit(::Ifc4x3_add2::IfcUnit* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcPropertyEnumeration::setName(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcValue > Ifc4x3_add2::IfcPropertyEnumeration::EnumerationValues() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcValue>(es); } +void Ifc4x3_add2::IfcPropertyEnumeration::setEnumerationValues(const std::vector< ::Ifc4x3_add2::IfcValue >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcUnit Ifc4x3_add2::IfcPropertyEnumeration::Unit() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcUnit{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcUnit>(); } +void Ifc4x3_add2::IfcPropertyEnumeration::setUnit(const ::Ifc4x3_add2::IfcUnit& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcPropertyEnumeration::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[822]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPropertyEnumeration::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[822]); } const IfcParse::entity& Ifc4x3_add2::IfcPropertyEnumeration::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[822]); } -Ifc4x3_add2::IfcPropertyEnumeration::IfcPropertyEnumeration(IfcEntityInstanceData&& e) : IfcPropertyAbstraction(std::move(e)) { } -Ifc4x3_add2::IfcPropertyEnumeration::IfcPropertyEnumeration(std::string v1_Name, aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr v2_EnumerationValues, ::Ifc4x3_add2::IfcUnit* v3_Unit) : IfcPropertyAbstraction(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Name));set_attribute_value(1, (v2_EnumerationValues)->generalize());set_attribute_value(2, v3_Unit ? v3_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPropertyEnumeration::IfcPropertyEnumeration(const std::weak_ptr& e) : IfcPropertyAbstraction(e) { } +// Ifc4x3_add2::IfcPropertyEnumeration::IfcPropertyEnumeration(std::string v1_Name, std::vector< ::Ifc4x3_add2::IfcValue > v2_EnumerationValues, ::Ifc4x3_add2::IfcUnit v3_Unit) : IfcPropertyAbstraction(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Name));set_attribute_value(1, (v2_EnumerationValues)->generalize()); if (v3_Unit) {set_attribute_value(2, (*v3_Unit)); }; populate_derived(); } // Function implementations for IfcPropertyListValue -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > Ifc4x3_add2::IfcPropertyListValue::ListValues() const { if(get_attribute_value(2).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcValue >(); } -void Ifc4x3_add2::IfcPropertyListValue::setListValues(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v) { if (v) {set_attribute_value(2, (*v)->generalize());} else {unset_attribute_value(2);} } -::Ifc4x3_add2::IfcUnit* Ifc4x3_add2::IfcPropertyListValue::Unit() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcUnit>(true); } -void Ifc4x3_add2::IfcPropertyListValue::setUnit(::Ifc4x3_add2::IfcUnit* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > Ifc4x3_add2::IfcPropertyListValue::ListValues() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcValue>(es); } +void Ifc4x3_add2::IfcPropertyListValue::setListValues(const std::optional< std::vector< ::Ifc4x3_add2::IfcValue > >& v) { if (v) {set_attribute_value(2, cast_vector(*v));} else {unset_attribute_value(2);} } +::Ifc4x3_add2::IfcUnit Ifc4x3_add2::IfcPropertyListValue::Unit() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcUnit{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcUnit>(); } +void Ifc4x3_add2::IfcPropertyListValue::setUnit(const ::Ifc4x3_add2::IfcUnit& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcPropertyListValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[823]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPropertyListValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[823]); } const IfcParse::entity& Ifc4x3_add2::IfcPropertyListValue::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[823]); } -Ifc4x3_add2::IfcPropertyListValue::IfcPropertyListValue(IfcEntityInstanceData&& e) : IfcSimpleProperty(std::move(e)) { } -Ifc4x3_add2::IfcPropertyListValue::IfcPropertyListValue(std::string v1_Name, boost::optional< std::string > v2_Specification, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v3_ListValues, ::Ifc4x3_add2::IfcUnit* v4_Unit) : IfcSimpleProperty(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); } if (v3_ListValues) {set_attribute_value(2, (*v3_ListValues)->generalize()); }set_attribute_value(3, v4_Unit ? v4_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPropertyListValue::IfcPropertyListValue(const std::weak_ptr& e) : IfcSimpleProperty(e) { } +// Ifc4x3_add2::IfcPropertyListValue::IfcPropertyListValue(std::string v1_Name, std::optional< std::string > v2_Specification, std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > v3_ListValues, ::Ifc4x3_add2::IfcUnit v4_Unit) : IfcSimpleProperty(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); } if (v3_ListValues) {set_attribute_value(2, (*v3_ListValues)->generalize()); } if (v4_Unit) {set_attribute_value(3, (*v4_Unit)); }; populate_derived(); } // Function implementations for IfcPropertyReferenceValue -boost::optional< std::string > Ifc4x3_add2::IfcPropertyReferenceValue::UsageName() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -::Ifc4x3_add2::IfcObjectReferenceSelect* Ifc4x3_add2::IfcPropertyReferenceValue::PropertyReference() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcObjectReferenceSelect>(true); } -void Ifc4x3_add2::IfcPropertyReferenceValue::setPropertyReference(::Ifc4x3_add2::IfcObjectReferenceSelect* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcPropertyReferenceValue::UsageName() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcPropertyReferenceValue::setUsageName(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +::Ifc4x3_add2::IfcObjectReferenceSelect Ifc4x3_add2::IfcPropertyReferenceValue::PropertyReference() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcObjectReferenceSelect{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcObjectReferenceSelect>(); } +void Ifc4x3_add2::IfcPropertyReferenceValue::setPropertyReference(const ::Ifc4x3_add2::IfcObjectReferenceSelect& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcPropertyReferenceValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[824]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPropertyReferenceValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[824]); } const IfcParse::entity& Ifc4x3_add2::IfcPropertyReferenceValue::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[824]); } -Ifc4x3_add2::IfcPropertyReferenceValue::IfcPropertyReferenceValue(IfcEntityInstanceData&& e) : IfcSimpleProperty(std::move(e)) { } -Ifc4x3_add2::IfcPropertyReferenceValue::IfcPropertyReferenceValue(std::string v1_Name, boost::optional< std::string > v2_Specification, boost::optional< std::string > v3_UsageName, ::Ifc4x3_add2::IfcObjectReferenceSelect* v4_PropertyReference) : IfcSimpleProperty(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); } if (v3_UsageName) {set_attribute_value(2, (*v3_UsageName)); }set_attribute_value(3, v4_PropertyReference ? v4_PropertyReference->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPropertyReferenceValue::IfcPropertyReferenceValue(const std::weak_ptr& e) : IfcSimpleProperty(e) { } +// Ifc4x3_add2::IfcPropertyReferenceValue::IfcPropertyReferenceValue(std::string v1_Name, std::optional< std::string > v2_Specification, std::optional< std::string > v3_UsageName, ::Ifc4x3_add2::IfcObjectReferenceSelect v4_PropertyReference) : IfcSimpleProperty(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); } if (v3_UsageName) {set_attribute_value(2, (*v3_UsageName)); } if (v4_PropertyReference) {set_attribute_value(3, (*v4_PropertyReference)); }; populate_derived(); } // Function implementations for IfcPropertySet -aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr Ifc4x3_add2::IfcPropertySet::HasProperties() const { aggregate_of_instance::ptr es = get_attribute_value(4); return es->as< ::Ifc4x3_add2::IfcProperty >(); } -void Ifc4x3_add2::IfcPropertySet::setHasProperties(aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v) { set_attribute_value(4, (v)->generalize());if constexpr (false)unset_attribute_value(4); } +std::vector< ::Ifc4x3_add2::IfcProperty > Ifc4x3_add2::IfcPropertySet::HasProperties() const { std::vector es = get_attribute_value(4); return cast_vector<::Ifc4x3_add2::IfcProperty>(es); } +void Ifc4x3_add2::IfcPropertySet::setHasProperties(const std::vector< ::Ifc4x3_add2::IfcProperty >& v) { set_attribute_value(4, cast_vector(v));if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcPropertySet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[825]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPropertySet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[825]); } const IfcParse::entity& Ifc4x3_add2::IfcPropertySet::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[825]); } -Ifc4x3_add2::IfcPropertySet::IfcPropertySet(IfcEntityInstanceData&& e) : IfcPropertySetDefinition(std::move(e)) { } -Ifc4x3_add2::IfcPropertySet::IfcPropertySet(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v5_HasProperties) : IfcPropertySetDefinition(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_HasProperties)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcPropertySet::IfcPropertySet(const std::weak_ptr& e) : IfcPropertySetDefinition(e) { } +// Ifc4x3_add2::IfcPropertySet::IfcPropertySet(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcProperty > v5_HasProperties) : IfcPropertySetDefinition(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_HasProperties)->generalize());; populate_derived(); } // Function implementations for IfcPropertySetDefinition -::Ifc4x3_add2::IfcTypeObject::list::ptr Ifc4x3_add2::IfcPropertySetDefinition::DefinesType() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[1241], 5)->as(); } -::Ifc4x3_add2::IfcRelDefinesByTemplate::list::ptr Ifc4x3_add2::IfcPropertySetDefinition::IsDefinedBy() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[934], 4)->as(); } -::Ifc4x3_add2::IfcRelDefinesByProperties::list::ptr Ifc4x3_add2::IfcPropertySetDefinition::DefinesOccurrence() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[933], 5)->as(); } +std::vector<::Ifc4x3_add2::IfcTypeObject> Ifc4x3_add2::IfcPropertySetDefinition::DefinesType() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[1241], 5)); } +std::vector<::Ifc4x3_add2::IfcRelDefinesByTemplate> Ifc4x3_add2::IfcPropertySetDefinition::IsDefinedBy() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[934], 4)); } +std::vector<::Ifc4x3_add2::IfcRelDefinesByProperties> Ifc4x3_add2::IfcPropertySetDefinition::DefinesOccurrence() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[933], 5)); } -const IfcParse::entity& Ifc4x3_add2::IfcPropertySetDefinition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[826]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPropertySetDefinition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[826]); } const IfcParse::entity& Ifc4x3_add2::IfcPropertySetDefinition::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[826]); } -Ifc4x3_add2::IfcPropertySetDefinition::IfcPropertySetDefinition(IfcEntityInstanceData&& e) : IfcPropertyDefinition(std::move(e)) { } -Ifc4x3_add2::IfcPropertySetDefinition::IfcPropertySetDefinition(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertyDefinition(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcPropertySetDefinition::IfcPropertySetDefinition(const std::weak_ptr& e) : IfcPropertyDefinition(e) { } +// Ifc4x3_add2::IfcPropertySetDefinition::IfcPropertySetDefinition(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description) : IfcPropertyDefinition(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } // Function implementations for IfcPropertySetTemplate -boost::optional< ::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Value > Ifc4x3_add2::IfcPropertySetTemplate::TemplateType() const { if(get_attribute_value(4).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::FromString(get_attribute_value(4)); } -void Ifc4x3_add2::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Value > v) { if (v) {set_attribute_value(4, EnumerationReference(&::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcPropertySetTemplate::ApplicableEntity() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -aggregate_of< ::Ifc4x3_add2::IfcPropertyTemplate >::ptr Ifc4x3_add2::IfcPropertySetTemplate::HasPropertyTemplates() const { aggregate_of_instance::ptr es = get_attribute_value(6); return es->as< ::Ifc4x3_add2::IfcPropertyTemplate >(); } -void Ifc4x3_add2::IfcPropertySetTemplate::setHasPropertyTemplates(aggregate_of< ::Ifc4x3_add2::IfcPropertyTemplate >::ptr v) { set_attribute_value(6, (v)->generalize());if constexpr (false)unset_attribute_value(6); } +std::optional< ::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Value > Ifc4x3_add2::IfcPropertySetTemplate::TemplateType() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::FromString(get_attribute_value(4)); } +void Ifc4x3_add2::IfcPropertySetTemplate::setTemplateType(const std::optional< ::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Value >& v) { if (v) {set_attribute_value(4, EnumerationReference(&::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcPropertySetTemplate::ApplicableEntity() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcPropertySetTemplate::setApplicableEntity(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::vector< ::Ifc4x3_add2::IfcPropertyTemplate > Ifc4x3_add2::IfcPropertySetTemplate::HasPropertyTemplates() const { std::vector es = get_attribute_value(6); return cast_vector<::Ifc4x3_add2::IfcPropertyTemplate>(es); } +void Ifc4x3_add2::IfcPropertySetTemplate::setHasPropertyTemplates(const std::vector< ::Ifc4x3_add2::IfcPropertyTemplate >& v) { set_attribute_value(6, cast_vector(v));if constexpr (false)unset_attribute_value(6); } -::Ifc4x3_add2::IfcRelDefinesByTemplate::list::ptr Ifc4x3_add2::IfcPropertySetTemplate::Defines() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[934], 5)->as(); } +std::vector<::Ifc4x3_add2::IfcRelDefinesByTemplate> Ifc4x3_add2::IfcPropertySetTemplate::Defines() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[934], 5)); } -const IfcParse::entity& Ifc4x3_add2::IfcPropertySetTemplate::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[829]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPropertySetTemplate::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[829]); } const IfcParse::entity& Ifc4x3_add2::IfcPropertySetTemplate::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[829]); } -Ifc4x3_add2::IfcPropertySetTemplate::IfcPropertySetTemplate(IfcEntityInstanceData&& e) : IfcPropertyTemplateDefinition(std::move(e)) { } -Ifc4x3_add2::IfcPropertySetTemplate::IfcPropertySetTemplate(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< ::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Value > v5_TemplateType, boost::optional< std::string > v6_ApplicableEntity, aggregate_of< ::Ifc4x3_add2::IfcPropertyTemplate >::ptr v7_HasPropertyTemplates) : IfcPropertyTemplateDefinition(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_TemplateType) {set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Class(),(size_t)*v5_TemplateType))); } if (v6_ApplicableEntity) {set_attribute_value(5, (*v6_ApplicableEntity)); }set_attribute_value(6, (v7_HasPropertyTemplates)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcPropertySetTemplate::IfcPropertySetTemplate(const std::weak_ptr& e) : IfcPropertyTemplateDefinition(e) { } +// Ifc4x3_add2::IfcPropertySetTemplate::IfcPropertySetTemplate(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< ::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Value > v5_TemplateType, std::optional< std::string > v6_ApplicableEntity, std::vector< ::Ifc4x3_add2::IfcPropertyTemplate > v7_HasPropertyTemplates) : IfcPropertyTemplateDefinition(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_TemplateType) {set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Class(),(size_t)*v5_TemplateType))); } if (v6_ApplicableEntity) {set_attribute_value(5, (*v6_ApplicableEntity)); }set_attribute_value(6, (v7_HasPropertyTemplates)->generalize());; populate_derived(); } // Function implementations for IfcPropertySingleValue -::Ifc4x3_add2::IfcValue* Ifc4x3_add2::IfcPropertySingleValue::NominalValue() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcValue>(true); } -void Ifc4x3_add2::IfcPropertySingleValue::setNominalValue(::Ifc4x3_add2::IfcValue* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcUnit* Ifc4x3_add2::IfcPropertySingleValue::Unit() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcUnit>(true); } -void Ifc4x3_add2::IfcPropertySingleValue::setUnit(::Ifc4x3_add2::IfcUnit* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcValue Ifc4x3_add2::IfcPropertySingleValue::NominalValue() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcValue{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcValue>(); } +void Ifc4x3_add2::IfcPropertySingleValue::setNominalValue(const ::Ifc4x3_add2::IfcValue& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcUnit Ifc4x3_add2::IfcPropertySingleValue::Unit() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcUnit{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcUnit>(); } +void Ifc4x3_add2::IfcPropertySingleValue::setUnit(const ::Ifc4x3_add2::IfcUnit& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcPropertySingleValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[831]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPropertySingleValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[831]); } const IfcParse::entity& Ifc4x3_add2::IfcPropertySingleValue::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[831]); } -Ifc4x3_add2::IfcPropertySingleValue::IfcPropertySingleValue(IfcEntityInstanceData&& e) : IfcSimpleProperty(std::move(e)) { } -Ifc4x3_add2::IfcPropertySingleValue::IfcPropertySingleValue(std::string v1_Name, boost::optional< std::string > v2_Specification, ::Ifc4x3_add2::IfcValue* v3_NominalValue, ::Ifc4x3_add2::IfcUnit* v4_Unit) : IfcSimpleProperty(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); }set_attribute_value(2, v3_NominalValue ? v3_NominalValue->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_Unit ? v4_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcPropertySingleValue::IfcPropertySingleValue(const std::weak_ptr& e) : IfcSimpleProperty(e) { } +// Ifc4x3_add2::IfcPropertySingleValue::IfcPropertySingleValue(std::string v1_Name, std::optional< std::string > v2_Specification, ::Ifc4x3_add2::IfcValue v3_NominalValue, ::Ifc4x3_add2::IfcUnit v4_Unit) : IfcSimpleProperty(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); } if (v3_NominalValue) {set_attribute_value(2, (*v3_NominalValue)); } if (v4_Unit) {set_attribute_value(3, (*v4_Unit)); }; populate_derived(); } // Function implementations for IfcPropertyTableValue -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > Ifc4x3_add2::IfcPropertyTableValue::DefiningValues() const { if(get_attribute_value(2).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcValue >(); } -void Ifc4x3_add2::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v) { if (v) {set_attribute_value(2, (*v)->generalize());} else {unset_attribute_value(2);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > Ifc4x3_add2::IfcPropertyTableValue::DefinedValues() const { if(get_attribute_value(3).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(3); return es->as< ::Ifc4x3_add2::IfcValue >(); } -void Ifc4x3_add2::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v) { if (v) {set_attribute_value(3, (*v)->generalize());} else {unset_attribute_value(3);} } -boost::optional< std::string > Ifc4x3_add2::IfcPropertyTableValue::Expression() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -::Ifc4x3_add2::IfcUnit* Ifc4x3_add2::IfcPropertyTableValue::DefiningUnit() const { if(get_attribute_value(5).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcUnit>(true); } -void Ifc4x3_add2::IfcPropertyTableValue::setDefiningUnit(::Ifc4x3_add2::IfcUnit* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcUnit* Ifc4x3_add2::IfcPropertyTableValue::DefinedUnit() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcUnit>(true); } -void Ifc4x3_add2::IfcPropertyTableValue::setDefinedUnit(::Ifc4x3_add2::IfcUnit* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } -boost::optional< ::Ifc4x3_add2::IfcCurveInterpolationEnum::Value > Ifc4x3_add2::IfcPropertyTableValue::CurveInterpolation() const { if(get_attribute_value(7).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcCurveInterpolationEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4x3_add2::IfcCurveInterpolationEnum::Value > v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcCurveInterpolationEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > Ifc4x3_add2::IfcPropertyTableValue::DefiningValues() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcValue>(es); } +void Ifc4x3_add2::IfcPropertyTableValue::setDefiningValues(const std::optional< std::vector< ::Ifc4x3_add2::IfcValue > >& v) { if (v) {set_attribute_value(2, cast_vector(*v));} else {unset_attribute_value(2);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > Ifc4x3_add2::IfcPropertyTableValue::DefinedValues() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(3); return cast_vector<::Ifc4x3_add2::IfcValue>(es); } +void Ifc4x3_add2::IfcPropertyTableValue::setDefinedValues(const std::optional< std::vector< ::Ifc4x3_add2::IfcValue > >& v) { if (v) {set_attribute_value(3, cast_vector(*v));} else {unset_attribute_value(3);} } +std::optional< std::string > Ifc4x3_add2::IfcPropertyTableValue::Expression() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcPropertyTableValue::setExpression(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +::Ifc4x3_add2::IfcUnit Ifc4x3_add2::IfcPropertyTableValue::DefiningUnit() const { if(get_attribute_value(5).isNull()) { return ::Ifc4x3_add2::IfcUnit{}; } return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcUnit>(); } +void Ifc4x3_add2::IfcPropertyTableValue::setDefiningUnit(const ::Ifc4x3_add2::IfcUnit& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcUnit Ifc4x3_add2::IfcPropertyTableValue::DefinedUnit() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcUnit{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcUnit>(); } +void Ifc4x3_add2::IfcPropertyTableValue::setDefinedUnit(const ::Ifc4x3_add2::IfcUnit& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< ::Ifc4x3_add2::IfcCurveInterpolationEnum::Value > Ifc4x3_add2::IfcPropertyTableValue::CurveInterpolation() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcCurveInterpolationEnum::FromString(get_attribute_value(7)); } +void Ifc4x3_add2::IfcPropertyTableValue::setCurveInterpolation(const std::optional< ::Ifc4x3_add2::IfcCurveInterpolationEnum::Value >& v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcCurveInterpolationEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } -const IfcParse::entity& Ifc4x3_add2::IfcPropertyTableValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[832]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPropertyTableValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[832]); } const IfcParse::entity& Ifc4x3_add2::IfcPropertyTableValue::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[832]); } -Ifc4x3_add2::IfcPropertyTableValue::IfcPropertyTableValue(IfcEntityInstanceData&& e) : IfcSimpleProperty(std::move(e)) { } -Ifc4x3_add2::IfcPropertyTableValue::IfcPropertyTableValue(std::string v1_Name, boost::optional< std::string > v2_Specification, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v3_DefiningValues, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v4_DefinedValues, boost::optional< std::string > v5_Expression, ::Ifc4x3_add2::IfcUnit* v6_DefiningUnit, ::Ifc4x3_add2::IfcUnit* v7_DefinedUnit, boost::optional< ::Ifc4x3_add2::IfcCurveInterpolationEnum::Value > v8_CurveInterpolation) : IfcSimpleProperty(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); } if (v3_DefiningValues) {set_attribute_value(2, (*v3_DefiningValues)->generalize()); } if (v4_DefinedValues) {set_attribute_value(3, (*v4_DefinedValues)->generalize()); } if (v5_Expression) {set_attribute_value(4, (*v5_Expression)); }set_attribute_value(5, v6_DefiningUnit ? v6_DefiningUnit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_DefinedUnit ? v7_DefinedUnit->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_CurveInterpolation) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcCurveInterpolationEnum::Class(),(size_t)*v8_CurveInterpolation))); }; populate_derived(); } +// Ifc4x3_add2::IfcPropertyTableValue::IfcPropertyTableValue(const std::weak_ptr& e) : IfcSimpleProperty(e) { } +// Ifc4x3_add2::IfcPropertyTableValue::IfcPropertyTableValue(std::string v1_Name, std::optional< std::string > v2_Specification, std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > v3_DefiningValues, std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > v4_DefinedValues, std::optional< std::string > v5_Expression, ::Ifc4x3_add2::IfcUnit v6_DefiningUnit, ::Ifc4x3_add2::IfcUnit v7_DefinedUnit, std::optional< ::Ifc4x3_add2::IfcCurveInterpolationEnum::Value > v8_CurveInterpolation) : IfcSimpleProperty(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); } if (v3_DefiningValues) {set_attribute_value(2, (*v3_DefiningValues)->generalize()); } if (v4_DefinedValues) {set_attribute_value(3, (*v4_DefinedValues)->generalize()); } if (v5_Expression) {set_attribute_value(4, (*v5_Expression)); } if (v6_DefiningUnit) {set_attribute_value(5, (*v6_DefiningUnit)); } if (v7_DefinedUnit) {set_attribute_value(6, (*v7_DefinedUnit)); } if (v8_CurveInterpolation) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcCurveInterpolationEnum::Class(),(size_t)*v8_CurveInterpolation))); }; populate_derived(); } // Function implementations for IfcPropertyTemplate -::Ifc4x3_add2::IfcComplexPropertyTemplate::list::ptr Ifc4x3_add2::IfcPropertyTemplate::PartOfComplexTemplate() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[190], 6)->as(); } -::Ifc4x3_add2::IfcPropertySetTemplate::list::ptr Ifc4x3_add2::IfcPropertyTemplate::PartOfPsetTemplate() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[829], 6)->as(); } +std::vector<::Ifc4x3_add2::IfcComplexPropertyTemplate> Ifc4x3_add2::IfcPropertyTemplate::PartOfComplexTemplate() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[190], 6)); } +std::vector<::Ifc4x3_add2::IfcPropertySetTemplate> Ifc4x3_add2::IfcPropertyTemplate::PartOfPsetTemplate() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[829], 6)); } -const IfcParse::entity& Ifc4x3_add2::IfcPropertyTemplate::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[833]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPropertyTemplate::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[833]); } const IfcParse::entity& Ifc4x3_add2::IfcPropertyTemplate::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[833]); } -Ifc4x3_add2::IfcPropertyTemplate::IfcPropertyTemplate(IfcEntityInstanceData&& e) : IfcPropertyTemplateDefinition(std::move(e)) { } -Ifc4x3_add2::IfcPropertyTemplate::IfcPropertyTemplate(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertyTemplateDefinition(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcPropertyTemplate::IfcPropertyTemplate(const std::weak_ptr& e) : IfcPropertyTemplateDefinition(e) { } +// Ifc4x3_add2::IfcPropertyTemplate::IfcPropertyTemplate(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description) : IfcPropertyTemplateDefinition(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } // Function implementations for IfcPropertyTemplateDefinition -const IfcParse::entity& Ifc4x3_add2::IfcPropertyTemplateDefinition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[834]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPropertyTemplateDefinition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[834]); } const IfcParse::entity& Ifc4x3_add2::IfcPropertyTemplateDefinition::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[834]); } -Ifc4x3_add2::IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(IfcEntityInstanceData&& e) : IfcPropertyDefinition(std::move(e)) { } -Ifc4x3_add2::IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertyDefinition(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(const std::weak_ptr& e) : IfcPropertyDefinition(e) { } +// Ifc4x3_add2::IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description) : IfcPropertyDefinition(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } // Function implementations for IfcProtectiveDevice -boost::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value > Ifc4x3_add2::IfcProtectiveDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value > Ifc4x3_add2::IfcProtectiveDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcProtectiveDevice::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcProtectiveDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[835]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProtectiveDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[835]); } const IfcParse::entity& Ifc4x3_add2::IfcProtectiveDevice::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[835]); } -Ifc4x3_add2::IfcProtectiveDevice::IfcProtectiveDevice(IfcEntityInstanceData&& e) : IfcFlowController(std::move(e)) { } -Ifc4x3_add2::IfcProtectiveDevice::IfcProtectiveDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowController(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcProtectiveDevice::IfcProtectiveDevice(const std::weak_ptr& e) : IfcFlowController(e) { } +// Ifc4x3_add2::IfcProtectiveDevice::IfcProtectiveDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowController(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcProtectiveDeviceTrippingUnit -boost::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > Ifc4x3_add2::IfcProtectiveDeviceTrippingUnit::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > Ifc4x3_add2::IfcProtectiveDeviceTrippingUnit::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcProtectiveDeviceTrippingUnit::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcProtectiveDeviceTrippingUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[836]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProtectiveDeviceTrippingUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[836]); } const IfcParse::entity& Ifc4x3_add2::IfcProtectiveDeviceTrippingUnit::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[836]); } -Ifc4x3_add2::IfcProtectiveDeviceTrippingUnit::IfcProtectiveDeviceTrippingUnit(IfcEntityInstanceData&& e) : IfcDistributionControlElement(std::move(e)) { } -Ifc4x3_add2::IfcProtectiveDeviceTrippingUnit::IfcProtectiveDeviceTrippingUnit(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcProtectiveDeviceTrippingUnit::IfcProtectiveDeviceTrippingUnit(const std::weak_ptr& e) : IfcDistributionControlElement(e) { } +// Ifc4x3_add2::IfcProtectiveDeviceTrippingUnit::IfcProtectiveDeviceTrippingUnit(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcProtectiveDeviceTrippingUnitType ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitType::PredefinedType() const { return ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitType::setPredefinedType(::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitType::setPredefinedType(const ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[837]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[837]); } const IfcParse::entity& Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[837]); } -Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitType::IfcProtectiveDeviceTrippingUnitType(IfcEntityInstanceData&& e) : IfcDistributionControlElementType(std::move(e)) { } -Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitType::IfcProtectiveDeviceTrippingUnitType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitType::IfcProtectiveDeviceTrippingUnitType(const std::weak_ptr& e) : IfcDistributionControlElementType(e) { } +// Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitType::IfcProtectiveDeviceTrippingUnitType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcProtectiveDeviceType ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value Ifc4x3_add2::IfcProtectiveDeviceType::PredefinedType() const { return ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcProtectiveDeviceType::setPredefinedType(::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcProtectiveDeviceType::setPredefinedType(const ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcProtectiveDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[839]); } +// const IfcParse::entity& Ifc4x3_add2::IfcProtectiveDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[839]); } const IfcParse::entity& Ifc4x3_add2::IfcProtectiveDeviceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[839]); } -Ifc4x3_add2::IfcProtectiveDeviceType::IfcProtectiveDeviceType(IfcEntityInstanceData&& e) : IfcFlowControllerType(std::move(e)) { } -Ifc4x3_add2::IfcProtectiveDeviceType::IfcProtectiveDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcProtectiveDeviceType::IfcProtectiveDeviceType(const std::weak_ptr& e) : IfcFlowControllerType(e) { } +// Ifc4x3_add2::IfcProtectiveDeviceType::IfcProtectiveDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcPump -boost::optional< ::Ifc4x3_add2::IfcPumpTypeEnum::Value > Ifc4x3_add2::IfcPump::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcPumpTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcPump::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPumpTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcPumpTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcPumpTypeEnum::Value > Ifc4x3_add2::IfcPump::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcPumpTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcPump::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPumpTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcPumpTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcPump::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[841]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPump::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[841]); } const IfcParse::entity& Ifc4x3_add2::IfcPump::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[841]); } -Ifc4x3_add2::IfcPump::IfcPump(IfcEntityInstanceData&& e) : IfcFlowMovingDevice(std::move(e)) { } -Ifc4x3_add2::IfcPump::IfcPump(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcPumpTypeEnum::Value > v9_PredefinedType) : IfcFlowMovingDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcPumpTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcPump::IfcPump(const std::weak_ptr& e) : IfcFlowMovingDevice(e) { } +// Ifc4x3_add2::IfcPump::IfcPump(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcPumpTypeEnum::Value > v9_PredefinedType) : IfcFlowMovingDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcPumpTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcPumpType ::Ifc4x3_add2::IfcPumpTypeEnum::Value Ifc4x3_add2::IfcPumpType::PredefinedType() const { return ::Ifc4x3_add2::IfcPumpTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcPumpType::setPredefinedType(::Ifc4x3_add2::IfcPumpTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcPumpTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcPumpType::setPredefinedType(const ::Ifc4x3_add2::IfcPumpTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcPumpTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcPumpType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[842]); } +// const IfcParse::entity& Ifc4x3_add2::IfcPumpType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[842]); } const IfcParse::entity& Ifc4x3_add2::IfcPumpType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[842]); } -Ifc4x3_add2::IfcPumpType::IfcPumpType(IfcEntityInstanceData&& e) : IfcFlowMovingDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcPumpType::IfcPumpType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPumpTypeEnum::Value v10_PredefinedType) : IfcFlowMovingDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcPumpTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcPumpType::IfcPumpType(const std::weak_ptr& e) : IfcFlowMovingDeviceType(e) { } +// Ifc4x3_add2::IfcPumpType::IfcPumpType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPumpTypeEnum::Value v10_PredefinedType) : IfcFlowMovingDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcPumpTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcQuantityArea double Ifc4x3_add2::IfcQuantityArea::AreaValue() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcQuantityArea::setAreaValue(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcQuantityArea::Formula() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcQuantityArea::setFormula(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +void Ifc4x3_add2::IfcQuantityArea::setAreaValue(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcQuantityArea::Formula() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcQuantityArea::setFormula(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcQuantityArea::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[844]); } +// const IfcParse::entity& Ifc4x3_add2::IfcQuantityArea::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[844]); } const IfcParse::entity& Ifc4x3_add2::IfcQuantityArea::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[844]); } -Ifc4x3_add2::IfcQuantityArea::IfcQuantityArea(IfcEntityInstanceData&& e) : IfcPhysicalSimpleQuantity(std::move(e)) { } -Ifc4x3_add2::IfcQuantityArea::IfcQuantityArea(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit, double v4_AreaValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_Unit ? v3_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_AreaValue)); if (v5_Formula) {set_attribute_value(4, (*v5_Formula)); }; populate_derived(); } +// Ifc4x3_add2::IfcQuantityArea::IfcQuantityArea(const std::weak_ptr& e) : IfcPhysicalSimpleQuantity(e) { } +// Ifc4x3_add2::IfcQuantityArea::IfcQuantityArea(std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit, double v4_AreaValue, std::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_Unit) {set_attribute_value(2, (*v3_Unit)); }set_attribute_value(3, (v4_AreaValue)); if (v5_Formula) {set_attribute_value(4, (*v5_Formula)); }; populate_derived(); } // Function implementations for IfcQuantityCount int Ifc4x3_add2::IfcQuantityCount::CountValue() const { int v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcQuantityCount::setCountValue(int v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcQuantityCount::Formula() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcQuantityCount::setFormula(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +void Ifc4x3_add2::IfcQuantityCount::setCountValue(const int& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcQuantityCount::Formula() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcQuantityCount::setFormula(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcQuantityCount::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[845]); } +// const IfcParse::entity& Ifc4x3_add2::IfcQuantityCount::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[845]); } const IfcParse::entity& Ifc4x3_add2::IfcQuantityCount::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[845]); } -Ifc4x3_add2::IfcQuantityCount::IfcQuantityCount(IfcEntityInstanceData&& e) : IfcPhysicalSimpleQuantity(std::move(e)) { } -Ifc4x3_add2::IfcQuantityCount::IfcQuantityCount(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit, int v4_CountValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_Unit ? v3_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_CountValue)); if (v5_Formula) {set_attribute_value(4, (*v5_Formula)); }; populate_derived(); } +// Ifc4x3_add2::IfcQuantityCount::IfcQuantityCount(const std::weak_ptr& e) : IfcPhysicalSimpleQuantity(e) { } +// Ifc4x3_add2::IfcQuantityCount::IfcQuantityCount(std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit, int v4_CountValue, std::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_Unit) {set_attribute_value(2, (*v3_Unit)); }set_attribute_value(3, (v4_CountValue)); if (v5_Formula) {set_attribute_value(4, (*v5_Formula)); }; populate_derived(); } // Function implementations for IfcQuantityLength double Ifc4x3_add2::IfcQuantityLength::LengthValue() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcQuantityLength::setLengthValue(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcQuantityLength::Formula() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcQuantityLength::setFormula(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +void Ifc4x3_add2::IfcQuantityLength::setLengthValue(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcQuantityLength::Formula() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcQuantityLength::setFormula(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcQuantityLength::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[846]); } +// const IfcParse::entity& Ifc4x3_add2::IfcQuantityLength::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[846]); } const IfcParse::entity& Ifc4x3_add2::IfcQuantityLength::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[846]); } -Ifc4x3_add2::IfcQuantityLength::IfcQuantityLength(IfcEntityInstanceData&& e) : IfcPhysicalSimpleQuantity(std::move(e)) { } -Ifc4x3_add2::IfcQuantityLength::IfcQuantityLength(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit, double v4_LengthValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_Unit ? v3_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_LengthValue)); if (v5_Formula) {set_attribute_value(4, (*v5_Formula)); }; populate_derived(); } +// Ifc4x3_add2::IfcQuantityLength::IfcQuantityLength(const std::weak_ptr& e) : IfcPhysicalSimpleQuantity(e) { } +// Ifc4x3_add2::IfcQuantityLength::IfcQuantityLength(std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit, double v4_LengthValue, std::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_Unit) {set_attribute_value(2, (*v3_Unit)); }set_attribute_value(3, (v4_LengthValue)); if (v5_Formula) {set_attribute_value(4, (*v5_Formula)); }; populate_derived(); } // Function implementations for IfcQuantityNumber double Ifc4x3_add2::IfcQuantityNumber::NumberValue() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcQuantityNumber::setNumberValue(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcQuantityNumber::Formula() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcQuantityNumber::setFormula(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +void Ifc4x3_add2::IfcQuantityNumber::setNumberValue(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcQuantityNumber::Formula() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcQuantityNumber::setFormula(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcQuantityNumber::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[847]); } +// const IfcParse::entity& Ifc4x3_add2::IfcQuantityNumber::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[847]); } const IfcParse::entity& Ifc4x3_add2::IfcQuantityNumber::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[847]); } -Ifc4x3_add2::IfcQuantityNumber::IfcQuantityNumber(IfcEntityInstanceData&& e) : IfcPhysicalSimpleQuantity(std::move(e)) { } -Ifc4x3_add2::IfcQuantityNumber::IfcQuantityNumber(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit, double v4_NumberValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_Unit ? v3_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_NumberValue)); if (v5_Formula) {set_attribute_value(4, (*v5_Formula)); }; populate_derived(); } +// Ifc4x3_add2::IfcQuantityNumber::IfcQuantityNumber(const std::weak_ptr& e) : IfcPhysicalSimpleQuantity(e) { } +// Ifc4x3_add2::IfcQuantityNumber::IfcQuantityNumber(std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit, double v4_NumberValue, std::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_Unit) {set_attribute_value(2, (*v3_Unit)); }set_attribute_value(3, (v4_NumberValue)); if (v5_Formula) {set_attribute_value(4, (*v5_Formula)); }; populate_derived(); } // Function implementations for IfcQuantitySet -const IfcParse::entity& Ifc4x3_add2::IfcQuantitySet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[848]); } +// const IfcParse::entity& Ifc4x3_add2::IfcQuantitySet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[848]); } const IfcParse::entity& Ifc4x3_add2::IfcQuantitySet::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[848]); } -Ifc4x3_add2::IfcQuantitySet::IfcQuantitySet(IfcEntityInstanceData&& e) : IfcPropertySetDefinition(std::move(e)) { } -Ifc4x3_add2::IfcQuantitySet::IfcQuantitySet(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertySetDefinition(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcQuantitySet::IfcQuantitySet(const std::weak_ptr& e) : IfcPropertySetDefinition(e) { } +// Ifc4x3_add2::IfcQuantitySet::IfcQuantitySet(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description) : IfcPropertySetDefinition(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } // Function implementations for IfcQuantityTime double Ifc4x3_add2::IfcQuantityTime::TimeValue() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcQuantityTime::setTimeValue(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcQuantityTime::Formula() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcQuantityTime::setFormula(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +void Ifc4x3_add2::IfcQuantityTime::setTimeValue(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcQuantityTime::Formula() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcQuantityTime::setFormula(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcQuantityTime::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[849]); } +// const IfcParse::entity& Ifc4x3_add2::IfcQuantityTime::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[849]); } const IfcParse::entity& Ifc4x3_add2::IfcQuantityTime::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[849]); } -Ifc4x3_add2::IfcQuantityTime::IfcQuantityTime(IfcEntityInstanceData&& e) : IfcPhysicalSimpleQuantity(std::move(e)) { } -Ifc4x3_add2::IfcQuantityTime::IfcQuantityTime(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit, double v4_TimeValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_Unit ? v3_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_TimeValue)); if (v5_Formula) {set_attribute_value(4, (*v5_Formula)); }; populate_derived(); } +// Ifc4x3_add2::IfcQuantityTime::IfcQuantityTime(const std::weak_ptr& e) : IfcPhysicalSimpleQuantity(e) { } +// Ifc4x3_add2::IfcQuantityTime::IfcQuantityTime(std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit, double v4_TimeValue, std::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_Unit) {set_attribute_value(2, (*v3_Unit)); }set_attribute_value(3, (v4_TimeValue)); if (v5_Formula) {set_attribute_value(4, (*v5_Formula)); }; populate_derived(); } // Function implementations for IfcQuantityVolume double Ifc4x3_add2::IfcQuantityVolume::VolumeValue() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcQuantityVolume::setVolumeValue(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcQuantityVolume::Formula() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +void Ifc4x3_add2::IfcQuantityVolume::setVolumeValue(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcQuantityVolume::Formula() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcQuantityVolume::setFormula(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcQuantityVolume::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[850]); } +// const IfcParse::entity& Ifc4x3_add2::IfcQuantityVolume::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[850]); } const IfcParse::entity& Ifc4x3_add2::IfcQuantityVolume::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[850]); } -Ifc4x3_add2::IfcQuantityVolume::IfcQuantityVolume(IfcEntityInstanceData&& e) : IfcPhysicalSimpleQuantity(std::move(e)) { } -Ifc4x3_add2::IfcQuantityVolume::IfcQuantityVolume(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit, double v4_VolumeValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_Unit ? v3_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_VolumeValue)); if (v5_Formula) {set_attribute_value(4, (*v5_Formula)); }; populate_derived(); } +// Ifc4x3_add2::IfcQuantityVolume::IfcQuantityVolume(const std::weak_ptr& e) : IfcPhysicalSimpleQuantity(e) { } +// Ifc4x3_add2::IfcQuantityVolume::IfcQuantityVolume(std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit, double v4_VolumeValue, std::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_Unit) {set_attribute_value(2, (*v3_Unit)); }set_attribute_value(3, (v4_VolumeValue)); if (v5_Formula) {set_attribute_value(4, (*v5_Formula)); }; populate_derived(); } // Function implementations for IfcQuantityWeight double Ifc4x3_add2::IfcQuantityWeight::WeightValue() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcQuantityWeight::setWeightValue(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcQuantityWeight::Formula() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +void Ifc4x3_add2::IfcQuantityWeight::setWeightValue(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcQuantityWeight::Formula() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcQuantityWeight::setFormula(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcQuantityWeight::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[851]); } +// const IfcParse::entity& Ifc4x3_add2::IfcQuantityWeight::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[851]); } const IfcParse::entity& Ifc4x3_add2::IfcQuantityWeight::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[851]); } -Ifc4x3_add2::IfcQuantityWeight::IfcQuantityWeight(IfcEntityInstanceData&& e) : IfcPhysicalSimpleQuantity(std::move(e)) { } -Ifc4x3_add2::IfcQuantityWeight::IfcQuantityWeight(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit, double v4_WeightValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_Unit ? v3_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_WeightValue)); if (v5_Formula) {set_attribute_value(4, (*v5_Formula)); }; populate_derived(); } +// Ifc4x3_add2::IfcQuantityWeight::IfcQuantityWeight(const std::weak_ptr& e) : IfcPhysicalSimpleQuantity(e) { } +// Ifc4x3_add2::IfcQuantityWeight::IfcQuantityWeight(std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit, double v4_WeightValue, std::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_Unit) {set_attribute_value(2, (*v3_Unit)); }set_attribute_value(3, (v4_WeightValue)); if (v5_Formula) {set_attribute_value(4, (*v5_Formula)); }; populate_derived(); } // Function implementations for IfcRail -boost::optional< ::Ifc4x3_add2::IfcRailTypeEnum::Value > Ifc4x3_add2::IfcRail::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcRailTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcRail::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRailTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcRailTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcRailTypeEnum::Value > Ifc4x3_add2::IfcRail::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcRailTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcRail::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRailTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcRailTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcRail::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[853]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRail::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[853]); } const IfcParse::entity& Ifc4x3_add2::IfcRail::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[853]); } -Ifc4x3_add2::IfcRail::IfcRail(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcRail::IfcRail(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcRailTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcRailTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcRail::IfcRail(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcRail::IfcRail(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcRailTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcRailTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcRailType ::Ifc4x3_add2::IfcRailTypeEnum::Value Ifc4x3_add2::IfcRailType::PredefinedType() const { return ::Ifc4x3_add2::IfcRailTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcRailType::setPredefinedType(::Ifc4x3_add2::IfcRailTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcRailTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcRailType::setPredefinedType(const ::Ifc4x3_add2::IfcRailTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcRailTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcRailType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[857]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRailType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[857]); } const IfcParse::entity& Ifc4x3_add2::IfcRailType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[857]); } -Ifc4x3_add2::IfcRailType::IfcRailType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcRailType::IfcRailType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRailTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcRailTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcRailType::IfcRailType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcRailType::IfcRailType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRailTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcRailTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcRailing -boost::optional< ::Ifc4x3_add2::IfcRailingTypeEnum::Value > Ifc4x3_add2::IfcRailing::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcRailingTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcRailing::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRailingTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcRailingTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcRailingTypeEnum::Value > Ifc4x3_add2::IfcRailing::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcRailingTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcRailing::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRailingTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcRailingTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcRailing::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[854]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRailing::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[854]); } const IfcParse::entity& Ifc4x3_add2::IfcRailing::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[854]); } -Ifc4x3_add2::IfcRailing::IfcRailing(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcRailing::IfcRailing(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcRailingTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcRailingTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcRailing::IfcRailing(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcRailing::IfcRailing(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcRailingTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcRailingTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcRailingType ::Ifc4x3_add2::IfcRailingTypeEnum::Value Ifc4x3_add2::IfcRailingType::PredefinedType() const { return ::Ifc4x3_add2::IfcRailingTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcRailingType::setPredefinedType(::Ifc4x3_add2::IfcRailingTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcRailingTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcRailingType::setPredefinedType(const ::Ifc4x3_add2::IfcRailingTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcRailingTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcRailingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[855]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRailingType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[855]); } const IfcParse::entity& Ifc4x3_add2::IfcRailingType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[855]); } -Ifc4x3_add2::IfcRailingType::IfcRailingType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcRailingType::IfcRailingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRailingTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcRailingTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcRailingType::IfcRailingType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcRailingType::IfcRailingType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRailingTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcRailingTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcRailway -boost::optional< ::Ifc4x3_add2::IfcRailwayTypeEnum::Value > Ifc4x3_add2::IfcRailway::PredefinedType() const { if(get_attribute_value(9).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcRailwayTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcRailway::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRailwayTypeEnum::Value > v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcRailwayTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } +std::optional< ::Ifc4x3_add2::IfcRailwayTypeEnum::Value > Ifc4x3_add2::IfcRailway::PredefinedType() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcRailwayTypeEnum::FromString(get_attribute_value(9)); } +void Ifc4x3_add2::IfcRailway::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRailwayTypeEnum::Value >& v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcRailwayTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcRailway::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[859]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRailway::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[859]); } const IfcParse::entity& Ifc4x3_add2::IfcRailway::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[859]); } -Ifc4x3_add2::IfcRailway::IfcRailway(IfcEntityInstanceData&& e) : IfcFacility(std::move(e)) { } -Ifc4x3_add2::IfcRailway::IfcRailway(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< ::Ifc4x3_add2::IfcRailwayTypeEnum::Value > v10_PredefinedType) : IfcFacility(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcRailwayTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcRailway::IfcRailway(const std::weak_ptr& e) : IfcFacility(e) { } +// Ifc4x3_add2::IfcRailway::IfcRailway(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< ::Ifc4x3_add2::IfcRailwayTypeEnum::Value > v10_PredefinedType) : IfcFacility(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcRailwayTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } // Function implementations for IfcRailwayPart -boost::optional< ::Ifc4x3_add2::IfcRailwayPartTypeEnum::Value > Ifc4x3_add2::IfcRailwayPart::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcRailwayPartTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcRailwayPart::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRailwayPartTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcRailwayPartTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcRailwayPartTypeEnum::Value > Ifc4x3_add2::IfcRailwayPart::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcRailwayPartTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcRailwayPart::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRailwayPartTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcRailwayPartTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcRailwayPart::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[860]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRailwayPart::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[860]); } const IfcParse::entity& Ifc4x3_add2::IfcRailwayPart::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[860]); } -Ifc4x3_add2::IfcRailwayPart::IfcRailwayPart(IfcEntityInstanceData&& e) : IfcFacilityPart(std::move(e)) { } -Ifc4x3_add2::IfcRailwayPart::IfcRailwayPart(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, boost::optional< ::Ifc4x3_add2::IfcRailwayPartTypeEnum::Value > v11_PredefinedType) : IfcFacilityPart(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFacilityUsageEnum::Class(),(size_t)v10_UsageType))); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcRailwayPartTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcRailwayPart::IfcRailwayPart(const std::weak_ptr& e) : IfcFacilityPart(e) { } +// Ifc4x3_add2::IfcRailwayPart::IfcRailwayPart(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, std::optional< ::Ifc4x3_add2::IfcRailwayPartTypeEnum::Value > v11_PredefinedType) : IfcFacilityPart(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFacilityUsageEnum::Class(),(size_t)v10_UsageType))); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcRailwayPartTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } // Function implementations for IfcRamp -boost::optional< ::Ifc4x3_add2::IfcRampTypeEnum::Value > Ifc4x3_add2::IfcRamp::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcRampTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcRamp::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRampTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcRampTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcRampTypeEnum::Value > Ifc4x3_add2::IfcRamp::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcRampTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcRamp::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRampTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcRampTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcRamp::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[863]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRamp::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[863]); } const IfcParse::entity& Ifc4x3_add2::IfcRamp::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[863]); } -Ifc4x3_add2::IfcRamp::IfcRamp(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcRamp::IfcRamp(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcRampTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcRampTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcRamp::IfcRamp(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcRamp::IfcRamp(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcRampTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcRampTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcRampFlight -boost::optional< ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value > Ifc4x3_add2::IfcRampFlight::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcRampFlightTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcRampFlightTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value > Ifc4x3_add2::IfcRampFlight::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcRampFlightTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcRampFlight::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcRampFlightTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcRampFlight::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[864]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRampFlight::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[864]); } const IfcParse::entity& Ifc4x3_add2::IfcRampFlight::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[864]); } -Ifc4x3_add2::IfcRampFlight::IfcRampFlight(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcRampFlight::IfcRampFlight(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcRampFlightTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcRampFlight::IfcRampFlight(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcRampFlight::IfcRampFlight(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcRampFlightTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcRampFlightType ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value Ifc4x3_add2::IfcRampFlightType::PredefinedType() const { return ::Ifc4x3_add2::IfcRampFlightTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcRampFlightType::setPredefinedType(::Ifc4x3_add2::IfcRampFlightTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcRampFlightTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcRampFlightType::setPredefinedType(const ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcRampFlightTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcRampFlightType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[865]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRampFlightType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[865]); } const IfcParse::entity& Ifc4x3_add2::IfcRampFlightType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[865]); } -Ifc4x3_add2::IfcRampFlightType::IfcRampFlightType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcRampFlightType::IfcRampFlightType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcRampFlightTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcRampFlightType::IfcRampFlightType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcRampFlightType::IfcRampFlightType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcRampFlightTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcRampType ::Ifc4x3_add2::IfcRampTypeEnum::Value Ifc4x3_add2::IfcRampType::PredefinedType() const { return ::Ifc4x3_add2::IfcRampTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcRampType::setPredefinedType(::Ifc4x3_add2::IfcRampTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcRampTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcRampType::setPredefinedType(const ::Ifc4x3_add2::IfcRampTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcRampTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcRampType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[867]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRampType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[867]); } const IfcParse::entity& Ifc4x3_add2::IfcRampType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[867]); } -Ifc4x3_add2::IfcRampType::IfcRampType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcRampType::IfcRampType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRampTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcRampTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcRampType::IfcRampType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcRampType::IfcRampType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRampTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcRampTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcRationalBSplineCurveWithKnots std::vector< double > /*[2:?]*/ Ifc4x3_add2::IfcRationalBSplineCurveWithKnots::WeightsData() const { std::vector< double > /*[2:?]*/ v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcRationalBSplineCurveWithKnots::setWeightsData(std::vector< double > /*[2:?]*/ v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcRationalBSplineCurveWithKnots::setWeightsData(const std::vector< double > /*[2:?]*/& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcRationalBSplineCurveWithKnots::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[870]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRationalBSplineCurveWithKnots::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[870]); } const IfcParse::entity& Ifc4x3_add2::IfcRationalBSplineCurveWithKnots::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[870]); } -Ifc4x3_add2::IfcRationalBSplineCurveWithKnots::IfcRationalBSplineCurveWithKnots(IfcEntityInstanceData&& e) : IfcBSplineCurveWithKnots(std::move(e)) { } -Ifc4x3_add2::IfcRationalBSplineCurveWithKnots::IfcRationalBSplineCurveWithKnots(int v1_Degree, aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc4x3_add2::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect, std::vector< int > /*[2:?]*/ v6_KnotMultiplicities, std::vector< double > /*[2:?]*/ v7_Knots, ::Ifc4x3_add2::IfcKnotType::Value v8_KnotSpec, std::vector< double > /*[2:?]*/ v9_WeightsData) : IfcBSplineCurveWithKnots(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_Degree));set_attribute_value(1, (v2_ControlPointsList)->generalize());set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcBSplineCurveForm::Class(),(size_t)v3_CurveForm)));set_attribute_value(3, (v4_ClosedCurve));set_attribute_value(4, (v5_SelfIntersect));set_attribute_value(5, (v6_KnotMultiplicities));set_attribute_value(6, (v7_Knots));set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcKnotType::Class(),(size_t)v8_KnotSpec)));set_attribute_value(8, (v9_WeightsData));; populate_derived(); } +// Ifc4x3_add2::IfcRationalBSplineCurveWithKnots::IfcRationalBSplineCurveWithKnots(const std::weak_ptr& e) : IfcBSplineCurveWithKnots(e) { } +// Ifc4x3_add2::IfcRationalBSplineCurveWithKnots::IfcRationalBSplineCurveWithKnots(int v1_Degree, std::vector< ::Ifc4x3_add2::IfcCartesianPoint > v2_ControlPointsList, ::Ifc4x3_add2::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect, std::vector< int > /*[2:?]*/ v6_KnotMultiplicities, std::vector< double > /*[2:?]*/ v7_Knots, ::Ifc4x3_add2::IfcKnotType::Value v8_KnotSpec, std::vector< double > /*[2:?]*/ v9_WeightsData) : IfcBSplineCurveWithKnots(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_Degree));set_attribute_value(1, (v2_ControlPointsList)->generalize());set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcBSplineCurveForm::Class(),(size_t)v3_CurveForm)));set_attribute_value(3, (v4_ClosedCurve));set_attribute_value(4, (v5_SelfIntersect));set_attribute_value(5, (v6_KnotMultiplicities));set_attribute_value(6, (v7_Knots));set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcKnotType::Class(),(size_t)v8_KnotSpec)));set_attribute_value(8, (v9_WeightsData));; populate_derived(); } // Function implementations for IfcRationalBSplineSurfaceWithKnots std::vector< std::vector< double > > Ifc4x3_add2::IfcRationalBSplineSurfaceWithKnots::WeightsData() const { std::vector< std::vector< double > > v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcRationalBSplineSurfaceWithKnots::setWeightsData(std::vector< std::vector< double > > v) { set_attribute_value(12, v);if constexpr (false)unset_attribute_value(12); } +void Ifc4x3_add2::IfcRationalBSplineSurfaceWithKnots::setWeightsData(const std::vector< std::vector< double > >& v) { set_attribute_value(12, v);if constexpr (false)unset_attribute_value(12); } -const IfcParse::entity& Ifc4x3_add2::IfcRationalBSplineSurfaceWithKnots::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[871]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRationalBSplineSurfaceWithKnots::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[871]); } const IfcParse::entity& Ifc4x3_add2::IfcRationalBSplineSurfaceWithKnots::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[871]); } -Ifc4x3_add2::IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKnots(IfcEntityInstanceData&& e) : IfcBSplineSurfaceWithKnots(std::move(e)) { } -Ifc4x3_add2::IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKnots(int v1_UDegree, int v2_VDegree, aggregate_of_aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v3_ControlPointsList, ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect, std::vector< int > /*[2:?]*/ v8_UMultiplicities, std::vector< int > /*[2:?]*/ v9_VMultiplicities, std::vector< double > /*[2:?]*/ v10_UKnots, std::vector< double > /*[2:?]*/ v11_VKnots, ::Ifc4x3_add2::IfcKnotType::Value v12_KnotSpec, std::vector< std::vector< double > > v13_WeightsData) : IfcBSplineSurfaceWithKnots(IfcEntityInstanceData(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_UDegree));set_attribute_value(1, (v2_VDegree));set_attribute_value(2, (v3_ControlPointsList)->generalize());set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcBSplineSurfaceForm::Class(),(size_t)v4_SurfaceForm)));set_attribute_value(4, (v5_UClosed));set_attribute_value(5, (v6_VClosed));set_attribute_value(6, (v7_SelfIntersect));set_attribute_value(7, (v8_UMultiplicities));set_attribute_value(8, (v9_VMultiplicities));set_attribute_value(9, (v10_UKnots));set_attribute_value(10, (v11_VKnots));set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcKnotType::Class(),(size_t)v12_KnotSpec)));set_attribute_value(12, (v13_WeightsData));; populate_derived(); } +// Ifc4x3_add2::IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKnots(const std::weak_ptr& e) : IfcBSplineSurfaceWithKnots(e) { } +// Ifc4x3_add2::IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKnots(int v1_UDegree, int v2_VDegree, std::vector< std::vector< ::Ifc4x3_add2::IfcCartesianPoint > > v3_ControlPointsList, ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect, std::vector< int > /*[2:?]*/ v8_UMultiplicities, std::vector< int > /*[2:?]*/ v9_VMultiplicities, std::vector< double > /*[2:?]*/ v10_UKnots, std::vector< double > /*[2:?]*/ v11_VKnots, ::Ifc4x3_add2::IfcKnotType::Value v12_KnotSpec, std::vector< std::vector< double > > v13_WeightsData) : IfcBSplineSurfaceWithKnots(const std::weak_ptr&(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_UDegree));set_attribute_value(1, (v2_VDegree));set_attribute_value(2, (v3_ControlPointsList)->generalize());set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcBSplineSurfaceForm::Class(),(size_t)v4_SurfaceForm)));set_attribute_value(4, (v5_UClosed));set_attribute_value(5, (v6_VClosed));set_attribute_value(6, (v7_SelfIntersect));set_attribute_value(7, (v8_UMultiplicities));set_attribute_value(8, (v9_VMultiplicities));set_attribute_value(9, (v10_UKnots));set_attribute_value(10, (v11_VKnots));set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcKnotType::Class(),(size_t)v12_KnotSpec)));set_attribute_value(12, (v13_WeightsData));; populate_derived(); } // Function implementations for IfcRectangleHollowProfileDef double Ifc4x3_add2::IfcRectangleHollowProfileDef::WallThickness() const { double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcRectangleHollowProfileDef::setWallThickness(double v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -boost::optional< double > Ifc4x3_add2::IfcRectangleHollowProfileDef::InnerFilletRadius() const { if(get_attribute_value(6).isNull()) { return boost::none; } double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< double > Ifc4x3_add2::IfcRectangleHollowProfileDef::OuterFilletRadius() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +void Ifc4x3_add2::IfcRectangleHollowProfileDef::setWallThickness(const double& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +std::optional< double > Ifc4x3_add2::IfcRectangleHollowProfileDef::InnerFilletRadius() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } double v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcRectangleHollowProfileDef::setInnerFilletRadius(const std::optional< double >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< double > Ifc4x3_add2::IfcRectangleHollowProfileDef::OuterFilletRadius() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcRectangleHollowProfileDef::setOuterFilletRadius(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -const IfcParse::entity& Ifc4x3_add2::IfcRectangleHollowProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[873]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRectangleHollowProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[873]); } const IfcParse::entity& Ifc4x3_add2::IfcRectangleHollowProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[873]); } -Ifc4x3_add2::IfcRectangleHollowProfileDef::IfcRectangleHollowProfileDef(IfcEntityInstanceData&& e) : IfcRectangleProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcRectangleHollowProfileDef::IfcRectangleHollowProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim, double v6_WallThickness, boost::optional< double > v7_InnerFilletRadius, boost::optional< double > v8_OuterFilletRadius) : IfcRectangleProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_XDim));set_attribute_value(4, (v5_YDim));set_attribute_value(5, (v6_WallThickness)); if (v7_InnerFilletRadius) {set_attribute_value(6, (*v7_InnerFilletRadius)); } if (v8_OuterFilletRadius) {set_attribute_value(7, (*v8_OuterFilletRadius)); }; populate_derived(); } +// Ifc4x3_add2::IfcRectangleHollowProfileDef::IfcRectangleHollowProfileDef(const std::weak_ptr& e) : IfcRectangleProfileDef(e) { } +// Ifc4x3_add2::IfcRectangleHollowProfileDef::IfcRectangleHollowProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_XDim, double v5_YDim, double v6_WallThickness, std::optional< double > v7_InnerFilletRadius, std::optional< double > v8_OuterFilletRadius) : IfcRectangleProfileDef(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); } if (v3_Position) {set_attribute_value(2, (*v3_Position)); }set_attribute_value(3, (v4_XDim));set_attribute_value(4, (v5_YDim));set_attribute_value(5, (v6_WallThickness)); if (v7_InnerFilletRadius) {set_attribute_value(6, (*v7_InnerFilletRadius)); } if (v8_OuterFilletRadius) {set_attribute_value(7, (*v8_OuterFilletRadius)); }; populate_derived(); } // Function implementations for IfcRectangleProfileDef double Ifc4x3_add2::IfcRectangleProfileDef::XDim() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcRectangleProfileDef::setXDim(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcRectangleProfileDef::setXDim(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcRectangleProfileDef::YDim() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcRectangleProfileDef::setYDim(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcRectangleProfileDef::setYDim(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcRectangleProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[874]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRectangleProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[874]); } const IfcParse::entity& Ifc4x3_add2::IfcRectangleProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[874]); } -Ifc4x3_add2::IfcRectangleProfileDef::IfcRectangleProfileDef(IfcEntityInstanceData&& e) : IfcParameterizedProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcRectangleProfileDef::IfcRectangleProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim) : IfcParameterizedProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_XDim));set_attribute_value(4, (v5_YDim));; populate_derived(); } +// Ifc4x3_add2::IfcRectangleProfileDef::IfcRectangleProfileDef(const std::weak_ptr& e) : IfcParameterizedProfileDef(e) { } +// Ifc4x3_add2::IfcRectangleProfileDef::IfcRectangleProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_XDim, double v5_YDim) : IfcParameterizedProfileDef(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); } if (v3_Position) {set_attribute_value(2, (*v3_Position)); }set_attribute_value(3, (v4_XDim));set_attribute_value(4, (v5_YDim));; populate_derived(); } // Function implementations for IfcRectangularPyramid double Ifc4x3_add2::IfcRectangularPyramid::XLength() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcRectangularPyramid::setXLength(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcRectangularPyramid::setXLength(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } double Ifc4x3_add2::IfcRectangularPyramid::YLength() const { double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcRectangularPyramid::setYLength(double v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcRectangularPyramid::setYLength(const double& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } double Ifc4x3_add2::IfcRectangularPyramid::Height() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcRectangularPyramid::setHeight(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcRectangularPyramid::setHeight(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcRectangularPyramid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[875]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRectangularPyramid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[875]); } const IfcParse::entity& Ifc4x3_add2::IfcRectangularPyramid::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[875]); } -Ifc4x3_add2::IfcRectangularPyramid::IfcRectangularPyramid(IfcEntityInstanceData&& e) : IfcCsgPrimitive3D(std::move(e)) { } -Ifc4x3_add2::IfcRectangularPyramid::IfcRectangularPyramid(::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_XLength, double v3_YLength, double v4_Height) : IfcCsgPrimitive3D(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_XLength));set_attribute_value(2, (v3_YLength));set_attribute_value(3, (v4_Height));; populate_derived(); } +// Ifc4x3_add2::IfcRectangularPyramid::IfcRectangularPyramid(const std::weak_ptr& e) : IfcCsgPrimitive3D(e) { } +// Ifc4x3_add2::IfcRectangularPyramid::IfcRectangularPyramid(::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_XLength, double v3_YLength, double v4_Height) : IfcCsgPrimitive3D(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_XLength));set_attribute_value(2, (v3_YLength));set_attribute_value(3, (v4_Height));; populate_derived(); } // Function implementations for IfcRectangularTrimmedSurface -::Ifc4x3_add2::IfcSurface* Ifc4x3_add2::IfcRectangularTrimmedSurface::BasisSurface() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcSurface>(true); } -void Ifc4x3_add2::IfcRectangularTrimmedSurface::setBasisSurface(::Ifc4x3_add2::IfcSurface* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcSurface Ifc4x3_add2::IfcRectangularTrimmedSurface::BasisSurface() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcSurface>(); } +void Ifc4x3_add2::IfcRectangularTrimmedSurface::setBasisSurface(const ::Ifc4x3_add2::IfcSurface& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } double Ifc4x3_add2::IfcRectangularTrimmedSurface::U1() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcRectangularTrimmedSurface::setU1(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcRectangularTrimmedSurface::setU1(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } double Ifc4x3_add2::IfcRectangularTrimmedSurface::V1() const { double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcRectangularTrimmedSurface::setV1(double v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcRectangularTrimmedSurface::setV1(const double& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } double Ifc4x3_add2::IfcRectangularTrimmedSurface::U2() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcRectangularTrimmedSurface::setU2(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcRectangularTrimmedSurface::setU2(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcRectangularTrimmedSurface::V2() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcRectangularTrimmedSurface::setV2(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcRectangularTrimmedSurface::setV2(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } bool Ifc4x3_add2::IfcRectangularTrimmedSurface::Usense() const { bool v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcRectangularTrimmedSurface::setUsense(bool v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcRectangularTrimmedSurface::setUsense(const bool& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } bool Ifc4x3_add2::IfcRectangularTrimmedSurface::Vsense() const { bool v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcRectangularTrimmedSurface::setVsense(bool v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +void Ifc4x3_add2::IfcRectangularTrimmedSurface::setVsense(const bool& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcRectangularTrimmedSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[876]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRectangularTrimmedSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[876]); } const IfcParse::entity& Ifc4x3_add2::IfcRectangularTrimmedSurface::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[876]); } -Ifc4x3_add2::IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(IfcEntityInstanceData&& e) : IfcBoundedSurface(std::move(e)) { } -Ifc4x3_add2::IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(::Ifc4x3_add2::IfcSurface* v1_BasisSurface, double v2_U1, double v3_V1, double v4_U2, double v5_V2, bool v6_Usense, bool v7_Vsense) : IfcBoundedSurface(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, v1_BasisSurface ? v1_BasisSurface->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_U1));set_attribute_value(2, (v3_V1));set_attribute_value(3, (v4_U2));set_attribute_value(4, (v5_V2));set_attribute_value(5, (v6_Usense));set_attribute_value(6, (v7_Vsense));; populate_derived(); } +// Ifc4x3_add2::IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(const std::weak_ptr& e) : IfcBoundedSurface(e) { } +// Ifc4x3_add2::IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(::Ifc4x3_add2::IfcSurface v1_BasisSurface, double v2_U1, double v3_V1, double v4_U2, double v5_V2, bool v6_Usense, bool v7_Vsense) : IfcBoundedSurface(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_BasisSurface));set_attribute_value(1, (v2_U1));set_attribute_value(2, (v3_V1));set_attribute_value(3, (v4_U2));set_attribute_value(4, (v5_V2));set_attribute_value(5, (v6_Usense));set_attribute_value(6, (v7_Vsense));; populate_derived(); } // Function implementations for IfcRecurrencePattern ::Ifc4x3_add2::IfcRecurrenceTypeEnum::Value Ifc4x3_add2::IfcRecurrencePattern::RecurrenceType() const { return ::Ifc4x3_add2::IfcRecurrenceTypeEnum::FromString(get_attribute_value(0)); } -void Ifc4x3_add2::IfcRecurrencePattern::setRecurrenceType(::Ifc4x3_add2::IfcRecurrenceTypeEnum::Value v) { set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcRecurrenceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(0); } -boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_add2::IfcRecurrencePattern::DayComponent() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_add2::IfcRecurrencePattern::WeekdayComponent() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_add2::IfcRecurrencePattern::MonthComponent() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< int > Ifc4x3_add2::IfcRecurrencePattern::Position() const { if(get_attribute_value(4).isNull()) { return boost::none; } int v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcRecurrencePattern::setPosition(boost::optional< int > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< int > Ifc4x3_add2::IfcRecurrencePattern::Interval() const { if(get_attribute_value(5).isNull()) { return boost::none; } int v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcRecurrencePattern::setInterval(boost::optional< int > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< int > Ifc4x3_add2::IfcRecurrencePattern::Occurrences() const { if(get_attribute_value(6).isNull()) { return boost::none; } int v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTimePeriod >::ptr > Ifc4x3_add2::IfcRecurrencePattern::TimePeriods() const { if(get_attribute_value(7).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(7); return es->as< ::Ifc4x3_add2::IfcTimePeriod >(); } -void Ifc4x3_add2::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTimePeriod >::ptr > v) { if (v) {set_attribute_value(7, (*v)->generalize());} else {unset_attribute_value(7);} } +void Ifc4x3_add2::IfcRecurrencePattern::setRecurrenceType(const ::Ifc4x3_add2::IfcRecurrenceTypeEnum::Value& v) { set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcRecurrenceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(0); } +std::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_add2::IfcRecurrencePattern::DayComponent() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::vector< int > /*[1:?]*/ v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcRecurrencePattern::setDayComponent(const std::optional< std::vector< int > /*[1:?]*/ >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_add2::IfcRecurrencePattern::WeekdayComponent() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::vector< int > /*[1:?]*/ v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcRecurrencePattern::setWeekdayComponent(const std::optional< std::vector< int > /*[1:?]*/ >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_add2::IfcRecurrencePattern::MonthComponent() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::vector< int > /*[1:?]*/ v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcRecurrencePattern::setMonthComponent(const std::optional< std::vector< int > /*[1:?]*/ >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< int > Ifc4x3_add2::IfcRecurrencePattern::Position() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } int v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcRecurrencePattern::setPosition(const std::optional< int >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< int > Ifc4x3_add2::IfcRecurrencePattern::Interval() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } int v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcRecurrencePattern::setInterval(const std::optional< int >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< int > Ifc4x3_add2::IfcRecurrencePattern::Occurrences() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } int v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcRecurrencePattern::setOccurrences(const std::optional< int >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcTimePeriod > > Ifc4x3_add2::IfcRecurrencePattern::TimePeriods() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(7); return cast_vector<::Ifc4x3_add2::IfcTimePeriod>(es); } +void Ifc4x3_add2::IfcRecurrencePattern::setTimePeriods(const std::optional< std::vector< ::Ifc4x3_add2::IfcTimePeriod > >& v) { if (v) {set_attribute_value(7, cast_vector(*v));} else {unset_attribute_value(7);} } -const IfcParse::entity& Ifc4x3_add2::IfcRecurrencePattern::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[877]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRecurrencePattern::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[877]); } const IfcParse::entity& Ifc4x3_add2::IfcRecurrencePattern::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[877]); } -Ifc4x3_add2::IfcRecurrencePattern::IfcRecurrencePattern(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcRecurrencePattern::IfcRecurrencePattern(::Ifc4x3_add2::IfcRecurrenceTypeEnum::Value v1_RecurrenceType, boost::optional< std::vector< int > /*[1:?]*/ > v2_DayComponent, boost::optional< std::vector< int > /*[1:?]*/ > v3_WeekdayComponent, boost::optional< std::vector< int > /*[1:?]*/ > v4_MonthComponent, boost::optional< int > v5_Position, boost::optional< int > v6_Interval, boost::optional< int > v7_Occurrences, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTimePeriod >::ptr > v8_TimePeriods) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcRecurrenceTypeEnum::Class(),(size_t)v1_RecurrenceType))); if (v2_DayComponent) {set_attribute_value(1, (*v2_DayComponent)); } if (v3_WeekdayComponent) {set_attribute_value(2, (*v3_WeekdayComponent)); } if (v4_MonthComponent) {set_attribute_value(3, (*v4_MonthComponent)); } if (v5_Position) {set_attribute_value(4, (*v5_Position)); } if (v6_Interval) {set_attribute_value(5, (*v6_Interval)); } if (v7_Occurrences) {set_attribute_value(6, (*v7_Occurrences)); } if (v8_TimePeriods) {set_attribute_value(7, (*v8_TimePeriods)->generalize()); }; populate_derived(); } +// Ifc4x3_add2::IfcRecurrencePattern::IfcRecurrencePattern(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcRecurrencePattern::IfcRecurrencePattern(::Ifc4x3_add2::IfcRecurrenceTypeEnum::Value v1_RecurrenceType, std::optional< std::vector< int > /*[1:?]*/ > v2_DayComponent, std::optional< std::vector< int > /*[1:?]*/ > v3_WeekdayComponent, std::optional< std::vector< int > /*[1:?]*/ > v4_MonthComponent, std::optional< int > v5_Position, std::optional< int > v6_Interval, std::optional< int > v7_Occurrences, std::optional< std::vector< ::Ifc4x3_add2::IfcTimePeriod > > v8_TimePeriods) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcRecurrenceTypeEnum::Class(),(size_t)v1_RecurrenceType))); if (v2_DayComponent) {set_attribute_value(1, (*v2_DayComponent)); } if (v3_WeekdayComponent) {set_attribute_value(2, (*v3_WeekdayComponent)); } if (v4_MonthComponent) {set_attribute_value(3, (*v4_MonthComponent)); } if (v5_Position) {set_attribute_value(4, (*v5_Position)); } if (v6_Interval) {set_attribute_value(5, (*v6_Interval)); } if (v7_Occurrences) {set_attribute_value(6, (*v7_Occurrences)); } if (v8_TimePeriods) {set_attribute_value(7, (*v8_TimePeriods)->generalize()); }; populate_derived(); } // Function implementations for IfcReference -boost::optional< std::string > Ifc4x3_add2::IfcReference::TypeIdentifier() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcReference::AttributeIdentifier() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::string > Ifc4x3_add2::IfcReference::InstanceName() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcReference::setInstanceName(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_add2::IfcReference::ListPositions() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -::Ifc4x3_add2::IfcReference* Ifc4x3_add2::IfcReference::InnerReference() const { if(get_attribute_value(4).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcReference>(true); } -void Ifc4x3_add2::IfcReference::setInnerReference(::Ifc4x3_add2::IfcReference* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } +std::optional< std::string > Ifc4x3_add2::IfcReference::TypeIdentifier() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcReference::setTypeIdentifier(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcReference::AttributeIdentifier() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcReference::setAttributeIdentifier(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcReference::InstanceName() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcReference::setInstanceName(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_add2::IfcReference::ListPositions() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::vector< int > /*[1:?]*/ v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcReference::setListPositions(const std::optional< std::vector< int > /*[1:?]*/ >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +::Ifc4x3_add2::IfcReference Ifc4x3_add2::IfcReference::InnerReference() const { if(get_attribute_value(4).isNull()) { return ::Ifc4x3_add2::IfcReference{}; } return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcReference>(); } +void Ifc4x3_add2::IfcReference::setInnerReference(const ::Ifc4x3_add2::IfcReference& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcReference::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[879]); } +// const IfcParse::entity& Ifc4x3_add2::IfcReference::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[879]); } const IfcParse::entity& Ifc4x3_add2::IfcReference::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[879]); } -Ifc4x3_add2::IfcReference::IfcReference(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcReference::IfcReference(boost::optional< std::string > v1_TypeIdentifier, boost::optional< std::string > v2_AttributeIdentifier, boost::optional< std::string > v3_InstanceName, boost::optional< std::vector< int > /*[1:?]*/ > v4_ListPositions, ::Ifc4x3_add2::IfcReference* v5_InnerReference) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(5))) { if (v1_TypeIdentifier) {set_attribute_value(0, (*v1_TypeIdentifier)); } if (v2_AttributeIdentifier) {set_attribute_value(1, (*v2_AttributeIdentifier)); } if (v3_InstanceName) {set_attribute_value(2, (*v3_InstanceName)); } if (v4_ListPositions) {set_attribute_value(3, (*v4_ListPositions)); }set_attribute_value(4, v5_InnerReference ? v5_InnerReference->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcReference::IfcReference(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcReference::IfcReference(std::optional< std::string > v1_TypeIdentifier, std::optional< std::string > v2_AttributeIdentifier, std::optional< std::string > v3_InstanceName, std::optional< std::vector< int > /*[1:?]*/ > v4_ListPositions, ::Ifc4x3_add2::IfcReference v5_InnerReference) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(5))) { if (v1_TypeIdentifier) {set_attribute_value(0, (*v1_TypeIdentifier)); } if (v2_AttributeIdentifier) {set_attribute_value(1, (*v2_AttributeIdentifier)); } if (v3_InstanceName) {set_attribute_value(2, (*v3_InstanceName)); } if (v4_ListPositions) {set_attribute_value(3, (*v4_ListPositions)); } if (v5_InnerReference) {set_attribute_value(4, (*v5_InnerReference)); }; populate_derived(); } // Function implementations for IfcReferent -boost::optional< ::Ifc4x3_add2::IfcReferentTypeEnum::Value > Ifc4x3_add2::IfcReferent::PredefinedType() const { if(get_attribute_value(7).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcReferentTypeEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcReferent::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcReferentTypeEnum::Value > v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcReferentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } +std::optional< ::Ifc4x3_add2::IfcReferentTypeEnum::Value > Ifc4x3_add2::IfcReferent::PredefinedType() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcReferentTypeEnum::FromString(get_attribute_value(7)); } +void Ifc4x3_add2::IfcReferent::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcReferentTypeEnum::Value >& v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcReferentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } -const IfcParse::entity& Ifc4x3_add2::IfcReferent::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[880]); } +// const IfcParse::entity& Ifc4x3_add2::IfcReferent::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[880]); } const IfcParse::entity& Ifc4x3_add2::IfcReferent::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[880]); } -Ifc4x3_add2::IfcReferent::IfcReferent(IfcEntityInstanceData&& e) : IfcPositioningElement(std::move(e)) { } -Ifc4x3_add2::IfcReferent::IfcReferent(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc4x3_add2::IfcReferentTypeEnum::Value > v8_PredefinedType) : IfcPositioningElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_PredefinedType) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcReferentTypeEnum::Class(),(size_t)*v8_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcReferent::IfcReferent(const std::weak_ptr& e) : IfcPositioningElement(e) { } +// Ifc4x3_add2::IfcReferent::IfcReferent(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< ::Ifc4x3_add2::IfcReferentTypeEnum::Value > v8_PredefinedType) : IfcPositioningElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_PredefinedType) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcReferentTypeEnum::Class(),(size_t)*v8_PredefinedType))); }; populate_derived(); } // Function implementations for IfcRegularTimeSeries double Ifc4x3_add2::IfcRegularTimeSeries::TimeStep() const { double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcRegularTimeSeries::setTimeStep(double v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } -aggregate_of< ::Ifc4x3_add2::IfcTimeSeriesValue >::ptr Ifc4x3_add2::IfcRegularTimeSeries::Values() const { aggregate_of_instance::ptr es = get_attribute_value(9); return es->as< ::Ifc4x3_add2::IfcTimeSeriesValue >(); } -void Ifc4x3_add2::IfcRegularTimeSeries::setValues(aggregate_of< ::Ifc4x3_add2::IfcTimeSeriesValue >::ptr v) { set_attribute_value(9, (v)->generalize());if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcRegularTimeSeries::setTimeStep(const double& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } +std::vector< ::Ifc4x3_add2::IfcTimeSeriesValue > Ifc4x3_add2::IfcRegularTimeSeries::Values() const { std::vector es = get_attribute_value(9); return cast_vector<::Ifc4x3_add2::IfcTimeSeriesValue>(es); } +void Ifc4x3_add2::IfcRegularTimeSeries::setValues(const std::vector< ::Ifc4x3_add2::IfcTimeSeriesValue >& v) { set_attribute_value(9, cast_vector(v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcRegularTimeSeries::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[883]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRegularTimeSeries::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[883]); } const IfcParse::entity& Ifc4x3_add2::IfcRegularTimeSeries::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[883]); } -Ifc4x3_add2::IfcRegularTimeSeries::IfcRegularTimeSeries(IfcEntityInstanceData&& e) : IfcTimeSeries(std::move(e)) { } -Ifc4x3_add2::IfcRegularTimeSeries::IfcRegularTimeSeries(std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_add2::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcUnit* v8_Unit, double v9_TimeStep, aggregate_of< ::Ifc4x3_add2::IfcTimeSeriesValue >::ptr v10_Values) : IfcTimeSeries(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_StartTime));set_attribute_value(3, (v4_EndTime));set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Class(),(size_t)v5_TimeSeriesDataType)));set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)v6_DataOrigin))); if (v7_UserDefinedDataOrigin) {set_attribute_value(6, (*v7_UserDefinedDataOrigin)); }set_attribute_value(7, v8_Unit ? v8_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, (v9_TimeStep));set_attribute_value(9, (v10_Values)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcRegularTimeSeries::IfcRegularTimeSeries(const std::weak_ptr& e) : IfcTimeSeries(e) { } +// Ifc4x3_add2::IfcRegularTimeSeries::IfcRegularTimeSeries(std::string v1_Name, std::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_add2::IfcDataOriginEnum::Value v6_DataOrigin, std::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcUnit v8_Unit, double v9_TimeStep, std::vector< ::Ifc4x3_add2::IfcTimeSeriesValue > v10_Values) : IfcTimeSeries(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_StartTime));set_attribute_value(3, (v4_EndTime));set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Class(),(size_t)v5_TimeSeriesDataType)));set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)v6_DataOrigin))); if (v7_UserDefinedDataOrigin) {set_attribute_value(6, (*v7_UserDefinedDataOrigin)); } if (v8_Unit) {set_attribute_value(7, (*v8_Unit)); }set_attribute_value(8, (v9_TimeStep));set_attribute_value(9, (v10_Values)->generalize());; populate_derived(); } // Function implementations for IfcReinforcedSoil -boost::optional< ::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Value > Ifc4x3_add2::IfcReinforcedSoil::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcReinforcedSoil::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Value > Ifc4x3_add2::IfcReinforcedSoil::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcReinforcedSoil::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcReinforcedSoil::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[884]); } +// const IfcParse::entity& Ifc4x3_add2::IfcReinforcedSoil::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[884]); } const IfcParse::entity& Ifc4x3_add2::IfcReinforcedSoil::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[884]); } -Ifc4x3_add2::IfcReinforcedSoil::IfcReinforcedSoil(IfcEntityInstanceData&& e) : IfcEarthworksElement(std::move(e)) { } -Ifc4x3_add2::IfcReinforcedSoil::IfcReinforcedSoil(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Value > v9_PredefinedType) : IfcEarthworksElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcReinforcedSoil::IfcReinforcedSoil(const std::weak_ptr& e) : IfcEarthworksElement(e) { } +// Ifc4x3_add2::IfcReinforcedSoil::IfcReinforcedSoil(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Value > v9_PredefinedType) : IfcEarthworksElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcReinforcementBarProperties double Ifc4x3_add2::IfcReinforcementBarProperties::TotalCrossSectionArea() const { double v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcReinforcementBarProperties::setTotalCrossSectionArea(double v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcReinforcementBarProperties::setTotalCrossSectionArea(const double& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } std::string Ifc4x3_add2::IfcReinforcementBarProperties::SteelGrade() const { std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcReinforcementBarProperties::setSteelGrade(std::string v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_add2::IfcReinforcementBarProperties::BarSurface() const { if(get_attribute_value(2).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::FromString(get_attribute_value(2)); } -void Ifc4x3_add2::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v) { if (v) {set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Class(), (size_t) *v));} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcementBarProperties::EffectiveDepth() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcementBarProperties::NominalBarDiameter() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< int > Ifc4x3_add2::IfcReinforcementBarProperties::BarCount() const { if(get_attribute_value(5).isNull()) { return boost::none; } int v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcReinforcementBarProperties::setBarCount(boost::optional< int > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +void Ifc4x3_add2::IfcReinforcementBarProperties::setSteelGrade(const std::string& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_add2::IfcReinforcementBarProperties::BarSurface() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::FromString(get_attribute_value(2)); } +void Ifc4x3_add2::IfcReinforcementBarProperties::setBarSurface(const std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value >& v) { if (v) {set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Class(), (size_t) *v));} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcReinforcementBarProperties::EffectiveDepth() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcReinforcementBarProperties::setEffectiveDepth(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< double > Ifc4x3_add2::IfcReinforcementBarProperties::NominalBarDiameter() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcReinforcementBarProperties::setNominalBarDiameter(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< int > Ifc4x3_add2::IfcReinforcementBarProperties::BarCount() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } int v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcReinforcementBarProperties::setBarCount(const std::optional< int >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -const IfcParse::entity& Ifc4x3_add2::IfcReinforcementBarProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[886]); } +// const IfcParse::entity& Ifc4x3_add2::IfcReinforcementBarProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[886]); } const IfcParse::entity& Ifc4x3_add2::IfcReinforcementBarProperties::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[886]); } -Ifc4x3_add2::IfcReinforcementBarProperties::IfcReinforcementBarProperties(IfcEntityInstanceData&& e) : IfcPreDefinedProperties(std::move(e)) { } -Ifc4x3_add2::IfcReinforcementBarProperties::IfcReinforcementBarProperties(double v1_TotalCrossSectionArea, std::string v2_SteelGrade, boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v3_BarSurface, boost::optional< double > v4_EffectiveDepth, boost::optional< double > v5_NominalBarDiameter, boost::optional< int > v6_BarCount) : IfcPreDefinedProperties(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_TotalCrossSectionArea));set_attribute_value(1, (v2_SteelGrade)); if (v3_BarSurface) {set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Class(),(size_t)*v3_BarSurface))); } if (v4_EffectiveDepth) {set_attribute_value(3, (*v4_EffectiveDepth)); } if (v5_NominalBarDiameter) {set_attribute_value(4, (*v5_NominalBarDiameter)); } if (v6_BarCount) {set_attribute_value(5, (*v6_BarCount)); }; populate_derived(); } +// Ifc4x3_add2::IfcReinforcementBarProperties::IfcReinforcementBarProperties(const std::weak_ptr& e) : IfcPreDefinedProperties(e) { } +// Ifc4x3_add2::IfcReinforcementBarProperties::IfcReinforcementBarProperties(double v1_TotalCrossSectionArea, std::string v2_SteelGrade, std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v3_BarSurface, std::optional< double > v4_EffectiveDepth, std::optional< double > v5_NominalBarDiameter, std::optional< int > v6_BarCount) : IfcPreDefinedProperties(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_TotalCrossSectionArea));set_attribute_value(1, (v2_SteelGrade)); if (v3_BarSurface) {set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Class(),(size_t)*v3_BarSurface))); } if (v4_EffectiveDepth) {set_attribute_value(3, (*v4_EffectiveDepth)); } if (v5_NominalBarDiameter) {set_attribute_value(4, (*v5_NominalBarDiameter)); } if (v6_BarCount) {set_attribute_value(5, (*v6_BarCount)); }; populate_derived(); } // Function implementations for IfcReinforcementDefinitionProperties -boost::optional< std::string > Ifc4x3_add2::IfcReinforcementDefinitionProperties::DefinitionType() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -aggregate_of< ::Ifc4x3_add2::IfcSectionReinforcementProperties >::ptr Ifc4x3_add2::IfcReinforcementDefinitionProperties::ReinforcementSectionDefinitions() const { aggregate_of_instance::ptr es = get_attribute_value(5); return es->as< ::Ifc4x3_add2::IfcSectionReinforcementProperties >(); } -void Ifc4x3_add2::IfcReinforcementDefinitionProperties::setReinforcementSectionDefinitions(aggregate_of< ::Ifc4x3_add2::IfcSectionReinforcementProperties >::ptr v) { set_attribute_value(5, (v)->generalize());if constexpr (false)unset_attribute_value(5); } +std::optional< std::string > Ifc4x3_add2::IfcReinforcementDefinitionProperties::DefinitionType() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcReinforcementDefinitionProperties::setDefinitionType(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::vector< ::Ifc4x3_add2::IfcSectionReinforcementProperties > Ifc4x3_add2::IfcReinforcementDefinitionProperties::ReinforcementSectionDefinitions() const { std::vector es = get_attribute_value(5); return cast_vector<::Ifc4x3_add2::IfcSectionReinforcementProperties>(es); } +void Ifc4x3_add2::IfcReinforcementDefinitionProperties::setReinforcementSectionDefinitions(const std::vector< ::Ifc4x3_add2::IfcSectionReinforcementProperties >& v) { set_attribute_value(5, cast_vector(v));if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcReinforcementDefinitionProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[887]); } +// const IfcParse::entity& Ifc4x3_add2::IfcReinforcementDefinitionProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[887]); } const IfcParse::entity& Ifc4x3_add2::IfcReinforcementDefinitionProperties::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[887]); } -Ifc4x3_add2::IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProperties(IfcEntityInstanceData&& e) : IfcPreDefinedPropertySet(std::move(e)) { } -Ifc4x3_add2::IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProperties(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_DefinitionType, aggregate_of< ::Ifc4x3_add2::IfcSectionReinforcementProperties >::ptr v6_ReinforcementSectionDefinitions) : IfcPreDefinedPropertySet(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_DefinitionType) {set_attribute_value(4, (*v5_DefinitionType)); }set_attribute_value(5, (v6_ReinforcementSectionDefinitions)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProperties(const std::weak_ptr& e) : IfcPreDefinedPropertySet(e) { } +// Ifc4x3_add2::IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProperties(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_DefinitionType, std::vector< ::Ifc4x3_add2::IfcSectionReinforcementProperties > v6_ReinforcementSectionDefinitions) : IfcPreDefinedPropertySet(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_DefinitionType) {set_attribute_value(4, (*v5_DefinitionType)); }set_attribute_value(5, (v6_ReinforcementSectionDefinitions)->generalize());; populate_derived(); } // Function implementations for IfcReinforcingBar -boost::optional< double > Ifc4x3_add2::IfcReinforcingBar::NominalDiameter() const { if(get_attribute_value(9).isNull()) { return boost::none; } double v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingBar::CrossSectionArea() const { if(get_attribute_value(10).isNull()) { return boost::none; } double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingBar::BarLength() const { if(get_attribute_value(11).isNull()) { return boost::none; } double v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcReinforcingBar::setBarLength(boost::optional< double > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -boost::optional< ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value > Ifc4x3_add2::IfcReinforcingBar::PredefinedType() const { if(get_attribute_value(12).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::FromString(get_attribute_value(12)); } -void Ifc4x3_add2::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value > v) { if (v) {set_attribute_value(12, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(12);} } -boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_add2::IfcReinforcingBar::BarSurface() const { if(get_attribute_value(13).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::FromString(get_attribute_value(13)); } -void Ifc4x3_add2::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v) { if (v) {set_attribute_value(13, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Class(), (size_t) *v));} else {unset_attribute_value(13);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingBar::NominalDiameter() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } double v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcReinforcingBar::setNominalDiameter(const std::optional< double >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingBar::CrossSectionArea() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } double v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcReinforcingBar::setCrossSectionArea(const std::optional< double >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingBar::BarLength() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } double v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcReinforcingBar::setBarLength(const std::optional< double >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +std::optional< ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value > Ifc4x3_add2::IfcReinforcingBar::PredefinedType() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::FromString(get_attribute_value(12)); } +void Ifc4x3_add2::IfcReinforcingBar::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value >& v) { if (v) {set_attribute_value(12, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(12);} } +std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_add2::IfcReinforcingBar::BarSurface() const { if(get_attribute_value(13).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::FromString(get_attribute_value(13)); } +void Ifc4x3_add2::IfcReinforcingBar::setBarSurface(const std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value >& v) { if (v) {set_attribute_value(13, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Class(), (size_t) *v));} else {unset_attribute_value(13);} } -const IfcParse::entity& Ifc4x3_add2::IfcReinforcingBar::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[888]); } +// const IfcParse::entity& Ifc4x3_add2::IfcReinforcingBar::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[888]); } const IfcParse::entity& Ifc4x3_add2::IfcReinforcingBar::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[888]); } -Ifc4x3_add2::IfcReinforcingBar::IfcReinforcingBar(IfcEntityInstanceData&& e) : IfcReinforcingElement(std::move(e)) { } -Ifc4x3_add2::IfcReinforcingBar::IfcReinforcingBar(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< double > v10_NominalDiameter, boost::optional< double > v11_CrossSectionArea, boost::optional< double > v12_BarLength, boost::optional< ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value > v13_PredefinedType, boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v14_BarSurface) : IfcReinforcingElement(IfcEntityInstanceData(in_memory_attribute_storage(14))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_SteelGrade) {set_attribute_value(8, (*v9_SteelGrade)); } if (v10_NominalDiameter) {set_attribute_value(9, (*v10_NominalDiameter)); } if (v11_CrossSectionArea) {set_attribute_value(10, (*v11_CrossSectionArea)); } if (v12_BarLength) {set_attribute_value(11, (*v12_BarLength)); } if (v13_PredefinedType) {set_attribute_value(12, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Class(),(size_t)*v13_PredefinedType))); } if (v14_BarSurface) {set_attribute_value(13, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Class(),(size_t)*v14_BarSurface))); }; populate_derived(); } +// Ifc4x3_add2::IfcReinforcingBar::IfcReinforcingBar(const std::weak_ptr& e) : IfcReinforcingElement(e) { } +// Ifc4x3_add2::IfcReinforcingBar::IfcReinforcingBar(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< std::string > v9_SteelGrade, std::optional< double > v10_NominalDiameter, std::optional< double > v11_CrossSectionArea, std::optional< double > v12_BarLength, std::optional< ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value > v13_PredefinedType, std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v14_BarSurface) : IfcReinforcingElement(const std::weak_ptr&(in_memory_attribute_storage(14))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_SteelGrade) {set_attribute_value(8, (*v9_SteelGrade)); } if (v10_NominalDiameter) {set_attribute_value(9, (*v10_NominalDiameter)); } if (v11_CrossSectionArea) {set_attribute_value(10, (*v11_CrossSectionArea)); } if (v12_BarLength) {set_attribute_value(11, (*v12_BarLength)); } if (v13_PredefinedType) {set_attribute_value(12, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Class(),(size_t)*v13_PredefinedType))); } if (v14_BarSurface) {set_attribute_value(13, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Class(),(size_t)*v14_BarSurface))); }; populate_derived(); } // Function implementations for IfcReinforcingBarType ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value Ifc4x3_add2::IfcReinforcingBarType::PredefinedType() const { return ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcReinforcingBarType::setPredefinedType(::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -boost::optional< double > Ifc4x3_add2::IfcReinforcingBarType::NominalDiameter() const { if(get_attribute_value(10).isNull()) { return boost::none; } double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingBarType::CrossSectionArea() const { if(get_attribute_value(11).isNull()) { return boost::none; } double v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingBarType::BarLength() const { if(get_attribute_value(12).isNull()) { return boost::none; } double v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_add2::IfcReinforcingBarType::BarSurface() const { if(get_attribute_value(13).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::FromString(get_attribute_value(13)); } -void Ifc4x3_add2::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v) { if (v) {set_attribute_value(13, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Class(), (size_t) *v));} else {unset_attribute_value(13);} } -boost::optional< std::string > Ifc4x3_add2::IfcReinforcingBarType::BendingShapeCode() const { if(get_attribute_value(14).isNull()) { return boost::none; } std::string v = get_attribute_value(14); return v; } -void Ifc4x3_add2::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcBendingParameterSelect >::ptr > Ifc4x3_add2::IfcReinforcingBarType::BendingParameters() const { if(get_attribute_value(15).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(15); return es->as< ::Ifc4x3_add2::IfcBendingParameterSelect >(); } -void Ifc4x3_add2::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcBendingParameterSelect >::ptr > v) { if (v) {set_attribute_value(15, (*v)->generalize());} else {unset_attribute_value(15);} } +void Ifc4x3_add2::IfcReinforcingBarType::setPredefinedType(const ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +std::optional< double > Ifc4x3_add2::IfcReinforcingBarType::NominalDiameter() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } double v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcReinforcingBarType::setNominalDiameter(const std::optional< double >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingBarType::CrossSectionArea() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } double v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcReinforcingBarType::setCrossSectionArea(const std::optional< double >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingBarType::BarLength() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } double v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcReinforcingBarType::setBarLength(const std::optional< double >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_add2::IfcReinforcingBarType::BarSurface() const { if(get_attribute_value(13).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::FromString(get_attribute_value(13)); } +void Ifc4x3_add2::IfcReinforcingBarType::setBarSurface(const std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value >& v) { if (v) {set_attribute_value(13, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Class(), (size_t) *v));} else {unset_attribute_value(13);} } +std::optional< std::string > Ifc4x3_add2::IfcReinforcingBarType::BendingShapeCode() const { if(get_attribute_value(14).isNull()) { return std::nullopt; } std::string v = get_attribute_value(14); return v; } +void Ifc4x3_add2::IfcReinforcingBarType::setBendingShapeCode(const std::optional< std::string >& v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcBendingParameterSelect > > Ifc4x3_add2::IfcReinforcingBarType::BendingParameters() const { if(get_attribute_value(15).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(15); return cast_vector<::Ifc4x3_add2::IfcBendingParameterSelect>(es); } +void Ifc4x3_add2::IfcReinforcingBarType::setBendingParameters(const std::optional< std::vector< ::Ifc4x3_add2::IfcBendingParameterSelect > >& v) { if (v) {set_attribute_value(15, cast_vector(*v));} else {unset_attribute_value(15);} } -const IfcParse::entity& Ifc4x3_add2::IfcReinforcingBarType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[891]); } +// const IfcParse::entity& Ifc4x3_add2::IfcReinforcingBarType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[891]); } const IfcParse::entity& Ifc4x3_add2::IfcReinforcingBarType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[891]); } -Ifc4x3_add2::IfcReinforcingBarType::IfcReinforcingBarType(IfcEntityInstanceData&& e) : IfcReinforcingElementType(std::move(e)) { } -Ifc4x3_add2::IfcReinforcingBarType::IfcReinforcingBarType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_BarLength, boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v14_BarSurface, boost::optional< std::string > v15_BendingShapeCode, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcBendingParameterSelect >::ptr > v16_BendingParameters) : IfcReinforcingElementType(IfcEntityInstanceData(in_memory_attribute_storage(16))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Class(),(size_t)v10_PredefinedType))); if (v11_NominalDiameter) {set_attribute_value(10, (*v11_NominalDiameter)); } if (v12_CrossSectionArea) {set_attribute_value(11, (*v12_CrossSectionArea)); } if (v13_BarLength) {set_attribute_value(12, (*v13_BarLength)); } if (v14_BarSurface) {set_attribute_value(13, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Class(),(size_t)*v14_BarSurface))); } if (v15_BendingShapeCode) {set_attribute_value(14, (*v15_BendingShapeCode)); } if (v16_BendingParameters) {set_attribute_value(15, (*v16_BendingParameters)->generalize()); }; populate_derived(); } +// Ifc4x3_add2::IfcReinforcingBarType::IfcReinforcingBarType(const std::weak_ptr& e) : IfcReinforcingElementType(e) { } +// Ifc4x3_add2::IfcReinforcingBarType::IfcReinforcingBarType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value v10_PredefinedType, std::optional< double > v11_NominalDiameter, std::optional< double > v12_CrossSectionArea, std::optional< double > v13_BarLength, std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v14_BarSurface, std::optional< std::string > v15_BendingShapeCode, std::optional< std::vector< ::Ifc4x3_add2::IfcBendingParameterSelect > > v16_BendingParameters) : IfcReinforcingElementType(const std::weak_ptr&(in_memory_attribute_storage(16))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Class(),(size_t)v10_PredefinedType))); if (v11_NominalDiameter) {set_attribute_value(10, (*v11_NominalDiameter)); } if (v12_CrossSectionArea) {set_attribute_value(11, (*v12_CrossSectionArea)); } if (v13_BarLength) {set_attribute_value(12, (*v13_BarLength)); } if (v14_BarSurface) {set_attribute_value(13, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Class(),(size_t)*v14_BarSurface))); } if (v15_BendingShapeCode) {set_attribute_value(14, (*v15_BendingShapeCode)); } if (v16_BendingParameters) {set_attribute_value(15, (*v16_BendingParameters)->generalize()); }; populate_derived(); } // Function implementations for IfcReinforcingElement -boost::optional< std::string > Ifc4x3_add2::IfcReinforcingElement::SteelGrade() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< std::string > Ifc4x3_add2::IfcReinforcingElement::SteelGrade() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcReinforcingElement::setSteelGrade(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcReinforcingElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[893]); } +// const IfcParse::entity& Ifc4x3_add2::IfcReinforcingElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[893]); } const IfcParse::entity& Ifc4x3_add2::IfcReinforcingElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[893]); } -Ifc4x3_add2::IfcReinforcingElement::IfcReinforcingElement(IfcEntityInstanceData&& e) : IfcElementComponent(std::move(e)) { } -Ifc4x3_add2::IfcReinforcingElement::IfcReinforcingElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade) : IfcElementComponent(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_SteelGrade) {set_attribute_value(8, (*v9_SteelGrade)); }; populate_derived(); } +// Ifc4x3_add2::IfcReinforcingElement::IfcReinforcingElement(const std::weak_ptr& e) : IfcElementComponent(e) { } +// Ifc4x3_add2::IfcReinforcingElement::IfcReinforcingElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< std::string > v9_SteelGrade) : IfcElementComponent(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_SteelGrade) {set_attribute_value(8, (*v9_SteelGrade)); }; populate_derived(); } // Function implementations for IfcReinforcingElementType -const IfcParse::entity& Ifc4x3_add2::IfcReinforcingElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[894]); } +// const IfcParse::entity& Ifc4x3_add2::IfcReinforcingElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[894]); } const IfcParse::entity& Ifc4x3_add2::IfcReinforcingElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[894]); } -Ifc4x3_add2::IfcReinforcingElementType::IfcReinforcingElementType(IfcEntityInstanceData&& e) : IfcElementComponentType(std::move(e)) { } -Ifc4x3_add2::IfcReinforcingElementType::IfcReinforcingElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementComponentType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcReinforcingElementType::IfcReinforcingElementType(const std::weak_ptr& e) : IfcElementComponentType(e) { } +// Ifc4x3_add2::IfcReinforcingElementType::IfcReinforcingElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcElementComponentType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcReinforcingMesh -boost::optional< double > Ifc4x3_add2::IfcReinforcingMesh::MeshLength() const { if(get_attribute_value(9).isNull()) { return boost::none; } double v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingMesh::MeshWidth() const { if(get_attribute_value(10).isNull()) { return boost::none; } double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingMesh::LongitudinalBarNominalDiameter() const { if(get_attribute_value(11).isNull()) { return boost::none; } double v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingMesh::TransverseBarNominalDiameter() const { if(get_attribute_value(12).isNull()) { return boost::none; } double v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingMesh::LongitudinalBarCrossSectionArea() const { if(get_attribute_value(13).isNull()) { return boost::none; } double v = get_attribute_value(13); return v; } -void Ifc4x3_add2::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingMesh::TransverseBarCrossSectionArea() const { if(get_attribute_value(14).isNull()) { return boost::none; } double v = get_attribute_value(14); return v; } -void Ifc4x3_add2::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingMesh::LongitudinalBarSpacing() const { if(get_attribute_value(15).isNull()) { return boost::none; } double v = get_attribute_value(15); return v; } -void Ifc4x3_add2::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { if (v) {set_attribute_value(15, *v);} else {unset_attribute_value(15);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingMesh::TransverseBarSpacing() const { if(get_attribute_value(16).isNull()) { return boost::none; } double v = get_attribute_value(16); return v; } -void Ifc4x3_add2::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { if (v) {set_attribute_value(16, *v);} else {unset_attribute_value(16);} } -boost::optional< ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value > Ifc4x3_add2::IfcReinforcingMesh::PredefinedType() const { if(get_attribute_value(17).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::FromString(get_attribute_value(17)); } -void Ifc4x3_add2::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value > v) { if (v) {set_attribute_value(17, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(17);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingMesh::MeshLength() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } double v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcReinforcingMesh::setMeshLength(const std::optional< double >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingMesh::MeshWidth() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } double v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcReinforcingMesh::setMeshWidth(const std::optional< double >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingMesh::LongitudinalBarNominalDiameter() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } double v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(const std::optional< double >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingMesh::TransverseBarNominalDiameter() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } double v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcReinforcingMesh::setTransverseBarNominalDiameter(const std::optional< double >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingMesh::LongitudinalBarCrossSectionArea() const { if(get_attribute_value(13).isNull()) { return std::nullopt; } double v = get_attribute_value(13); return v; } +void Ifc4x3_add2::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(const std::optional< double >& v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingMesh::TransverseBarCrossSectionArea() const { if(get_attribute_value(14).isNull()) { return std::nullopt; } double v = get_attribute_value(14); return v; } +void Ifc4x3_add2::IfcReinforcingMesh::setTransverseBarCrossSectionArea(const std::optional< double >& v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingMesh::LongitudinalBarSpacing() const { if(get_attribute_value(15).isNull()) { return std::nullopt; } double v = get_attribute_value(15); return v; } +void Ifc4x3_add2::IfcReinforcingMesh::setLongitudinalBarSpacing(const std::optional< double >& v) { if (v) {set_attribute_value(15, *v);} else {unset_attribute_value(15);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingMesh::TransverseBarSpacing() const { if(get_attribute_value(16).isNull()) { return std::nullopt; } double v = get_attribute_value(16); return v; } +void Ifc4x3_add2::IfcReinforcingMesh::setTransverseBarSpacing(const std::optional< double >& v) { if (v) {set_attribute_value(16, *v);} else {unset_attribute_value(16);} } +std::optional< ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value > Ifc4x3_add2::IfcReinforcingMesh::PredefinedType() const { if(get_attribute_value(17).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::FromString(get_attribute_value(17)); } +void Ifc4x3_add2::IfcReinforcingMesh::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value >& v) { if (v) {set_attribute_value(17, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(17);} } -const IfcParse::entity& Ifc4x3_add2::IfcReinforcingMesh::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[895]); } +// const IfcParse::entity& Ifc4x3_add2::IfcReinforcingMesh::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[895]); } const IfcParse::entity& Ifc4x3_add2::IfcReinforcingMesh::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[895]); } -Ifc4x3_add2::IfcReinforcingMesh::IfcReinforcingMesh(IfcEntityInstanceData&& e) : IfcReinforcingElement(std::move(e)) { } -Ifc4x3_add2::IfcReinforcingMesh::IfcReinforcingMesh(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< double > v10_MeshLength, boost::optional< double > v11_MeshWidth, boost::optional< double > v12_LongitudinalBarNominalDiameter, boost::optional< double > v13_TransverseBarNominalDiameter, boost::optional< double > v14_LongitudinalBarCrossSectionArea, boost::optional< double > v15_TransverseBarCrossSectionArea, boost::optional< double > v16_LongitudinalBarSpacing, boost::optional< double > v17_TransverseBarSpacing, boost::optional< ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value > v18_PredefinedType) : IfcReinforcingElement(IfcEntityInstanceData(in_memory_attribute_storage(18))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_SteelGrade) {set_attribute_value(8, (*v9_SteelGrade)); } if (v10_MeshLength) {set_attribute_value(9, (*v10_MeshLength)); } if (v11_MeshWidth) {set_attribute_value(10, (*v11_MeshWidth)); } if (v12_LongitudinalBarNominalDiameter) {set_attribute_value(11, (*v12_LongitudinalBarNominalDiameter)); } if (v13_TransverseBarNominalDiameter) {set_attribute_value(12, (*v13_TransverseBarNominalDiameter)); } if (v14_LongitudinalBarCrossSectionArea) {set_attribute_value(13, (*v14_LongitudinalBarCrossSectionArea)); } if (v15_TransverseBarCrossSectionArea) {set_attribute_value(14, (*v15_TransverseBarCrossSectionArea)); } if (v16_LongitudinalBarSpacing) {set_attribute_value(15, (*v16_LongitudinalBarSpacing)); } if (v17_TransverseBarSpacing) {set_attribute_value(16, (*v17_TransverseBarSpacing)); } if (v18_PredefinedType) {set_attribute_value(17, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Class(),(size_t)*v18_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcReinforcingMesh::IfcReinforcingMesh(const std::weak_ptr& e) : IfcReinforcingElement(e) { } +// Ifc4x3_add2::IfcReinforcingMesh::IfcReinforcingMesh(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< std::string > v9_SteelGrade, std::optional< double > v10_MeshLength, std::optional< double > v11_MeshWidth, std::optional< double > v12_LongitudinalBarNominalDiameter, std::optional< double > v13_TransverseBarNominalDiameter, std::optional< double > v14_LongitudinalBarCrossSectionArea, std::optional< double > v15_TransverseBarCrossSectionArea, std::optional< double > v16_LongitudinalBarSpacing, std::optional< double > v17_TransverseBarSpacing, std::optional< ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value > v18_PredefinedType) : IfcReinforcingElement(const std::weak_ptr&(in_memory_attribute_storage(18))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_SteelGrade) {set_attribute_value(8, (*v9_SteelGrade)); } if (v10_MeshLength) {set_attribute_value(9, (*v10_MeshLength)); } if (v11_MeshWidth) {set_attribute_value(10, (*v11_MeshWidth)); } if (v12_LongitudinalBarNominalDiameter) {set_attribute_value(11, (*v12_LongitudinalBarNominalDiameter)); } if (v13_TransverseBarNominalDiameter) {set_attribute_value(12, (*v13_TransverseBarNominalDiameter)); } if (v14_LongitudinalBarCrossSectionArea) {set_attribute_value(13, (*v14_LongitudinalBarCrossSectionArea)); } if (v15_TransverseBarCrossSectionArea) {set_attribute_value(14, (*v15_TransverseBarCrossSectionArea)); } if (v16_LongitudinalBarSpacing) {set_attribute_value(15, (*v16_LongitudinalBarSpacing)); } if (v17_TransverseBarSpacing) {set_attribute_value(16, (*v17_TransverseBarSpacing)); } if (v18_PredefinedType) {set_attribute_value(17, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Class(),(size_t)*v18_PredefinedType))); }; populate_derived(); } // Function implementations for IfcReinforcingMeshType ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value Ifc4x3_add2::IfcReinforcingMeshType::PredefinedType() const { return ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcReinforcingMeshType::setPredefinedType(::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -boost::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::MeshLength() const { if(get_attribute_value(10).isNull()) { return boost::none; } double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::MeshWidth() const { if(get_attribute_value(11).isNull()) { return boost::none; } double v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::LongitudinalBarNominalDiameter() const { if(get_attribute_value(12).isNull()) { return boost::none; } double v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::TransverseBarNominalDiameter() const { if(get_attribute_value(13).isNull()) { return boost::none; } double v = get_attribute_value(13); return v; } -void Ifc4x3_add2::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::LongitudinalBarCrossSectionArea() const { if(get_attribute_value(14).isNull()) { return boost::none; } double v = get_attribute_value(14); return v; } -void Ifc4x3_add2::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::TransverseBarCrossSectionArea() const { if(get_attribute_value(15).isNull()) { return boost::none; } double v = get_attribute_value(15); return v; } -void Ifc4x3_add2::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { if (v) {set_attribute_value(15, *v);} else {unset_attribute_value(15);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::LongitudinalBarSpacing() const { if(get_attribute_value(16).isNull()) { return boost::none; } double v = get_attribute_value(16); return v; } -void Ifc4x3_add2::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { if (v) {set_attribute_value(16, *v);} else {unset_attribute_value(16);} } -boost::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::TransverseBarSpacing() const { if(get_attribute_value(17).isNull()) { return boost::none; } double v = get_attribute_value(17); return v; } -void Ifc4x3_add2::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { if (v) {set_attribute_value(17, *v);} else {unset_attribute_value(17);} } -boost::optional< std::string > Ifc4x3_add2::IfcReinforcingMeshType::BendingShapeCode() const { if(get_attribute_value(18).isNull()) { return boost::none; } std::string v = get_attribute_value(18); return v; } -void Ifc4x3_add2::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { if (v) {set_attribute_value(18, *v);} else {unset_attribute_value(18);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcBendingParameterSelect >::ptr > Ifc4x3_add2::IfcReinforcingMeshType::BendingParameters() const { if(get_attribute_value(19).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(19); return es->as< ::Ifc4x3_add2::IfcBendingParameterSelect >(); } -void Ifc4x3_add2::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcBendingParameterSelect >::ptr > v) { if (v) {set_attribute_value(19, (*v)->generalize());} else {unset_attribute_value(19);} } +void Ifc4x3_add2::IfcReinforcingMeshType::setPredefinedType(const ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +std::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::MeshLength() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } double v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcReinforcingMeshType::setMeshLength(const std::optional< double >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::MeshWidth() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } double v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcReinforcingMeshType::setMeshWidth(const std::optional< double >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::LongitudinalBarNominalDiameter() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } double v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(const std::optional< double >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::TransverseBarNominalDiameter() const { if(get_attribute_value(13).isNull()) { return std::nullopt; } double v = get_attribute_value(13); return v; } +void Ifc4x3_add2::IfcReinforcingMeshType::setTransverseBarNominalDiameter(const std::optional< double >& v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::LongitudinalBarCrossSectionArea() const { if(get_attribute_value(14).isNull()) { return std::nullopt; } double v = get_attribute_value(14); return v; } +void Ifc4x3_add2::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(const std::optional< double >& v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::TransverseBarCrossSectionArea() const { if(get_attribute_value(15).isNull()) { return std::nullopt; } double v = get_attribute_value(15); return v; } +void Ifc4x3_add2::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(const std::optional< double >& v) { if (v) {set_attribute_value(15, *v);} else {unset_attribute_value(15);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::LongitudinalBarSpacing() const { if(get_attribute_value(16).isNull()) { return std::nullopt; } double v = get_attribute_value(16); return v; } +void Ifc4x3_add2::IfcReinforcingMeshType::setLongitudinalBarSpacing(const std::optional< double >& v) { if (v) {set_attribute_value(16, *v);} else {unset_attribute_value(16);} } +std::optional< double > Ifc4x3_add2::IfcReinforcingMeshType::TransverseBarSpacing() const { if(get_attribute_value(17).isNull()) { return std::nullopt; } double v = get_attribute_value(17); return v; } +void Ifc4x3_add2::IfcReinforcingMeshType::setTransverseBarSpacing(const std::optional< double >& v) { if (v) {set_attribute_value(17, *v);} else {unset_attribute_value(17);} } +std::optional< std::string > Ifc4x3_add2::IfcReinforcingMeshType::BendingShapeCode() const { if(get_attribute_value(18).isNull()) { return std::nullopt; } std::string v = get_attribute_value(18); return v; } +void Ifc4x3_add2::IfcReinforcingMeshType::setBendingShapeCode(const std::optional< std::string >& v) { if (v) {set_attribute_value(18, *v);} else {unset_attribute_value(18);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcBendingParameterSelect > > Ifc4x3_add2::IfcReinforcingMeshType::BendingParameters() const { if(get_attribute_value(19).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(19); return cast_vector<::Ifc4x3_add2::IfcBendingParameterSelect>(es); } +void Ifc4x3_add2::IfcReinforcingMeshType::setBendingParameters(const std::optional< std::vector< ::Ifc4x3_add2::IfcBendingParameterSelect > >& v) { if (v) {set_attribute_value(19, cast_vector(*v));} else {unset_attribute_value(19);} } -const IfcParse::entity& Ifc4x3_add2::IfcReinforcingMeshType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[896]); } +// const IfcParse::entity& Ifc4x3_add2::IfcReinforcingMeshType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[896]); } const IfcParse::entity& Ifc4x3_add2::IfcReinforcingMeshType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[896]); } -Ifc4x3_add2::IfcReinforcingMeshType::IfcReinforcingMeshType(IfcEntityInstanceData&& e) : IfcReinforcingElementType(std::move(e)) { } -Ifc4x3_add2::IfcReinforcingMeshType::IfcReinforcingMeshType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_MeshLength, boost::optional< double > v12_MeshWidth, boost::optional< double > v13_LongitudinalBarNominalDiameter, boost::optional< double > v14_TransverseBarNominalDiameter, boost::optional< double > v15_LongitudinalBarCrossSectionArea, boost::optional< double > v16_TransverseBarCrossSectionArea, boost::optional< double > v17_LongitudinalBarSpacing, boost::optional< double > v18_TransverseBarSpacing, boost::optional< std::string > v19_BendingShapeCode, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcBendingParameterSelect >::ptr > v20_BendingParameters) : IfcReinforcingElementType(IfcEntityInstanceData(in_memory_attribute_storage(20))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Class(),(size_t)v10_PredefinedType))); if (v11_MeshLength) {set_attribute_value(10, (*v11_MeshLength)); } if (v12_MeshWidth) {set_attribute_value(11, (*v12_MeshWidth)); } if (v13_LongitudinalBarNominalDiameter) {set_attribute_value(12, (*v13_LongitudinalBarNominalDiameter)); } if (v14_TransverseBarNominalDiameter) {set_attribute_value(13, (*v14_TransverseBarNominalDiameter)); } if (v15_LongitudinalBarCrossSectionArea) {set_attribute_value(14, (*v15_LongitudinalBarCrossSectionArea)); } if (v16_TransverseBarCrossSectionArea) {set_attribute_value(15, (*v16_TransverseBarCrossSectionArea)); } if (v17_LongitudinalBarSpacing) {set_attribute_value(16, (*v17_LongitudinalBarSpacing)); } if (v18_TransverseBarSpacing) {set_attribute_value(17, (*v18_TransverseBarSpacing)); } if (v19_BendingShapeCode) {set_attribute_value(18, (*v19_BendingShapeCode)); } if (v20_BendingParameters) {set_attribute_value(19, (*v20_BendingParameters)->generalize()); }; populate_derived(); } +// Ifc4x3_add2::IfcReinforcingMeshType::IfcReinforcingMeshType(const std::weak_ptr& e) : IfcReinforcingElementType(e) { } +// Ifc4x3_add2::IfcReinforcingMeshType::IfcReinforcingMeshType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value v10_PredefinedType, std::optional< double > v11_MeshLength, std::optional< double > v12_MeshWidth, std::optional< double > v13_LongitudinalBarNominalDiameter, std::optional< double > v14_TransverseBarNominalDiameter, std::optional< double > v15_LongitudinalBarCrossSectionArea, std::optional< double > v16_TransverseBarCrossSectionArea, std::optional< double > v17_LongitudinalBarSpacing, std::optional< double > v18_TransverseBarSpacing, std::optional< std::string > v19_BendingShapeCode, std::optional< std::vector< ::Ifc4x3_add2::IfcBendingParameterSelect > > v20_BendingParameters) : IfcReinforcingElementType(const std::weak_ptr&(in_memory_attribute_storage(20))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Class(),(size_t)v10_PredefinedType))); if (v11_MeshLength) {set_attribute_value(10, (*v11_MeshLength)); } if (v12_MeshWidth) {set_attribute_value(11, (*v12_MeshWidth)); } if (v13_LongitudinalBarNominalDiameter) {set_attribute_value(12, (*v13_LongitudinalBarNominalDiameter)); } if (v14_TransverseBarNominalDiameter) {set_attribute_value(13, (*v14_TransverseBarNominalDiameter)); } if (v15_LongitudinalBarCrossSectionArea) {set_attribute_value(14, (*v15_LongitudinalBarCrossSectionArea)); } if (v16_TransverseBarCrossSectionArea) {set_attribute_value(15, (*v16_TransverseBarCrossSectionArea)); } if (v17_LongitudinalBarSpacing) {set_attribute_value(16, (*v17_LongitudinalBarSpacing)); } if (v18_TransverseBarSpacing) {set_attribute_value(17, (*v18_TransverseBarSpacing)); } if (v19_BendingShapeCode) {set_attribute_value(18, (*v19_BendingShapeCode)); } if (v20_BendingParameters) {set_attribute_value(19, (*v20_BendingParameters)->generalize()); }; populate_derived(); } // Function implementations for IfcRelAdheresToElement -::Ifc4x3_add2::IfcElement* Ifc4x3_add2::IfcRelAdheresToElement::RelatingElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcElement>(true); } -void Ifc4x3_add2::IfcRelAdheresToElement::setRelatingElement(::Ifc4x3_add2::IfcElement* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -aggregate_of< ::Ifc4x3_add2::IfcSurfaceFeature >::ptr Ifc4x3_add2::IfcRelAdheresToElement::RelatedSurfaceFeatures() const { aggregate_of_instance::ptr es = get_attribute_value(5); return es->as< ::Ifc4x3_add2::IfcSurfaceFeature >(); } -void Ifc4x3_add2::IfcRelAdheresToElement::setRelatedSurfaceFeatures(aggregate_of< ::Ifc4x3_add2::IfcSurfaceFeature >::ptr v) { set_attribute_value(5, (v)->generalize());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcElement Ifc4x3_add2::IfcRelAdheresToElement::RelatingElement() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcElement>(); } +void Ifc4x3_add2::IfcRelAdheresToElement::setRelatingElement(const ::Ifc4x3_add2::IfcElement& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +std::vector< ::Ifc4x3_add2::IfcSurfaceFeature > Ifc4x3_add2::IfcRelAdheresToElement::RelatedSurfaceFeatures() const { std::vector es = get_attribute_value(5); return cast_vector<::Ifc4x3_add2::IfcSurfaceFeature>(es); } +void Ifc4x3_add2::IfcRelAdheresToElement::setRelatedSurfaceFeatures(const std::vector< ::Ifc4x3_add2::IfcSurfaceFeature >& v) { set_attribute_value(5, cast_vector(v));if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAdheresToElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[898]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAdheresToElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[898]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAdheresToElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[898]); } -Ifc4x3_add2::IfcRelAdheresToElement::IfcRelAdheresToElement(IfcEntityInstanceData&& e) : IfcRelDecomposes(std::move(e)) { } -Ifc4x3_add2::IfcRelAdheresToElement::IfcRelAdheresToElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement* v5_RelatingElement, aggregate_of< ::Ifc4x3_add2::IfcSurfaceFeature >::ptr v6_RelatedSurfaceFeatures) : IfcRelDecomposes(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingElement ? v5_RelatingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, (v6_RelatedSurfaceFeatures)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcRelAdheresToElement::IfcRelAdheresToElement(const std::weak_ptr& e) : IfcRelDecomposes(e) { } +// Ifc4x3_add2::IfcRelAdheresToElement::IfcRelAdheresToElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement v5_RelatingElement, std::vector< ::Ifc4x3_add2::IfcSurfaceFeature > v6_RelatedSurfaceFeatures) : IfcRelDecomposes(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingElement));set_attribute_value(5, (v6_RelatedSurfaceFeatures)->generalize());; populate_derived(); } // Function implementations for IfcRelAggregates -::Ifc4x3_add2::IfcObjectDefinition* Ifc4x3_add2::IfcRelAggregates::RelatingObject() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcObjectDefinition>(true); } -void Ifc4x3_add2::IfcRelAggregates::setRelatingObject(::Ifc4x3_add2::IfcObjectDefinition* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr Ifc4x3_add2::IfcRelAggregates::RelatedObjects() const { aggregate_of_instance::ptr es = get_attribute_value(5); return es->as< ::Ifc4x3_add2::IfcObjectDefinition >(); } -void Ifc4x3_add2::IfcRelAggregates::setRelatedObjects(aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v) { set_attribute_value(5, (v)->generalize());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcObjectDefinition Ifc4x3_add2::IfcRelAggregates::RelatingObject() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcObjectDefinition>(); } +void Ifc4x3_add2::IfcRelAggregates::setRelatingObject(const ::Ifc4x3_add2::IfcObjectDefinition& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +std::vector< ::Ifc4x3_add2::IfcObjectDefinition > Ifc4x3_add2::IfcRelAggregates::RelatedObjects() const { std::vector es = get_attribute_value(5); return cast_vector<::Ifc4x3_add2::IfcObjectDefinition>(es); } +void Ifc4x3_add2::IfcRelAggregates::setRelatedObjects(const std::vector< ::Ifc4x3_add2::IfcObjectDefinition >& v) { set_attribute_value(5, cast_vector(v));if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAggregates::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[899]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAggregates::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[899]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAggregates::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[899]); } -Ifc4x3_add2::IfcRelAggregates::IfcRelAggregates(IfcEntityInstanceData&& e) : IfcRelDecomposes(std::move(e)) { } -Ifc4x3_add2::IfcRelAggregates::IfcRelAggregates(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcObjectDefinition* v5_RelatingObject, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v6_RelatedObjects) : IfcRelDecomposes(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingObject ? v5_RelatingObject->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, (v6_RelatedObjects)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcRelAggregates::IfcRelAggregates(const std::weak_ptr& e) : IfcRelDecomposes(e) { } +// Ifc4x3_add2::IfcRelAggregates::IfcRelAggregates(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcObjectDefinition v5_RelatingObject, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v6_RelatedObjects) : IfcRelDecomposes(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingObject));set_attribute_value(5, (v6_RelatedObjects)->generalize());; populate_derived(); } // Function implementations for IfcRelAssigns -aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr Ifc4x3_add2::IfcRelAssigns::RelatedObjects() const { aggregate_of_instance::ptr es = get_attribute_value(4); return es->as< ::Ifc4x3_add2::IfcObjectDefinition >(); } -void Ifc4x3_add2::IfcRelAssigns::setRelatedObjects(aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v) { set_attribute_value(4, (v)->generalize());if constexpr (false)unset_attribute_value(4); } -boost::optional< bool > Ifc4x3_add2::IfcRelAssigns::RelatedObjectsType() const { if(get_attribute_value(5).isNull()) { return boost::none; } bool v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcRelAssigns::setRelatedObjectsType(boost::optional< bool > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::vector< ::Ifc4x3_add2::IfcObjectDefinition > Ifc4x3_add2::IfcRelAssigns::RelatedObjects() const { std::vector es = get_attribute_value(4); return cast_vector<::Ifc4x3_add2::IfcObjectDefinition>(es); } +void Ifc4x3_add2::IfcRelAssigns::setRelatedObjects(const std::vector< ::Ifc4x3_add2::IfcObjectDefinition >& v) { set_attribute_value(4, cast_vector(v));if constexpr (false)unset_attribute_value(4); } +std::optional< bool > Ifc4x3_add2::IfcRelAssigns::RelatedObjectsType() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } bool v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcRelAssigns::setRelatedObjectsType(const std::optional< bool >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssigns::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[900]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssigns::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[900]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssigns::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[900]); } -Ifc4x3_add2::IfcRelAssigns::IfcRelAssigns(IfcEntityInstanceData&& e) : IfcRelationship(std::move(e)) { } -Ifc4x3_add2::IfcRelAssigns::IfcRelAssigns(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType) : IfcRelationship(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }; populate_derived(); } +// Ifc4x3_add2::IfcRelAssigns::IfcRelAssigns(const std::weak_ptr& e) : IfcRelationship(e) { } +// Ifc4x3_add2::IfcRelAssigns::IfcRelAssigns(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType) : IfcRelationship(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }; populate_derived(); } // Function implementations for IfcRelAssignsToActor -::Ifc4x3_add2::IfcActor* Ifc4x3_add2::IfcRelAssignsToActor::RelatingActor() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcActor>(true); } -void Ifc4x3_add2::IfcRelAssignsToActor::setRelatingActor(::Ifc4x3_add2::IfcActor* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } -::Ifc4x3_add2::IfcActorRole* Ifc4x3_add2::IfcRelAssignsToActor::ActingRole() const { if(get_attribute_value(7).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(7)))->as<::Ifc4x3_add2::IfcActorRole>(true); } -void Ifc4x3_add2::IfcRelAssignsToActor::setActingRole(::Ifc4x3_add2::IfcActorRole* v) { set_attribute_value(7, v->as());if constexpr (false)unset_attribute_value(7); } +::Ifc4x3_add2::IfcActor Ifc4x3_add2::IfcRelAssignsToActor::RelatingActor() const { return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcActor>(); } +void Ifc4x3_add2::IfcRelAssignsToActor::setRelatingActor(const ::Ifc4x3_add2::IfcActor& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcActorRole Ifc4x3_add2::IfcRelAssignsToActor::ActingRole() const { if(get_attribute_value(7).isNull()) { return ::Ifc4x3_add2::IfcActorRole{}; } return ((express::Base)(get_attribute_value(7))).as<::Ifc4x3_add2::IfcActorRole>(); } +void Ifc4x3_add2::IfcRelAssignsToActor::setActingRole(const ::Ifc4x3_add2::IfcActorRole& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToActor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[901]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToActor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[901]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToActor::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[901]); } -Ifc4x3_add2::IfcRelAssignsToActor::IfcRelAssignsToActor(IfcEntityInstanceData&& e) : IfcRelAssigns(std::move(e)) { } -Ifc4x3_add2::IfcRelAssignsToActor::IfcRelAssignsToActor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcActor* v7_RelatingActor, ::Ifc4x3_add2::IfcActorRole* v8_ActingRole) : IfcRelAssigns(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }set_attribute_value(6, v7_RelatingActor ? v7_RelatingActor->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_ActingRole ? v8_ActingRole->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelAssignsToActor::IfcRelAssignsToActor(const std::weak_ptr& e) : IfcRelAssigns(e) { } +// Ifc4x3_add2::IfcRelAssignsToActor::IfcRelAssignsToActor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcActor v7_RelatingActor, ::Ifc4x3_add2::IfcActorRole v8_ActingRole) : IfcRelAssigns(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }set_attribute_value(6, (v7_RelatingActor)); if (v8_ActingRole) {set_attribute_value(7, (*v8_ActingRole)); }; populate_derived(); } // Function implementations for IfcRelAssignsToControl -::Ifc4x3_add2::IfcControl* Ifc4x3_add2::IfcRelAssignsToControl::RelatingControl() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcControl>(true); } -void Ifc4x3_add2::IfcRelAssignsToControl::setRelatingControl(::Ifc4x3_add2::IfcControl* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcControl Ifc4x3_add2::IfcRelAssignsToControl::RelatingControl() const { return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcControl>(); } +void Ifc4x3_add2::IfcRelAssignsToControl::setRelatingControl(const ::Ifc4x3_add2::IfcControl& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToControl::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[902]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToControl::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[902]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToControl::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[902]); } -Ifc4x3_add2::IfcRelAssignsToControl::IfcRelAssignsToControl(IfcEntityInstanceData&& e) : IfcRelAssigns(std::move(e)) { } -Ifc4x3_add2::IfcRelAssignsToControl::IfcRelAssignsToControl(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcControl* v7_RelatingControl) : IfcRelAssigns(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }set_attribute_value(6, v7_RelatingControl ? v7_RelatingControl->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelAssignsToControl::IfcRelAssignsToControl(const std::weak_ptr& e) : IfcRelAssigns(e) { } +// Ifc4x3_add2::IfcRelAssignsToControl::IfcRelAssignsToControl(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcControl v7_RelatingControl) : IfcRelAssigns(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }set_attribute_value(6, (v7_RelatingControl));; populate_derived(); } // Function implementations for IfcRelAssignsToGroup -::Ifc4x3_add2::IfcGroup* Ifc4x3_add2::IfcRelAssignsToGroup::RelatingGroup() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcGroup>(true); } -void Ifc4x3_add2::IfcRelAssignsToGroup::setRelatingGroup(::Ifc4x3_add2::IfcGroup* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcGroup Ifc4x3_add2::IfcRelAssignsToGroup::RelatingGroup() const { return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcGroup>(); } +void Ifc4x3_add2::IfcRelAssignsToGroup::setRelatingGroup(const ::Ifc4x3_add2::IfcGroup& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToGroup::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[903]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToGroup::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[903]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToGroup::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[903]); } -Ifc4x3_add2::IfcRelAssignsToGroup::IfcRelAssignsToGroup(IfcEntityInstanceData&& e) : IfcRelAssigns(std::move(e)) { } -Ifc4x3_add2::IfcRelAssignsToGroup::IfcRelAssignsToGroup(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcGroup* v7_RelatingGroup) : IfcRelAssigns(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }set_attribute_value(6, v7_RelatingGroup ? v7_RelatingGroup->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelAssignsToGroup::IfcRelAssignsToGroup(const std::weak_ptr& e) : IfcRelAssigns(e) { } +// Ifc4x3_add2::IfcRelAssignsToGroup::IfcRelAssignsToGroup(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcGroup v7_RelatingGroup) : IfcRelAssigns(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }set_attribute_value(6, (v7_RelatingGroup));; populate_derived(); } // Function implementations for IfcRelAssignsToGroupByFactor double Ifc4x3_add2::IfcRelAssignsToGroupByFactor::Factor() const { double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcRelAssignsToGroupByFactor::setFactor(double v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } +void Ifc4x3_add2::IfcRelAssignsToGroupByFactor::setFactor(const double& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToGroupByFactor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[904]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToGroupByFactor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[904]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToGroupByFactor::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[904]); } -Ifc4x3_add2::IfcRelAssignsToGroupByFactor::IfcRelAssignsToGroupByFactor(IfcEntityInstanceData&& e) : IfcRelAssignsToGroup(std::move(e)) { } -Ifc4x3_add2::IfcRelAssignsToGroupByFactor::IfcRelAssignsToGroupByFactor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcGroup* v7_RelatingGroup, double v8_Factor) : IfcRelAssignsToGroup(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }set_attribute_value(6, v7_RelatingGroup ? v7_RelatingGroup->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, (v8_Factor));; populate_derived(); } +// Ifc4x3_add2::IfcRelAssignsToGroupByFactor::IfcRelAssignsToGroupByFactor(const std::weak_ptr& e) : IfcRelAssignsToGroup(e) { } +// Ifc4x3_add2::IfcRelAssignsToGroupByFactor::IfcRelAssignsToGroupByFactor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcGroup v7_RelatingGroup, double v8_Factor) : IfcRelAssignsToGroup(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }set_attribute_value(6, (v7_RelatingGroup));set_attribute_value(7, (v8_Factor));; populate_derived(); } // Function implementations for IfcRelAssignsToProcess -::Ifc4x3_add2::IfcProcessSelect* Ifc4x3_add2::IfcRelAssignsToProcess::RelatingProcess() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcProcessSelect>(true); } -void Ifc4x3_add2::IfcRelAssignsToProcess::setRelatingProcess(::Ifc4x3_add2::IfcProcessSelect* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } -::Ifc4x3_add2::IfcMeasureWithUnit* Ifc4x3_add2::IfcRelAssignsToProcess::QuantityInProcess() const { if(get_attribute_value(7).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(7)))->as<::Ifc4x3_add2::IfcMeasureWithUnit>(true); } -void Ifc4x3_add2::IfcRelAssignsToProcess::setQuantityInProcess(::Ifc4x3_add2::IfcMeasureWithUnit* v) { set_attribute_value(7, v->as());if constexpr (false)unset_attribute_value(7); } +::Ifc4x3_add2::IfcProcessSelect Ifc4x3_add2::IfcRelAssignsToProcess::RelatingProcess() const { return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcProcessSelect>(); } +void Ifc4x3_add2::IfcRelAssignsToProcess::setRelatingProcess(const ::Ifc4x3_add2::IfcProcessSelect& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcMeasureWithUnit Ifc4x3_add2::IfcRelAssignsToProcess::QuantityInProcess() const { if(get_attribute_value(7).isNull()) { return ::Ifc4x3_add2::IfcMeasureWithUnit{}; } return ((express::Base)(get_attribute_value(7))).as<::Ifc4x3_add2::IfcMeasureWithUnit>(); } +void Ifc4x3_add2::IfcRelAssignsToProcess::setQuantityInProcess(const ::Ifc4x3_add2::IfcMeasureWithUnit& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToProcess::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[905]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToProcess::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[905]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToProcess::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[905]); } -Ifc4x3_add2::IfcRelAssignsToProcess::IfcRelAssignsToProcess(IfcEntityInstanceData&& e) : IfcRelAssigns(std::move(e)) { } -Ifc4x3_add2::IfcRelAssignsToProcess::IfcRelAssignsToProcess(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcProcessSelect* v7_RelatingProcess, ::Ifc4x3_add2::IfcMeasureWithUnit* v8_QuantityInProcess) : IfcRelAssigns(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }set_attribute_value(6, v7_RelatingProcess ? v7_RelatingProcess->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_QuantityInProcess ? v8_QuantityInProcess->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelAssignsToProcess::IfcRelAssignsToProcess(const std::weak_ptr& e) : IfcRelAssigns(e) { } +// Ifc4x3_add2::IfcRelAssignsToProcess::IfcRelAssignsToProcess(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcProcessSelect v7_RelatingProcess, ::Ifc4x3_add2::IfcMeasureWithUnit v8_QuantityInProcess) : IfcRelAssigns(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }set_attribute_value(6, (v7_RelatingProcess)); if (v8_QuantityInProcess) {set_attribute_value(7, (*v8_QuantityInProcess)); }; populate_derived(); } // Function implementations for IfcRelAssignsToProduct -::Ifc4x3_add2::IfcProductSelect* Ifc4x3_add2::IfcRelAssignsToProduct::RelatingProduct() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcProductSelect>(true); } -void Ifc4x3_add2::IfcRelAssignsToProduct::setRelatingProduct(::Ifc4x3_add2::IfcProductSelect* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcProductSelect Ifc4x3_add2::IfcRelAssignsToProduct::RelatingProduct() const { return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcProductSelect>(); } +void Ifc4x3_add2::IfcRelAssignsToProduct::setRelatingProduct(const ::Ifc4x3_add2::IfcProductSelect& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToProduct::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[906]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToProduct::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[906]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToProduct::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[906]); } -Ifc4x3_add2::IfcRelAssignsToProduct::IfcRelAssignsToProduct(IfcEntityInstanceData&& e) : IfcRelAssigns(std::move(e)) { } -Ifc4x3_add2::IfcRelAssignsToProduct::IfcRelAssignsToProduct(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcProductSelect* v7_RelatingProduct) : IfcRelAssigns(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }set_attribute_value(6, v7_RelatingProduct ? v7_RelatingProduct->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelAssignsToProduct::IfcRelAssignsToProduct(const std::weak_ptr& e) : IfcRelAssigns(e) { } +// Ifc4x3_add2::IfcRelAssignsToProduct::IfcRelAssignsToProduct(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcProductSelect v7_RelatingProduct) : IfcRelAssigns(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }set_attribute_value(6, (v7_RelatingProduct));; populate_derived(); } // Function implementations for IfcRelAssignsToResource -::Ifc4x3_add2::IfcResourceSelect* Ifc4x3_add2::IfcRelAssignsToResource::RelatingResource() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcResourceSelect>(true); } -void Ifc4x3_add2::IfcRelAssignsToResource::setRelatingResource(::Ifc4x3_add2::IfcResourceSelect* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcResourceSelect Ifc4x3_add2::IfcRelAssignsToResource::RelatingResource() const { return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcResourceSelect>(); } +void Ifc4x3_add2::IfcRelAssignsToResource::setRelatingResource(const ::Ifc4x3_add2::IfcResourceSelect& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[907]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[907]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssignsToResource::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[907]); } -Ifc4x3_add2::IfcRelAssignsToResource::IfcRelAssignsToResource(IfcEntityInstanceData&& e) : IfcRelAssigns(std::move(e)) { } -Ifc4x3_add2::IfcRelAssignsToResource::IfcRelAssignsToResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcResourceSelect* v7_RelatingResource) : IfcRelAssigns(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }set_attribute_value(6, v7_RelatingResource ? v7_RelatingResource->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelAssignsToResource::IfcRelAssignsToResource(const std::weak_ptr& e) : IfcRelAssigns(e) { } +// Ifc4x3_add2::IfcRelAssignsToResource::IfcRelAssignsToResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcResourceSelect v7_RelatingResource) : IfcRelAssigns(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) {set_attribute_value(5, (*v6_RelatedObjectsType)); }set_attribute_value(6, (v7_RelatingResource));; populate_derived(); } // Function implementations for IfcRelAssociates -aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr Ifc4x3_add2::IfcRelAssociates::RelatedObjects() const { aggregate_of_instance::ptr es = get_attribute_value(4); return es->as< ::Ifc4x3_add2::IfcDefinitionSelect >(); } -void Ifc4x3_add2::IfcRelAssociates::setRelatedObjects(aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v) { set_attribute_value(4, (v)->generalize());if constexpr (false)unset_attribute_value(4); } +std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > Ifc4x3_add2::IfcRelAssociates::RelatedObjects() const { std::vector es = get_attribute_value(4); return cast_vector<::Ifc4x3_add2::IfcDefinitionSelect>(es); } +void Ifc4x3_add2::IfcRelAssociates::setRelatedObjects(const std::vector< ::Ifc4x3_add2::IfcDefinitionSelect >& v) { set_attribute_value(4, cast_vector(v));if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssociates::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[908]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssociates::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[908]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssociates::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[908]); } -Ifc4x3_add2::IfcRelAssociates::IfcRelAssociates(IfcEntityInstanceData&& e) : IfcRelationship(std::move(e)) { } -Ifc4x3_add2::IfcRelAssociates::IfcRelAssociates(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects) : IfcRelationship(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcRelAssociates::IfcRelAssociates(const std::weak_ptr& e) : IfcRelationship(e) { } +// Ifc4x3_add2::IfcRelAssociates::IfcRelAssociates(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects) : IfcRelationship(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());; populate_derived(); } // Function implementations for IfcRelAssociatesApproval -::Ifc4x3_add2::IfcApproval* Ifc4x3_add2::IfcRelAssociatesApproval::RelatingApproval() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcApproval>(true); } -void Ifc4x3_add2::IfcRelAssociatesApproval::setRelatingApproval(::Ifc4x3_add2::IfcApproval* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcApproval Ifc4x3_add2::IfcRelAssociatesApproval::RelatingApproval() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcApproval>(); } +void Ifc4x3_add2::IfcRelAssociatesApproval::setRelatingApproval(const ::Ifc4x3_add2::IfcApproval& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesApproval::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[909]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesApproval::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[909]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesApproval::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[909]); } -Ifc4x3_add2::IfcRelAssociatesApproval::IfcRelAssociatesApproval(IfcEntityInstanceData&& e) : IfcRelAssociates(std::move(e)) { } -Ifc4x3_add2::IfcRelAssociatesApproval::IfcRelAssociatesApproval(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcApproval* v6_RelatingApproval) : IfcRelAssociates(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, v6_RelatingApproval ? v6_RelatingApproval->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelAssociatesApproval::IfcRelAssociatesApproval(const std::weak_ptr& e) : IfcRelAssociates(e) { } +// Ifc4x3_add2::IfcRelAssociatesApproval::IfcRelAssociatesApproval(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects, ::Ifc4x3_add2::IfcApproval v6_RelatingApproval) : IfcRelAssociates(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, (v6_RelatingApproval));; populate_derived(); } // Function implementations for IfcRelAssociatesClassification -::Ifc4x3_add2::IfcClassificationSelect* Ifc4x3_add2::IfcRelAssociatesClassification::RelatingClassification() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcClassificationSelect>(true); } -void Ifc4x3_add2::IfcRelAssociatesClassification::setRelatingClassification(::Ifc4x3_add2::IfcClassificationSelect* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcClassificationSelect Ifc4x3_add2::IfcRelAssociatesClassification::RelatingClassification() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcClassificationSelect>(); } +void Ifc4x3_add2::IfcRelAssociatesClassification::setRelatingClassification(const ::Ifc4x3_add2::IfcClassificationSelect& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesClassification::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[910]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesClassification::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[910]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesClassification::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[910]); } -Ifc4x3_add2::IfcRelAssociatesClassification::IfcRelAssociatesClassification(IfcEntityInstanceData&& e) : IfcRelAssociates(std::move(e)) { } -Ifc4x3_add2::IfcRelAssociatesClassification::IfcRelAssociatesClassification(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcClassificationSelect* v6_RelatingClassification) : IfcRelAssociates(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, v6_RelatingClassification ? v6_RelatingClassification->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelAssociatesClassification::IfcRelAssociatesClassification(const std::weak_ptr& e) : IfcRelAssociates(e) { } +// Ifc4x3_add2::IfcRelAssociatesClassification::IfcRelAssociatesClassification(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects, ::Ifc4x3_add2::IfcClassificationSelect v6_RelatingClassification) : IfcRelAssociates(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, (v6_RelatingClassification));; populate_derived(); } // Function implementations for IfcRelAssociatesConstraint -boost::optional< std::string > Ifc4x3_add2::IfcRelAssociatesConstraint::Intent() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -::Ifc4x3_add2::IfcConstraint* Ifc4x3_add2::IfcRelAssociatesConstraint::RelatingConstraint() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcConstraint>(true); } -void Ifc4x3_add2::IfcRelAssociatesConstraint::setRelatingConstraint(::Ifc4x3_add2::IfcConstraint* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +std::optional< std::string > Ifc4x3_add2::IfcRelAssociatesConstraint::Intent() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcRelAssociatesConstraint::setIntent(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +::Ifc4x3_add2::IfcConstraint Ifc4x3_add2::IfcRelAssociatesConstraint::RelatingConstraint() const { return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcConstraint>(); } +void Ifc4x3_add2::IfcRelAssociatesConstraint::setRelatingConstraint(const ::Ifc4x3_add2::IfcConstraint& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesConstraint::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[911]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesConstraint::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[911]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesConstraint::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[911]); } -Ifc4x3_add2::IfcRelAssociatesConstraint::IfcRelAssociatesConstraint(IfcEntityInstanceData&& e) : IfcRelAssociates(std::move(e)) { } -Ifc4x3_add2::IfcRelAssociatesConstraint::IfcRelAssociatesConstraint(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects, boost::optional< std::string > v6_Intent, ::Ifc4x3_add2::IfcConstraint* v7_RelatingConstraint) : IfcRelAssociates(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_Intent) {set_attribute_value(5, (*v6_Intent)); }set_attribute_value(6, v7_RelatingConstraint ? v7_RelatingConstraint->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelAssociatesConstraint::IfcRelAssociatesConstraint(const std::weak_ptr& e) : IfcRelAssociates(e) { } +// Ifc4x3_add2::IfcRelAssociatesConstraint::IfcRelAssociatesConstraint(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects, std::optional< std::string > v6_Intent, ::Ifc4x3_add2::IfcConstraint v7_RelatingConstraint) : IfcRelAssociates(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize()); if (v6_Intent) {set_attribute_value(5, (*v6_Intent)); }set_attribute_value(6, (v7_RelatingConstraint));; populate_derived(); } // Function implementations for IfcRelAssociatesDocument -::Ifc4x3_add2::IfcDocumentSelect* Ifc4x3_add2::IfcRelAssociatesDocument::RelatingDocument() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcDocumentSelect>(true); } -void Ifc4x3_add2::IfcRelAssociatesDocument::setRelatingDocument(::Ifc4x3_add2::IfcDocumentSelect* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcDocumentSelect Ifc4x3_add2::IfcRelAssociatesDocument::RelatingDocument() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcDocumentSelect>(); } +void Ifc4x3_add2::IfcRelAssociatesDocument::setRelatingDocument(const ::Ifc4x3_add2::IfcDocumentSelect& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesDocument::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[912]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesDocument::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[912]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesDocument::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[912]); } -Ifc4x3_add2::IfcRelAssociatesDocument::IfcRelAssociatesDocument(IfcEntityInstanceData&& e) : IfcRelAssociates(std::move(e)) { } -Ifc4x3_add2::IfcRelAssociatesDocument::IfcRelAssociatesDocument(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcDocumentSelect* v6_RelatingDocument) : IfcRelAssociates(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, v6_RelatingDocument ? v6_RelatingDocument->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelAssociatesDocument::IfcRelAssociatesDocument(const std::weak_ptr& e) : IfcRelAssociates(e) { } +// Ifc4x3_add2::IfcRelAssociatesDocument::IfcRelAssociatesDocument(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects, ::Ifc4x3_add2::IfcDocumentSelect v6_RelatingDocument) : IfcRelAssociates(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, (v6_RelatingDocument));; populate_derived(); } // Function implementations for IfcRelAssociatesLibrary -::Ifc4x3_add2::IfcLibrarySelect* Ifc4x3_add2::IfcRelAssociatesLibrary::RelatingLibrary() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcLibrarySelect>(true); } -void Ifc4x3_add2::IfcRelAssociatesLibrary::setRelatingLibrary(::Ifc4x3_add2::IfcLibrarySelect* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcLibrarySelect Ifc4x3_add2::IfcRelAssociatesLibrary::RelatingLibrary() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcLibrarySelect>(); } +void Ifc4x3_add2::IfcRelAssociatesLibrary::setRelatingLibrary(const ::Ifc4x3_add2::IfcLibrarySelect& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesLibrary::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[913]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesLibrary::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[913]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesLibrary::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[913]); } -Ifc4x3_add2::IfcRelAssociatesLibrary::IfcRelAssociatesLibrary(IfcEntityInstanceData&& e) : IfcRelAssociates(std::move(e)) { } -Ifc4x3_add2::IfcRelAssociatesLibrary::IfcRelAssociatesLibrary(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcLibrarySelect* v6_RelatingLibrary) : IfcRelAssociates(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, v6_RelatingLibrary ? v6_RelatingLibrary->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelAssociatesLibrary::IfcRelAssociatesLibrary(const std::weak_ptr& e) : IfcRelAssociates(e) { } +// Ifc4x3_add2::IfcRelAssociatesLibrary::IfcRelAssociatesLibrary(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects, ::Ifc4x3_add2::IfcLibrarySelect v6_RelatingLibrary) : IfcRelAssociates(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, (v6_RelatingLibrary));; populate_derived(); } // Function implementations for IfcRelAssociatesMaterial -::Ifc4x3_add2::IfcMaterialSelect* Ifc4x3_add2::IfcRelAssociatesMaterial::RelatingMaterial() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcMaterialSelect>(true); } -void Ifc4x3_add2::IfcRelAssociatesMaterial::setRelatingMaterial(::Ifc4x3_add2::IfcMaterialSelect* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcMaterialSelect Ifc4x3_add2::IfcRelAssociatesMaterial::RelatingMaterial() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcMaterialSelect>(); } +void Ifc4x3_add2::IfcRelAssociatesMaterial::setRelatingMaterial(const ::Ifc4x3_add2::IfcMaterialSelect& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesMaterial::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[914]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesMaterial::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[914]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesMaterial::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[914]); } -Ifc4x3_add2::IfcRelAssociatesMaterial::IfcRelAssociatesMaterial(IfcEntityInstanceData&& e) : IfcRelAssociates(std::move(e)) { } -Ifc4x3_add2::IfcRelAssociatesMaterial::IfcRelAssociatesMaterial(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcMaterialSelect* v6_RelatingMaterial) : IfcRelAssociates(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, v6_RelatingMaterial ? v6_RelatingMaterial->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelAssociatesMaterial::IfcRelAssociatesMaterial(const std::weak_ptr& e) : IfcRelAssociates(e) { } +// Ifc4x3_add2::IfcRelAssociatesMaterial::IfcRelAssociatesMaterial(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects, ::Ifc4x3_add2::IfcMaterialSelect v6_RelatingMaterial) : IfcRelAssociates(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, (v6_RelatingMaterial));; populate_derived(); } // Function implementations for IfcRelAssociatesProfileDef -::Ifc4x3_add2::IfcProfileDef* Ifc4x3_add2::IfcRelAssociatesProfileDef::RelatingProfileDef() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcProfileDef>(true); } -void Ifc4x3_add2::IfcRelAssociatesProfileDef::setRelatingProfileDef(::Ifc4x3_add2::IfcProfileDef* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcProfileDef Ifc4x3_add2::IfcRelAssociatesProfileDef::RelatingProfileDef() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcProfileDef>(); } +void Ifc4x3_add2::IfcRelAssociatesProfileDef::setRelatingProfileDef(const ::Ifc4x3_add2::IfcProfileDef& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[915]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[915]); } const IfcParse::entity& Ifc4x3_add2::IfcRelAssociatesProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[915]); } -Ifc4x3_add2::IfcRelAssociatesProfileDef::IfcRelAssociatesProfileDef(IfcEntityInstanceData&& e) : IfcRelAssociates(std::move(e)) { } -Ifc4x3_add2::IfcRelAssociatesProfileDef::IfcRelAssociatesProfileDef(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcProfileDef* v6_RelatingProfileDef) : IfcRelAssociates(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, v6_RelatingProfileDef ? v6_RelatingProfileDef->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelAssociatesProfileDef::IfcRelAssociatesProfileDef(const std::weak_ptr& e) : IfcRelAssociates(e) { } +// Ifc4x3_add2::IfcRelAssociatesProfileDef::IfcRelAssociatesProfileDef(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects, ::Ifc4x3_add2::IfcProfileDef v6_RelatingProfileDef) : IfcRelAssociates(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, (v6_RelatingProfileDef));; populate_derived(); } // Function implementations for IfcRelConnects -const IfcParse::entity& Ifc4x3_add2::IfcRelConnects::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[917]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelConnects::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[917]); } const IfcParse::entity& Ifc4x3_add2::IfcRelConnects::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[917]); } -Ifc4x3_add2::IfcRelConnects::IfcRelConnects(IfcEntityInstanceData&& e) : IfcRelationship(std::move(e)) { } -Ifc4x3_add2::IfcRelConnects::IfcRelConnects(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRelationship(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcRelConnects::IfcRelConnects(const std::weak_ptr& e) : IfcRelationship(e) { } +// Ifc4x3_add2::IfcRelConnects::IfcRelConnects(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description) : IfcRelationship(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } // Function implementations for IfcRelConnectsElements -::Ifc4x3_add2::IfcConnectionGeometry* Ifc4x3_add2::IfcRelConnectsElements::ConnectionGeometry() const { if(get_attribute_value(4).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcConnectionGeometry>(true); } -void Ifc4x3_add2::IfcRelConnectsElements::setConnectionGeometry(::Ifc4x3_add2::IfcConnectionGeometry* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcElement* Ifc4x3_add2::IfcRelConnectsElements::RelatingElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcElement>(true); } -void Ifc4x3_add2::IfcRelConnectsElements::setRelatingElement(::Ifc4x3_add2::IfcElement* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcElement* Ifc4x3_add2::IfcRelConnectsElements::RelatedElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcElement>(true); } -void Ifc4x3_add2::IfcRelConnectsElements::setRelatedElement(::Ifc4x3_add2::IfcElement* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcConnectionGeometry Ifc4x3_add2::IfcRelConnectsElements::ConnectionGeometry() const { if(get_attribute_value(4).isNull()) { return ::Ifc4x3_add2::IfcConnectionGeometry{}; } return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcConnectionGeometry>(); } +void Ifc4x3_add2::IfcRelConnectsElements::setConnectionGeometry(const ::Ifc4x3_add2::IfcConnectionGeometry& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcElement Ifc4x3_add2::IfcRelConnectsElements::RelatingElement() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcElement>(); } +void Ifc4x3_add2::IfcRelConnectsElements::setRelatingElement(const ::Ifc4x3_add2::IfcElement& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcElement Ifc4x3_add2::IfcRelConnectsElements::RelatedElement() const { return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcElement>(); } +void Ifc4x3_add2::IfcRelConnectsElements::setRelatedElement(const ::Ifc4x3_add2::IfcElement& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsElements::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[918]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsElements::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[918]); } const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsElements::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[918]); } -Ifc4x3_add2::IfcRelConnectsElements::IfcRelConnectsElements(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelConnectsElements::IfcRelConnectsElements(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc4x3_add2::IfcElement* v6_RelatingElement, ::Ifc4x3_add2::IfcElement* v7_RelatedElement) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_ConnectionGeometry ? v5_ConnectionGeometry->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatingElement ? v6_RelatingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_RelatedElement ? v7_RelatedElement->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelConnectsElements::IfcRelConnectsElements(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelConnectsElements::IfcRelConnectsElements(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcConnectionGeometry v5_ConnectionGeometry, ::Ifc4x3_add2::IfcElement v6_RelatingElement, ::Ifc4x3_add2::IfcElement v7_RelatedElement) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ConnectionGeometry) {set_attribute_value(4, (*v5_ConnectionGeometry)); }set_attribute_value(5, (v6_RelatingElement));set_attribute_value(6, (v7_RelatedElement));; populate_derived(); } // Function implementations for IfcRelConnectsPathElements std::vector< int > /*[0:?]*/ Ifc4x3_add2::IfcRelConnectsPathElements::RelatingPriorities() const { std::vector< int > /*[0:?]*/ v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcRelConnectsPathElements::setRelatingPriorities(std::vector< int > /*[0:?]*/ v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } +void Ifc4x3_add2::IfcRelConnectsPathElements::setRelatingPriorities(const std::vector< int > /*[0:?]*/& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } std::vector< int > /*[0:?]*/ Ifc4x3_add2::IfcRelConnectsPathElements::RelatedPriorities() const { std::vector< int > /*[0:?]*/ v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcRelConnectsPathElements::setRelatedPriorities(std::vector< int > /*[0:?]*/ v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcRelConnectsPathElements::setRelatedPriorities(const std::vector< int > /*[0:?]*/& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } ::Ifc4x3_add2::IfcConnectionTypeEnum::Value Ifc4x3_add2::IfcRelConnectsPathElements::RelatedConnectionType() const { return ::Ifc4x3_add2::IfcConnectionTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcRelConnectsPathElements::setRelatedConnectionType(::Ifc4x3_add2::IfcConnectionTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcConnectionTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcRelConnectsPathElements::setRelatedConnectionType(const ::Ifc4x3_add2::IfcConnectionTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcConnectionTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } ::Ifc4x3_add2::IfcConnectionTypeEnum::Value Ifc4x3_add2::IfcRelConnectsPathElements::RelatingConnectionType() const { return ::Ifc4x3_add2::IfcConnectionTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcRelConnectsPathElements::setRelatingConnectionType(::Ifc4x3_add2::IfcConnectionTypeEnum::Value v) { set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcConnectionTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(10); } +void Ifc4x3_add2::IfcRelConnectsPathElements::setRelatingConnectionType(const ::Ifc4x3_add2::IfcConnectionTypeEnum::Value& v) { set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcConnectionTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(10); } -const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsPathElements::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[919]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsPathElements::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[919]); } const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsPathElements::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[919]); } -Ifc4x3_add2::IfcRelConnectsPathElements::IfcRelConnectsPathElements(IfcEntityInstanceData&& e) : IfcRelConnectsElements(std::move(e)) { } -Ifc4x3_add2::IfcRelConnectsPathElements::IfcRelConnectsPathElements(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc4x3_add2::IfcElement* v6_RelatingElement, ::Ifc4x3_add2::IfcElement* v7_RelatedElement, std::vector< int > /*[0:?]*/ v8_RelatingPriorities, std::vector< int > /*[0:?]*/ v9_RelatedPriorities, ::Ifc4x3_add2::IfcConnectionTypeEnum::Value v10_RelatedConnectionType, ::Ifc4x3_add2::IfcConnectionTypeEnum::Value v11_RelatingConnectionType) : IfcRelConnectsElements(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_ConnectionGeometry ? v5_ConnectionGeometry->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatingElement ? v6_RelatingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_RelatedElement ? v7_RelatedElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, (v8_RelatingPriorities));set_attribute_value(8, (v9_RelatedPriorities));set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcConnectionTypeEnum::Class(),(size_t)v10_RelatedConnectionType)));set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcConnectionTypeEnum::Class(),(size_t)v11_RelatingConnectionType)));; populate_derived(); } +// Ifc4x3_add2::IfcRelConnectsPathElements::IfcRelConnectsPathElements(const std::weak_ptr& e) : IfcRelConnectsElements(e) { } +// Ifc4x3_add2::IfcRelConnectsPathElements::IfcRelConnectsPathElements(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcConnectionGeometry v5_ConnectionGeometry, ::Ifc4x3_add2::IfcElement v6_RelatingElement, ::Ifc4x3_add2::IfcElement v7_RelatedElement, std::vector< int > /*[0:?]*/ v8_RelatingPriorities, std::vector< int > /*[0:?]*/ v9_RelatedPriorities, ::Ifc4x3_add2::IfcConnectionTypeEnum::Value v10_RelatedConnectionType, ::Ifc4x3_add2::IfcConnectionTypeEnum::Value v11_RelatingConnectionType) : IfcRelConnectsElements(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ConnectionGeometry) {set_attribute_value(4, (*v5_ConnectionGeometry)); }set_attribute_value(5, (v6_RelatingElement));set_attribute_value(6, (v7_RelatedElement));set_attribute_value(7, (v8_RelatingPriorities));set_attribute_value(8, (v9_RelatedPriorities));set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcConnectionTypeEnum::Class(),(size_t)v10_RelatedConnectionType)));set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcConnectionTypeEnum::Class(),(size_t)v11_RelatingConnectionType)));; populate_derived(); } // Function implementations for IfcRelConnectsPortToElement -::Ifc4x3_add2::IfcPort* Ifc4x3_add2::IfcRelConnectsPortToElement::RelatingPort() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcPort>(true); } -void Ifc4x3_add2::IfcRelConnectsPortToElement::setRelatingPort(::Ifc4x3_add2::IfcPort* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcDistributionElement* Ifc4x3_add2::IfcRelConnectsPortToElement::RelatedElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcDistributionElement>(true); } -void Ifc4x3_add2::IfcRelConnectsPortToElement::setRelatedElement(::Ifc4x3_add2::IfcDistributionElement* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcPort Ifc4x3_add2::IfcRelConnectsPortToElement::RelatingPort() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcPort>(); } +void Ifc4x3_add2::IfcRelConnectsPortToElement::setRelatingPort(const ::Ifc4x3_add2::IfcPort& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcDistributionElement Ifc4x3_add2::IfcRelConnectsPortToElement::RelatedElement() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcDistributionElement>(); } +void Ifc4x3_add2::IfcRelConnectsPortToElement::setRelatedElement(const ::Ifc4x3_add2::IfcDistributionElement& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsPortToElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[921]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsPortToElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[921]); } const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsPortToElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[921]); } -Ifc4x3_add2::IfcRelConnectsPortToElement::IfcRelConnectsPortToElement(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelConnectsPortToElement::IfcRelConnectsPortToElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPort* v5_RelatingPort, ::Ifc4x3_add2::IfcDistributionElement* v6_RelatedElement) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingPort ? v5_RelatingPort->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatedElement ? v6_RelatedElement->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelConnectsPortToElement::IfcRelConnectsPortToElement(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelConnectsPortToElement::IfcRelConnectsPortToElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPort v5_RelatingPort, ::Ifc4x3_add2::IfcDistributionElement v6_RelatedElement) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingPort));set_attribute_value(5, (v6_RelatedElement));; populate_derived(); } // Function implementations for IfcRelConnectsPorts -::Ifc4x3_add2::IfcPort* Ifc4x3_add2::IfcRelConnectsPorts::RelatingPort() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcPort>(true); } -void Ifc4x3_add2::IfcRelConnectsPorts::setRelatingPort(::Ifc4x3_add2::IfcPort* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcPort* Ifc4x3_add2::IfcRelConnectsPorts::RelatedPort() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcPort>(true); } -void Ifc4x3_add2::IfcRelConnectsPorts::setRelatedPort(::Ifc4x3_add2::IfcPort* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcElement* Ifc4x3_add2::IfcRelConnectsPorts::RealizingElement() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcElement>(true); } -void Ifc4x3_add2::IfcRelConnectsPorts::setRealizingElement(::Ifc4x3_add2::IfcElement* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcPort Ifc4x3_add2::IfcRelConnectsPorts::RelatingPort() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcPort>(); } +void Ifc4x3_add2::IfcRelConnectsPorts::setRelatingPort(const ::Ifc4x3_add2::IfcPort& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcPort Ifc4x3_add2::IfcRelConnectsPorts::RelatedPort() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcPort>(); } +void Ifc4x3_add2::IfcRelConnectsPorts::setRelatedPort(const ::Ifc4x3_add2::IfcPort& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcElement Ifc4x3_add2::IfcRelConnectsPorts::RealizingElement() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcElement{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcElement>(); } +void Ifc4x3_add2::IfcRelConnectsPorts::setRealizingElement(const ::Ifc4x3_add2::IfcElement& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsPorts::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[920]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsPorts::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[920]); } const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsPorts::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[920]); } -Ifc4x3_add2::IfcRelConnectsPorts::IfcRelConnectsPorts(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelConnectsPorts::IfcRelConnectsPorts(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPort* v5_RelatingPort, ::Ifc4x3_add2::IfcPort* v6_RelatedPort, ::Ifc4x3_add2::IfcElement* v7_RealizingElement) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingPort ? v5_RelatingPort->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatedPort ? v6_RelatedPort->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_RealizingElement ? v7_RealizingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelConnectsPorts::IfcRelConnectsPorts(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelConnectsPorts::IfcRelConnectsPorts(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPort v5_RelatingPort, ::Ifc4x3_add2::IfcPort v6_RelatedPort, ::Ifc4x3_add2::IfcElement v7_RealizingElement) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingPort));set_attribute_value(5, (v6_RelatedPort)); if (v7_RealizingElement) {set_attribute_value(6, (*v7_RealizingElement)); }; populate_derived(); } // Function implementations for IfcRelConnectsStructuralActivity -::Ifc4x3_add2::IfcStructuralActivityAssignmentSelect* Ifc4x3_add2::IfcRelConnectsStructuralActivity::RelatingElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcStructuralActivityAssignmentSelect>(true); } -void Ifc4x3_add2::IfcRelConnectsStructuralActivity::setRelatingElement(::Ifc4x3_add2::IfcStructuralActivityAssignmentSelect* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcStructuralActivity* Ifc4x3_add2::IfcRelConnectsStructuralActivity::RelatedStructuralActivity() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcStructuralActivity>(true); } -void Ifc4x3_add2::IfcRelConnectsStructuralActivity::setRelatedStructuralActivity(::Ifc4x3_add2::IfcStructuralActivity* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcStructuralActivityAssignmentSelect Ifc4x3_add2::IfcRelConnectsStructuralActivity::RelatingElement() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcStructuralActivityAssignmentSelect>(); } +void Ifc4x3_add2::IfcRelConnectsStructuralActivity::setRelatingElement(const ::Ifc4x3_add2::IfcStructuralActivityAssignmentSelect& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcStructuralActivity Ifc4x3_add2::IfcRelConnectsStructuralActivity::RelatedStructuralActivity() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcStructuralActivity>(); } +void Ifc4x3_add2::IfcRelConnectsStructuralActivity::setRelatedStructuralActivity(const ::Ifc4x3_add2::IfcStructuralActivity& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsStructuralActivity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[922]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsStructuralActivity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[922]); } const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsStructuralActivity::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[922]); } -Ifc4x3_add2::IfcRelConnectsStructuralActivity::IfcRelConnectsStructuralActivity(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelConnectsStructuralActivity::IfcRelConnectsStructuralActivity(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcStructuralActivityAssignmentSelect* v5_RelatingElement, ::Ifc4x3_add2::IfcStructuralActivity* v6_RelatedStructuralActivity) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingElement ? v5_RelatingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatedStructuralActivity ? v6_RelatedStructuralActivity->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelConnectsStructuralActivity::IfcRelConnectsStructuralActivity(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelConnectsStructuralActivity::IfcRelConnectsStructuralActivity(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcStructuralActivityAssignmentSelect v5_RelatingElement, ::Ifc4x3_add2::IfcStructuralActivity v6_RelatedStructuralActivity) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingElement));set_attribute_value(5, (v6_RelatedStructuralActivity));; populate_derived(); } // Function implementations for IfcRelConnectsStructuralMember -::Ifc4x3_add2::IfcStructuralMember* Ifc4x3_add2::IfcRelConnectsStructuralMember::RelatingStructuralMember() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcStructuralMember>(true); } -void Ifc4x3_add2::IfcRelConnectsStructuralMember::setRelatingStructuralMember(::Ifc4x3_add2::IfcStructuralMember* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcStructuralConnection* Ifc4x3_add2::IfcRelConnectsStructuralMember::RelatedStructuralConnection() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcStructuralConnection>(true); } -void Ifc4x3_add2::IfcRelConnectsStructuralMember::setRelatedStructuralConnection(::Ifc4x3_add2::IfcStructuralConnection* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcBoundaryCondition* Ifc4x3_add2::IfcRelConnectsStructuralMember::AppliedCondition() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcBoundaryCondition>(true); } -void Ifc4x3_add2::IfcRelConnectsStructuralMember::setAppliedCondition(::Ifc4x3_add2::IfcBoundaryCondition* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } -::Ifc4x3_add2::IfcStructuralConnectionCondition* Ifc4x3_add2::IfcRelConnectsStructuralMember::AdditionalConditions() const { if(get_attribute_value(7).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(7)))->as<::Ifc4x3_add2::IfcStructuralConnectionCondition>(true); } -void Ifc4x3_add2::IfcRelConnectsStructuralMember::setAdditionalConditions(::Ifc4x3_add2::IfcStructuralConnectionCondition* v) { set_attribute_value(7, v->as());if constexpr (false)unset_attribute_value(7); } -boost::optional< double > Ifc4x3_add2::IfcRelConnectsStructuralMember::SupportedLength() const { if(get_attribute_value(8).isNull()) { return boost::none; } double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -::Ifc4x3_add2::IfcAxis2Placement3D* Ifc4x3_add2::IfcRelConnectsStructuralMember::ConditionCoordinateSystem() const { if(get_attribute_value(9).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(9)))->as<::Ifc4x3_add2::IfcAxis2Placement3D>(true); } -void Ifc4x3_add2::IfcRelConnectsStructuralMember::setConditionCoordinateSystem(::Ifc4x3_add2::IfcAxis2Placement3D* v) { set_attribute_value(9, v->as());if constexpr (false)unset_attribute_value(9); } +::Ifc4x3_add2::IfcStructuralMember Ifc4x3_add2::IfcRelConnectsStructuralMember::RelatingStructuralMember() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcStructuralMember>(); } +void Ifc4x3_add2::IfcRelConnectsStructuralMember::setRelatingStructuralMember(const ::Ifc4x3_add2::IfcStructuralMember& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcStructuralConnection Ifc4x3_add2::IfcRelConnectsStructuralMember::RelatedStructuralConnection() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcStructuralConnection>(); } +void Ifc4x3_add2::IfcRelConnectsStructuralMember::setRelatedStructuralConnection(const ::Ifc4x3_add2::IfcStructuralConnection& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcBoundaryCondition Ifc4x3_add2::IfcRelConnectsStructuralMember::AppliedCondition() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcBoundaryCondition{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcBoundaryCondition>(); } +void Ifc4x3_add2::IfcRelConnectsStructuralMember::setAppliedCondition(const ::Ifc4x3_add2::IfcBoundaryCondition& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcStructuralConnectionCondition Ifc4x3_add2::IfcRelConnectsStructuralMember::AdditionalConditions() const { if(get_attribute_value(7).isNull()) { return ::Ifc4x3_add2::IfcStructuralConnectionCondition{}; } return ((express::Base)(get_attribute_value(7))).as<::Ifc4x3_add2::IfcStructuralConnectionCondition>(); } +void Ifc4x3_add2::IfcRelConnectsStructuralMember::setAdditionalConditions(const ::Ifc4x3_add2::IfcStructuralConnectionCondition& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } +std::optional< double > Ifc4x3_add2::IfcRelConnectsStructuralMember::SupportedLength() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } double v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcRelConnectsStructuralMember::setSupportedLength(const std::optional< double >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +::Ifc4x3_add2::IfcAxis2Placement3D Ifc4x3_add2::IfcRelConnectsStructuralMember::ConditionCoordinateSystem() const { if(get_attribute_value(9).isNull()) { return ::Ifc4x3_add2::IfcAxis2Placement3D{}; } return ((express::Base)(get_attribute_value(9))).as<::Ifc4x3_add2::IfcAxis2Placement3D>(); } +void Ifc4x3_add2::IfcRelConnectsStructuralMember::setConditionCoordinateSystem(const ::Ifc4x3_add2::IfcAxis2Placement3D& v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsStructuralMember::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[923]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsStructuralMember::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[923]); } const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsStructuralMember::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[923]); } -Ifc4x3_add2::IfcRelConnectsStructuralMember::IfcRelConnectsStructuralMember(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelConnectsStructuralMember::IfcRelConnectsStructuralMember(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcStructuralMember* v5_RelatingStructuralMember, ::Ifc4x3_add2::IfcStructuralConnection* v6_RelatedStructuralConnection, ::Ifc4x3_add2::IfcBoundaryCondition* v7_AppliedCondition, ::Ifc4x3_add2::IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, ::Ifc4x3_add2::IfcAxis2Placement3D* v10_ConditionCoordinateSystem) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingStructuralMember ? v5_RelatingStructuralMember->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatedStructuralConnection ? v6_RelatedStructuralConnection->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_AppliedCondition ? v7_AppliedCondition->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AdditionalConditions ? v8_AdditionalConditions->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v9_SupportedLength) {set_attribute_value(8, (*v9_SupportedLength)); }set_attribute_value(9, v10_ConditionCoordinateSystem ? v10_ConditionCoordinateSystem->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelConnectsStructuralMember::IfcRelConnectsStructuralMember(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelConnectsStructuralMember::IfcRelConnectsStructuralMember(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcStructuralMember v5_RelatingStructuralMember, ::Ifc4x3_add2::IfcStructuralConnection v6_RelatedStructuralConnection, ::Ifc4x3_add2::IfcBoundaryCondition v7_AppliedCondition, ::Ifc4x3_add2::IfcStructuralConnectionCondition v8_AdditionalConditions, std::optional< double > v9_SupportedLength, ::Ifc4x3_add2::IfcAxis2Placement3D v10_ConditionCoordinateSystem) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingStructuralMember));set_attribute_value(5, (v6_RelatedStructuralConnection)); if (v7_AppliedCondition) {set_attribute_value(6, (*v7_AppliedCondition)); } if (v8_AdditionalConditions) {set_attribute_value(7, (*v8_AdditionalConditions)); } if (v9_SupportedLength) {set_attribute_value(8, (*v9_SupportedLength)); } if (v10_ConditionCoordinateSystem) {set_attribute_value(9, (*v10_ConditionCoordinateSystem)); }; populate_derived(); } // Function implementations for IfcRelConnectsWithEccentricity -::Ifc4x3_add2::IfcConnectionGeometry* Ifc4x3_add2::IfcRelConnectsWithEccentricity::ConnectionConstraint() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(10)))->as<::Ifc4x3_add2::IfcConnectionGeometry>(true); } -void Ifc4x3_add2::IfcRelConnectsWithEccentricity::setConnectionConstraint(::Ifc4x3_add2::IfcConnectionGeometry* v) { set_attribute_value(10, v->as());if constexpr (false)unset_attribute_value(10); } +::Ifc4x3_add2::IfcConnectionGeometry Ifc4x3_add2::IfcRelConnectsWithEccentricity::ConnectionConstraint() const { return ((express::Base)(get_attribute_value(10))).as<::Ifc4x3_add2::IfcConnectionGeometry>(); } +void Ifc4x3_add2::IfcRelConnectsWithEccentricity::setConnectionConstraint(const ::Ifc4x3_add2::IfcConnectionGeometry& v) { set_attribute_value(10, v);if constexpr (false)unset_attribute_value(10); } -const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsWithEccentricity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[924]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsWithEccentricity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[924]); } const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsWithEccentricity::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[924]); } -Ifc4x3_add2::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(IfcEntityInstanceData&& e) : IfcRelConnectsStructuralMember(std::move(e)) { } -Ifc4x3_add2::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcStructuralMember* v5_RelatingStructuralMember, ::Ifc4x3_add2::IfcStructuralConnection* v6_RelatedStructuralConnection, ::Ifc4x3_add2::IfcBoundaryCondition* v7_AppliedCondition, ::Ifc4x3_add2::IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, ::Ifc4x3_add2::IfcAxis2Placement3D* v10_ConditionCoordinateSystem, ::Ifc4x3_add2::IfcConnectionGeometry* v11_ConnectionConstraint) : IfcRelConnectsStructuralMember(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingStructuralMember ? v5_RelatingStructuralMember->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatedStructuralConnection ? v6_RelatedStructuralConnection->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_AppliedCondition ? v7_AppliedCondition->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AdditionalConditions ? v8_AdditionalConditions->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v9_SupportedLength) {set_attribute_value(8, (*v9_SupportedLength)); }set_attribute_value(9, v10_ConditionCoordinateSystem ? v10_ConditionCoordinateSystem->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(10, v11_ConnectionConstraint ? v11_ConnectionConstraint->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(const std::weak_ptr& e) : IfcRelConnectsStructuralMember(e) { } +// Ifc4x3_add2::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcStructuralMember v5_RelatingStructuralMember, ::Ifc4x3_add2::IfcStructuralConnection v6_RelatedStructuralConnection, ::Ifc4x3_add2::IfcBoundaryCondition v7_AppliedCondition, ::Ifc4x3_add2::IfcStructuralConnectionCondition v8_AdditionalConditions, std::optional< double > v9_SupportedLength, ::Ifc4x3_add2::IfcAxis2Placement3D v10_ConditionCoordinateSystem, ::Ifc4x3_add2::IfcConnectionGeometry v11_ConnectionConstraint) : IfcRelConnectsStructuralMember(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingStructuralMember));set_attribute_value(5, (v6_RelatedStructuralConnection)); if (v7_AppliedCondition) {set_attribute_value(6, (*v7_AppliedCondition)); } if (v8_AdditionalConditions) {set_attribute_value(7, (*v8_AdditionalConditions)); } if (v9_SupportedLength) {set_attribute_value(8, (*v9_SupportedLength)); } if (v10_ConditionCoordinateSystem) {set_attribute_value(9, (*v10_ConditionCoordinateSystem)); }set_attribute_value(10, (v11_ConnectionConstraint));; populate_derived(); } // Function implementations for IfcRelConnectsWithRealizingElements -aggregate_of< ::Ifc4x3_add2::IfcElement >::ptr Ifc4x3_add2::IfcRelConnectsWithRealizingElements::RealizingElements() const { aggregate_of_instance::ptr es = get_attribute_value(7); return es->as< ::Ifc4x3_add2::IfcElement >(); } -void Ifc4x3_add2::IfcRelConnectsWithRealizingElements::setRealizingElements(aggregate_of< ::Ifc4x3_add2::IfcElement >::ptr v) { set_attribute_value(7, (v)->generalize());if constexpr (false)unset_attribute_value(7); } -boost::optional< std::string > Ifc4x3_add2::IfcRelConnectsWithRealizingElements::ConnectionType() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::vector< ::Ifc4x3_add2::IfcElement > Ifc4x3_add2::IfcRelConnectsWithRealizingElements::RealizingElements() const { std::vector es = get_attribute_value(7); return cast_vector<::Ifc4x3_add2::IfcElement>(es); } +void Ifc4x3_add2::IfcRelConnectsWithRealizingElements::setRealizingElements(const std::vector< ::Ifc4x3_add2::IfcElement >& v) { set_attribute_value(7, cast_vector(v));if constexpr (false)unset_attribute_value(7); } +std::optional< std::string > Ifc4x3_add2::IfcRelConnectsWithRealizingElements::ConnectionType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcRelConnectsWithRealizingElements::setConnectionType(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsWithRealizingElements::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[925]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsWithRealizingElements::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[925]); } const IfcParse::entity& Ifc4x3_add2::IfcRelConnectsWithRealizingElements::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[925]); } -Ifc4x3_add2::IfcRelConnectsWithRealizingElements::IfcRelConnectsWithRealizingElements(IfcEntityInstanceData&& e) : IfcRelConnectsElements(std::move(e)) { } -Ifc4x3_add2::IfcRelConnectsWithRealizingElements::IfcRelConnectsWithRealizingElements(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc4x3_add2::IfcElement* v6_RelatingElement, ::Ifc4x3_add2::IfcElement* v7_RelatedElement, aggregate_of< ::Ifc4x3_add2::IfcElement >::ptr v8_RealizingElements, boost::optional< std::string > v9_ConnectionType) : IfcRelConnectsElements(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_ConnectionGeometry ? v5_ConnectionGeometry->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatingElement ? v6_RelatingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_RelatedElement ? v7_RelatedElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, (v8_RealizingElements)->generalize()); if (v9_ConnectionType) {set_attribute_value(8, (*v9_ConnectionType)); }; populate_derived(); } +// Ifc4x3_add2::IfcRelConnectsWithRealizingElements::IfcRelConnectsWithRealizingElements(const std::weak_ptr& e) : IfcRelConnectsElements(e) { } +// Ifc4x3_add2::IfcRelConnectsWithRealizingElements::IfcRelConnectsWithRealizingElements(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcConnectionGeometry v5_ConnectionGeometry, ::Ifc4x3_add2::IfcElement v6_RelatingElement, ::Ifc4x3_add2::IfcElement v7_RelatedElement, std::vector< ::Ifc4x3_add2::IfcElement > v8_RealizingElements, std::optional< std::string > v9_ConnectionType) : IfcRelConnectsElements(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ConnectionGeometry) {set_attribute_value(4, (*v5_ConnectionGeometry)); }set_attribute_value(5, (v6_RelatingElement));set_attribute_value(6, (v7_RelatedElement));set_attribute_value(7, (v8_RealizingElements)->generalize()); if (v9_ConnectionType) {set_attribute_value(8, (*v9_ConnectionType)); }; populate_derived(); } // Function implementations for IfcRelContainedInSpatialStructure -aggregate_of< ::Ifc4x3_add2::IfcProduct >::ptr Ifc4x3_add2::IfcRelContainedInSpatialStructure::RelatedElements() const { aggregate_of_instance::ptr es = get_attribute_value(4); return es->as< ::Ifc4x3_add2::IfcProduct >(); } -void Ifc4x3_add2::IfcRelContainedInSpatialStructure::setRelatedElements(aggregate_of< ::Ifc4x3_add2::IfcProduct >::ptr v) { set_attribute_value(4, (v)->generalize());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcSpatialElement* Ifc4x3_add2::IfcRelContainedInSpatialStructure::RelatingStructure() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcSpatialElement>(true); } -void Ifc4x3_add2::IfcRelContainedInSpatialStructure::setRelatingStructure(::Ifc4x3_add2::IfcSpatialElement* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +std::vector< ::Ifc4x3_add2::IfcProduct > Ifc4x3_add2::IfcRelContainedInSpatialStructure::RelatedElements() const { std::vector es = get_attribute_value(4); return cast_vector<::Ifc4x3_add2::IfcProduct>(es); } +void Ifc4x3_add2::IfcRelContainedInSpatialStructure::setRelatedElements(const std::vector< ::Ifc4x3_add2::IfcProduct >& v) { set_attribute_value(4, cast_vector(v));if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcSpatialElement Ifc4x3_add2::IfcRelContainedInSpatialStructure::RelatingStructure() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcSpatialElement>(); } +void Ifc4x3_add2::IfcRelContainedInSpatialStructure::setRelatingStructure(const ::Ifc4x3_add2::IfcSpatialElement& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelContainedInSpatialStructure::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[926]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelContainedInSpatialStructure::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[926]); } const IfcParse::entity& Ifc4x3_add2::IfcRelContainedInSpatialStructure::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[926]); } -Ifc4x3_add2::IfcRelContainedInSpatialStructure::IfcRelContainedInSpatialStructure(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelContainedInSpatialStructure::IfcRelContainedInSpatialStructure(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcProduct >::ptr v5_RelatedElements, ::Ifc4x3_add2::IfcSpatialElement* v6_RelatingStructure) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedElements)->generalize());set_attribute_value(5, v6_RelatingStructure ? v6_RelatingStructure->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelContainedInSpatialStructure::IfcRelContainedInSpatialStructure(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelContainedInSpatialStructure::IfcRelContainedInSpatialStructure(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcProduct > v5_RelatedElements, ::Ifc4x3_add2::IfcSpatialElement v6_RelatingStructure) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedElements)->generalize());set_attribute_value(5, (v6_RelatingStructure));; populate_derived(); } // Function implementations for IfcRelCoversBldgElements -::Ifc4x3_add2::IfcElement* Ifc4x3_add2::IfcRelCoversBldgElements::RelatingBuildingElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcElement>(true); } -void Ifc4x3_add2::IfcRelCoversBldgElements::setRelatingBuildingElement(::Ifc4x3_add2::IfcElement* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -aggregate_of< ::Ifc4x3_add2::IfcCovering >::ptr Ifc4x3_add2::IfcRelCoversBldgElements::RelatedCoverings() const { aggregate_of_instance::ptr es = get_attribute_value(5); return es->as< ::Ifc4x3_add2::IfcCovering >(); } -void Ifc4x3_add2::IfcRelCoversBldgElements::setRelatedCoverings(aggregate_of< ::Ifc4x3_add2::IfcCovering >::ptr v) { set_attribute_value(5, (v)->generalize());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcElement Ifc4x3_add2::IfcRelCoversBldgElements::RelatingBuildingElement() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcElement>(); } +void Ifc4x3_add2::IfcRelCoversBldgElements::setRelatingBuildingElement(const ::Ifc4x3_add2::IfcElement& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +std::vector< ::Ifc4x3_add2::IfcCovering > Ifc4x3_add2::IfcRelCoversBldgElements::RelatedCoverings() const { std::vector es = get_attribute_value(5); return cast_vector<::Ifc4x3_add2::IfcCovering>(es); } +void Ifc4x3_add2::IfcRelCoversBldgElements::setRelatedCoverings(const std::vector< ::Ifc4x3_add2::IfcCovering >& v) { set_attribute_value(5, cast_vector(v));if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelCoversBldgElements::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[927]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelCoversBldgElements::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[927]); } const IfcParse::entity& Ifc4x3_add2::IfcRelCoversBldgElements::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[927]); } -Ifc4x3_add2::IfcRelCoversBldgElements::IfcRelCoversBldgElements(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelCoversBldgElements::IfcRelCoversBldgElements(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement* v5_RelatingBuildingElement, aggregate_of< ::Ifc4x3_add2::IfcCovering >::ptr v6_RelatedCoverings) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingBuildingElement ? v5_RelatingBuildingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, (v6_RelatedCoverings)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcRelCoversBldgElements::IfcRelCoversBldgElements(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelCoversBldgElements::IfcRelCoversBldgElements(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement v5_RelatingBuildingElement, std::vector< ::Ifc4x3_add2::IfcCovering > v6_RelatedCoverings) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingBuildingElement));set_attribute_value(5, (v6_RelatedCoverings)->generalize());; populate_derived(); } // Function implementations for IfcRelCoversSpaces -::Ifc4x3_add2::IfcSpace* Ifc4x3_add2::IfcRelCoversSpaces::RelatingSpace() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcSpace>(true); } -void Ifc4x3_add2::IfcRelCoversSpaces::setRelatingSpace(::Ifc4x3_add2::IfcSpace* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -aggregate_of< ::Ifc4x3_add2::IfcCovering >::ptr Ifc4x3_add2::IfcRelCoversSpaces::RelatedCoverings() const { aggregate_of_instance::ptr es = get_attribute_value(5); return es->as< ::Ifc4x3_add2::IfcCovering >(); } -void Ifc4x3_add2::IfcRelCoversSpaces::setRelatedCoverings(aggregate_of< ::Ifc4x3_add2::IfcCovering >::ptr v) { set_attribute_value(5, (v)->generalize());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcSpace Ifc4x3_add2::IfcRelCoversSpaces::RelatingSpace() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcSpace>(); } +void Ifc4x3_add2::IfcRelCoversSpaces::setRelatingSpace(const ::Ifc4x3_add2::IfcSpace& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +std::vector< ::Ifc4x3_add2::IfcCovering > Ifc4x3_add2::IfcRelCoversSpaces::RelatedCoverings() const { std::vector es = get_attribute_value(5); return cast_vector<::Ifc4x3_add2::IfcCovering>(es); } +void Ifc4x3_add2::IfcRelCoversSpaces::setRelatedCoverings(const std::vector< ::Ifc4x3_add2::IfcCovering >& v) { set_attribute_value(5, cast_vector(v));if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelCoversSpaces::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[928]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelCoversSpaces::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[928]); } const IfcParse::entity& Ifc4x3_add2::IfcRelCoversSpaces::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[928]); } -Ifc4x3_add2::IfcRelCoversSpaces::IfcRelCoversSpaces(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelCoversSpaces::IfcRelCoversSpaces(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpace* v5_RelatingSpace, aggregate_of< ::Ifc4x3_add2::IfcCovering >::ptr v6_RelatedCoverings) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingSpace ? v5_RelatingSpace->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, (v6_RelatedCoverings)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcRelCoversSpaces::IfcRelCoversSpaces(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelCoversSpaces::IfcRelCoversSpaces(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpace v5_RelatingSpace, std::vector< ::Ifc4x3_add2::IfcCovering > v6_RelatedCoverings) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingSpace));set_attribute_value(5, (v6_RelatedCoverings)->generalize());; populate_derived(); } // Function implementations for IfcRelDeclares -::Ifc4x3_add2::IfcContext* Ifc4x3_add2::IfcRelDeclares::RelatingContext() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcContext>(true); } -void Ifc4x3_add2::IfcRelDeclares::setRelatingContext(::Ifc4x3_add2::IfcContext* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr Ifc4x3_add2::IfcRelDeclares::RelatedDefinitions() const { aggregate_of_instance::ptr es = get_attribute_value(5); return es->as< ::Ifc4x3_add2::IfcDefinitionSelect >(); } -void Ifc4x3_add2::IfcRelDeclares::setRelatedDefinitions(aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v) { set_attribute_value(5, (v)->generalize());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcContext Ifc4x3_add2::IfcRelDeclares::RelatingContext() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcContext>(); } +void Ifc4x3_add2::IfcRelDeclares::setRelatingContext(const ::Ifc4x3_add2::IfcContext& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > Ifc4x3_add2::IfcRelDeclares::RelatedDefinitions() const { std::vector es = get_attribute_value(5); return cast_vector<::Ifc4x3_add2::IfcDefinitionSelect>(es); } +void Ifc4x3_add2::IfcRelDeclares::setRelatedDefinitions(const std::vector< ::Ifc4x3_add2::IfcDefinitionSelect >& v) { set_attribute_value(5, cast_vector(v));if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelDeclares::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[929]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelDeclares::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[929]); } const IfcParse::entity& Ifc4x3_add2::IfcRelDeclares::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[929]); } -Ifc4x3_add2::IfcRelDeclares::IfcRelDeclares(IfcEntityInstanceData&& e) : IfcRelationship(std::move(e)) { } -Ifc4x3_add2::IfcRelDeclares::IfcRelDeclares(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcContext* v5_RelatingContext, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v6_RelatedDefinitions) : IfcRelationship(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingContext ? v5_RelatingContext->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, (v6_RelatedDefinitions)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcRelDeclares::IfcRelDeclares(const std::weak_ptr& e) : IfcRelationship(e) { } +// Ifc4x3_add2::IfcRelDeclares::IfcRelDeclares(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcContext v5_RelatingContext, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v6_RelatedDefinitions) : IfcRelationship(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingContext));set_attribute_value(5, (v6_RelatedDefinitions)->generalize());; populate_derived(); } // Function implementations for IfcRelDecomposes -const IfcParse::entity& Ifc4x3_add2::IfcRelDecomposes::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[930]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelDecomposes::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[930]); } const IfcParse::entity& Ifc4x3_add2::IfcRelDecomposes::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[930]); } -Ifc4x3_add2::IfcRelDecomposes::IfcRelDecomposes(IfcEntityInstanceData&& e) : IfcRelationship(std::move(e)) { } -Ifc4x3_add2::IfcRelDecomposes::IfcRelDecomposes(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRelationship(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcRelDecomposes::IfcRelDecomposes(const std::weak_ptr& e) : IfcRelationship(e) { } +// Ifc4x3_add2::IfcRelDecomposes::IfcRelDecomposes(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description) : IfcRelationship(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } // Function implementations for IfcRelDefines -const IfcParse::entity& Ifc4x3_add2::IfcRelDefines::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[931]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelDefines::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[931]); } const IfcParse::entity& Ifc4x3_add2::IfcRelDefines::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[931]); } -Ifc4x3_add2::IfcRelDefines::IfcRelDefines(IfcEntityInstanceData&& e) : IfcRelationship(std::move(e)) { } -Ifc4x3_add2::IfcRelDefines::IfcRelDefines(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRelationship(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcRelDefines::IfcRelDefines(const std::weak_ptr& e) : IfcRelationship(e) { } +// Ifc4x3_add2::IfcRelDefines::IfcRelDefines(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description) : IfcRelationship(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } // Function implementations for IfcRelDefinesByObject -aggregate_of< ::Ifc4x3_add2::IfcObject >::ptr Ifc4x3_add2::IfcRelDefinesByObject::RelatedObjects() const { aggregate_of_instance::ptr es = get_attribute_value(4); return es->as< ::Ifc4x3_add2::IfcObject >(); } -void Ifc4x3_add2::IfcRelDefinesByObject::setRelatedObjects(aggregate_of< ::Ifc4x3_add2::IfcObject >::ptr v) { set_attribute_value(4, (v)->generalize());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcObject* Ifc4x3_add2::IfcRelDefinesByObject::RelatingObject() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcObject>(true); } -void Ifc4x3_add2::IfcRelDefinesByObject::setRelatingObject(::Ifc4x3_add2::IfcObject* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +std::vector< ::Ifc4x3_add2::IfcObject > Ifc4x3_add2::IfcRelDefinesByObject::RelatedObjects() const { std::vector es = get_attribute_value(4); return cast_vector<::Ifc4x3_add2::IfcObject>(es); } +void Ifc4x3_add2::IfcRelDefinesByObject::setRelatedObjects(const std::vector< ::Ifc4x3_add2::IfcObject >& v) { set_attribute_value(4, cast_vector(v));if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcObject Ifc4x3_add2::IfcRelDefinesByObject::RelatingObject() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcObject>(); } +void Ifc4x3_add2::IfcRelDefinesByObject::setRelatingObject(const ::Ifc4x3_add2::IfcObject& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelDefinesByObject::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[932]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelDefinesByObject::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[932]); } const IfcParse::entity& Ifc4x3_add2::IfcRelDefinesByObject::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[932]); } -Ifc4x3_add2::IfcRelDefinesByObject::IfcRelDefinesByObject(IfcEntityInstanceData&& e) : IfcRelDefines(std::move(e)) { } -Ifc4x3_add2::IfcRelDefinesByObject::IfcRelDefinesByObject(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObject >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcObject* v6_RelatingObject) : IfcRelDefines(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, v6_RelatingObject ? v6_RelatingObject->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelDefinesByObject::IfcRelDefinesByObject(const std::weak_ptr& e) : IfcRelDefines(e) { } +// Ifc4x3_add2::IfcRelDefinesByObject::IfcRelDefinesByObject(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObject > v5_RelatedObjects, ::Ifc4x3_add2::IfcObject v6_RelatingObject) : IfcRelDefines(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, (v6_RelatingObject));; populate_derived(); } // Function implementations for IfcRelDefinesByProperties -aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr Ifc4x3_add2::IfcRelDefinesByProperties::RelatedObjects() const { aggregate_of_instance::ptr es = get_attribute_value(4); return es->as< ::Ifc4x3_add2::IfcObjectDefinition >(); } -void Ifc4x3_add2::IfcRelDefinesByProperties::setRelatedObjects(aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v) { set_attribute_value(4, (v)->generalize());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcPropertySetDefinitionSelect* Ifc4x3_add2::IfcRelDefinesByProperties::RelatingPropertyDefinition() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcPropertySetDefinitionSelect>(true); } -void Ifc4x3_add2::IfcRelDefinesByProperties::setRelatingPropertyDefinition(::Ifc4x3_add2::IfcPropertySetDefinitionSelect* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +std::vector< ::Ifc4x3_add2::IfcObjectDefinition > Ifc4x3_add2::IfcRelDefinesByProperties::RelatedObjects() const { std::vector es = get_attribute_value(4); return cast_vector<::Ifc4x3_add2::IfcObjectDefinition>(es); } +void Ifc4x3_add2::IfcRelDefinesByProperties::setRelatedObjects(const std::vector< ::Ifc4x3_add2::IfcObjectDefinition >& v) { set_attribute_value(4, cast_vector(v));if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcPropertySetDefinitionSelect Ifc4x3_add2::IfcRelDefinesByProperties::RelatingPropertyDefinition() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcPropertySetDefinitionSelect>(); } +void Ifc4x3_add2::IfcRelDefinesByProperties::setRelatingPropertyDefinition(const ::Ifc4x3_add2::IfcPropertySetDefinitionSelect& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelDefinesByProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[933]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelDefinesByProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[933]); } const IfcParse::entity& Ifc4x3_add2::IfcRelDefinesByProperties::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[933]); } -Ifc4x3_add2::IfcRelDefinesByProperties::IfcRelDefinesByProperties(IfcEntityInstanceData&& e) : IfcRelDefines(std::move(e)) { } -Ifc4x3_add2::IfcRelDefinesByProperties::IfcRelDefinesByProperties(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcPropertySetDefinitionSelect* v6_RelatingPropertyDefinition) : IfcRelDefines(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, v6_RelatingPropertyDefinition ? v6_RelatingPropertyDefinition->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelDefinesByProperties::IfcRelDefinesByProperties(const std::weak_ptr& e) : IfcRelDefines(e) { } +// Ifc4x3_add2::IfcRelDefinesByProperties::IfcRelDefinesByProperties(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, ::Ifc4x3_add2::IfcPropertySetDefinitionSelect v6_RelatingPropertyDefinition) : IfcRelDefines(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, (v6_RelatingPropertyDefinition));; populate_derived(); } // Function implementations for IfcRelDefinesByTemplate -aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr Ifc4x3_add2::IfcRelDefinesByTemplate::RelatedPropertySets() const { aggregate_of_instance::ptr es = get_attribute_value(4); return es->as< ::Ifc4x3_add2::IfcPropertySetDefinition >(); } -void Ifc4x3_add2::IfcRelDefinesByTemplate::setRelatedPropertySets(aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr v) { set_attribute_value(4, (v)->generalize());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcPropertySetTemplate* Ifc4x3_add2::IfcRelDefinesByTemplate::RelatingTemplate() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcPropertySetTemplate>(true); } -void Ifc4x3_add2::IfcRelDefinesByTemplate::setRelatingTemplate(::Ifc4x3_add2::IfcPropertySetTemplate* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > Ifc4x3_add2::IfcRelDefinesByTemplate::RelatedPropertySets() const { std::vector es = get_attribute_value(4); return cast_vector<::Ifc4x3_add2::IfcPropertySetDefinition>(es); } +void Ifc4x3_add2::IfcRelDefinesByTemplate::setRelatedPropertySets(const std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition >& v) { set_attribute_value(4, cast_vector(v));if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcPropertySetTemplate Ifc4x3_add2::IfcRelDefinesByTemplate::RelatingTemplate() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcPropertySetTemplate>(); } +void Ifc4x3_add2::IfcRelDefinesByTemplate::setRelatingTemplate(const ::Ifc4x3_add2::IfcPropertySetTemplate& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelDefinesByTemplate::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[934]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelDefinesByTemplate::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[934]); } const IfcParse::entity& Ifc4x3_add2::IfcRelDefinesByTemplate::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[934]); } -Ifc4x3_add2::IfcRelDefinesByTemplate::IfcRelDefinesByTemplate(IfcEntityInstanceData&& e) : IfcRelDefines(std::move(e)) { } -Ifc4x3_add2::IfcRelDefinesByTemplate::IfcRelDefinesByTemplate(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr v5_RelatedPropertySets, ::Ifc4x3_add2::IfcPropertySetTemplate* v6_RelatingTemplate) : IfcRelDefines(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedPropertySets)->generalize());set_attribute_value(5, v6_RelatingTemplate ? v6_RelatingTemplate->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelDefinesByTemplate::IfcRelDefinesByTemplate(const std::weak_ptr& e) : IfcRelDefines(e) { } +// Ifc4x3_add2::IfcRelDefinesByTemplate::IfcRelDefinesByTemplate(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > v5_RelatedPropertySets, ::Ifc4x3_add2::IfcPropertySetTemplate v6_RelatingTemplate) : IfcRelDefines(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedPropertySets)->generalize());set_attribute_value(5, (v6_RelatingTemplate));; populate_derived(); } // Function implementations for IfcRelDefinesByType -aggregate_of< ::Ifc4x3_add2::IfcObject >::ptr Ifc4x3_add2::IfcRelDefinesByType::RelatedObjects() const { aggregate_of_instance::ptr es = get_attribute_value(4); return es->as< ::Ifc4x3_add2::IfcObject >(); } -void Ifc4x3_add2::IfcRelDefinesByType::setRelatedObjects(aggregate_of< ::Ifc4x3_add2::IfcObject >::ptr v) { set_attribute_value(4, (v)->generalize());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcTypeObject* Ifc4x3_add2::IfcRelDefinesByType::RelatingType() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcTypeObject>(true); } -void Ifc4x3_add2::IfcRelDefinesByType::setRelatingType(::Ifc4x3_add2::IfcTypeObject* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +std::vector< ::Ifc4x3_add2::IfcObject > Ifc4x3_add2::IfcRelDefinesByType::RelatedObjects() const { std::vector es = get_attribute_value(4); return cast_vector<::Ifc4x3_add2::IfcObject>(es); } +void Ifc4x3_add2::IfcRelDefinesByType::setRelatedObjects(const std::vector< ::Ifc4x3_add2::IfcObject >& v) { set_attribute_value(4, cast_vector(v));if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcTypeObject Ifc4x3_add2::IfcRelDefinesByType::RelatingType() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcTypeObject>(); } +void Ifc4x3_add2::IfcRelDefinesByType::setRelatingType(const ::Ifc4x3_add2::IfcTypeObject& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelDefinesByType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[935]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelDefinesByType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[935]); } const IfcParse::entity& Ifc4x3_add2::IfcRelDefinesByType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[935]); } -Ifc4x3_add2::IfcRelDefinesByType::IfcRelDefinesByType(IfcEntityInstanceData&& e) : IfcRelDefines(std::move(e)) { } -Ifc4x3_add2::IfcRelDefinesByType::IfcRelDefinesByType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObject >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcTypeObject* v6_RelatingType) : IfcRelDefines(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, v6_RelatingType ? v6_RelatingType->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelDefinesByType::IfcRelDefinesByType(const std::weak_ptr& e) : IfcRelDefines(e) { } +// Ifc4x3_add2::IfcRelDefinesByType::IfcRelDefinesByType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObject > v5_RelatedObjects, ::Ifc4x3_add2::IfcTypeObject v6_RelatingType) : IfcRelDefines(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedObjects)->generalize());set_attribute_value(5, (v6_RelatingType));; populate_derived(); } // Function implementations for IfcRelFillsElement -::Ifc4x3_add2::IfcOpeningElement* Ifc4x3_add2::IfcRelFillsElement::RelatingOpeningElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcOpeningElement>(true); } -void Ifc4x3_add2::IfcRelFillsElement::setRelatingOpeningElement(::Ifc4x3_add2::IfcOpeningElement* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcElement* Ifc4x3_add2::IfcRelFillsElement::RelatedBuildingElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcElement>(true); } -void Ifc4x3_add2::IfcRelFillsElement::setRelatedBuildingElement(::Ifc4x3_add2::IfcElement* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcOpeningElement Ifc4x3_add2::IfcRelFillsElement::RelatingOpeningElement() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcOpeningElement>(); } +void Ifc4x3_add2::IfcRelFillsElement::setRelatingOpeningElement(const ::Ifc4x3_add2::IfcOpeningElement& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcElement Ifc4x3_add2::IfcRelFillsElement::RelatedBuildingElement() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcElement>(); } +void Ifc4x3_add2::IfcRelFillsElement::setRelatedBuildingElement(const ::Ifc4x3_add2::IfcElement& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelFillsElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[936]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelFillsElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[936]); } const IfcParse::entity& Ifc4x3_add2::IfcRelFillsElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[936]); } -Ifc4x3_add2::IfcRelFillsElement::IfcRelFillsElement(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelFillsElement::IfcRelFillsElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcOpeningElement* v5_RelatingOpeningElement, ::Ifc4x3_add2::IfcElement* v6_RelatedBuildingElement) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingOpeningElement ? v5_RelatingOpeningElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatedBuildingElement ? v6_RelatedBuildingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelFillsElement::IfcRelFillsElement(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelFillsElement::IfcRelFillsElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcOpeningElement v5_RelatingOpeningElement, ::Ifc4x3_add2::IfcElement v6_RelatedBuildingElement) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingOpeningElement));set_attribute_value(5, (v6_RelatedBuildingElement));; populate_derived(); } // Function implementations for IfcRelFlowControlElements -aggregate_of< ::Ifc4x3_add2::IfcDistributionControlElement >::ptr Ifc4x3_add2::IfcRelFlowControlElements::RelatedControlElements() const { aggregate_of_instance::ptr es = get_attribute_value(4); return es->as< ::Ifc4x3_add2::IfcDistributionControlElement >(); } -void Ifc4x3_add2::IfcRelFlowControlElements::setRelatedControlElements(aggregate_of< ::Ifc4x3_add2::IfcDistributionControlElement >::ptr v) { set_attribute_value(4, (v)->generalize());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcDistributionFlowElement* Ifc4x3_add2::IfcRelFlowControlElements::RelatingFlowElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcDistributionFlowElement>(true); } -void Ifc4x3_add2::IfcRelFlowControlElements::setRelatingFlowElement(::Ifc4x3_add2::IfcDistributionFlowElement* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +std::vector< ::Ifc4x3_add2::IfcDistributionControlElement > Ifc4x3_add2::IfcRelFlowControlElements::RelatedControlElements() const { std::vector es = get_attribute_value(4); return cast_vector<::Ifc4x3_add2::IfcDistributionControlElement>(es); } +void Ifc4x3_add2::IfcRelFlowControlElements::setRelatedControlElements(const std::vector< ::Ifc4x3_add2::IfcDistributionControlElement >& v) { set_attribute_value(4, cast_vector(v));if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcDistributionFlowElement Ifc4x3_add2::IfcRelFlowControlElements::RelatingFlowElement() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcDistributionFlowElement>(); } +void Ifc4x3_add2::IfcRelFlowControlElements::setRelatingFlowElement(const ::Ifc4x3_add2::IfcDistributionFlowElement& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelFlowControlElements::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[937]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelFlowControlElements::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[937]); } const IfcParse::entity& Ifc4x3_add2::IfcRelFlowControlElements::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[937]); } -Ifc4x3_add2::IfcRelFlowControlElements::IfcRelFlowControlElements(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelFlowControlElements::IfcRelFlowControlElements(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDistributionControlElement >::ptr v5_RelatedControlElements, ::Ifc4x3_add2::IfcDistributionFlowElement* v6_RelatingFlowElement) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedControlElements)->generalize());set_attribute_value(5, v6_RelatingFlowElement ? v6_RelatingFlowElement->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelFlowControlElements::IfcRelFlowControlElements(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelFlowControlElements::IfcRelFlowControlElements(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDistributionControlElement > v5_RelatedControlElements, ::Ifc4x3_add2::IfcDistributionFlowElement v6_RelatingFlowElement) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedControlElements)->generalize());set_attribute_value(5, (v6_RelatingFlowElement));; populate_derived(); } // Function implementations for IfcRelInterferesElements -::Ifc4x3_add2::IfcInterferenceSelect* Ifc4x3_add2::IfcRelInterferesElements::RelatingElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcInterferenceSelect>(true); } -void Ifc4x3_add2::IfcRelInterferesElements::setRelatingElement(::Ifc4x3_add2::IfcInterferenceSelect* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcInterferenceSelect* Ifc4x3_add2::IfcRelInterferesElements::RelatedElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcInterferenceSelect>(true); } -void Ifc4x3_add2::IfcRelInterferesElements::setRelatedElement(::Ifc4x3_add2::IfcInterferenceSelect* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcConnectionGeometry* Ifc4x3_add2::IfcRelInterferesElements::InterferenceGeometry() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcConnectionGeometry>(true); } -void Ifc4x3_add2::IfcRelInterferesElements::setInterferenceGeometry(::Ifc4x3_add2::IfcConnectionGeometry* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } -boost::optional< std::string > Ifc4x3_add2::IfcRelInterferesElements::InterferenceType() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +::Ifc4x3_add2::IfcInterferenceSelect Ifc4x3_add2::IfcRelInterferesElements::RelatingElement() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcInterferenceSelect>(); } +void Ifc4x3_add2::IfcRelInterferesElements::setRelatingElement(const ::Ifc4x3_add2::IfcInterferenceSelect& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcInterferenceSelect Ifc4x3_add2::IfcRelInterferesElements::RelatedElement() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcInterferenceSelect>(); } +void Ifc4x3_add2::IfcRelInterferesElements::setRelatedElement(const ::Ifc4x3_add2::IfcInterferenceSelect& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcConnectionGeometry Ifc4x3_add2::IfcRelInterferesElements::InterferenceGeometry() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcConnectionGeometry{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcConnectionGeometry>(); } +void Ifc4x3_add2::IfcRelInterferesElements::setInterferenceGeometry(const ::Ifc4x3_add2::IfcConnectionGeometry& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< std::string > Ifc4x3_add2::IfcRelInterferesElements::InterferenceType() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcRelInterferesElements::setInterferenceType(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } boost::logic::tribool Ifc4x3_add2::IfcRelInterferesElements::ImpliedOrder() const { boost::logic::tribool v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcRelInterferesElements::setImpliedOrder(boost::logic::tribool v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } -::Ifc4x3_add2::IfcSpatialZone* Ifc4x3_add2::IfcRelInterferesElements::InterferenceSpace() const { if(get_attribute_value(9).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(9)))->as<::Ifc4x3_add2::IfcSpatialZone>(true); } -void Ifc4x3_add2::IfcRelInterferesElements::setInterferenceSpace(::Ifc4x3_add2::IfcSpatialZone* v) { set_attribute_value(9, v->as());if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcRelInterferesElements::setImpliedOrder(const boost::logic::tribool& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } +::Ifc4x3_add2::IfcSpatialZone Ifc4x3_add2::IfcRelInterferesElements::InterferenceSpace() const { if(get_attribute_value(9).isNull()) { return ::Ifc4x3_add2::IfcSpatialZone{}; } return ((express::Base)(get_attribute_value(9))).as<::Ifc4x3_add2::IfcSpatialZone>(); } +void Ifc4x3_add2::IfcRelInterferesElements::setInterferenceSpace(const ::Ifc4x3_add2::IfcSpatialZone& v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcRelInterferesElements::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[938]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelInterferesElements::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[938]); } const IfcParse::entity& Ifc4x3_add2::IfcRelInterferesElements::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[938]); } -Ifc4x3_add2::IfcRelInterferesElements::IfcRelInterferesElements(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelInterferesElements::IfcRelInterferesElements(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcInterferenceSelect* v5_RelatingElement, ::Ifc4x3_add2::IfcInterferenceSelect* v6_RelatedElement, ::Ifc4x3_add2::IfcConnectionGeometry* v7_InterferenceGeometry, boost::optional< std::string > v8_InterferenceType, boost::logic::tribool v9_ImpliedOrder, ::Ifc4x3_add2::IfcSpatialZone* v10_InterferenceSpace) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingElement ? v5_RelatingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatedElement ? v6_RelatedElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_InterferenceGeometry ? v7_InterferenceGeometry->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_InterferenceType) {set_attribute_value(7, (*v8_InterferenceType)); }set_attribute_value(8, (v9_ImpliedOrder));set_attribute_value(9, v10_InterferenceSpace ? v10_InterferenceSpace->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelInterferesElements::IfcRelInterferesElements(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelInterferesElements::IfcRelInterferesElements(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcInterferenceSelect v5_RelatingElement, ::Ifc4x3_add2::IfcInterferenceSelect v6_RelatedElement, ::Ifc4x3_add2::IfcConnectionGeometry v7_InterferenceGeometry, std::optional< std::string > v8_InterferenceType, boost::logic::tribool v9_ImpliedOrder, ::Ifc4x3_add2::IfcSpatialZone v10_InterferenceSpace) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingElement));set_attribute_value(5, (v6_RelatedElement)); if (v7_InterferenceGeometry) {set_attribute_value(6, (*v7_InterferenceGeometry)); } if (v8_InterferenceType) {set_attribute_value(7, (*v8_InterferenceType)); }set_attribute_value(8, (v9_ImpliedOrder)); if (v10_InterferenceSpace) {set_attribute_value(9, (*v10_InterferenceSpace)); }; populate_derived(); } // Function implementations for IfcRelNests -::Ifc4x3_add2::IfcObjectDefinition* Ifc4x3_add2::IfcRelNests::RelatingObject() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcObjectDefinition>(true); } -void Ifc4x3_add2::IfcRelNests::setRelatingObject(::Ifc4x3_add2::IfcObjectDefinition* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr Ifc4x3_add2::IfcRelNests::RelatedObjects() const { aggregate_of_instance::ptr es = get_attribute_value(5); return es->as< ::Ifc4x3_add2::IfcObjectDefinition >(); } -void Ifc4x3_add2::IfcRelNests::setRelatedObjects(aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v) { set_attribute_value(5, (v)->generalize());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcObjectDefinition Ifc4x3_add2::IfcRelNests::RelatingObject() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcObjectDefinition>(); } +void Ifc4x3_add2::IfcRelNests::setRelatingObject(const ::Ifc4x3_add2::IfcObjectDefinition& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +std::vector< ::Ifc4x3_add2::IfcObjectDefinition > Ifc4x3_add2::IfcRelNests::RelatedObjects() const { std::vector es = get_attribute_value(5); return cast_vector<::Ifc4x3_add2::IfcObjectDefinition>(es); } +void Ifc4x3_add2::IfcRelNests::setRelatedObjects(const std::vector< ::Ifc4x3_add2::IfcObjectDefinition >& v) { set_attribute_value(5, cast_vector(v));if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelNests::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[939]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelNests::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[939]); } const IfcParse::entity& Ifc4x3_add2::IfcRelNests::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[939]); } -Ifc4x3_add2::IfcRelNests::IfcRelNests(IfcEntityInstanceData&& e) : IfcRelDecomposes(std::move(e)) { } -Ifc4x3_add2::IfcRelNests::IfcRelNests(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcObjectDefinition* v5_RelatingObject, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v6_RelatedObjects) : IfcRelDecomposes(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingObject ? v5_RelatingObject->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, (v6_RelatedObjects)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcRelNests::IfcRelNests(const std::weak_ptr& e) : IfcRelDecomposes(e) { } +// Ifc4x3_add2::IfcRelNests::IfcRelNests(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcObjectDefinition v5_RelatingObject, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v6_RelatedObjects) : IfcRelDecomposes(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingObject));set_attribute_value(5, (v6_RelatedObjects)->generalize());; populate_derived(); } // Function implementations for IfcRelPositions -::Ifc4x3_add2::IfcPositioningElement* Ifc4x3_add2::IfcRelPositions::RelatingPositioningElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcPositioningElement>(true); } -void Ifc4x3_add2::IfcRelPositions::setRelatingPositioningElement(::Ifc4x3_add2::IfcPositioningElement* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -aggregate_of< ::Ifc4x3_add2::IfcProduct >::ptr Ifc4x3_add2::IfcRelPositions::RelatedProducts() const { aggregate_of_instance::ptr es = get_attribute_value(5); return es->as< ::Ifc4x3_add2::IfcProduct >(); } -void Ifc4x3_add2::IfcRelPositions::setRelatedProducts(aggregate_of< ::Ifc4x3_add2::IfcProduct >::ptr v) { set_attribute_value(5, (v)->generalize());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcPositioningElement Ifc4x3_add2::IfcRelPositions::RelatingPositioningElement() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcPositioningElement>(); } +void Ifc4x3_add2::IfcRelPositions::setRelatingPositioningElement(const ::Ifc4x3_add2::IfcPositioningElement& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +std::vector< ::Ifc4x3_add2::IfcProduct > Ifc4x3_add2::IfcRelPositions::RelatedProducts() const { std::vector es = get_attribute_value(5); return cast_vector<::Ifc4x3_add2::IfcProduct>(es); } +void Ifc4x3_add2::IfcRelPositions::setRelatedProducts(const std::vector< ::Ifc4x3_add2::IfcProduct >& v) { set_attribute_value(5, cast_vector(v));if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelPositions::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[940]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelPositions::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[940]); } const IfcParse::entity& Ifc4x3_add2::IfcRelPositions::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[940]); } -Ifc4x3_add2::IfcRelPositions::IfcRelPositions(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelPositions::IfcRelPositions(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPositioningElement* v5_RelatingPositioningElement, aggregate_of< ::Ifc4x3_add2::IfcProduct >::ptr v6_RelatedProducts) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingPositioningElement ? v5_RelatingPositioningElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, (v6_RelatedProducts)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcRelPositions::IfcRelPositions(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelPositions::IfcRelPositions(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPositioningElement v5_RelatingPositioningElement, std::vector< ::Ifc4x3_add2::IfcProduct > v6_RelatedProducts) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingPositioningElement));set_attribute_value(5, (v6_RelatedProducts)->generalize());; populate_derived(); } // Function implementations for IfcRelProjectsElement -::Ifc4x3_add2::IfcElement* Ifc4x3_add2::IfcRelProjectsElement::RelatingElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcElement>(true); } -void Ifc4x3_add2::IfcRelProjectsElement::setRelatingElement(::Ifc4x3_add2::IfcElement* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcFeatureElementAddition* Ifc4x3_add2::IfcRelProjectsElement::RelatedFeatureElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcFeatureElementAddition>(true); } -void Ifc4x3_add2::IfcRelProjectsElement::setRelatedFeatureElement(::Ifc4x3_add2::IfcFeatureElementAddition* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcElement Ifc4x3_add2::IfcRelProjectsElement::RelatingElement() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcElement>(); } +void Ifc4x3_add2::IfcRelProjectsElement::setRelatingElement(const ::Ifc4x3_add2::IfcElement& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcFeatureElementAddition Ifc4x3_add2::IfcRelProjectsElement::RelatedFeatureElement() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcFeatureElementAddition>(); } +void Ifc4x3_add2::IfcRelProjectsElement::setRelatedFeatureElement(const ::Ifc4x3_add2::IfcFeatureElementAddition& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelProjectsElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[941]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelProjectsElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[941]); } const IfcParse::entity& Ifc4x3_add2::IfcRelProjectsElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[941]); } -Ifc4x3_add2::IfcRelProjectsElement::IfcRelProjectsElement(IfcEntityInstanceData&& e) : IfcRelDecomposes(std::move(e)) { } -Ifc4x3_add2::IfcRelProjectsElement::IfcRelProjectsElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement* v5_RelatingElement, ::Ifc4x3_add2::IfcFeatureElementAddition* v6_RelatedFeatureElement) : IfcRelDecomposes(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingElement ? v5_RelatingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatedFeatureElement ? v6_RelatedFeatureElement->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelProjectsElement::IfcRelProjectsElement(const std::weak_ptr& e) : IfcRelDecomposes(e) { } +// Ifc4x3_add2::IfcRelProjectsElement::IfcRelProjectsElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement v5_RelatingElement, ::Ifc4x3_add2::IfcFeatureElementAddition v6_RelatedFeatureElement) : IfcRelDecomposes(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingElement));set_attribute_value(5, (v6_RelatedFeatureElement));; populate_derived(); } // Function implementations for IfcRelReferencedInSpatialStructure -aggregate_of< ::Ifc4x3_add2::IfcSpatialReferenceSelect >::ptr Ifc4x3_add2::IfcRelReferencedInSpatialStructure::RelatedElements() const { aggregate_of_instance::ptr es = get_attribute_value(4); return es->as< ::Ifc4x3_add2::IfcSpatialReferenceSelect >(); } -void Ifc4x3_add2::IfcRelReferencedInSpatialStructure::setRelatedElements(aggregate_of< ::Ifc4x3_add2::IfcSpatialReferenceSelect >::ptr v) { set_attribute_value(4, (v)->generalize());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcSpatialElement* Ifc4x3_add2::IfcRelReferencedInSpatialStructure::RelatingStructure() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcSpatialElement>(true); } -void Ifc4x3_add2::IfcRelReferencedInSpatialStructure::setRelatingStructure(::Ifc4x3_add2::IfcSpatialElement* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +std::vector< ::Ifc4x3_add2::IfcSpatialReferenceSelect > Ifc4x3_add2::IfcRelReferencedInSpatialStructure::RelatedElements() const { std::vector es = get_attribute_value(4); return cast_vector<::Ifc4x3_add2::IfcSpatialReferenceSelect>(es); } +void Ifc4x3_add2::IfcRelReferencedInSpatialStructure::setRelatedElements(const std::vector< ::Ifc4x3_add2::IfcSpatialReferenceSelect >& v) { set_attribute_value(4, cast_vector(v));if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcSpatialElement Ifc4x3_add2::IfcRelReferencedInSpatialStructure::RelatingStructure() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcSpatialElement>(); } +void Ifc4x3_add2::IfcRelReferencedInSpatialStructure::setRelatingStructure(const ::Ifc4x3_add2::IfcSpatialElement& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelReferencedInSpatialStructure::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[942]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelReferencedInSpatialStructure::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[942]); } const IfcParse::entity& Ifc4x3_add2::IfcRelReferencedInSpatialStructure::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[942]); } -Ifc4x3_add2::IfcRelReferencedInSpatialStructure::IfcRelReferencedInSpatialStructure(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelReferencedInSpatialStructure::IfcRelReferencedInSpatialStructure(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcSpatialReferenceSelect >::ptr v5_RelatedElements, ::Ifc4x3_add2::IfcSpatialElement* v6_RelatingStructure) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedElements)->generalize());set_attribute_value(5, v6_RelatingStructure ? v6_RelatingStructure->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelReferencedInSpatialStructure::IfcRelReferencedInSpatialStructure(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelReferencedInSpatialStructure::IfcRelReferencedInSpatialStructure(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcSpatialReferenceSelect > v5_RelatedElements, ::Ifc4x3_add2::IfcSpatialElement v6_RelatingStructure) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatedElements)->generalize());set_attribute_value(5, (v6_RelatingStructure));; populate_derived(); } // Function implementations for IfcRelSequence -::Ifc4x3_add2::IfcProcess* Ifc4x3_add2::IfcRelSequence::RelatingProcess() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcProcess>(true); } -void Ifc4x3_add2::IfcRelSequence::setRelatingProcess(::Ifc4x3_add2::IfcProcess* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcProcess* Ifc4x3_add2::IfcRelSequence::RelatedProcess() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcProcess>(true); } -void Ifc4x3_add2::IfcRelSequence::setRelatedProcess(::Ifc4x3_add2::IfcProcess* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcLagTime* Ifc4x3_add2::IfcRelSequence::TimeLag() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcLagTime>(true); } -void Ifc4x3_add2::IfcRelSequence::setTimeLag(::Ifc4x3_add2::IfcLagTime* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } -boost::optional< ::Ifc4x3_add2::IfcSequenceEnum::Value > Ifc4x3_add2::IfcRelSequence::SequenceType() const { if(get_attribute_value(7).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSequenceEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4x3_add2::IfcSequenceEnum::Value > v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcSequenceEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } -boost::optional< std::string > Ifc4x3_add2::IfcRelSequence::UserDefinedSequenceType() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +::Ifc4x3_add2::IfcProcess Ifc4x3_add2::IfcRelSequence::RelatingProcess() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcProcess>(); } +void Ifc4x3_add2::IfcRelSequence::setRelatingProcess(const ::Ifc4x3_add2::IfcProcess& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcProcess Ifc4x3_add2::IfcRelSequence::RelatedProcess() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcProcess>(); } +void Ifc4x3_add2::IfcRelSequence::setRelatedProcess(const ::Ifc4x3_add2::IfcProcess& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcLagTime Ifc4x3_add2::IfcRelSequence::TimeLag() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcLagTime{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcLagTime>(); } +void Ifc4x3_add2::IfcRelSequence::setTimeLag(const ::Ifc4x3_add2::IfcLagTime& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< ::Ifc4x3_add2::IfcSequenceEnum::Value > Ifc4x3_add2::IfcRelSequence::SequenceType() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSequenceEnum::FromString(get_attribute_value(7)); } +void Ifc4x3_add2::IfcRelSequence::setSequenceType(const std::optional< ::Ifc4x3_add2::IfcSequenceEnum::Value >& v) { if (v) {set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcSequenceEnum::Class(), (size_t) *v));} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcRelSequence::UserDefinedSequenceType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcRelSequence::setUserDefinedSequenceType(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcRelSequence::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[943]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelSequence::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[943]); } const IfcParse::entity& Ifc4x3_add2::IfcRelSequence::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[943]); } -Ifc4x3_add2::IfcRelSequence::IfcRelSequence(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelSequence::IfcRelSequence(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcProcess* v5_RelatingProcess, ::Ifc4x3_add2::IfcProcess* v6_RelatedProcess, ::Ifc4x3_add2::IfcLagTime* v7_TimeLag, boost::optional< ::Ifc4x3_add2::IfcSequenceEnum::Value > v8_SequenceType, boost::optional< std::string > v9_UserDefinedSequenceType) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingProcess ? v5_RelatingProcess->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatedProcess ? v6_RelatedProcess->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_TimeLag ? v7_TimeLag->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_SequenceType) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcSequenceEnum::Class(),(size_t)*v8_SequenceType))); } if (v9_UserDefinedSequenceType) {set_attribute_value(8, (*v9_UserDefinedSequenceType)); }; populate_derived(); } +// Ifc4x3_add2::IfcRelSequence::IfcRelSequence(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelSequence::IfcRelSequence(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcProcess v5_RelatingProcess, ::Ifc4x3_add2::IfcProcess v6_RelatedProcess, ::Ifc4x3_add2::IfcLagTime v7_TimeLag, std::optional< ::Ifc4x3_add2::IfcSequenceEnum::Value > v8_SequenceType, std::optional< std::string > v9_UserDefinedSequenceType) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingProcess));set_attribute_value(5, (v6_RelatedProcess)); if (v7_TimeLag) {set_attribute_value(6, (*v7_TimeLag)); } if (v8_SequenceType) {set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcSequenceEnum::Class(),(size_t)*v8_SequenceType))); } if (v9_UserDefinedSequenceType) {set_attribute_value(8, (*v9_UserDefinedSequenceType)); }; populate_derived(); } // Function implementations for IfcRelServicesBuildings -::Ifc4x3_add2::IfcSystem* Ifc4x3_add2::IfcRelServicesBuildings::RelatingSystem() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcSystem>(true); } -void Ifc4x3_add2::IfcRelServicesBuildings::setRelatingSystem(::Ifc4x3_add2::IfcSystem* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -aggregate_of< ::Ifc4x3_add2::IfcSpatialElement >::ptr Ifc4x3_add2::IfcRelServicesBuildings::RelatedBuildings() const { aggregate_of_instance::ptr es = get_attribute_value(5); return es->as< ::Ifc4x3_add2::IfcSpatialElement >(); } -void Ifc4x3_add2::IfcRelServicesBuildings::setRelatedBuildings(aggregate_of< ::Ifc4x3_add2::IfcSpatialElement >::ptr v) { set_attribute_value(5, (v)->generalize());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcSystem Ifc4x3_add2::IfcRelServicesBuildings::RelatingSystem() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcSystem>(); } +void Ifc4x3_add2::IfcRelServicesBuildings::setRelatingSystem(const ::Ifc4x3_add2::IfcSystem& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +std::vector< ::Ifc4x3_add2::IfcSpatialElement > Ifc4x3_add2::IfcRelServicesBuildings::RelatedBuildings() const { std::vector es = get_attribute_value(5); return cast_vector<::Ifc4x3_add2::IfcSpatialElement>(es); } +void Ifc4x3_add2::IfcRelServicesBuildings::setRelatedBuildings(const std::vector< ::Ifc4x3_add2::IfcSpatialElement >& v) { set_attribute_value(5, cast_vector(v));if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelServicesBuildings::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[944]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelServicesBuildings::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[944]); } const IfcParse::entity& Ifc4x3_add2::IfcRelServicesBuildings::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[944]); } -Ifc4x3_add2::IfcRelServicesBuildings::IfcRelServicesBuildings(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelServicesBuildings::IfcRelServicesBuildings(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSystem* v5_RelatingSystem, aggregate_of< ::Ifc4x3_add2::IfcSpatialElement >::ptr v6_RelatedBuildings) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingSystem ? v5_RelatingSystem->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, (v6_RelatedBuildings)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcRelServicesBuildings::IfcRelServicesBuildings(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelServicesBuildings::IfcRelServicesBuildings(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSystem v5_RelatingSystem, std::vector< ::Ifc4x3_add2::IfcSpatialElement > v6_RelatedBuildings) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingSystem));set_attribute_value(5, (v6_RelatedBuildings)->generalize());; populate_derived(); } // Function implementations for IfcRelSpaceBoundary -::Ifc4x3_add2::IfcSpaceBoundarySelect* Ifc4x3_add2::IfcRelSpaceBoundary::RelatingSpace() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcSpaceBoundarySelect>(true); } -void Ifc4x3_add2::IfcRelSpaceBoundary::setRelatingSpace(::Ifc4x3_add2::IfcSpaceBoundarySelect* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcElement* Ifc4x3_add2::IfcRelSpaceBoundary::RelatedBuildingElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcElement>(true); } -void Ifc4x3_add2::IfcRelSpaceBoundary::setRelatedBuildingElement(::Ifc4x3_add2::IfcElement* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcConnectionGeometry* Ifc4x3_add2::IfcRelSpaceBoundary::ConnectionGeometry() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcConnectionGeometry>(true); } -void Ifc4x3_add2::IfcRelSpaceBoundary::setConnectionGeometry(::Ifc4x3_add2::IfcConnectionGeometry* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcSpaceBoundarySelect Ifc4x3_add2::IfcRelSpaceBoundary::RelatingSpace() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcSpaceBoundarySelect>(); } +void Ifc4x3_add2::IfcRelSpaceBoundary::setRelatingSpace(const ::Ifc4x3_add2::IfcSpaceBoundarySelect& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcElement Ifc4x3_add2::IfcRelSpaceBoundary::RelatedBuildingElement() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcElement>(); } +void Ifc4x3_add2::IfcRelSpaceBoundary::setRelatedBuildingElement(const ::Ifc4x3_add2::IfcElement& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcConnectionGeometry Ifc4x3_add2::IfcRelSpaceBoundary::ConnectionGeometry() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcConnectionGeometry{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcConnectionGeometry>(); } +void Ifc4x3_add2::IfcRelSpaceBoundary::setConnectionGeometry(const ::Ifc4x3_add2::IfcConnectionGeometry& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value Ifc4x3_add2::IfcRelSpaceBoundary::PhysicalOrVirtualBoundary() const { return ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcRelSpaceBoundary::setPhysicalOrVirtualBoundary(::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } +void Ifc4x3_add2::IfcRelSpaceBoundary::setPhysicalOrVirtualBoundary(const ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value& v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value Ifc4x3_add2::IfcRelSpaceBoundary::InternalOrExternalBoundary() const { return ::Ifc4x3_add2::IfcInternalOrExternalEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcRelSpaceBoundary::setInternalOrExternalBoundary(::Ifc4x3_add2::IfcInternalOrExternalEnum::Value v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcInternalOrExternalEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcRelSpaceBoundary::setInternalOrExternalBoundary(const ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value& v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcInternalOrExternalEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcRelSpaceBoundary::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[945]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelSpaceBoundary::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[945]); } const IfcParse::entity& Ifc4x3_add2::IfcRelSpaceBoundary::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[945]); } -Ifc4x3_add2::IfcRelSpaceBoundary::IfcRelSpaceBoundary(IfcEntityInstanceData&& e) : IfcRelConnects(std::move(e)) { } -Ifc4x3_add2::IfcRelSpaceBoundary::IfcRelSpaceBoundary(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpaceBoundarySelect* v5_RelatingSpace, ::Ifc4x3_add2::IfcElement* v6_RelatedBuildingElement, ::Ifc4x3_add2::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary) : IfcRelConnects(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingSpace ? v5_RelatingSpace->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatedBuildingElement ? v6_RelatedBuildingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_ConnectionGeometry ? v7_ConnectionGeometry->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Class(),(size_t)v8_PhysicalOrVirtualBoundary)));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcInternalOrExternalEnum::Class(),(size_t)v9_InternalOrExternalBoundary)));; populate_derived(); } +// Ifc4x3_add2::IfcRelSpaceBoundary::IfcRelSpaceBoundary(const std::weak_ptr& e) : IfcRelConnects(e) { } +// Ifc4x3_add2::IfcRelSpaceBoundary::IfcRelSpaceBoundary(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpaceBoundarySelect v5_RelatingSpace, ::Ifc4x3_add2::IfcElement v6_RelatedBuildingElement, ::Ifc4x3_add2::IfcConnectionGeometry v7_ConnectionGeometry, ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary) : IfcRelConnects(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingSpace));set_attribute_value(5, (v6_RelatedBuildingElement)); if (v7_ConnectionGeometry) {set_attribute_value(6, (*v7_ConnectionGeometry)); }set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Class(),(size_t)v8_PhysicalOrVirtualBoundary)));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcInternalOrExternalEnum::Class(),(size_t)v9_InternalOrExternalBoundary)));; populate_derived(); } // Function implementations for IfcRelSpaceBoundary1stLevel -::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel* Ifc4x3_add2::IfcRelSpaceBoundary1stLevel::ParentBoundary() const { if(get_attribute_value(9).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(9)))->as<::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel>(true); } -void Ifc4x3_add2::IfcRelSpaceBoundary1stLevel::setParentBoundary(::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel* v) { set_attribute_value(9, v->as());if constexpr (false)unset_attribute_value(9); } +::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel Ifc4x3_add2::IfcRelSpaceBoundary1stLevel::ParentBoundary() const { if(get_attribute_value(9).isNull()) { return ::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel{}; } return ((express::Base)(get_attribute_value(9))).as<::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel>(); } +void Ifc4x3_add2::IfcRelSpaceBoundary1stLevel::setParentBoundary(const ::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel& v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } -::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel::list::ptr Ifc4x3_add2::IfcRelSpaceBoundary1stLevel::InnerBoundaries() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[946], 9)->as(); } +std::vector<::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel> Ifc4x3_add2::IfcRelSpaceBoundary1stLevel::InnerBoundaries() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[946], 9)); } -const IfcParse::entity& Ifc4x3_add2::IfcRelSpaceBoundary1stLevel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[946]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelSpaceBoundary1stLevel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[946]); } const IfcParse::entity& Ifc4x3_add2::IfcRelSpaceBoundary1stLevel::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[946]); } -Ifc4x3_add2::IfcRelSpaceBoundary1stLevel::IfcRelSpaceBoundary1stLevel(IfcEntityInstanceData&& e) : IfcRelSpaceBoundary(std::move(e)) { } -Ifc4x3_add2::IfcRelSpaceBoundary1stLevel::IfcRelSpaceBoundary1stLevel(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpaceBoundarySelect* v5_RelatingSpace, ::Ifc4x3_add2::IfcElement* v6_RelatedBuildingElement, ::Ifc4x3_add2::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary, ::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel* v10_ParentBoundary) : IfcRelSpaceBoundary(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingSpace ? v5_RelatingSpace->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatedBuildingElement ? v6_RelatedBuildingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_ConnectionGeometry ? v7_ConnectionGeometry->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Class(),(size_t)v8_PhysicalOrVirtualBoundary)));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcInternalOrExternalEnum::Class(),(size_t)v9_InternalOrExternalBoundary)));set_attribute_value(9, v10_ParentBoundary ? v10_ParentBoundary->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelSpaceBoundary1stLevel::IfcRelSpaceBoundary1stLevel(const std::weak_ptr& e) : IfcRelSpaceBoundary(e) { } +// Ifc4x3_add2::IfcRelSpaceBoundary1stLevel::IfcRelSpaceBoundary1stLevel(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpaceBoundarySelect v5_RelatingSpace, ::Ifc4x3_add2::IfcElement v6_RelatedBuildingElement, ::Ifc4x3_add2::IfcConnectionGeometry v7_ConnectionGeometry, ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary, ::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel v10_ParentBoundary) : IfcRelSpaceBoundary(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingSpace));set_attribute_value(5, (v6_RelatedBuildingElement)); if (v7_ConnectionGeometry) {set_attribute_value(6, (*v7_ConnectionGeometry)); }set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Class(),(size_t)v8_PhysicalOrVirtualBoundary)));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcInternalOrExternalEnum::Class(),(size_t)v9_InternalOrExternalBoundary))); if (v10_ParentBoundary) {set_attribute_value(9, (*v10_ParentBoundary)); }; populate_derived(); } // Function implementations for IfcRelSpaceBoundary2ndLevel -::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel* Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel::CorrespondingBoundary() const { if(get_attribute_value(10).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(10)))->as<::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel>(true); } -void Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel::setCorrespondingBoundary(::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel* v) { set_attribute_value(10, v->as());if constexpr (false)unset_attribute_value(10); } +::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel::CorrespondingBoundary() const { if(get_attribute_value(10).isNull()) { return ::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel{}; } return ((express::Base)(get_attribute_value(10))).as<::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel>(); } +void Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel::setCorrespondingBoundary(const ::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel& v) { set_attribute_value(10, v);if constexpr (false)unset_attribute_value(10); } -::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel::list::ptr Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel::Corresponds() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[947], 10)->as(); } +std::vector<::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel> Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel::Corresponds() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[947], 10)); } -const IfcParse::entity& Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[947]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[947]); } const IfcParse::entity& Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[947]); } -Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel::IfcRelSpaceBoundary2ndLevel(IfcEntityInstanceData&& e) : IfcRelSpaceBoundary1stLevel(std::move(e)) { } -Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel::IfcRelSpaceBoundary2ndLevel(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpaceBoundarySelect* v5_RelatingSpace, ::Ifc4x3_add2::IfcElement* v6_RelatedBuildingElement, ::Ifc4x3_add2::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary, ::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel* v10_ParentBoundary, ::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel* v11_CorrespondingBoundary) : IfcRelSpaceBoundary1stLevel(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingSpace ? v5_RelatingSpace->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatedBuildingElement ? v6_RelatedBuildingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_ConnectionGeometry ? v7_ConnectionGeometry->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Class(),(size_t)v8_PhysicalOrVirtualBoundary)));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcInternalOrExternalEnum::Class(),(size_t)v9_InternalOrExternalBoundary)));set_attribute_value(9, v10_ParentBoundary ? v10_ParentBoundary->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(10, v11_CorrespondingBoundary ? v11_CorrespondingBoundary->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel::IfcRelSpaceBoundary2ndLevel(const std::weak_ptr& e) : IfcRelSpaceBoundary1stLevel(e) { } +// Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel::IfcRelSpaceBoundary2ndLevel(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpaceBoundarySelect v5_RelatingSpace, ::Ifc4x3_add2::IfcElement v6_RelatedBuildingElement, ::Ifc4x3_add2::IfcConnectionGeometry v7_ConnectionGeometry, ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary, ::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel v10_ParentBoundary, ::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel v11_CorrespondingBoundary) : IfcRelSpaceBoundary1stLevel(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingSpace));set_attribute_value(5, (v6_RelatedBuildingElement)); if (v7_ConnectionGeometry) {set_attribute_value(6, (*v7_ConnectionGeometry)); }set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Class(),(size_t)v8_PhysicalOrVirtualBoundary)));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcInternalOrExternalEnum::Class(),(size_t)v9_InternalOrExternalBoundary))); if (v10_ParentBoundary) {set_attribute_value(9, (*v10_ParentBoundary)); } if (v11_CorrespondingBoundary) {set_attribute_value(10, (*v11_CorrespondingBoundary)); }; populate_derived(); } // Function implementations for IfcRelVoidsElement -::Ifc4x3_add2::IfcElement* Ifc4x3_add2::IfcRelVoidsElement::RelatingBuildingElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcElement>(true); } -void Ifc4x3_add2::IfcRelVoidsElement::setRelatingBuildingElement(::Ifc4x3_add2::IfcElement* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcFeatureElementSubtraction* Ifc4x3_add2::IfcRelVoidsElement::RelatedOpeningElement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcFeatureElementSubtraction>(true); } -void Ifc4x3_add2::IfcRelVoidsElement::setRelatedOpeningElement(::Ifc4x3_add2::IfcFeatureElementSubtraction* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcElement Ifc4x3_add2::IfcRelVoidsElement::RelatingBuildingElement() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcElement>(); } +void Ifc4x3_add2::IfcRelVoidsElement::setRelatingBuildingElement(const ::Ifc4x3_add2::IfcElement& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcFeatureElementSubtraction Ifc4x3_add2::IfcRelVoidsElement::RelatedOpeningElement() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcFeatureElementSubtraction>(); } +void Ifc4x3_add2::IfcRelVoidsElement::setRelatedOpeningElement(const ::Ifc4x3_add2::IfcFeatureElementSubtraction& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRelVoidsElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[948]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelVoidsElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[948]); } const IfcParse::entity& Ifc4x3_add2::IfcRelVoidsElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[948]); } -Ifc4x3_add2::IfcRelVoidsElement::IfcRelVoidsElement(IfcEntityInstanceData&& e) : IfcRelDecomposes(std::move(e)) { } -Ifc4x3_add2::IfcRelVoidsElement::IfcRelVoidsElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement* v5_RelatingBuildingElement, ::Ifc4x3_add2::IfcFeatureElementSubtraction* v6_RelatedOpeningElement) : IfcRelDecomposes(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, v5_RelatingBuildingElement ? v5_RelatingBuildingElement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_RelatedOpeningElement ? v6_RelatedOpeningElement->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRelVoidsElement::IfcRelVoidsElement(const std::weak_ptr& e) : IfcRelDecomposes(e) { } +// Ifc4x3_add2::IfcRelVoidsElement::IfcRelVoidsElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement v5_RelatingBuildingElement, ::Ifc4x3_add2::IfcFeatureElementSubtraction v6_RelatedOpeningElement) : IfcRelDecomposes(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (v5_RelatingBuildingElement));set_attribute_value(5, (v6_RelatedOpeningElement));; populate_derived(); } // Function implementations for IfcRelationship -const IfcParse::entity& Ifc4x3_add2::IfcRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[916]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[916]); } const IfcParse::entity& Ifc4x3_add2::IfcRelationship::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[916]); } -Ifc4x3_add2::IfcRelationship::IfcRelationship(IfcEntityInstanceData&& e) : IfcRoot(std::move(e)) { } -Ifc4x3_add2::IfcRelationship::IfcRelationship(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRoot(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcRelationship::IfcRelationship(const std::weak_ptr& e) : IfcRoot(e) { } +// Ifc4x3_add2::IfcRelationship::IfcRelationship(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description) : IfcRoot(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } // Function implementations for IfcReparametrisedCompositeCurveSegment double Ifc4x3_add2::IfcReparametrisedCompositeCurveSegment::ParamLength() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcReparametrisedCompositeCurveSegment::setParamLength(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcReparametrisedCompositeCurveSegment::setParamLength(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcReparametrisedCompositeCurveSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[949]); } +// const IfcParse::entity& Ifc4x3_add2::IfcReparametrisedCompositeCurveSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[949]); } const IfcParse::entity& Ifc4x3_add2::IfcReparametrisedCompositeCurveSegment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[949]); } -Ifc4x3_add2::IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCurveSegment(IfcEntityInstanceData&& e) : IfcCompositeCurveSegment(std::move(e)) { } -Ifc4x3_add2::IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCurveSegment(::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition, bool v2_SameSense, ::Ifc4x3_add2::IfcCurve* v3_ParentCurve, double v4_ParamLength) : IfcCompositeCurveSegment(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcTransitionCode::Class(),(size_t)v1_Transition)));set_attribute_value(1, (v2_SameSense));set_attribute_value(2, v3_ParentCurve ? v3_ParentCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_ParamLength));; populate_derived(); } +// Ifc4x3_add2::IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCurveSegment(const std::weak_ptr& e) : IfcCompositeCurveSegment(e) { } +// Ifc4x3_add2::IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCurveSegment(::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition, bool v2_SameSense, ::Ifc4x3_add2::IfcCurve v3_ParentCurve, double v4_ParamLength) : IfcCompositeCurveSegment(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcTransitionCode::Class(),(size_t)v1_Transition)));set_attribute_value(1, (v2_SameSense));set_attribute_value(2, (v3_ParentCurve));set_attribute_value(3, (v4_ParamLength));; populate_derived(); } // Function implementations for IfcRepresentation -::Ifc4x3_add2::IfcRepresentationContext* Ifc4x3_add2::IfcRepresentation::ContextOfItems() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcRepresentationContext>(true); } -void Ifc4x3_add2::IfcRepresentation::setContextOfItems(::Ifc4x3_add2::IfcRepresentationContext* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -boost::optional< std::string > Ifc4x3_add2::IfcRepresentation::RepresentationIdentifier() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::string > Ifc4x3_add2::IfcRepresentation::RepresentationType() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr Ifc4x3_add2::IfcRepresentation::Items() const { aggregate_of_instance::ptr es = get_attribute_value(3); return es->as< ::Ifc4x3_add2::IfcRepresentationItem >(); } -void Ifc4x3_add2::IfcRepresentation::setItems(aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr v) { set_attribute_value(3, (v)->generalize());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcRepresentationContext Ifc4x3_add2::IfcRepresentation::ContextOfItems() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcRepresentationContext>(); } +void Ifc4x3_add2::IfcRepresentation::setContextOfItems(const ::Ifc4x3_add2::IfcRepresentationContext& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< std::string > Ifc4x3_add2::IfcRepresentation::RepresentationIdentifier() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcRepresentation::setRepresentationIdentifier(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcRepresentation::RepresentationType() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcRepresentation::setRepresentationType(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::vector< ::Ifc4x3_add2::IfcRepresentationItem > Ifc4x3_add2::IfcRepresentation::Items() const { std::vector es = get_attribute_value(3); return cast_vector<::Ifc4x3_add2::IfcRepresentationItem>(es); } +void Ifc4x3_add2::IfcRepresentation::setItems(const std::vector< ::Ifc4x3_add2::IfcRepresentationItem >& v) { set_attribute_value(3, cast_vector(v));if constexpr (false)unset_attribute_value(3); } -::Ifc4x3_add2::IfcRepresentationMap::list::ptr Ifc4x3_add2::IfcRepresentation::RepresentationMap() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[953], 1)->as(); } -::Ifc4x3_add2::IfcPresentationLayerAssignment::list::ptr Ifc4x3_add2::IfcRepresentation::LayerAssignments() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[791], 2)->as(); } -::Ifc4x3_add2::IfcProductRepresentation::list::ptr Ifc4x3_add2::IfcRepresentation::OfProductRepresentation() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[802], 2)->as(); } +std::vector<::Ifc4x3_add2::IfcRepresentationMap> Ifc4x3_add2::IfcRepresentation::RepresentationMap() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[953], 1)); } +std::vector<::Ifc4x3_add2::IfcPresentationLayerAssignment> Ifc4x3_add2::IfcRepresentation::LayerAssignments() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[791], 2)); } +std::vector<::Ifc4x3_add2::IfcProductRepresentation> Ifc4x3_add2::IfcRepresentation::OfProductRepresentation() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[802], 2)); } -const IfcParse::entity& Ifc4x3_add2::IfcRepresentation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[950]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRepresentation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[950]); } const IfcParse::entity& Ifc4x3_add2::IfcRepresentation::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[950]); } -Ifc4x3_add2::IfcRepresentation::IfcRepresentation(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcRepresentation::IfcRepresentation(::Ifc4x3_add2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr v4_Items) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_ContextOfItems ? v1_ContextOfItems->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_RepresentationIdentifier) {set_attribute_value(1, (*v2_RepresentationIdentifier)); } if (v3_RepresentationType) {set_attribute_value(2, (*v3_RepresentationType)); }set_attribute_value(3, (v4_Items)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcRepresentation::IfcRepresentation(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcRepresentation::IfcRepresentation(::Ifc4x3_add2::IfcRepresentationContext v1_ContextOfItems, std::optional< std::string > v2_RepresentationIdentifier, std::optional< std::string > v3_RepresentationType, std::vector< ::Ifc4x3_add2::IfcRepresentationItem > v4_Items) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_ContextOfItems)); if (v2_RepresentationIdentifier) {set_attribute_value(1, (*v2_RepresentationIdentifier)); } if (v3_RepresentationType) {set_attribute_value(2, (*v3_RepresentationType)); }set_attribute_value(3, (v4_Items)->generalize());; populate_derived(); } // Function implementations for IfcRepresentationContext -boost::optional< std::string > Ifc4x3_add2::IfcRepresentationContext::ContextIdentifier() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcRepresentationContext::ContextType() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcRepresentationContext::ContextIdentifier() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcRepresentationContext::setContextIdentifier(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcRepresentationContext::ContextType() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcRepresentationContext::setContextType(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -::Ifc4x3_add2::IfcRepresentation::list::ptr Ifc4x3_add2::IfcRepresentationContext::RepresentationsInContext() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[950], 0)->as(); } +std::vector<::Ifc4x3_add2::IfcRepresentation> Ifc4x3_add2::IfcRepresentationContext::RepresentationsInContext() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[950], 0)); } -const IfcParse::entity& Ifc4x3_add2::IfcRepresentationContext::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[951]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRepresentationContext::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[951]); } const IfcParse::entity& Ifc4x3_add2::IfcRepresentationContext::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[951]); } -Ifc4x3_add2::IfcRepresentationContext::IfcRepresentationContext(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcRepresentationContext::IfcRepresentationContext(boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { if (v1_ContextIdentifier) {set_attribute_value(0, (*v1_ContextIdentifier)); } if (v2_ContextType) {set_attribute_value(1, (*v2_ContextType)); }; populate_derived(); } +// Ifc4x3_add2::IfcRepresentationContext::IfcRepresentationContext(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcRepresentationContext::IfcRepresentationContext(std::optional< std::string > v1_ContextIdentifier, std::optional< std::string > v2_ContextType) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { if (v1_ContextIdentifier) {set_attribute_value(0, (*v1_ContextIdentifier)); } if (v2_ContextType) {set_attribute_value(1, (*v2_ContextType)); }; populate_derived(); } // Function implementations for IfcRepresentationItem -::Ifc4x3_add2::IfcPresentationLayerAssignment::list::ptr Ifc4x3_add2::IfcRepresentationItem::LayerAssignment() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[791], 2)->as(); } -::Ifc4x3_add2::IfcStyledItem::list::ptr Ifc4x3_add2::IfcRepresentationItem::StyledByItem() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[1117], 0)->as(); } +std::vector<::Ifc4x3_add2::IfcPresentationLayerAssignment> Ifc4x3_add2::IfcRepresentationItem::LayerAssignment() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[791], 2)); } +std::vector<::Ifc4x3_add2::IfcStyledItem> Ifc4x3_add2::IfcRepresentationItem::StyledByItem() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[1117], 0)); } -const IfcParse::entity& Ifc4x3_add2::IfcRepresentationItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[952]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRepresentationItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[952]); } const IfcParse::entity& Ifc4x3_add2::IfcRepresentationItem::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[952]); } -Ifc4x3_add2::IfcRepresentationItem::IfcRepresentationItem(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcRepresentationItem::IfcRepresentationItem() : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcRepresentationItem::IfcRepresentationItem(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcRepresentationItem::IfcRepresentationItem() : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcRepresentationMap -::Ifc4x3_add2::IfcAxis2Placement* Ifc4x3_add2::IfcRepresentationMap::MappingOrigin() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcAxis2Placement>(true); } -void Ifc4x3_add2::IfcRepresentationMap::setMappingOrigin(::Ifc4x3_add2::IfcAxis2Placement* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcRepresentation* Ifc4x3_add2::IfcRepresentationMap::MappedRepresentation() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcRepresentation>(true); } -void Ifc4x3_add2::IfcRepresentationMap::setMappedRepresentation(::Ifc4x3_add2::IfcRepresentation* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcAxis2Placement Ifc4x3_add2::IfcRepresentationMap::MappingOrigin() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcAxis2Placement>(); } +void Ifc4x3_add2::IfcRepresentationMap::setMappingOrigin(const ::Ifc4x3_add2::IfcAxis2Placement& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcRepresentation Ifc4x3_add2::IfcRepresentationMap::MappedRepresentation() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcRepresentation>(); } +void Ifc4x3_add2::IfcRepresentationMap::setMappedRepresentation(const ::Ifc4x3_add2::IfcRepresentation& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcShapeAspect::list::ptr Ifc4x3_add2::IfcRepresentationMap::HasShapeAspects() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[1006], 4)->as(); } -::Ifc4x3_add2::IfcMappedItem::list::ptr Ifc4x3_add2::IfcRepresentationMap::MapUsage() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[628], 0)->as(); } +std::vector<::Ifc4x3_add2::IfcShapeAspect> Ifc4x3_add2::IfcRepresentationMap::HasShapeAspects() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[1006], 4)); } +std::vector<::Ifc4x3_add2::IfcMappedItem> Ifc4x3_add2::IfcRepresentationMap::MapUsage() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[628], 0)); } -const IfcParse::entity& Ifc4x3_add2::IfcRepresentationMap::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[953]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRepresentationMap::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[953]); } const IfcParse::entity& Ifc4x3_add2::IfcRepresentationMap::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[953]); } -Ifc4x3_add2::IfcRepresentationMap::IfcRepresentationMap(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcRepresentationMap::IfcRepresentationMap(::Ifc4x3_add2::IfcAxis2Placement* v1_MappingOrigin, ::Ifc4x3_add2::IfcRepresentation* v2_MappedRepresentation) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_MappingOrigin ? v1_MappingOrigin->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_MappedRepresentation ? v2_MappedRepresentation->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRepresentationMap::IfcRepresentationMap(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcRepresentationMap::IfcRepresentationMap(::Ifc4x3_add2::IfcAxis2Placement v1_MappingOrigin, ::Ifc4x3_add2::IfcRepresentation v2_MappedRepresentation) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_MappingOrigin));set_attribute_value(1, (v2_MappedRepresentation));; populate_derived(); } // Function implementations for IfcResource -boost::optional< std::string > Ifc4x3_add2::IfcResource::Identification() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcResource::setIdentification(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< std::string > Ifc4x3_add2::IfcResource::LongDescription() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcResource::setLongDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcResource::Identification() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcResource::setIdentification(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcResource::LongDescription() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcResource::setLongDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -::Ifc4x3_add2::IfcRelAssignsToResource::list::ptr Ifc4x3_add2::IfcResource::ResourceOf() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[907], 6)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssignsToResource> Ifc4x3_add2::IfcResource::ResourceOf() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[907], 6)); } -const IfcParse::entity& Ifc4x3_add2::IfcResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[954]); } +// const IfcParse::entity& Ifc4x3_add2::IfcResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[954]); } const IfcParse::entity& Ifc4x3_add2::IfcResource::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[954]); } -Ifc4x3_add2::IfcResource::IfcResource(IfcEntityInstanceData&& e) : IfcObject(std::move(e)) { } -Ifc4x3_add2::IfcResource::IfcResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription) : IfcObject(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); }; populate_derived(); } +// Ifc4x3_add2::IfcResource::IfcResource(const std::weak_ptr& e) : IfcObject(e) { } +// Ifc4x3_add2::IfcResource::IfcResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription) : IfcObject(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); }; populate_derived(); } // Function implementations for IfcResourceApprovalRelationship -aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr Ifc4x3_add2::IfcResourceApprovalRelationship::RelatedResourceObjects() const { aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcResourceObjectSelect >(); } -void Ifc4x3_add2::IfcResourceApprovalRelationship::setRelatedResourceObjects(aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr v) { set_attribute_value(2, (v)->generalize());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcApproval* Ifc4x3_add2::IfcResourceApprovalRelationship::RelatingApproval() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcApproval>(true); } -void Ifc4x3_add2::IfcResourceApprovalRelationship::setRelatingApproval(::Ifc4x3_add2::IfcApproval* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect > Ifc4x3_add2::IfcResourceApprovalRelationship::RelatedResourceObjects() const { std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcResourceObjectSelect>(es); } +void Ifc4x3_add2::IfcResourceApprovalRelationship::setRelatedResourceObjects(const std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect >& v) { set_attribute_value(2, cast_vector(v));if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcApproval Ifc4x3_add2::IfcResourceApprovalRelationship::RelatingApproval() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcApproval>(); } +void Ifc4x3_add2::IfcResourceApprovalRelationship::setRelatingApproval(const ::Ifc4x3_add2::IfcApproval& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcResourceApprovalRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[955]); } +// const IfcParse::entity& Ifc4x3_add2::IfcResourceApprovalRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[955]); } const IfcParse::entity& Ifc4x3_add2::IfcResourceApprovalRelationship::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[955]); } -Ifc4x3_add2::IfcResourceApprovalRelationship::IfcResourceApprovalRelationship(IfcEntityInstanceData&& e) : IfcResourceLevelRelationship(std::move(e)) { } -Ifc4x3_add2::IfcResourceApprovalRelationship::IfcResourceApprovalRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr v3_RelatedResourceObjects, ::Ifc4x3_add2::IfcApproval* v4_RelatingApproval) : IfcResourceLevelRelationship(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_RelatedResourceObjects)->generalize());set_attribute_value(3, v4_RelatingApproval ? v4_RelatingApproval->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcResourceApprovalRelationship::IfcResourceApprovalRelationship(const std::weak_ptr& e) : IfcResourceLevelRelationship(e) { } +// Ifc4x3_add2::IfcResourceApprovalRelationship::IfcResourceApprovalRelationship(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect > v3_RelatedResourceObjects, ::Ifc4x3_add2::IfcApproval v4_RelatingApproval) : IfcResourceLevelRelationship(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_RelatedResourceObjects)->generalize());set_attribute_value(3, (v4_RelatingApproval));; populate_derived(); } // Function implementations for IfcResourceConstraintRelationship -::Ifc4x3_add2::IfcConstraint* Ifc4x3_add2::IfcResourceConstraintRelationship::RelatingConstraint() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcConstraint>(true); } -void Ifc4x3_add2::IfcResourceConstraintRelationship::setRelatingConstraint(::Ifc4x3_add2::IfcConstraint* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr Ifc4x3_add2::IfcResourceConstraintRelationship::RelatedResourceObjects() const { aggregate_of_instance::ptr es = get_attribute_value(3); return es->as< ::Ifc4x3_add2::IfcResourceObjectSelect >(); } -void Ifc4x3_add2::IfcResourceConstraintRelationship::setRelatedResourceObjects(aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr v) { set_attribute_value(3, (v)->generalize());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcConstraint Ifc4x3_add2::IfcResourceConstraintRelationship::RelatingConstraint() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcConstraint>(); } +void Ifc4x3_add2::IfcResourceConstraintRelationship::setRelatingConstraint(const ::Ifc4x3_add2::IfcConstraint& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect > Ifc4x3_add2::IfcResourceConstraintRelationship::RelatedResourceObjects() const { std::vector es = get_attribute_value(3); return cast_vector<::Ifc4x3_add2::IfcResourceObjectSelect>(es); } +void Ifc4x3_add2::IfcResourceConstraintRelationship::setRelatedResourceObjects(const std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect >& v) { set_attribute_value(3, cast_vector(v));if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcResourceConstraintRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[956]); } +// const IfcParse::entity& Ifc4x3_add2::IfcResourceConstraintRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[956]); } const IfcParse::entity& Ifc4x3_add2::IfcResourceConstraintRelationship::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[956]); } -Ifc4x3_add2::IfcResourceConstraintRelationship::IfcResourceConstraintRelationship(IfcEntityInstanceData&& e) : IfcResourceLevelRelationship(std::move(e)) { } -Ifc4x3_add2::IfcResourceConstraintRelationship::IfcResourceConstraintRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcConstraint* v3_RelatingConstraint, aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr v4_RelatedResourceObjects) : IfcResourceLevelRelationship(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, v3_RelatingConstraint ? v3_RelatingConstraint->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_RelatedResourceObjects)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcResourceConstraintRelationship::IfcResourceConstraintRelationship(const std::weak_ptr& e) : IfcResourceLevelRelationship(e) { } +// Ifc4x3_add2::IfcResourceConstraintRelationship::IfcResourceConstraintRelationship(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcConstraint v3_RelatingConstraint, std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect > v4_RelatedResourceObjects) : IfcResourceLevelRelationship(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_RelatingConstraint));set_attribute_value(3, (v4_RelatedResourceObjects)->generalize());; populate_derived(); } // Function implementations for IfcResourceLevelRelationship -boost::optional< std::string > Ifc4x3_add2::IfcResourceLevelRelationship::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcResourceLevelRelationship::Description() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcResourceLevelRelationship::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcResourceLevelRelationship::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcResourceLevelRelationship::Description() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcResourceLevelRelationship::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -const IfcParse::entity& Ifc4x3_add2::IfcResourceLevelRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[957]); } +// const IfcParse::entity& Ifc4x3_add2::IfcResourceLevelRelationship::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[957]); } const IfcParse::entity& Ifc4x3_add2::IfcResourceLevelRelationship::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[957]); } -Ifc4x3_add2::IfcResourceLevelRelationship::IfcResourceLevelRelationship(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcResourceLevelRelationship::IfcResourceLevelRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcResourceLevelRelationship::IfcResourceLevelRelationship(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcResourceLevelRelationship::IfcResourceLevelRelationship(std::optional< std::string > v1_Name, std::optional< std::string > v2_Description) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); }; populate_derived(); } // Function implementations for IfcResourceTime -boost::optional< std::string > Ifc4x3_add2::IfcResourceTime::ScheduleWork() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< double > Ifc4x3_add2::IfcResourceTime::ScheduleUsage() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcResourceTime::ScheduleStart() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< std::string > Ifc4x3_add2::IfcResourceTime::ScheduleFinish() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< std::string > Ifc4x3_add2::IfcResourceTime::ScheduleContour() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< std::string > Ifc4x3_add2::IfcResourceTime::LevelingDelay() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -boost::optional< bool > Ifc4x3_add2::IfcResourceTime::IsOverAllocated() const { if(get_attribute_value(9).isNull()) { return boost::none; } bool v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -boost::optional< std::string > Ifc4x3_add2::IfcResourceTime::StatusTime() const { if(get_attribute_value(10).isNull()) { return boost::none; } std::string v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< std::string > Ifc4x3_add2::IfcResourceTime::ActualWork() const { if(get_attribute_value(11).isNull()) { return boost::none; } std::string v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcResourceTime::setActualWork(boost::optional< std::string > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -boost::optional< double > Ifc4x3_add2::IfcResourceTime::ActualUsage() const { if(get_attribute_value(12).isNull()) { return boost::none; } double v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcResourceTime::setActualUsage(boost::optional< double > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -boost::optional< std::string > Ifc4x3_add2::IfcResourceTime::ActualStart() const { if(get_attribute_value(13).isNull()) { return boost::none; } std::string v = get_attribute_value(13); return v; } -void Ifc4x3_add2::IfcResourceTime::setActualStart(boost::optional< std::string > v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } -boost::optional< std::string > Ifc4x3_add2::IfcResourceTime::ActualFinish() const { if(get_attribute_value(14).isNull()) { return boost::none; } std::string v = get_attribute_value(14); return v; } -void Ifc4x3_add2::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } -boost::optional< std::string > Ifc4x3_add2::IfcResourceTime::RemainingWork() const { if(get_attribute_value(15).isNull()) { return boost::none; } std::string v = get_attribute_value(15); return v; } -void Ifc4x3_add2::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { if (v) {set_attribute_value(15, *v);} else {unset_attribute_value(15);} } -boost::optional< double > Ifc4x3_add2::IfcResourceTime::RemainingUsage() const { if(get_attribute_value(16).isNull()) { return boost::none; } double v = get_attribute_value(16); return v; } -void Ifc4x3_add2::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { if (v) {set_attribute_value(16, *v);} else {unset_attribute_value(16);} } -boost::optional< double > Ifc4x3_add2::IfcResourceTime::Completion() const { if(get_attribute_value(17).isNull()) { return boost::none; } double v = get_attribute_value(17); return v; } -void Ifc4x3_add2::IfcResourceTime::setCompletion(boost::optional< double > v) { if (v) {set_attribute_value(17, *v);} else {unset_attribute_value(17);} } +std::optional< std::string > Ifc4x3_add2::IfcResourceTime::ScheduleWork() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcResourceTime::setScheduleWork(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< double > Ifc4x3_add2::IfcResourceTime::ScheduleUsage() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcResourceTime::setScheduleUsage(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcResourceTime::ScheduleStart() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcResourceTime::setScheduleStart(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcResourceTime::ScheduleFinish() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcResourceTime::setScheduleFinish(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcResourceTime::ScheduleContour() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcResourceTime::setScheduleContour(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcResourceTime::LevelingDelay() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcResourceTime::setLevelingDelay(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< bool > Ifc4x3_add2::IfcResourceTime::IsOverAllocated() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } bool v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcResourceTime::setIsOverAllocated(const std::optional< bool >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< std::string > Ifc4x3_add2::IfcResourceTime::StatusTime() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } std::string v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcResourceTime::setStatusTime(const std::optional< std::string >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< std::string > Ifc4x3_add2::IfcResourceTime::ActualWork() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } std::string v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcResourceTime::setActualWork(const std::optional< std::string >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +std::optional< double > Ifc4x3_add2::IfcResourceTime::ActualUsage() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } double v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcResourceTime::setActualUsage(const std::optional< double >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +std::optional< std::string > Ifc4x3_add2::IfcResourceTime::ActualStart() const { if(get_attribute_value(13).isNull()) { return std::nullopt; } std::string v = get_attribute_value(13); return v; } +void Ifc4x3_add2::IfcResourceTime::setActualStart(const std::optional< std::string >& v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } +std::optional< std::string > Ifc4x3_add2::IfcResourceTime::ActualFinish() const { if(get_attribute_value(14).isNull()) { return std::nullopt; } std::string v = get_attribute_value(14); return v; } +void Ifc4x3_add2::IfcResourceTime::setActualFinish(const std::optional< std::string >& v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } +std::optional< std::string > Ifc4x3_add2::IfcResourceTime::RemainingWork() const { if(get_attribute_value(15).isNull()) { return std::nullopt; } std::string v = get_attribute_value(15); return v; } +void Ifc4x3_add2::IfcResourceTime::setRemainingWork(const std::optional< std::string >& v) { if (v) {set_attribute_value(15, *v);} else {unset_attribute_value(15);} } +std::optional< double > Ifc4x3_add2::IfcResourceTime::RemainingUsage() const { if(get_attribute_value(16).isNull()) { return std::nullopt; } double v = get_attribute_value(16); return v; } +void Ifc4x3_add2::IfcResourceTime::setRemainingUsage(const std::optional< double >& v) { if (v) {set_attribute_value(16, *v);} else {unset_attribute_value(16);} } +std::optional< double > Ifc4x3_add2::IfcResourceTime::Completion() const { if(get_attribute_value(17).isNull()) { return std::nullopt; } double v = get_attribute_value(17); return v; } +void Ifc4x3_add2::IfcResourceTime::setCompletion(const std::optional< double >& v) { if (v) {set_attribute_value(17, *v);} else {unset_attribute_value(17);} } -const IfcParse::entity& Ifc4x3_add2::IfcResourceTime::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[960]); } +// const IfcParse::entity& Ifc4x3_add2::IfcResourceTime::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[960]); } const IfcParse::entity& Ifc4x3_add2::IfcResourceTime::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[960]); } -Ifc4x3_add2::IfcResourceTime::IfcResourceTime(IfcEntityInstanceData&& e) : IfcSchedulingTime(std::move(e)) { } -Ifc4x3_add2::IfcResourceTime::IfcResourceTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< std::string > v4_ScheduleWork, boost::optional< double > v5_ScheduleUsage, boost::optional< std::string > v6_ScheduleStart, boost::optional< std::string > v7_ScheduleFinish, boost::optional< std::string > v8_ScheduleContour, boost::optional< std::string > v9_LevelingDelay, boost::optional< bool > v10_IsOverAllocated, boost::optional< std::string > v11_StatusTime, boost::optional< std::string > v12_ActualWork, boost::optional< double > v13_ActualUsage, boost::optional< std::string > v14_ActualStart, boost::optional< std::string > v15_ActualFinish, boost::optional< std::string > v16_RemainingWork, boost::optional< double > v17_RemainingUsage, boost::optional< double > v18_Completion) : IfcSchedulingTime(IfcEntityInstanceData(in_memory_attribute_storage(18))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DataOrigin) {set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)*v2_DataOrigin))); } if (v3_UserDefinedDataOrigin) {set_attribute_value(2, (*v3_UserDefinedDataOrigin)); } if (v4_ScheduleWork) {set_attribute_value(3, (*v4_ScheduleWork)); } if (v5_ScheduleUsage) {set_attribute_value(4, (*v5_ScheduleUsage)); } if (v6_ScheduleStart) {set_attribute_value(5, (*v6_ScheduleStart)); } if (v7_ScheduleFinish) {set_attribute_value(6, (*v7_ScheduleFinish)); } if (v8_ScheduleContour) {set_attribute_value(7, (*v8_ScheduleContour)); } if (v9_LevelingDelay) {set_attribute_value(8, (*v9_LevelingDelay)); } if (v10_IsOverAllocated) {set_attribute_value(9, (*v10_IsOverAllocated)); } if (v11_StatusTime) {set_attribute_value(10, (*v11_StatusTime)); } if (v12_ActualWork) {set_attribute_value(11, (*v12_ActualWork)); } if (v13_ActualUsage) {set_attribute_value(12, (*v13_ActualUsage)); } if (v14_ActualStart) {set_attribute_value(13, (*v14_ActualStart)); } if (v15_ActualFinish) {set_attribute_value(14, (*v15_ActualFinish)); } if (v16_RemainingWork) {set_attribute_value(15, (*v16_RemainingWork)); } if (v17_RemainingUsage) {set_attribute_value(16, (*v17_RemainingUsage)); } if (v18_Completion) {set_attribute_value(17, (*v18_Completion)); }; populate_derived(); } +// Ifc4x3_add2::IfcResourceTime::IfcResourceTime(const std::weak_ptr& e) : IfcSchedulingTime(e) { } +// Ifc4x3_add2::IfcResourceTime::IfcResourceTime(std::optional< std::string > v1_Name, std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, std::optional< std::string > v3_UserDefinedDataOrigin, std::optional< std::string > v4_ScheduleWork, std::optional< double > v5_ScheduleUsage, std::optional< std::string > v6_ScheduleStart, std::optional< std::string > v7_ScheduleFinish, std::optional< std::string > v8_ScheduleContour, std::optional< std::string > v9_LevelingDelay, std::optional< bool > v10_IsOverAllocated, std::optional< std::string > v11_StatusTime, std::optional< std::string > v12_ActualWork, std::optional< double > v13_ActualUsage, std::optional< std::string > v14_ActualStart, std::optional< std::string > v15_ActualFinish, std::optional< std::string > v16_RemainingWork, std::optional< double > v17_RemainingUsage, std::optional< double > v18_Completion) : IfcSchedulingTime(const std::weak_ptr&(in_memory_attribute_storage(18))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DataOrigin) {set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)*v2_DataOrigin))); } if (v3_UserDefinedDataOrigin) {set_attribute_value(2, (*v3_UserDefinedDataOrigin)); } if (v4_ScheduleWork) {set_attribute_value(3, (*v4_ScheduleWork)); } if (v5_ScheduleUsage) {set_attribute_value(4, (*v5_ScheduleUsage)); } if (v6_ScheduleStart) {set_attribute_value(5, (*v6_ScheduleStart)); } if (v7_ScheduleFinish) {set_attribute_value(6, (*v7_ScheduleFinish)); } if (v8_ScheduleContour) {set_attribute_value(7, (*v8_ScheduleContour)); } if (v9_LevelingDelay) {set_attribute_value(8, (*v9_LevelingDelay)); } if (v10_IsOverAllocated) {set_attribute_value(9, (*v10_IsOverAllocated)); } if (v11_StatusTime) {set_attribute_value(10, (*v11_StatusTime)); } if (v12_ActualWork) {set_attribute_value(11, (*v12_ActualWork)); } if (v13_ActualUsage) {set_attribute_value(12, (*v13_ActualUsage)); } if (v14_ActualStart) {set_attribute_value(13, (*v14_ActualStart)); } if (v15_ActualFinish) {set_attribute_value(14, (*v15_ActualFinish)); } if (v16_RemainingWork) {set_attribute_value(15, (*v16_RemainingWork)); } if (v17_RemainingUsage) {set_attribute_value(16, (*v17_RemainingUsage)); } if (v18_Completion) {set_attribute_value(17, (*v18_Completion)); }; populate_derived(); } // Function implementations for IfcRevolvedAreaSolid -::Ifc4x3_add2::IfcAxis1Placement* Ifc4x3_add2::IfcRevolvedAreaSolid::Axis() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcAxis1Placement>(true); } -void Ifc4x3_add2::IfcRevolvedAreaSolid::setAxis(::Ifc4x3_add2::IfcAxis1Placement* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcAxis1Placement Ifc4x3_add2::IfcRevolvedAreaSolid::Axis() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcAxis1Placement>(); } +void Ifc4x3_add2::IfcRevolvedAreaSolid::setAxis(const ::Ifc4x3_add2::IfcAxis1Placement& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } double Ifc4x3_add2::IfcRevolvedAreaSolid::Angle() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcRevolvedAreaSolid::setAngle(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcRevolvedAreaSolid::setAngle(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcRevolvedAreaSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[961]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRevolvedAreaSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[961]); } const IfcParse::entity& Ifc4x3_add2::IfcRevolvedAreaSolid::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[961]); } -Ifc4x3_add2::IfcRevolvedAreaSolid::IfcRevolvedAreaSolid(IfcEntityInstanceData&& e) : IfcSweptAreaSolid(std::move(e)) { } -Ifc4x3_add2::IfcRevolvedAreaSolid::IfcRevolvedAreaSolid(::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcAxis1Placement* v3_Axis, double v4_Angle) : IfcSweptAreaSolid(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_SweptArea ? v1_SweptArea->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Position ? v2_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_Axis ? v3_Axis->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_Angle));; populate_derived(); } +// Ifc4x3_add2::IfcRevolvedAreaSolid::IfcRevolvedAreaSolid(const std::weak_ptr& e) : IfcSweptAreaSolid(e) { } +// Ifc4x3_add2::IfcRevolvedAreaSolid::IfcRevolvedAreaSolid(::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcAxis1Placement v3_Axis, double v4_Angle) : IfcSweptAreaSolid(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_SweptArea)); if (v2_Position) {set_attribute_value(1, (*v2_Position)); }set_attribute_value(2, (v3_Axis));set_attribute_value(3, (v4_Angle));; populate_derived(); } // Function implementations for IfcRevolvedAreaSolidTapered -::Ifc4x3_add2::IfcProfileDef* Ifc4x3_add2::IfcRevolvedAreaSolidTapered::EndSweptArea() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcProfileDef>(true); } -void Ifc4x3_add2::IfcRevolvedAreaSolidTapered::setEndSweptArea(::Ifc4x3_add2::IfcProfileDef* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcProfileDef Ifc4x3_add2::IfcRevolvedAreaSolidTapered::EndSweptArea() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcProfileDef>(); } +void Ifc4x3_add2::IfcRevolvedAreaSolidTapered::setEndSweptArea(const ::Ifc4x3_add2::IfcProfileDef& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcRevolvedAreaSolidTapered::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[962]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRevolvedAreaSolidTapered::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[962]); } const IfcParse::entity& Ifc4x3_add2::IfcRevolvedAreaSolidTapered::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[962]); } -Ifc4x3_add2::IfcRevolvedAreaSolidTapered::IfcRevolvedAreaSolidTapered(IfcEntityInstanceData&& e) : IfcRevolvedAreaSolid(std::move(e)) { } -Ifc4x3_add2::IfcRevolvedAreaSolidTapered::IfcRevolvedAreaSolidTapered(::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcAxis1Placement* v3_Axis, double v4_Angle, ::Ifc4x3_add2::IfcProfileDef* v5_EndSweptArea) : IfcRevolvedAreaSolid(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_SweptArea ? v1_SweptArea->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Position ? v2_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_Axis ? v3_Axis->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_Angle));set_attribute_value(4, v5_EndSweptArea ? v5_EndSweptArea->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcRevolvedAreaSolidTapered::IfcRevolvedAreaSolidTapered(const std::weak_ptr& e) : IfcRevolvedAreaSolid(e) { } +// Ifc4x3_add2::IfcRevolvedAreaSolidTapered::IfcRevolvedAreaSolidTapered(::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcAxis1Placement v3_Axis, double v4_Angle, ::Ifc4x3_add2::IfcProfileDef v5_EndSweptArea) : IfcRevolvedAreaSolid(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_SweptArea)); if (v2_Position) {set_attribute_value(1, (*v2_Position)); }set_attribute_value(2, (v3_Axis));set_attribute_value(3, (v4_Angle));set_attribute_value(4, (v5_EndSweptArea));; populate_derived(); } // Function implementations for IfcRightCircularCone double Ifc4x3_add2::IfcRightCircularCone::Height() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcRightCircularCone::setHeight(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcRightCircularCone::setHeight(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } double Ifc4x3_add2::IfcRightCircularCone::BottomRadius() const { double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcRightCircularCone::setBottomRadius(double v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcRightCircularCone::setBottomRadius(const double& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcRightCircularCone::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[963]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRightCircularCone::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[963]); } const IfcParse::entity& Ifc4x3_add2::IfcRightCircularCone::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[963]); } -Ifc4x3_add2::IfcRightCircularCone::IfcRightCircularCone(IfcEntityInstanceData&& e) : IfcCsgPrimitive3D(std::move(e)) { } -Ifc4x3_add2::IfcRightCircularCone::IfcRightCircularCone(::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_BottomRadius) : IfcCsgPrimitive3D(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Height));set_attribute_value(2, (v3_BottomRadius));; populate_derived(); } +// Ifc4x3_add2::IfcRightCircularCone::IfcRightCircularCone(const std::weak_ptr& e) : IfcCsgPrimitive3D(e) { } +// Ifc4x3_add2::IfcRightCircularCone::IfcRightCircularCone(::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_Height, double v3_BottomRadius) : IfcCsgPrimitive3D(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_Height));set_attribute_value(2, (v3_BottomRadius));; populate_derived(); } // Function implementations for IfcRightCircularCylinder double Ifc4x3_add2::IfcRightCircularCylinder::Height() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcRightCircularCylinder::setHeight(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcRightCircularCylinder::setHeight(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } double Ifc4x3_add2::IfcRightCircularCylinder::Radius() const { double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcRightCircularCylinder::setRadius(double v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcRightCircularCylinder::setRadius(const double& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcRightCircularCylinder::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[964]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRightCircularCylinder::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[964]); } const IfcParse::entity& Ifc4x3_add2::IfcRightCircularCylinder::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[964]); } -Ifc4x3_add2::IfcRightCircularCylinder::IfcRightCircularCylinder(IfcEntityInstanceData&& e) : IfcCsgPrimitive3D(std::move(e)) { } -Ifc4x3_add2::IfcRightCircularCylinder::IfcRightCircularCylinder(::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_Radius) : IfcCsgPrimitive3D(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Height));set_attribute_value(2, (v3_Radius));; populate_derived(); } +// Ifc4x3_add2::IfcRightCircularCylinder::IfcRightCircularCylinder(const std::weak_ptr& e) : IfcCsgPrimitive3D(e) { } +// Ifc4x3_add2::IfcRightCircularCylinder::IfcRightCircularCylinder(::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_Height, double v3_Radius) : IfcCsgPrimitive3D(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_Height));set_attribute_value(2, (v3_Radius));; populate_derived(); } // Function implementations for IfcRigidOperation -::Ifc4x3_add2::IfcMeasureValue* Ifc4x3_add2::IfcRigidOperation::FirstCoordinate() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcMeasureValue>(true); } -void Ifc4x3_add2::IfcRigidOperation::setFirstCoordinate(::Ifc4x3_add2::IfcMeasureValue* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcMeasureValue* Ifc4x3_add2::IfcRigidOperation::SecondCoordinate() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcMeasureValue>(true); } -void Ifc4x3_add2::IfcRigidOperation::setSecondCoordinate(::Ifc4x3_add2::IfcMeasureValue* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -boost::optional< double > Ifc4x3_add2::IfcRigidOperation::Height() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcRigidOperation::setHeight(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +::Ifc4x3_add2::IfcMeasureValue Ifc4x3_add2::IfcRigidOperation::FirstCoordinate() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcMeasureValue>(); } +void Ifc4x3_add2::IfcRigidOperation::setFirstCoordinate(const ::Ifc4x3_add2::IfcMeasureValue& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcMeasureValue Ifc4x3_add2::IfcRigidOperation::SecondCoordinate() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcMeasureValue>(); } +void Ifc4x3_add2::IfcRigidOperation::setSecondCoordinate(const ::Ifc4x3_add2::IfcMeasureValue& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< double > Ifc4x3_add2::IfcRigidOperation::Height() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcRigidOperation::setHeight(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcRigidOperation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[965]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRigidOperation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[965]); } const IfcParse::entity& Ifc4x3_add2::IfcRigidOperation::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[965]); } -Ifc4x3_add2::IfcRigidOperation::IfcRigidOperation(IfcEntityInstanceData&& e) : IfcCoordinateOperation(std::move(e)) { } -Ifc4x3_add2::IfcRigidOperation::IfcRigidOperation(::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect* v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem* v2_TargetCRS, ::Ifc4x3_add2::IfcMeasureValue* v3_FirstCoordinate, ::Ifc4x3_add2::IfcMeasureValue* v4_SecondCoordinate, boost::optional< double > v5_Height) : IfcCoordinateOperation(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_SourceCRS ? v1_SourceCRS->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_TargetCRS ? v2_TargetCRS->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_FirstCoordinate ? v3_FirstCoordinate->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_SecondCoordinate ? v4_SecondCoordinate->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_Height) {set_attribute_value(4, (*v5_Height)); }; populate_derived(); } +// Ifc4x3_add2::IfcRigidOperation::IfcRigidOperation(const std::weak_ptr& e) : IfcCoordinateOperation(e) { } +// Ifc4x3_add2::IfcRigidOperation::IfcRigidOperation(::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem v2_TargetCRS, ::Ifc4x3_add2::IfcMeasureValue v3_FirstCoordinate, ::Ifc4x3_add2::IfcMeasureValue v4_SecondCoordinate, std::optional< double > v5_Height) : IfcCoordinateOperation(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_SourceCRS));set_attribute_value(1, (v2_TargetCRS));set_attribute_value(2, (v3_FirstCoordinate));set_attribute_value(3, (v4_SecondCoordinate)); if (v5_Height) {set_attribute_value(4, (*v5_Height)); }; populate_derived(); } // Function implementations for IfcRoad -boost::optional< ::Ifc4x3_add2::IfcRoadTypeEnum::Value > Ifc4x3_add2::IfcRoad::PredefinedType() const { if(get_attribute_value(9).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcRoadTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcRoad::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRoadTypeEnum::Value > v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcRoadTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } +std::optional< ::Ifc4x3_add2::IfcRoadTypeEnum::Value > Ifc4x3_add2::IfcRoad::PredefinedType() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcRoadTypeEnum::FromString(get_attribute_value(9)); } +void Ifc4x3_add2::IfcRoad::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRoadTypeEnum::Value >& v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcRoadTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcRoad::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[966]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRoad::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[966]); } const IfcParse::entity& Ifc4x3_add2::IfcRoad::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[966]); } -Ifc4x3_add2::IfcRoad::IfcRoad(IfcEntityInstanceData&& e) : IfcFacility(std::move(e)) { } -Ifc4x3_add2::IfcRoad::IfcRoad(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< ::Ifc4x3_add2::IfcRoadTypeEnum::Value > v10_PredefinedType) : IfcFacility(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcRoadTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcRoad::IfcRoad(const std::weak_ptr& e) : IfcFacility(e) { } +// Ifc4x3_add2::IfcRoad::IfcRoad(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< ::Ifc4x3_add2::IfcRoadTypeEnum::Value > v10_PredefinedType) : IfcFacility(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcRoadTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } // Function implementations for IfcRoadPart -boost::optional< ::Ifc4x3_add2::IfcRoadPartTypeEnum::Value > Ifc4x3_add2::IfcRoadPart::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcRoadPartTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcRoadPart::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRoadPartTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcRoadPartTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcRoadPartTypeEnum::Value > Ifc4x3_add2::IfcRoadPart::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcRoadPartTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcRoadPart::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRoadPartTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcRoadPartTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcRoadPart::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[967]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRoadPart::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[967]); } const IfcParse::entity& Ifc4x3_add2::IfcRoadPart::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[967]); } -Ifc4x3_add2::IfcRoadPart::IfcRoadPart(IfcEntityInstanceData&& e) : IfcFacilityPart(std::move(e)) { } -Ifc4x3_add2::IfcRoadPart::IfcRoadPart(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, boost::optional< ::Ifc4x3_add2::IfcRoadPartTypeEnum::Value > v11_PredefinedType) : IfcFacilityPart(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFacilityUsageEnum::Class(),(size_t)v10_UsageType))); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcRoadPartTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcRoadPart::IfcRoadPart(const std::weak_ptr& e) : IfcFacilityPart(e) { } +// Ifc4x3_add2::IfcRoadPart::IfcRoadPart(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, std::optional< ::Ifc4x3_add2::IfcRoadPartTypeEnum::Value > v11_PredefinedType) : IfcFacilityPart(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcFacilityUsageEnum::Class(),(size_t)v10_UsageType))); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcRoadPartTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } // Function implementations for IfcRoof -boost::optional< ::Ifc4x3_add2::IfcRoofTypeEnum::Value > Ifc4x3_add2::IfcRoof::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcRoofTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcRoof::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRoofTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcRoofTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcRoofTypeEnum::Value > Ifc4x3_add2::IfcRoof::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcRoofTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcRoof::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRoofTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcRoofTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcRoof::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[971]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRoof::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[971]); } const IfcParse::entity& Ifc4x3_add2::IfcRoof::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[971]); } -Ifc4x3_add2::IfcRoof::IfcRoof(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcRoof::IfcRoof(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcRoofTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcRoofTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcRoof::IfcRoof(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcRoof::IfcRoof(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcRoofTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcRoofTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcRoofType ::Ifc4x3_add2::IfcRoofTypeEnum::Value Ifc4x3_add2::IfcRoofType::PredefinedType() const { return ::Ifc4x3_add2::IfcRoofTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcRoofType::setPredefinedType(::Ifc4x3_add2::IfcRoofTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcRoofTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcRoofType::setPredefinedType(const ::Ifc4x3_add2::IfcRoofTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcRoofTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcRoofType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[972]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRoofType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[972]); } const IfcParse::entity& Ifc4x3_add2::IfcRoofType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[972]); } -Ifc4x3_add2::IfcRoofType::IfcRoofType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcRoofType::IfcRoofType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRoofTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcRoofTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcRoofType::IfcRoofType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcRoofType::IfcRoofType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRoofTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcRoofTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcRoot std::string Ifc4x3_add2::IfcRoot::GlobalId() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcRoot::setGlobalId(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcOwnerHistory* Ifc4x3_add2::IfcRoot::OwnerHistory() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcOwnerHistory>(true); } -void Ifc4x3_add2::IfcRoot::setOwnerHistory(::Ifc4x3_add2::IfcOwnerHistory* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -boost::optional< std::string > Ifc4x3_add2::IfcRoot::Name() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcRoot::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< std::string > Ifc4x3_add2::IfcRoot::Description() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcRoot::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +void Ifc4x3_add2::IfcRoot::setGlobalId(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcOwnerHistory Ifc4x3_add2::IfcRoot::OwnerHistory() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcOwnerHistory{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcOwnerHistory>(); } +void Ifc4x3_add2::IfcRoot::setOwnerHistory(const ::Ifc4x3_add2::IfcOwnerHistory& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< std::string > Ifc4x3_add2::IfcRoot::Name() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcRoot::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::string > Ifc4x3_add2::IfcRoot::Description() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcRoot::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -const IfcParse::entity& Ifc4x3_add2::IfcRoot::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[974]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRoot::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[974]); } const IfcParse::entity& Ifc4x3_add2::IfcRoot::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[974]); } -Ifc4x3_add2::IfcRoot::IfcRoot(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcRoot::IfcRoot(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } +// Ifc4x3_add2::IfcRoot::IfcRoot(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcRoot::IfcRoot(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }; populate_derived(); } // Function implementations for IfcRoundedRectangleProfileDef double Ifc4x3_add2::IfcRoundedRectangleProfileDef::RoundingRadius() const { double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcRoundedRectangleProfileDef::setRoundingRadius(double v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcRoundedRectangleProfileDef::setRoundingRadius(const double& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcRoundedRectangleProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[979]); } +// const IfcParse::entity& Ifc4x3_add2::IfcRoundedRectangleProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[979]); } const IfcParse::entity& Ifc4x3_add2::IfcRoundedRectangleProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[979]); } -Ifc4x3_add2::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(IfcEntityInstanceData&& e) : IfcRectangleProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim, double v6_RoundingRadius) : IfcRectangleProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_XDim));set_attribute_value(4, (v5_YDim));set_attribute_value(5, (v6_RoundingRadius));; populate_derived(); } +// Ifc4x3_add2::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(const std::weak_ptr& e) : IfcRectangleProfileDef(e) { } +// Ifc4x3_add2::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_XDim, double v5_YDim, double v6_RoundingRadius) : IfcRectangleProfileDef(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); } if (v3_Position) {set_attribute_value(2, (*v3_Position)); }set_attribute_value(3, (v4_XDim));set_attribute_value(4, (v5_YDim));set_attribute_value(5, (v6_RoundingRadius));; populate_derived(); } // Function implementations for IfcSIUnit -boost::optional< ::Ifc4x3_add2::IfcSIPrefix::Value > Ifc4x3_add2::IfcSIUnit::Prefix() const { if(get_attribute_value(2).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSIPrefix::FromString(get_attribute_value(2)); } -void Ifc4x3_add2::IfcSIUnit::setPrefix(boost::optional< ::Ifc4x3_add2::IfcSIPrefix::Value > v) { if (v) {set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcSIPrefix::Class(), (size_t) *v));} else {unset_attribute_value(2);} } +std::optional< ::Ifc4x3_add2::IfcSIPrefix::Value > Ifc4x3_add2::IfcSIUnit::Prefix() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSIPrefix::FromString(get_attribute_value(2)); } +void Ifc4x3_add2::IfcSIUnit::setPrefix(const std::optional< ::Ifc4x3_add2::IfcSIPrefix::Value >& v) { if (v) {set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcSIPrefix::Class(), (size_t) *v));} else {unset_attribute_value(2);} } ::Ifc4x3_add2::IfcSIUnitName::Value Ifc4x3_add2::IfcSIUnit::Name() const { return ::Ifc4x3_add2::IfcSIUnitName::FromString(get_attribute_value(3)); } -void Ifc4x3_add2::IfcSIUnit::setName(::Ifc4x3_add2::IfcSIUnitName::Value v) { set_attribute_value(3, EnumerationReference(&::Ifc4x3_add2::IfcSIUnitName::Class(), (size_t) v));if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcSIUnit::setName(const ::Ifc4x3_add2::IfcSIUnitName::Value& v) { set_attribute_value(3, EnumerationReference(&::Ifc4x3_add2::IfcSIUnitName::Class(), (size_t) v));if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcSIUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1025]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSIUnit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1025]); } const IfcParse::entity& Ifc4x3_add2::IfcSIUnit::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1025]); } -Ifc4x3_add2::IfcSIUnit::IfcSIUnit(IfcEntityInstanceData&& e) : IfcNamedUnit(std::move(e)) { } -Ifc4x3_add2::IfcSIUnit::IfcSIUnit(::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, boost::optional< ::Ifc4x3_add2::IfcSIPrefix::Value > v3_Prefix, ::Ifc4x3_add2::IfcSIUnitName::Value v4_Name) : IfcNamedUnit(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcUnitEnum::Class(),(size_t)v2_UnitType))); if (v3_Prefix) {set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcSIPrefix::Class(),(size_t)*v3_Prefix))); }set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcSIUnitName::Class(),(size_t)v4_Name)));; populate_derived(); } +// Ifc4x3_add2::IfcSIUnit::IfcSIUnit(const std::weak_ptr& e) : IfcNamedUnit(e) { } +// Ifc4x3_add2::IfcSIUnit::IfcSIUnit(::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, std::optional< ::Ifc4x3_add2::IfcSIPrefix::Value > v3_Prefix, ::Ifc4x3_add2::IfcSIUnitName::Value v4_Name) : IfcNamedUnit(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcUnitEnum::Class(),(size_t)v2_UnitType))); if (v3_Prefix) {set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcSIPrefix::Class(),(size_t)*v3_Prefix))); }set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcSIUnitName::Class(),(size_t)v4_Name)));; populate_derived(); } // Function implementations for IfcSanitaryTerminal -boost::optional< ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value > Ifc4x3_add2::IfcSanitaryTerminal::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value > Ifc4x3_add2::IfcSanitaryTerminal::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcSanitaryTerminal::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcSanitaryTerminal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[980]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSanitaryTerminal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[980]); } const IfcParse::entity& Ifc4x3_add2::IfcSanitaryTerminal::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[980]); } -Ifc4x3_add2::IfcSanitaryTerminal::IfcSanitaryTerminal(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcSanitaryTerminal::IfcSanitaryTerminal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcSanitaryTerminal::IfcSanitaryTerminal(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcSanitaryTerminal::IfcSanitaryTerminal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcSanitaryTerminalType ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value Ifc4x3_add2::IfcSanitaryTerminalType::PredefinedType() const { return ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcSanitaryTerminalType::setPredefinedType(::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcSanitaryTerminalType::setPredefinedType(const ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcSanitaryTerminalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[981]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSanitaryTerminalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[981]); } const IfcParse::entity& Ifc4x3_add2::IfcSanitaryTerminalType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[981]); } -Ifc4x3_add2::IfcSanitaryTerminalType::IfcSanitaryTerminalType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcSanitaryTerminalType::IfcSanitaryTerminalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcSanitaryTerminalType::IfcSanitaryTerminalType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcSanitaryTerminalType::IfcSanitaryTerminalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcSchedulingTime -boost::optional< std::string > Ifc4x3_add2::IfcSchedulingTime::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcSchedulingTime::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > Ifc4x3_add2::IfcSchedulingTime::DataOrigin() const { if(get_attribute_value(1).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcDataOriginEnum::FromString(get_attribute_value(1)); } -void Ifc4x3_add2::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v) { if (v) {set_attribute_value(1, EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(), (size_t) *v));} else {unset_attribute_value(1);} } -boost::optional< std::string > Ifc4x3_add2::IfcSchedulingTime::UserDefinedDataOrigin() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::string > Ifc4x3_add2::IfcSchedulingTime::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcSchedulingTime::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > Ifc4x3_add2::IfcSchedulingTime::DataOrigin() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcDataOriginEnum::FromString(get_attribute_value(1)); } +void Ifc4x3_add2::IfcSchedulingTime::setDataOrigin(const std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value >& v) { if (v) {set_attribute_value(1, EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(), (size_t) *v));} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcSchedulingTime::UserDefinedDataOrigin() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcSchedulingTime::setUserDefinedDataOrigin(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -const IfcParse::entity& Ifc4x3_add2::IfcSchedulingTime::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[983]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSchedulingTime::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[983]); } const IfcParse::entity& Ifc4x3_add2::IfcSchedulingTime::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[983]); } -Ifc4x3_add2::IfcSchedulingTime::IfcSchedulingTime(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcSchedulingTime::IfcSchedulingTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DataOrigin) {set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)*v2_DataOrigin))); } if (v3_UserDefinedDataOrigin) {set_attribute_value(2, (*v3_UserDefinedDataOrigin)); }; populate_derived(); } +// Ifc4x3_add2::IfcSchedulingTime::IfcSchedulingTime(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcSchedulingTime::IfcSchedulingTime(std::optional< std::string > v1_Name, std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, std::optional< std::string > v3_UserDefinedDataOrigin) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DataOrigin) {set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)*v2_DataOrigin))); } if (v3_UserDefinedDataOrigin) {set_attribute_value(2, (*v3_UserDefinedDataOrigin)); }; populate_derived(); } // Function implementations for IfcSeamCurve -const IfcParse::entity& Ifc4x3_add2::IfcSeamCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[984]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSeamCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[984]); } const IfcParse::entity& Ifc4x3_add2::IfcSeamCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[984]); } -Ifc4x3_add2::IfcSeamCurve::IfcSeamCurve(IfcEntityInstanceData&& e) : IfcSurfaceCurve(std::move(e)) { } -Ifc4x3_add2::IfcSeamCurve::IfcSeamCurve(::Ifc4x3_add2::IfcCurve* v1_Curve3D, aggregate_of< ::Ifc4x3_add2::IfcPcurve >::ptr v2_AssociatedGeometry, ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation) : IfcSurfaceCurve(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_Curve3D ? v1_Curve3D->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_AssociatedGeometry)->generalize());set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Class(),(size_t)v3_MasterRepresentation)));; populate_derived(); } +// Ifc4x3_add2::IfcSeamCurve::IfcSeamCurve(const std::weak_ptr& e) : IfcSurfaceCurve(e) { } +// Ifc4x3_add2::IfcSeamCurve::IfcSeamCurve(::Ifc4x3_add2::IfcCurve v1_Curve3D, std::vector< ::Ifc4x3_add2::IfcPcurve > v2_AssociatedGeometry, ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation) : IfcSurfaceCurve(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Curve3D));set_attribute_value(1, (v2_AssociatedGeometry)->generalize());set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Class(),(size_t)v3_MasterRepresentation)));; populate_derived(); } // Function implementations for IfcSecondOrderPolynomialSpiral double Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::QuadraticTerm() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::setQuadraticTerm(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -boost::optional< double > Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::LinearTerm() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::setLinearTerm(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::ConstantTerm() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::setConstantTerm(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +void Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::setQuadraticTerm(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< double > Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::LinearTerm() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::setLinearTerm(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::ConstantTerm() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::setConstantTerm(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -const IfcParse::entity& Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[985]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[985]); } const IfcParse::entity& Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[985]); } -Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::IfcSecondOrderPolynomialSpiral(IfcEntityInstanceData&& e) : IfcSpiral(std::move(e)) { } -Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::IfcSecondOrderPolynomialSpiral(::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_QuadraticTerm, boost::optional< double > v3_LinearTerm, boost::optional< double > v4_ConstantTerm) : IfcSpiral(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_QuadraticTerm)); if (v3_LinearTerm) {set_attribute_value(2, (*v3_LinearTerm)); } if (v4_ConstantTerm) {set_attribute_value(3, (*v4_ConstantTerm)); }; populate_derived(); } +// Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::IfcSecondOrderPolynomialSpiral(const std::weak_ptr& e) : IfcSpiral(e) { } +// Ifc4x3_add2::IfcSecondOrderPolynomialSpiral::IfcSecondOrderPolynomialSpiral(::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_QuadraticTerm, std::optional< double > v3_LinearTerm, std::optional< double > v4_ConstantTerm) : IfcSpiral(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_QuadraticTerm)); if (v3_LinearTerm) {set_attribute_value(2, (*v3_LinearTerm)); } if (v4_ConstantTerm) {set_attribute_value(3, (*v4_ConstantTerm)); }; populate_derived(); } // Function implementations for IfcSectionProperties ::Ifc4x3_add2::IfcSectionTypeEnum::Value Ifc4x3_add2::IfcSectionProperties::SectionType() const { return ::Ifc4x3_add2::IfcSectionTypeEnum::FromString(get_attribute_value(0)); } -void Ifc4x3_add2::IfcSectionProperties::setSectionType(::Ifc4x3_add2::IfcSectionTypeEnum::Value v) { set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcSectionTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcProfileDef* Ifc4x3_add2::IfcSectionProperties::StartProfile() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcProfileDef>(true); } -void Ifc4x3_add2::IfcSectionProperties::setStartProfile(::Ifc4x3_add2::IfcProfileDef* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcProfileDef* Ifc4x3_add2::IfcSectionProperties::EndProfile() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcProfileDef>(true); } -void Ifc4x3_add2::IfcSectionProperties::setEndProfile(::Ifc4x3_add2::IfcProfileDef* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcSectionProperties::setSectionType(const ::Ifc4x3_add2::IfcSectionTypeEnum::Value& v) { set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcSectionTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcProfileDef Ifc4x3_add2::IfcSectionProperties::StartProfile() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcProfileDef>(); } +void Ifc4x3_add2::IfcSectionProperties::setStartProfile(const ::Ifc4x3_add2::IfcProfileDef& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcProfileDef Ifc4x3_add2::IfcSectionProperties::EndProfile() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcProfileDef{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcProfileDef>(); } +void Ifc4x3_add2::IfcSectionProperties::setEndProfile(const ::Ifc4x3_add2::IfcProfileDef& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcSectionProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[992]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSectionProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[992]); } const IfcParse::entity& Ifc4x3_add2::IfcSectionProperties::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[992]); } -Ifc4x3_add2::IfcSectionProperties::IfcSectionProperties(IfcEntityInstanceData&& e) : IfcPreDefinedProperties(std::move(e)) { } -Ifc4x3_add2::IfcSectionProperties::IfcSectionProperties(::Ifc4x3_add2::IfcSectionTypeEnum::Value v1_SectionType, ::Ifc4x3_add2::IfcProfileDef* v2_StartProfile, ::Ifc4x3_add2::IfcProfileDef* v3_EndProfile) : IfcPreDefinedProperties(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcSectionTypeEnum::Class(),(size_t)v1_SectionType)));set_attribute_value(1, v2_StartProfile ? v2_StartProfile->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_EndProfile ? v3_EndProfile->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcSectionProperties::IfcSectionProperties(const std::weak_ptr& e) : IfcPreDefinedProperties(e) { } +// Ifc4x3_add2::IfcSectionProperties::IfcSectionProperties(::Ifc4x3_add2::IfcSectionTypeEnum::Value v1_SectionType, ::Ifc4x3_add2::IfcProfileDef v2_StartProfile, ::Ifc4x3_add2::IfcProfileDef v3_EndProfile) : IfcPreDefinedProperties(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcSectionTypeEnum::Class(),(size_t)v1_SectionType)));set_attribute_value(1, (v2_StartProfile)); if (v3_EndProfile) {set_attribute_value(2, (*v3_EndProfile)); }; populate_derived(); } // Function implementations for IfcSectionReinforcementProperties double Ifc4x3_add2::IfcSectionReinforcementProperties::LongitudinalStartPosition() const { double v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcSectionReinforcementProperties::setLongitudinalStartPosition(double v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcSectionReinforcementProperties::setLongitudinalStartPosition(const double& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } double Ifc4x3_add2::IfcSectionReinforcementProperties::LongitudinalEndPosition() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcSectionReinforcementProperties::setLongitudinalEndPosition(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -boost::optional< double > Ifc4x3_add2::IfcSectionReinforcementProperties::TransversePosition() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +void Ifc4x3_add2::IfcSectionReinforcementProperties::setLongitudinalEndPosition(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< double > Ifc4x3_add2::IfcSectionReinforcementProperties::TransversePosition() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcSectionReinforcementProperties::setTransversePosition(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } ::Ifc4x3_add2::IfcReinforcingBarRoleEnum::Value Ifc4x3_add2::IfcSectionReinforcementProperties::ReinforcementRole() const { return ::Ifc4x3_add2::IfcReinforcingBarRoleEnum::FromString(get_attribute_value(3)); } -void Ifc4x3_add2::IfcSectionReinforcementProperties::setReinforcementRole(::Ifc4x3_add2::IfcReinforcingBarRoleEnum::Value v) { set_attribute_value(3, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarRoleEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(3); } -::Ifc4x3_add2::IfcSectionProperties* Ifc4x3_add2::IfcSectionReinforcementProperties::SectionDefinition() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcSectionProperties>(true); } -void Ifc4x3_add2::IfcSectionReinforcementProperties::setSectionDefinition(::Ifc4x3_add2::IfcSectionProperties* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -aggregate_of< ::Ifc4x3_add2::IfcReinforcementBarProperties >::ptr Ifc4x3_add2::IfcSectionReinforcementProperties::CrossSectionReinforcementDefinitions() const { aggregate_of_instance::ptr es = get_attribute_value(5); return es->as< ::Ifc4x3_add2::IfcReinforcementBarProperties >(); } -void Ifc4x3_add2::IfcSectionReinforcementProperties::setCrossSectionReinforcementDefinitions(aggregate_of< ::Ifc4x3_add2::IfcReinforcementBarProperties >::ptr v) { set_attribute_value(5, (v)->generalize());if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcSectionReinforcementProperties::setReinforcementRole(const ::Ifc4x3_add2::IfcReinforcingBarRoleEnum::Value& v) { set_attribute_value(3, EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarRoleEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcSectionProperties Ifc4x3_add2::IfcSectionReinforcementProperties::SectionDefinition() const { return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcSectionProperties>(); } +void Ifc4x3_add2::IfcSectionReinforcementProperties::setSectionDefinition(const ::Ifc4x3_add2::IfcSectionProperties& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +std::vector< ::Ifc4x3_add2::IfcReinforcementBarProperties > Ifc4x3_add2::IfcSectionReinforcementProperties::CrossSectionReinforcementDefinitions() const { std::vector es = get_attribute_value(5); return cast_vector<::Ifc4x3_add2::IfcReinforcementBarProperties>(es); } +void Ifc4x3_add2::IfcSectionReinforcementProperties::setCrossSectionReinforcementDefinitions(const std::vector< ::Ifc4x3_add2::IfcReinforcementBarProperties >& v) { set_attribute_value(5, cast_vector(v));if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcSectionReinforcementProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[993]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSectionReinforcementProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[993]); } const IfcParse::entity& Ifc4x3_add2::IfcSectionReinforcementProperties::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[993]); } -Ifc4x3_add2::IfcSectionReinforcementProperties::IfcSectionReinforcementProperties(IfcEntityInstanceData&& e) : IfcPreDefinedProperties(std::move(e)) { } -Ifc4x3_add2::IfcSectionReinforcementProperties::IfcSectionReinforcementProperties(double v1_LongitudinalStartPosition, double v2_LongitudinalEndPosition, boost::optional< double > v3_TransversePosition, ::Ifc4x3_add2::IfcReinforcingBarRoleEnum::Value v4_ReinforcementRole, ::Ifc4x3_add2::IfcSectionProperties* v5_SectionDefinition, aggregate_of< ::Ifc4x3_add2::IfcReinforcementBarProperties >::ptr v6_CrossSectionReinforcementDefinitions) : IfcPreDefinedProperties(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_LongitudinalStartPosition));set_attribute_value(1, (v2_LongitudinalEndPosition)); if (v3_TransversePosition) {set_attribute_value(2, (*v3_TransversePosition)); }set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarRoleEnum::Class(),(size_t)v4_ReinforcementRole)));set_attribute_value(4, v5_SectionDefinition ? v5_SectionDefinition->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, (v6_CrossSectionReinforcementDefinitions)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcSectionReinforcementProperties::IfcSectionReinforcementProperties(const std::weak_ptr& e) : IfcPreDefinedProperties(e) { } +// Ifc4x3_add2::IfcSectionReinforcementProperties::IfcSectionReinforcementProperties(double v1_LongitudinalStartPosition, double v2_LongitudinalEndPosition, std::optional< double > v3_TransversePosition, ::Ifc4x3_add2::IfcReinforcingBarRoleEnum::Value v4_ReinforcementRole, ::Ifc4x3_add2::IfcSectionProperties v5_SectionDefinition, std::vector< ::Ifc4x3_add2::IfcReinforcementBarProperties > v6_CrossSectionReinforcementDefinitions) : IfcPreDefinedProperties(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_LongitudinalStartPosition));set_attribute_value(1, (v2_LongitudinalEndPosition)); if (v3_TransversePosition) {set_attribute_value(2, (*v3_TransversePosition)); }set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcReinforcingBarRoleEnum::Class(),(size_t)v4_ReinforcementRole)));set_attribute_value(4, (v5_SectionDefinition));set_attribute_value(5, (v6_CrossSectionReinforcementDefinitions)->generalize());; populate_derived(); } // Function implementations for IfcSectionedSolid -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcSectionedSolid::Directrix() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcSectionedSolid::setDirectrix(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr Ifc4x3_add2::IfcSectionedSolid::CrossSections() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcProfileDef >(); } -void Ifc4x3_add2::IfcSectionedSolid::setCrossSections(aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcSectionedSolid::Directrix() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcSectionedSolid::setDirectrix(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcProfileDef > Ifc4x3_add2::IfcSectionedSolid::CrossSections() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcProfileDef>(es); } +void Ifc4x3_add2::IfcSectionedSolid::setCrossSections(const std::vector< ::Ifc4x3_add2::IfcProfileDef >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcSectionedSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[987]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSectionedSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[987]); } const IfcParse::entity& Ifc4x3_add2::IfcSectionedSolid::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[987]); } -Ifc4x3_add2::IfcSectionedSolid::IfcSectionedSolid(IfcEntityInstanceData&& e) : IfcSolidModel(std::move(e)) { } -Ifc4x3_add2::IfcSectionedSolid::IfcSectionedSolid(::Ifc4x3_add2::IfcCurve* v1_Directrix, aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v2_CrossSections) : IfcSolidModel(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Directrix ? v1_Directrix->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_CrossSections)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcSectionedSolid::IfcSectionedSolid(const std::weak_ptr& e) : IfcSolidModel(e) { } +// Ifc4x3_add2::IfcSectionedSolid::IfcSectionedSolid(::Ifc4x3_add2::IfcCurve v1_Directrix, std::vector< ::Ifc4x3_add2::IfcProfileDef > v2_CrossSections) : IfcSolidModel(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Directrix));set_attribute_value(1, (v2_CrossSections)->generalize());; populate_derived(); } // Function implementations for IfcSectionedSolidHorizontal -aggregate_of< ::Ifc4x3_add2::IfcAxis2PlacementLinear >::ptr Ifc4x3_add2::IfcSectionedSolidHorizontal::CrossSectionPositions() const { aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcAxis2PlacementLinear >(); } -void Ifc4x3_add2::IfcSectionedSolidHorizontal::setCrossSectionPositions(aggregate_of< ::Ifc4x3_add2::IfcAxis2PlacementLinear >::ptr v) { set_attribute_value(2, (v)->generalize());if constexpr (false)unset_attribute_value(2); } +std::vector< ::Ifc4x3_add2::IfcAxis2PlacementLinear > Ifc4x3_add2::IfcSectionedSolidHorizontal::CrossSectionPositions() const { std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcAxis2PlacementLinear>(es); } +void Ifc4x3_add2::IfcSectionedSolidHorizontal::setCrossSectionPositions(const std::vector< ::Ifc4x3_add2::IfcAxis2PlacementLinear >& v) { set_attribute_value(2, cast_vector(v));if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcSectionedSolidHorizontal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[988]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSectionedSolidHorizontal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[988]); } const IfcParse::entity& Ifc4x3_add2::IfcSectionedSolidHorizontal::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[988]); } -Ifc4x3_add2::IfcSectionedSolidHorizontal::IfcSectionedSolidHorizontal(IfcEntityInstanceData&& e) : IfcSectionedSolid(std::move(e)) { } -Ifc4x3_add2::IfcSectionedSolidHorizontal::IfcSectionedSolidHorizontal(::Ifc4x3_add2::IfcCurve* v1_Directrix, aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v2_CrossSections, aggregate_of< ::Ifc4x3_add2::IfcAxis2PlacementLinear >::ptr v3_CrossSectionPositions) : IfcSectionedSolid(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_Directrix ? v1_Directrix->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_CrossSections)->generalize());set_attribute_value(2, (v3_CrossSectionPositions)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcSectionedSolidHorizontal::IfcSectionedSolidHorizontal(const std::weak_ptr& e) : IfcSectionedSolid(e) { } +// Ifc4x3_add2::IfcSectionedSolidHorizontal::IfcSectionedSolidHorizontal(::Ifc4x3_add2::IfcCurve v1_Directrix, std::vector< ::Ifc4x3_add2::IfcProfileDef > v2_CrossSections, std::vector< ::Ifc4x3_add2::IfcAxis2PlacementLinear > v3_CrossSectionPositions) : IfcSectionedSolid(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Directrix));set_attribute_value(1, (v2_CrossSections)->generalize());set_attribute_value(2, (v3_CrossSectionPositions)->generalize());; populate_derived(); } // Function implementations for IfcSectionedSpine -::Ifc4x3_add2::IfcCompositeCurve* Ifc4x3_add2::IfcSectionedSpine::SpineCurve() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCompositeCurve>(true); } -void Ifc4x3_add2::IfcSectionedSpine::setSpineCurve(::Ifc4x3_add2::IfcCompositeCurve* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr Ifc4x3_add2::IfcSectionedSpine::CrossSections() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcProfileDef >(); } -void Ifc4x3_add2::IfcSectionedSpine::setCrossSections(aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } -aggregate_of< ::Ifc4x3_add2::IfcAxis2Placement3D >::ptr Ifc4x3_add2::IfcSectionedSpine::CrossSectionPositions() const { aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcAxis2Placement3D >(); } -void Ifc4x3_add2::IfcSectionedSpine::setCrossSectionPositions(aggregate_of< ::Ifc4x3_add2::IfcAxis2Placement3D >::ptr v) { set_attribute_value(2, (v)->generalize());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcCompositeCurve Ifc4x3_add2::IfcSectionedSpine::SpineCurve() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCompositeCurve>(); } +void Ifc4x3_add2::IfcSectionedSpine::setSpineCurve(const ::Ifc4x3_add2::IfcCompositeCurve& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcProfileDef > Ifc4x3_add2::IfcSectionedSpine::CrossSections() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcProfileDef>(es); } +void Ifc4x3_add2::IfcSectionedSpine::setCrossSections(const std::vector< ::Ifc4x3_add2::IfcProfileDef >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } +std::vector< ::Ifc4x3_add2::IfcAxis2Placement3D > Ifc4x3_add2::IfcSectionedSpine::CrossSectionPositions() const { std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcAxis2Placement3D>(es); } +void Ifc4x3_add2::IfcSectionedSpine::setCrossSectionPositions(const std::vector< ::Ifc4x3_add2::IfcAxis2Placement3D >& v) { set_attribute_value(2, cast_vector(v));if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcSectionedSpine::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[989]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSectionedSpine::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[989]); } const IfcParse::entity& Ifc4x3_add2::IfcSectionedSpine::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[989]); } -Ifc4x3_add2::IfcSectionedSpine::IfcSectionedSpine(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcSectionedSpine::IfcSectionedSpine(::Ifc4x3_add2::IfcCompositeCurve* v1_SpineCurve, aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v2_CrossSections, aggregate_of< ::Ifc4x3_add2::IfcAxis2Placement3D >::ptr v3_CrossSectionPositions) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_SpineCurve ? v1_SpineCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_CrossSections)->generalize());set_attribute_value(2, (v3_CrossSectionPositions)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcSectionedSpine::IfcSectionedSpine(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcSectionedSpine::IfcSectionedSpine(::Ifc4x3_add2::IfcCompositeCurve v1_SpineCurve, std::vector< ::Ifc4x3_add2::IfcProfileDef > v2_CrossSections, std::vector< ::Ifc4x3_add2::IfcAxis2Placement3D > v3_CrossSectionPositions) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_SpineCurve));set_attribute_value(1, (v2_CrossSections)->generalize());set_attribute_value(2, (v3_CrossSectionPositions)->generalize());; populate_derived(); } // Function implementations for IfcSectionedSurface -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcSectionedSurface::Directrix() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcSectionedSurface::setDirectrix(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -aggregate_of< ::Ifc4x3_add2::IfcAxis2PlacementLinear >::ptr Ifc4x3_add2::IfcSectionedSurface::CrossSectionPositions() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcAxis2PlacementLinear >(); } -void Ifc4x3_add2::IfcSectionedSurface::setCrossSectionPositions(aggregate_of< ::Ifc4x3_add2::IfcAxis2PlacementLinear >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } -aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr Ifc4x3_add2::IfcSectionedSurface::CrossSections() const { aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcProfileDef >(); } -void Ifc4x3_add2::IfcSectionedSurface::setCrossSections(aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v) { set_attribute_value(2, (v)->generalize());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcSectionedSurface::Directrix() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcSectionedSurface::setDirectrix(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcAxis2PlacementLinear > Ifc4x3_add2::IfcSectionedSurface::CrossSectionPositions() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcAxis2PlacementLinear>(es); } +void Ifc4x3_add2::IfcSectionedSurface::setCrossSectionPositions(const std::vector< ::Ifc4x3_add2::IfcAxis2PlacementLinear >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } +std::vector< ::Ifc4x3_add2::IfcProfileDef > Ifc4x3_add2::IfcSectionedSurface::CrossSections() const { std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcProfileDef>(es); } +void Ifc4x3_add2::IfcSectionedSurface::setCrossSections(const std::vector< ::Ifc4x3_add2::IfcProfileDef >& v) { set_attribute_value(2, cast_vector(v));if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcSectionedSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[990]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSectionedSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[990]); } const IfcParse::entity& Ifc4x3_add2::IfcSectionedSurface::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[990]); } -Ifc4x3_add2::IfcSectionedSurface::IfcSectionedSurface(IfcEntityInstanceData&& e) : IfcSurface(std::move(e)) { } -Ifc4x3_add2::IfcSectionedSurface::IfcSectionedSurface(::Ifc4x3_add2::IfcCurve* v1_Directrix, aggregate_of< ::Ifc4x3_add2::IfcAxis2PlacementLinear >::ptr v2_CrossSectionPositions, aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v3_CrossSections) : IfcSurface(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_Directrix ? v1_Directrix->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_CrossSectionPositions)->generalize());set_attribute_value(2, (v3_CrossSections)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcSectionedSurface::IfcSectionedSurface(const std::weak_ptr& e) : IfcSurface(e) { } +// Ifc4x3_add2::IfcSectionedSurface::IfcSectionedSurface(::Ifc4x3_add2::IfcCurve v1_Directrix, std::vector< ::Ifc4x3_add2::IfcAxis2PlacementLinear > v2_CrossSectionPositions, std::vector< ::Ifc4x3_add2::IfcProfileDef > v3_CrossSections) : IfcSurface(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Directrix));set_attribute_value(1, (v2_CrossSectionPositions)->generalize());set_attribute_value(2, (v3_CrossSections)->generalize());; populate_derived(); } // Function implementations for IfcSegment ::Ifc4x3_add2::IfcTransitionCode::Value Ifc4x3_add2::IfcSegment::Transition() const { return ::Ifc4x3_add2::IfcTransitionCode::FromString(get_attribute_value(0)); } -void Ifc4x3_add2::IfcSegment::setTransition(::Ifc4x3_add2::IfcTransitionCode::Value v) { set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcTransitionCode::Class(), (size_t) v));if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcSegment::setTransition(const ::Ifc4x3_add2::IfcTransitionCode::Value& v) { set_attribute_value(0, EnumerationReference(&::Ifc4x3_add2::IfcTransitionCode::Class(), (size_t) v));if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcCompositeCurve::list::ptr Ifc4x3_add2::IfcSegment::UsingCurves() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[192], 0)->as(); } +std::vector<::Ifc4x3_add2::IfcCompositeCurve> Ifc4x3_add2::IfcSegment::UsingCurves() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[192], 0)); } -const IfcParse::entity& Ifc4x3_add2::IfcSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[995]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSegment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[995]); } const IfcParse::entity& Ifc4x3_add2::IfcSegment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[995]); } -Ifc4x3_add2::IfcSegment::IfcSegment(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcSegment::IfcSegment(::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcTransitionCode::Class(),(size_t)v1_Transition)));; populate_derived(); } +// Ifc4x3_add2::IfcSegment::IfcSegment(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcSegment::IfcSegment(::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcTransitionCode::Class(),(size_t)v1_Transition)));; populate_derived(); } // Function implementations for IfcSegmentedReferenceCurve -::Ifc4x3_add2::IfcBoundedCurve* Ifc4x3_add2::IfcSegmentedReferenceCurve::BaseCurve() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcBoundedCurve>(true); } -void Ifc4x3_add2::IfcSegmentedReferenceCurve::setBaseCurve(::Ifc4x3_add2::IfcBoundedCurve* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcPlacement* Ifc4x3_add2::IfcSegmentedReferenceCurve::EndPoint() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcPlacement>(true); } -void Ifc4x3_add2::IfcSegmentedReferenceCurve::setEndPoint(::Ifc4x3_add2::IfcPlacement* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcBoundedCurve Ifc4x3_add2::IfcSegmentedReferenceCurve::BaseCurve() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcBoundedCurve>(); } +void Ifc4x3_add2::IfcSegmentedReferenceCurve::setBaseCurve(const ::Ifc4x3_add2::IfcBoundedCurve& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcPlacement Ifc4x3_add2::IfcSegmentedReferenceCurve::EndPoint() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcPlacement{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcPlacement>(); } +void Ifc4x3_add2::IfcSegmentedReferenceCurve::setEndPoint(const ::Ifc4x3_add2::IfcPlacement& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcSegmentedReferenceCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[996]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSegmentedReferenceCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[996]); } const IfcParse::entity& Ifc4x3_add2::IfcSegmentedReferenceCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[996]); } -Ifc4x3_add2::IfcSegmentedReferenceCurve::IfcSegmentedReferenceCurve(IfcEntityInstanceData&& e) : IfcCompositeCurve(std::move(e)) { } -Ifc4x3_add2::IfcSegmentedReferenceCurve::IfcSegmentedReferenceCurve(aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect, ::Ifc4x3_add2::IfcBoundedCurve* v3_BaseCurve, ::Ifc4x3_add2::IfcPlacement* v4_EndPoint) : IfcCompositeCurve(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Segments)->generalize());set_attribute_value(1, (v2_SelfIntersect));set_attribute_value(2, v3_BaseCurve ? v3_BaseCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_EndPoint ? v4_EndPoint->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcSegmentedReferenceCurve::IfcSegmentedReferenceCurve(const std::weak_ptr& e) : IfcCompositeCurve(e) { } +// Ifc4x3_add2::IfcSegmentedReferenceCurve::IfcSegmentedReferenceCurve(std::vector< ::Ifc4x3_add2::IfcSegment > v1_Segments, boost::logic::tribool v2_SelfIntersect, ::Ifc4x3_add2::IfcBoundedCurve v3_BaseCurve, ::Ifc4x3_add2::IfcPlacement v4_EndPoint) : IfcCompositeCurve(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Segments)->generalize());set_attribute_value(1, (v2_SelfIntersect));set_attribute_value(2, (v3_BaseCurve)); if (v4_EndPoint) {set_attribute_value(3, (*v4_EndPoint)); }; populate_derived(); } // Function implementations for IfcSensor -boost::optional< ::Ifc4x3_add2::IfcSensorTypeEnum::Value > Ifc4x3_add2::IfcSensor::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSensorTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcSensor::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSensorTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSensorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcSensorTypeEnum::Value > Ifc4x3_add2::IfcSensor::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSensorTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcSensor::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSensorTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSensorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcSensor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[998]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSensor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[998]); } const IfcParse::entity& Ifc4x3_add2::IfcSensor::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[998]); } -Ifc4x3_add2::IfcSensor::IfcSensor(IfcEntityInstanceData&& e) : IfcDistributionControlElement(std::move(e)) { } -Ifc4x3_add2::IfcSensor::IfcSensor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSensorTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSensorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcSensor::IfcSensor(const std::weak_ptr& e) : IfcDistributionControlElement(e) { } +// Ifc4x3_add2::IfcSensor::IfcSensor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSensorTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSensorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcSensorType ::Ifc4x3_add2::IfcSensorTypeEnum::Value Ifc4x3_add2::IfcSensorType::PredefinedType() const { return ::Ifc4x3_add2::IfcSensorTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcSensorType::setPredefinedType(::Ifc4x3_add2::IfcSensorTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSensorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcSensorType::setPredefinedType(const ::Ifc4x3_add2::IfcSensorTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSensorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcSensorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[999]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSensorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[999]); } const IfcParse::entity& Ifc4x3_add2::IfcSensorType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[999]); } -Ifc4x3_add2::IfcSensorType::IfcSensorType(IfcEntityInstanceData&& e) : IfcDistributionControlElementType(std::move(e)) { } -Ifc4x3_add2::IfcSensorType::IfcSensorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSensorTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSensorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcSensorType::IfcSensorType(const std::weak_ptr& e) : IfcDistributionControlElementType(e) { } +// Ifc4x3_add2::IfcSensorType::IfcSensorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSensorTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSensorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcSeventhOrderPolynomialSpiral double Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::SepticTerm() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setSepticTerm(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -boost::optional< double > Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::SexticTerm() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setSexticTerm(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::QuinticTerm() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setQuinticTerm(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< double > Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::QuarticTerm() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setQuarticTerm(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< double > Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::CubicTerm() const { if(get_attribute_value(5).isNull()) { return boost::none; } double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setCubicTerm(boost::optional< double > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< double > Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::QuadraticTerm() const { if(get_attribute_value(6).isNull()) { return boost::none; } double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setQuadraticTerm(boost::optional< double > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< double > Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::LinearTerm() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setLinearTerm(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< double > Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::ConstantTerm() const { if(get_attribute_value(8).isNull()) { return boost::none; } double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setConstantTerm(boost::optional< double > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setSepticTerm(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< double > Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::SexticTerm() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setSexticTerm(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::QuinticTerm() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setQuinticTerm(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< double > Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::QuarticTerm() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setQuarticTerm(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< double > Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::CubicTerm() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } double v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setCubicTerm(const std::optional< double >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< double > Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::QuadraticTerm() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } double v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setQuadraticTerm(const std::optional< double >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< double > Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::LinearTerm() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setLinearTerm(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< double > Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::ConstantTerm() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } double v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::setConstantTerm(const std::optional< double >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1002]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1002]); } const IfcParse::entity& Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1002]); } -Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::IfcSeventhOrderPolynomialSpiral(IfcEntityInstanceData&& e) : IfcSpiral(std::move(e)) { } -Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::IfcSeventhOrderPolynomialSpiral(::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_SepticTerm, boost::optional< double > v3_SexticTerm, boost::optional< double > v4_QuinticTerm, boost::optional< double > v5_QuarticTerm, boost::optional< double > v6_CubicTerm, boost::optional< double > v7_QuadraticTerm, boost::optional< double > v8_LinearTerm, boost::optional< double > v9_ConstantTerm) : IfcSpiral(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_SepticTerm)); if (v3_SexticTerm) {set_attribute_value(2, (*v3_SexticTerm)); } if (v4_QuinticTerm) {set_attribute_value(3, (*v4_QuinticTerm)); } if (v5_QuarticTerm) {set_attribute_value(4, (*v5_QuarticTerm)); } if (v6_CubicTerm) {set_attribute_value(5, (*v6_CubicTerm)); } if (v7_QuadraticTerm) {set_attribute_value(6, (*v7_QuadraticTerm)); } if (v8_LinearTerm) {set_attribute_value(7, (*v8_LinearTerm)); } if (v9_ConstantTerm) {set_attribute_value(8, (*v9_ConstantTerm)); }; populate_derived(); } +// Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::IfcSeventhOrderPolynomialSpiral(const std::weak_ptr& e) : IfcSpiral(e) { } +// Ifc4x3_add2::IfcSeventhOrderPolynomialSpiral::IfcSeventhOrderPolynomialSpiral(::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_SepticTerm, std::optional< double > v3_SexticTerm, std::optional< double > v4_QuinticTerm, std::optional< double > v5_QuarticTerm, std::optional< double > v6_CubicTerm, std::optional< double > v7_QuadraticTerm, std::optional< double > v8_LinearTerm, std::optional< double > v9_ConstantTerm) : IfcSpiral(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_SepticTerm)); if (v3_SexticTerm) {set_attribute_value(2, (*v3_SexticTerm)); } if (v4_QuinticTerm) {set_attribute_value(3, (*v4_QuinticTerm)); } if (v5_QuarticTerm) {set_attribute_value(4, (*v5_QuarticTerm)); } if (v6_CubicTerm) {set_attribute_value(5, (*v6_CubicTerm)); } if (v7_QuadraticTerm) {set_attribute_value(6, (*v7_QuadraticTerm)); } if (v8_LinearTerm) {set_attribute_value(7, (*v8_LinearTerm)); } if (v9_ConstantTerm) {set_attribute_value(8, (*v9_ConstantTerm)); }; populate_derived(); } // Function implementations for IfcShadingDevice -boost::optional< ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value > Ifc4x3_add2::IfcShadingDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value > Ifc4x3_add2::IfcShadingDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcShadingDevice::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcShadingDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1003]); } +// const IfcParse::entity& Ifc4x3_add2::IfcShadingDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1003]); } const IfcParse::entity& Ifc4x3_add2::IfcShadingDevice::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1003]); } -Ifc4x3_add2::IfcShadingDevice::IfcShadingDevice(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcShadingDevice::IfcShadingDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcShadingDevice::IfcShadingDevice(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcShadingDevice::IfcShadingDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcShadingDeviceType ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value Ifc4x3_add2::IfcShadingDeviceType::PredefinedType() const { return ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcShadingDeviceType::setPredefinedType(::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcShadingDeviceType::setPredefinedType(const ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcShadingDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1004]); } +// const IfcParse::entity& Ifc4x3_add2::IfcShadingDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1004]); } const IfcParse::entity& Ifc4x3_add2::IfcShadingDeviceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1004]); } -Ifc4x3_add2::IfcShadingDeviceType::IfcShadingDeviceType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcShadingDeviceType::IfcShadingDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcShadingDeviceType::IfcShadingDeviceType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcShadingDeviceType::IfcShadingDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcShapeAspect -aggregate_of< ::Ifc4x3_add2::IfcShapeModel >::ptr Ifc4x3_add2::IfcShapeAspect::ShapeRepresentations() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcShapeModel >(); } -void Ifc4x3_add2::IfcShapeAspect::setShapeRepresentations(aggregate_of< ::Ifc4x3_add2::IfcShapeModel >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } -boost::optional< std::string > Ifc4x3_add2::IfcShapeAspect::Name() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcShapeAspect::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::string > Ifc4x3_add2::IfcShapeAspect::Description() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcShapeAspect::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::vector< ::Ifc4x3_add2::IfcShapeModel > Ifc4x3_add2::IfcShapeAspect::ShapeRepresentations() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcShapeModel>(es); } +void Ifc4x3_add2::IfcShapeAspect::setShapeRepresentations(const std::vector< ::Ifc4x3_add2::IfcShapeModel >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } +std::optional< std::string > Ifc4x3_add2::IfcShapeAspect::Name() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcShapeAspect::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcShapeAspect::Description() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcShapeAspect::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } boost::logic::tribool Ifc4x3_add2::IfcShapeAspect::ProductDefinitional() const { boost::logic::tribool v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcShapeAspect::setProductDefinitional(boost::logic::tribool v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -::Ifc4x3_add2::IfcProductRepresentationSelect* Ifc4x3_add2::IfcShapeAspect::PartOfProductDefinitionShape() const { if(get_attribute_value(4).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcProductRepresentationSelect>(true); } -void Ifc4x3_add2::IfcShapeAspect::setPartOfProductDefinitionShape(::Ifc4x3_add2::IfcProductRepresentationSelect* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcShapeAspect::setProductDefinitional(const boost::logic::tribool& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcProductRepresentationSelect Ifc4x3_add2::IfcShapeAspect::PartOfProductDefinitionShape() const { if(get_attribute_value(4).isNull()) { return ::Ifc4x3_add2::IfcProductRepresentationSelect{}; } return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcProductRepresentationSelect>(); } +void Ifc4x3_add2::IfcShapeAspect::setPartOfProductDefinitionShape(const ::Ifc4x3_add2::IfcProductRepresentationSelect& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_add2::IfcShapeAspect::HasExternalReferences() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[427], 3)->as(); } +std::vector<::Ifc4x3_add2::IfcExternalReferenceRelationship> Ifc4x3_add2::IfcShapeAspect::HasExternalReferences() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[427], 3)); } -const IfcParse::entity& Ifc4x3_add2::IfcShapeAspect::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1006]); } +// const IfcParse::entity& Ifc4x3_add2::IfcShapeAspect::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1006]); } const IfcParse::entity& Ifc4x3_add2::IfcShapeAspect::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1006]); } -Ifc4x3_add2::IfcShapeAspect::IfcShapeAspect(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcShapeAspect::IfcShapeAspect(aggregate_of< ::Ifc4x3_add2::IfcShapeModel >::ptr v1_ShapeRepresentations, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, boost::logic::tribool v4_ProductDefinitional, ::Ifc4x3_add2::IfcProductRepresentationSelect* v5_PartOfProductDefinitionShape) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_ShapeRepresentations)->generalize()); if (v2_Name) {set_attribute_value(1, (*v2_Name)); } if (v3_Description) {set_attribute_value(2, (*v3_Description)); }set_attribute_value(3, (v4_ProductDefinitional));set_attribute_value(4, v5_PartOfProductDefinitionShape ? v5_PartOfProductDefinitionShape->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcShapeAspect::IfcShapeAspect(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcShapeAspect::IfcShapeAspect(std::vector< ::Ifc4x3_add2::IfcShapeModel > v1_ShapeRepresentations, std::optional< std::string > v2_Name, std::optional< std::string > v3_Description, boost::logic::tribool v4_ProductDefinitional, ::Ifc4x3_add2::IfcProductRepresentationSelect v5_PartOfProductDefinitionShape) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_ShapeRepresentations)->generalize()); if (v2_Name) {set_attribute_value(1, (*v2_Name)); } if (v3_Description) {set_attribute_value(2, (*v3_Description)); }set_attribute_value(3, (v4_ProductDefinitional)); if (v5_PartOfProductDefinitionShape) {set_attribute_value(4, (*v5_PartOfProductDefinitionShape)); }; populate_derived(); } // Function implementations for IfcShapeModel -::Ifc4x3_add2::IfcShapeAspect::list::ptr Ifc4x3_add2::IfcShapeModel::OfShapeAspect() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[1006], 0)->as(); } +std::vector<::Ifc4x3_add2::IfcShapeAspect> Ifc4x3_add2::IfcShapeModel::OfShapeAspect() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[1006], 0)); } -const IfcParse::entity& Ifc4x3_add2::IfcShapeModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1007]); } +// const IfcParse::entity& Ifc4x3_add2::IfcShapeModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1007]); } const IfcParse::entity& Ifc4x3_add2::IfcShapeModel::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1007]); } -Ifc4x3_add2::IfcShapeModel::IfcShapeModel(IfcEntityInstanceData&& e) : IfcRepresentation(std::move(e)) { } -Ifc4x3_add2::IfcShapeModel::IfcShapeModel(::Ifc4x3_add2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr v4_Items) : IfcRepresentation(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_ContextOfItems ? v1_ContextOfItems->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_RepresentationIdentifier) {set_attribute_value(1, (*v2_RepresentationIdentifier)); } if (v3_RepresentationType) {set_attribute_value(2, (*v3_RepresentationType)); }set_attribute_value(3, (v4_Items)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcShapeModel::IfcShapeModel(const std::weak_ptr& e) : IfcRepresentation(e) { } +// Ifc4x3_add2::IfcShapeModel::IfcShapeModel(::Ifc4x3_add2::IfcRepresentationContext v1_ContextOfItems, std::optional< std::string > v2_RepresentationIdentifier, std::optional< std::string > v3_RepresentationType, std::vector< ::Ifc4x3_add2::IfcRepresentationItem > v4_Items) : IfcRepresentation(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_ContextOfItems)); if (v2_RepresentationIdentifier) {set_attribute_value(1, (*v2_RepresentationIdentifier)); } if (v3_RepresentationType) {set_attribute_value(2, (*v3_RepresentationType)); }set_attribute_value(3, (v4_Items)->generalize());; populate_derived(); } // Function implementations for IfcShapeRepresentation -const IfcParse::entity& Ifc4x3_add2::IfcShapeRepresentation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1008]); } +// const IfcParse::entity& Ifc4x3_add2::IfcShapeRepresentation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1008]); } const IfcParse::entity& Ifc4x3_add2::IfcShapeRepresentation::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1008]); } -Ifc4x3_add2::IfcShapeRepresentation::IfcShapeRepresentation(IfcEntityInstanceData&& e) : IfcShapeModel(std::move(e)) { } -Ifc4x3_add2::IfcShapeRepresentation::IfcShapeRepresentation(::Ifc4x3_add2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr v4_Items) : IfcShapeModel(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_ContextOfItems ? v1_ContextOfItems->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_RepresentationIdentifier) {set_attribute_value(1, (*v2_RepresentationIdentifier)); } if (v3_RepresentationType) {set_attribute_value(2, (*v3_RepresentationType)); }set_attribute_value(3, (v4_Items)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcShapeRepresentation::IfcShapeRepresentation(const std::weak_ptr& e) : IfcShapeModel(e) { } +// Ifc4x3_add2::IfcShapeRepresentation::IfcShapeRepresentation(::Ifc4x3_add2::IfcRepresentationContext v1_ContextOfItems, std::optional< std::string > v2_RepresentationIdentifier, std::optional< std::string > v3_RepresentationType, std::vector< ::Ifc4x3_add2::IfcRepresentationItem > v4_Items) : IfcShapeModel(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_ContextOfItems)); if (v2_RepresentationIdentifier) {set_attribute_value(1, (*v2_RepresentationIdentifier)); } if (v3_RepresentationType) {set_attribute_value(2, (*v3_RepresentationType)); }set_attribute_value(3, (v4_Items)->generalize());; populate_derived(); } // Function implementations for IfcShellBasedSurfaceModel -aggregate_of< ::Ifc4x3_add2::IfcShell >::ptr Ifc4x3_add2::IfcShellBasedSurfaceModel::SbsmBoundary() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcShell >(); } -void Ifc4x3_add2::IfcShellBasedSurfaceModel::setSbsmBoundary(aggregate_of< ::Ifc4x3_add2::IfcShell >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcShell > Ifc4x3_add2::IfcShellBasedSurfaceModel::SbsmBoundary() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcShell>(es); } +void Ifc4x3_add2::IfcShellBasedSurfaceModel::setSbsmBoundary(const std::vector< ::Ifc4x3_add2::IfcShell >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcShellBasedSurfaceModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1011]); } +// const IfcParse::entity& Ifc4x3_add2::IfcShellBasedSurfaceModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1011]); } const IfcParse::entity& Ifc4x3_add2::IfcShellBasedSurfaceModel::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1011]); } -Ifc4x3_add2::IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(aggregate_of< ::Ifc4x3_add2::IfcShell >::ptr v1_SbsmBoundary) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_SbsmBoundary)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(std::vector< ::Ifc4x3_add2::IfcShell > v1_SbsmBoundary) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_SbsmBoundary)->generalize());; populate_derived(); } // Function implementations for IfcSign -boost::optional< ::Ifc4x3_add2::IfcSignTypeEnum::Value > Ifc4x3_add2::IfcSign::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSignTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcSign::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSignTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSignTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcSignTypeEnum::Value > Ifc4x3_add2::IfcSign::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSignTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcSign::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSignTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSignTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcSign::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1012]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSign::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1012]); } const IfcParse::entity& Ifc4x3_add2::IfcSign::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1012]); } -Ifc4x3_add2::IfcSign::IfcSign(IfcEntityInstanceData&& e) : IfcElementComponent(std::move(e)) { } -Ifc4x3_add2::IfcSign::IfcSign(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSignTypeEnum::Value > v9_PredefinedType) : IfcElementComponent(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSignTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcSign::IfcSign(const std::weak_ptr& e) : IfcElementComponent(e) { } +// Ifc4x3_add2::IfcSign::IfcSign(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSignTypeEnum::Value > v9_PredefinedType) : IfcElementComponent(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSignTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcSignType ::Ifc4x3_add2::IfcSignTypeEnum::Value Ifc4x3_add2::IfcSignType::PredefinedType() const { return ::Ifc4x3_add2::IfcSignTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcSignType::setPredefinedType(::Ifc4x3_add2::IfcSignTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSignTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcSignType::setPredefinedType(const ::Ifc4x3_add2::IfcSignTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSignTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcSignType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1016]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSignType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1016]); } const IfcParse::entity& Ifc4x3_add2::IfcSignType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1016]); } -Ifc4x3_add2::IfcSignType::IfcSignType(IfcEntityInstanceData&& e) : IfcElementComponentType(std::move(e)) { } -Ifc4x3_add2::IfcSignType::IfcSignType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSignTypeEnum::Value v10_PredefinedType) : IfcElementComponentType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSignTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcSignType::IfcSignType(const std::weak_ptr& e) : IfcElementComponentType(e) { } +// Ifc4x3_add2::IfcSignType::IfcSignType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSignTypeEnum::Value v10_PredefinedType) : IfcElementComponentType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSignTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcSignal -boost::optional< ::Ifc4x3_add2::IfcSignalTypeEnum::Value > Ifc4x3_add2::IfcSignal::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSignalTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcSignal::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSignalTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSignalTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcSignalTypeEnum::Value > Ifc4x3_add2::IfcSignal::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSignalTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcSignal::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSignalTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSignalTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcSignal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1013]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSignal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1013]); } const IfcParse::entity& Ifc4x3_add2::IfcSignal::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1013]); } -Ifc4x3_add2::IfcSignal::IfcSignal(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcSignal::IfcSignal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSignalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSignalTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcSignal::IfcSignal(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcSignal::IfcSignal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSignalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSignalTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcSignalType ::Ifc4x3_add2::IfcSignalTypeEnum::Value Ifc4x3_add2::IfcSignalType::PredefinedType() const { return ::Ifc4x3_add2::IfcSignalTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcSignalType::setPredefinedType(::Ifc4x3_add2::IfcSignalTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSignalTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcSignalType::setPredefinedType(const ::Ifc4x3_add2::IfcSignalTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSignalTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcSignalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1014]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSignalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1014]); } const IfcParse::entity& Ifc4x3_add2::IfcSignalType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1014]); } -Ifc4x3_add2::IfcSignalType::IfcSignalType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcSignalType::IfcSignalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSignalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSignalTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcSignalType::IfcSignalType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcSignalType::IfcSignalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSignalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSignalTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcSimpleProperty -const IfcParse::entity& Ifc4x3_add2::IfcSimpleProperty::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1018]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSimpleProperty::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1018]); } const IfcParse::entity& Ifc4x3_add2::IfcSimpleProperty::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1018]); } -Ifc4x3_add2::IfcSimpleProperty::IfcSimpleProperty(IfcEntityInstanceData&& e) : IfcProperty(std::move(e)) { } -Ifc4x3_add2::IfcSimpleProperty::IfcSimpleProperty(std::string v1_Name, boost::optional< std::string > v2_Specification) : IfcProperty(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); }; populate_derived(); } +// Ifc4x3_add2::IfcSimpleProperty::IfcSimpleProperty(const std::weak_ptr& e) : IfcProperty(e) { } +// Ifc4x3_add2::IfcSimpleProperty::IfcSimpleProperty(std::string v1_Name, std::optional< std::string > v2_Specification) : IfcProperty(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Name)); if (v2_Specification) {set_attribute_value(1, (*v2_Specification)); }; populate_derived(); } // Function implementations for IfcSimplePropertyTemplate -boost::optional< ::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Value > Ifc4x3_add2::IfcSimplePropertyTemplate::TemplateType() const { if(get_attribute_value(4).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::FromString(get_attribute_value(4)); } -void Ifc4x3_add2::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Value > v) { if (v) {set_attribute_value(4, EnumerationReference(&::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcSimplePropertyTemplate::PrimaryMeasureType() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< std::string > Ifc4x3_add2::IfcSimplePropertyTemplate::SecondaryMeasureType() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -::Ifc4x3_add2::IfcPropertyEnumeration* Ifc4x3_add2::IfcSimplePropertyTemplate::Enumerators() const { if(get_attribute_value(7).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(7)))->as<::Ifc4x3_add2::IfcPropertyEnumeration>(true); } -void Ifc4x3_add2::IfcSimplePropertyTemplate::setEnumerators(::Ifc4x3_add2::IfcPropertyEnumeration* v) { set_attribute_value(7, v->as());if constexpr (false)unset_attribute_value(7); } -::Ifc4x3_add2::IfcUnit* Ifc4x3_add2::IfcSimplePropertyTemplate::PrimaryUnit() const { if(get_attribute_value(8).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(8)))->as<::Ifc4x3_add2::IfcUnit>(true); } -void Ifc4x3_add2::IfcSimplePropertyTemplate::setPrimaryUnit(::Ifc4x3_add2::IfcUnit* v) { set_attribute_value(8, v->as());if constexpr (false)unset_attribute_value(8); } -::Ifc4x3_add2::IfcUnit* Ifc4x3_add2::IfcSimplePropertyTemplate::SecondaryUnit() const { if(get_attribute_value(9).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(9)))->as<::Ifc4x3_add2::IfcUnit>(true); } -void Ifc4x3_add2::IfcSimplePropertyTemplate::setSecondaryUnit(::Ifc4x3_add2::IfcUnit* v) { set_attribute_value(9, v->as());if constexpr (false)unset_attribute_value(9); } -boost::optional< std::string > Ifc4x3_add2::IfcSimplePropertyTemplate::Expression() const { if(get_attribute_value(10).isNull()) { return boost::none; } std::string v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< ::Ifc4x3_add2::IfcStateEnum::Value > Ifc4x3_add2::IfcSimplePropertyTemplate::AccessState() const { if(get_attribute_value(11).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcStateEnum::FromString(get_attribute_value(11)); } -void Ifc4x3_add2::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4x3_add2::IfcStateEnum::Value > v) { if (v) {set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcStateEnum::Class(), (size_t) *v));} else {unset_attribute_value(11);} } +std::optional< ::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Value > Ifc4x3_add2::IfcSimplePropertyTemplate::TemplateType() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::FromString(get_attribute_value(4)); } +void Ifc4x3_add2::IfcSimplePropertyTemplate::setTemplateType(const std::optional< ::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Value >& v) { if (v) {set_attribute_value(4, EnumerationReference(&::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcSimplePropertyTemplate::PrimaryMeasureType() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcSimplePropertyTemplate::setPrimaryMeasureType(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcSimplePropertyTemplate::SecondaryMeasureType() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcSimplePropertyTemplate::setSecondaryMeasureType(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +::Ifc4x3_add2::IfcPropertyEnumeration Ifc4x3_add2::IfcSimplePropertyTemplate::Enumerators() const { if(get_attribute_value(7).isNull()) { return ::Ifc4x3_add2::IfcPropertyEnumeration{}; } return ((express::Base)(get_attribute_value(7))).as<::Ifc4x3_add2::IfcPropertyEnumeration>(); } +void Ifc4x3_add2::IfcSimplePropertyTemplate::setEnumerators(const ::Ifc4x3_add2::IfcPropertyEnumeration& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } +::Ifc4x3_add2::IfcUnit Ifc4x3_add2::IfcSimplePropertyTemplate::PrimaryUnit() const { if(get_attribute_value(8).isNull()) { return ::Ifc4x3_add2::IfcUnit{}; } return ((express::Base)(get_attribute_value(8))).as<::Ifc4x3_add2::IfcUnit>(); } +void Ifc4x3_add2::IfcSimplePropertyTemplate::setPrimaryUnit(const ::Ifc4x3_add2::IfcUnit& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } +::Ifc4x3_add2::IfcUnit Ifc4x3_add2::IfcSimplePropertyTemplate::SecondaryUnit() const { if(get_attribute_value(9).isNull()) { return ::Ifc4x3_add2::IfcUnit{}; } return ((express::Base)(get_attribute_value(9))).as<::Ifc4x3_add2::IfcUnit>(); } +void Ifc4x3_add2::IfcSimplePropertyTemplate::setSecondaryUnit(const ::Ifc4x3_add2::IfcUnit& v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } +std::optional< std::string > Ifc4x3_add2::IfcSimplePropertyTemplate::Expression() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } std::string v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcSimplePropertyTemplate::setExpression(const std::optional< std::string >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcStateEnum::Value > Ifc4x3_add2::IfcSimplePropertyTemplate::AccessState() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcStateEnum::FromString(get_attribute_value(11)); } +void Ifc4x3_add2::IfcSimplePropertyTemplate::setAccessState(const std::optional< ::Ifc4x3_add2::IfcStateEnum::Value >& v) { if (v) {set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcStateEnum::Class(), (size_t) *v));} else {unset_attribute_value(11);} } -const IfcParse::entity& Ifc4x3_add2::IfcSimplePropertyTemplate::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1019]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSimplePropertyTemplate::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1019]); } const IfcParse::entity& Ifc4x3_add2::IfcSimplePropertyTemplate::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1019]); } -Ifc4x3_add2::IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(IfcEntityInstanceData&& e) : IfcPropertyTemplate(std::move(e)) { } -Ifc4x3_add2::IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< ::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Value > v5_TemplateType, boost::optional< std::string > v6_PrimaryMeasureType, boost::optional< std::string > v7_SecondaryMeasureType, ::Ifc4x3_add2::IfcPropertyEnumeration* v8_Enumerators, ::Ifc4x3_add2::IfcUnit* v9_PrimaryUnit, ::Ifc4x3_add2::IfcUnit* v10_SecondaryUnit, boost::optional< std::string > v11_Expression, boost::optional< ::Ifc4x3_add2::IfcStateEnum::Value > v12_AccessState) : IfcPropertyTemplate(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_TemplateType) {set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Class(),(size_t)*v5_TemplateType))); } if (v6_PrimaryMeasureType) {set_attribute_value(5, (*v6_PrimaryMeasureType)); } if (v7_SecondaryMeasureType) {set_attribute_value(6, (*v7_SecondaryMeasureType)); }set_attribute_value(7, v8_Enumerators ? v8_Enumerators->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, v9_PrimaryUnit ? v9_PrimaryUnit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(9, v10_SecondaryUnit ? v10_SecondaryUnit->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v11_Expression) {set_attribute_value(10, (*v11_Expression)); } if (v12_AccessState) {set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcStateEnum::Class(),(size_t)*v12_AccessState))); }; populate_derived(); } +// Ifc4x3_add2::IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(const std::weak_ptr& e) : IfcPropertyTemplate(e) { } +// Ifc4x3_add2::IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< ::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Value > v5_TemplateType, std::optional< std::string > v6_PrimaryMeasureType, std::optional< std::string > v7_SecondaryMeasureType, ::Ifc4x3_add2::IfcPropertyEnumeration v8_Enumerators, ::Ifc4x3_add2::IfcUnit v9_PrimaryUnit, ::Ifc4x3_add2::IfcUnit v10_SecondaryUnit, std::optional< std::string > v11_Expression, std::optional< ::Ifc4x3_add2::IfcStateEnum::Value > v12_AccessState) : IfcPropertyTemplate(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_TemplateType) {set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Class(),(size_t)*v5_TemplateType))); } if (v6_PrimaryMeasureType) {set_attribute_value(5, (*v6_PrimaryMeasureType)); } if (v7_SecondaryMeasureType) {set_attribute_value(6, (*v7_SecondaryMeasureType)); } if (v8_Enumerators) {set_attribute_value(7, (*v8_Enumerators)); } if (v9_PrimaryUnit) {set_attribute_value(8, (*v9_PrimaryUnit)); } if (v10_SecondaryUnit) {set_attribute_value(9, (*v10_SecondaryUnit)); } if (v11_Expression) {set_attribute_value(10, (*v11_Expression)); } if (v12_AccessState) {set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcStateEnum::Class(),(size_t)*v12_AccessState))); }; populate_derived(); } // Function implementations for IfcSineSpiral double Ifc4x3_add2::IfcSineSpiral::SineTerm() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcSineSpiral::setSineTerm(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -boost::optional< double > Ifc4x3_add2::IfcSineSpiral::LinearTerm() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcSineSpiral::setLinearTerm(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcSineSpiral::ConstantTerm() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcSineSpiral::setConstantTerm(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +void Ifc4x3_add2::IfcSineSpiral::setSineTerm(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< double > Ifc4x3_add2::IfcSineSpiral::LinearTerm() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcSineSpiral::setLinearTerm(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcSineSpiral::ConstantTerm() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcSineSpiral::setConstantTerm(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -const IfcParse::entity& Ifc4x3_add2::IfcSineSpiral::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1022]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSineSpiral::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1022]); } const IfcParse::entity& Ifc4x3_add2::IfcSineSpiral::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1022]); } -Ifc4x3_add2::IfcSineSpiral::IfcSineSpiral(IfcEntityInstanceData&& e) : IfcSpiral(std::move(e)) { } -Ifc4x3_add2::IfcSineSpiral::IfcSineSpiral(::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_SineTerm, boost::optional< double > v3_LinearTerm, boost::optional< double > v4_ConstantTerm) : IfcSpiral(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_SineTerm)); if (v3_LinearTerm) {set_attribute_value(2, (*v3_LinearTerm)); } if (v4_ConstantTerm) {set_attribute_value(3, (*v4_ConstantTerm)); }; populate_derived(); } +// Ifc4x3_add2::IfcSineSpiral::IfcSineSpiral(const std::weak_ptr& e) : IfcSpiral(e) { } +// Ifc4x3_add2::IfcSineSpiral::IfcSineSpiral(::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_SineTerm, std::optional< double > v3_LinearTerm, std::optional< double > v4_ConstantTerm) : IfcSpiral(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_SineTerm)); if (v3_LinearTerm) {set_attribute_value(2, (*v3_LinearTerm)); } if (v4_ConstantTerm) {set_attribute_value(3, (*v4_ConstantTerm)); }; populate_derived(); } // Function implementations for IfcSite -boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x3_add2::IfcSite::RefLatitude() const { if(get_attribute_value(9).isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x3_add2::IfcSite::RefLongitude() const { if(get_attribute_value(10).isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< double > Ifc4x3_add2::IfcSite::RefElevation() const { if(get_attribute_value(11).isNull()) { return boost::none; } double v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcSite::setRefElevation(boost::optional< double > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -boost::optional< std::string > Ifc4x3_add2::IfcSite::LandTitleNumber() const { if(get_attribute_value(12).isNull()) { return boost::none; } std::string v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -::Ifc4x3_add2::IfcPostalAddress* Ifc4x3_add2::IfcSite::SiteAddress() const { if(get_attribute_value(13).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(13)))->as<::Ifc4x3_add2::IfcPostalAddress>(true); } -void Ifc4x3_add2::IfcSite::setSiteAddress(::Ifc4x3_add2::IfcPostalAddress* v) { set_attribute_value(13, v->as());if constexpr (false)unset_attribute_value(13); } +std::optional< std::vector< int > /*[3:4]*/ > Ifc4x3_add2::IfcSite::RefLatitude() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } std::vector< int > /*[3:4]*/ v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcSite::setRefLatitude(const std::optional< std::vector< int > /*[3:4]*/ >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< std::vector< int > /*[3:4]*/ > Ifc4x3_add2::IfcSite::RefLongitude() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } std::vector< int > /*[3:4]*/ v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcSite::setRefLongitude(const std::optional< std::vector< int > /*[3:4]*/ >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< double > Ifc4x3_add2::IfcSite::RefElevation() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } double v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcSite::setRefElevation(const std::optional< double >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +std::optional< std::string > Ifc4x3_add2::IfcSite::LandTitleNumber() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } std::string v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcSite::setLandTitleNumber(const std::optional< std::string >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +::Ifc4x3_add2::IfcPostalAddress Ifc4x3_add2::IfcSite::SiteAddress() const { if(get_attribute_value(13).isNull()) { return ::Ifc4x3_add2::IfcPostalAddress{}; } return ((express::Base)(get_attribute_value(13))).as<::Ifc4x3_add2::IfcPostalAddress>(); } +void Ifc4x3_add2::IfcSite::setSiteAddress(const ::Ifc4x3_add2::IfcPostalAddress& v) { set_attribute_value(13, v);if constexpr (false)unset_attribute_value(13); } -const IfcParse::entity& Ifc4x3_add2::IfcSite::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1024]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSite::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1024]); } const IfcParse::entity& Ifc4x3_add2::IfcSite::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1024]); } -Ifc4x3_add2::IfcSite::IfcSite(IfcEntityInstanceData&& e) : IfcSpatialStructureElement(std::move(e)) { } -Ifc4x3_add2::IfcSite::IfcSite(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< std::vector< int > /*[3:4]*/ > v10_RefLatitude, boost::optional< std::vector< int > /*[3:4]*/ > v11_RefLongitude, boost::optional< double > v12_RefElevation, boost::optional< std::string > v13_LandTitleNumber, ::Ifc4x3_add2::IfcPostalAddress* v14_SiteAddress) : IfcSpatialStructureElement(IfcEntityInstanceData(in_memory_attribute_storage(14))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_RefLatitude) {set_attribute_value(9, (*v10_RefLatitude)); } if (v11_RefLongitude) {set_attribute_value(10, (*v11_RefLongitude)); } if (v12_RefElevation) {set_attribute_value(11, (*v12_RefElevation)); } if (v13_LandTitleNumber) {set_attribute_value(12, (*v13_LandTitleNumber)); }set_attribute_value(13, v14_SiteAddress ? v14_SiteAddress->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcSite::IfcSite(const std::weak_ptr& e) : IfcSpatialStructureElement(e) { } +// Ifc4x3_add2::IfcSite::IfcSite(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< std::vector< int > /*[3:4]*/ > v10_RefLatitude, std::optional< std::vector< int > /*[3:4]*/ > v11_RefLongitude, std::optional< double > v12_RefElevation, std::optional< std::string > v13_LandTitleNumber, ::Ifc4x3_add2::IfcPostalAddress v14_SiteAddress) : IfcSpatialStructureElement(const std::weak_ptr&(in_memory_attribute_storage(14))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_RefLatitude) {set_attribute_value(9, (*v10_RefLatitude)); } if (v11_RefLongitude) {set_attribute_value(10, (*v11_RefLongitude)); } if (v12_RefElevation) {set_attribute_value(11, (*v12_RefElevation)); } if (v13_LandTitleNumber) {set_attribute_value(12, (*v13_LandTitleNumber)); } if (v14_SiteAddress) {set_attribute_value(13, (*v14_SiteAddress)); }; populate_derived(); } // Function implementations for IfcSlab -boost::optional< ::Ifc4x3_add2::IfcSlabTypeEnum::Value > Ifc4x3_add2::IfcSlab::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSlabTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcSlab::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSlabTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSlabTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcSlabTypeEnum::Value > Ifc4x3_add2::IfcSlab::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSlabTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcSlab::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSlabTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSlabTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcSlab::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1028]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSlab::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1028]); } const IfcParse::entity& Ifc4x3_add2::IfcSlab::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1028]); } -Ifc4x3_add2::IfcSlab::IfcSlab(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcSlab::IfcSlab(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSlabTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSlabTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcSlab::IfcSlab(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcSlab::IfcSlab(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSlabTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSlabTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcSlabType ::Ifc4x3_add2::IfcSlabTypeEnum::Value Ifc4x3_add2::IfcSlabType::PredefinedType() const { return ::Ifc4x3_add2::IfcSlabTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcSlabType::setPredefinedType(::Ifc4x3_add2::IfcSlabTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSlabTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcSlabType::setPredefinedType(const ::Ifc4x3_add2::IfcSlabTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSlabTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcSlabType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1029]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSlabType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1029]); } const IfcParse::entity& Ifc4x3_add2::IfcSlabType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1029]); } -Ifc4x3_add2::IfcSlabType::IfcSlabType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcSlabType::IfcSlabType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSlabTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSlabTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcSlabType::IfcSlabType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcSlabType::IfcSlabType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSlabTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSlabTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcSlippageConnectionCondition -boost::optional< double > Ifc4x3_add2::IfcSlippageConnectionCondition::SlippageX() const { if(get_attribute_value(1).isNull()) { return boost::none; } double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< double > Ifc4x3_add2::IfcSlippageConnectionCondition::SlippageY() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcSlippageConnectionCondition::SlippageZ() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< double > Ifc4x3_add2::IfcSlippageConnectionCondition::SlippageX() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } double v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcSlippageConnectionCondition::setSlippageX(const std::optional< double >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< double > Ifc4x3_add2::IfcSlippageConnectionCondition::SlippageY() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcSlippageConnectionCondition::setSlippageY(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcSlippageConnectionCondition::SlippageZ() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcSlippageConnectionCondition::setSlippageZ(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -const IfcParse::entity& Ifc4x3_add2::IfcSlippageConnectionCondition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1031]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSlippageConnectionCondition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1031]); } const IfcParse::entity& Ifc4x3_add2::IfcSlippageConnectionCondition::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1031]); } -Ifc4x3_add2::IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(IfcEntityInstanceData&& e) : IfcStructuralConnectionCondition(std::move(e)) { } -Ifc4x3_add2::IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(boost::optional< std::string > v1_Name, boost::optional< double > v2_SlippageX, boost::optional< double > v3_SlippageY, boost::optional< double > v4_SlippageZ) : IfcStructuralConnectionCondition(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_SlippageX) {set_attribute_value(1, (*v2_SlippageX)); } if (v3_SlippageY) {set_attribute_value(2, (*v3_SlippageY)); } if (v4_SlippageZ) {set_attribute_value(3, (*v4_SlippageZ)); }; populate_derived(); } +// Ifc4x3_add2::IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(const std::weak_ptr& e) : IfcStructuralConnectionCondition(e) { } +// Ifc4x3_add2::IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(std::optional< std::string > v1_Name, std::optional< double > v2_SlippageX, std::optional< double > v3_SlippageY, std::optional< double > v4_SlippageZ) : IfcStructuralConnectionCondition(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_SlippageX) {set_attribute_value(1, (*v2_SlippageX)); } if (v3_SlippageY) {set_attribute_value(2, (*v3_SlippageY)); } if (v4_SlippageZ) {set_attribute_value(3, (*v4_SlippageZ)); }; populate_derived(); } // Function implementations for IfcSolarDevice -boost::optional< ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value > Ifc4x3_add2::IfcSolarDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value > Ifc4x3_add2::IfcSolarDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcSolarDevice::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcSolarDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1032]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSolarDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1032]); } const IfcParse::entity& Ifc4x3_add2::IfcSolarDevice::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1032]); } -Ifc4x3_add2::IfcSolarDevice::IfcSolarDevice(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcSolarDevice::IfcSolarDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcSolarDevice::IfcSolarDevice(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcSolarDevice::IfcSolarDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcSolarDeviceType ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value Ifc4x3_add2::IfcSolarDeviceType::PredefinedType() const { return ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcSolarDeviceType::setPredefinedType(::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcSolarDeviceType::setPredefinedType(const ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcSolarDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1033]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSolarDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1033]); } const IfcParse::entity& Ifc4x3_add2::IfcSolarDeviceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1033]); } -Ifc4x3_add2::IfcSolarDeviceType::IfcSolarDeviceType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcSolarDeviceType::IfcSolarDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcSolarDeviceType::IfcSolarDeviceType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcSolarDeviceType::IfcSolarDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcSolidModel -const IfcParse::entity& Ifc4x3_add2::IfcSolidModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1036]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSolidModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1036]); } const IfcParse::entity& Ifc4x3_add2::IfcSolidModel::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1036]); } -Ifc4x3_add2::IfcSolidModel::IfcSolidModel(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcSolidModel::IfcSolidModel() : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcSolidModel::IfcSolidModel(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcSolidModel::IfcSolidModel() : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcSpace -boost::optional< ::Ifc4x3_add2::IfcSpaceTypeEnum::Value > Ifc4x3_add2::IfcSpace::PredefinedType() const { if(get_attribute_value(9).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSpaceTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcSpace::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSpaceTypeEnum::Value > v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSpaceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } -boost::optional< double > Ifc4x3_add2::IfcSpace::ElevationWithFlooring() const { if(get_attribute_value(10).isNull()) { return boost::none; } double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcSpaceTypeEnum::Value > Ifc4x3_add2::IfcSpace::PredefinedType() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSpaceTypeEnum::FromString(get_attribute_value(9)); } +void Ifc4x3_add2::IfcSpace::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSpaceTypeEnum::Value >& v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSpaceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } +std::optional< double > Ifc4x3_add2::IfcSpace::ElevationWithFlooring() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } double v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcSpace::setElevationWithFlooring(const std::optional< double >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -::Ifc4x3_add2::IfcRelCoversSpaces::list::ptr Ifc4x3_add2::IfcSpace::HasCoverings() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[928], 4)->as(); } -::Ifc4x3_add2::IfcRelSpaceBoundary::list::ptr Ifc4x3_add2::IfcSpace::BoundedBy() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[945], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelCoversSpaces> Ifc4x3_add2::IfcSpace::HasCoverings() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[928], 4)); } +std::vector<::Ifc4x3_add2::IfcRelSpaceBoundary> Ifc4x3_add2::IfcSpace::BoundedBy() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[945], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcSpace::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1042]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSpace::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1042]); } const IfcParse::entity& Ifc4x3_add2::IfcSpace::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1042]); } -Ifc4x3_add2::IfcSpace::IfcSpace(IfcEntityInstanceData&& e) : IfcSpatialStructureElement(std::move(e)) { } -Ifc4x3_add2::IfcSpace::IfcSpace(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< ::Ifc4x3_add2::IfcSpaceTypeEnum::Value > v10_PredefinedType, boost::optional< double > v11_ElevationWithFlooring) : IfcSpatialStructureElement(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSpaceTypeEnum::Class(),(size_t)*v10_PredefinedType))); } if (v11_ElevationWithFlooring) {set_attribute_value(10, (*v11_ElevationWithFlooring)); }; populate_derived(); } +// Ifc4x3_add2::IfcSpace::IfcSpace(const std::weak_ptr& e) : IfcSpatialStructureElement(e) { } +// Ifc4x3_add2::IfcSpace::IfcSpace(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< ::Ifc4x3_add2::IfcSpaceTypeEnum::Value > v10_PredefinedType, std::optional< double > v11_ElevationWithFlooring) : IfcSpatialStructureElement(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSpaceTypeEnum::Class(),(size_t)*v10_PredefinedType))); } if (v11_ElevationWithFlooring) {set_attribute_value(10, (*v11_ElevationWithFlooring)); }; populate_derived(); } // Function implementations for IfcSpaceHeater -boost::optional< ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value > Ifc4x3_add2::IfcSpaceHeater::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value > Ifc4x3_add2::IfcSpaceHeater::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcSpaceHeater::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcSpaceHeater::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1044]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSpaceHeater::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1044]); } const IfcParse::entity& Ifc4x3_add2::IfcSpaceHeater::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1044]); } -Ifc4x3_add2::IfcSpaceHeater::IfcSpaceHeater(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcSpaceHeater::IfcSpaceHeater(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcSpaceHeater::IfcSpaceHeater(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcSpaceHeater::IfcSpaceHeater(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcSpaceHeaterType ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value Ifc4x3_add2::IfcSpaceHeaterType::PredefinedType() const { return ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcSpaceHeaterType::setPredefinedType(::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcSpaceHeaterType::setPredefinedType(const ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcSpaceHeaterType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1045]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSpaceHeaterType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1045]); } const IfcParse::entity& Ifc4x3_add2::IfcSpaceHeaterType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1045]); } -Ifc4x3_add2::IfcSpaceHeaterType::IfcSpaceHeaterType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcSpaceHeaterType::IfcSpaceHeaterType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcSpaceHeaterType::IfcSpaceHeaterType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcSpaceHeaterType::IfcSpaceHeaterType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcSpaceType ::Ifc4x3_add2::IfcSpaceTypeEnum::Value Ifc4x3_add2::IfcSpaceType::PredefinedType() const { return ::Ifc4x3_add2::IfcSpaceTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcSpaceType::setPredefinedType(::Ifc4x3_add2::IfcSpaceTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSpaceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -boost::optional< std::string > Ifc4x3_add2::IfcSpaceType::LongName() const { if(get_attribute_value(10).isNull()) { return boost::none; } std::string v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcSpaceType::setLongName(boost::optional< std::string > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +void Ifc4x3_add2::IfcSpaceType::setPredefinedType(const ::Ifc4x3_add2::IfcSpaceTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSpaceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +std::optional< std::string > Ifc4x3_add2::IfcSpaceType::LongName() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } std::string v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcSpaceType::setLongName(const std::optional< std::string >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcSpaceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1047]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSpaceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1047]); } const IfcParse::entity& Ifc4x3_add2::IfcSpaceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1047]); } -Ifc4x3_add2::IfcSpaceType::IfcSpaceType(IfcEntityInstanceData&& e) : IfcSpatialStructureElementType(std::move(e)) { } -Ifc4x3_add2::IfcSpaceType::IfcSpaceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSpaceTypeEnum::Value v10_PredefinedType, boost::optional< std::string > v11_LongName) : IfcSpatialStructureElementType(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSpaceTypeEnum::Class(),(size_t)v10_PredefinedType))); if (v11_LongName) {set_attribute_value(10, (*v11_LongName)); }; populate_derived(); } +// Ifc4x3_add2::IfcSpaceType::IfcSpaceType(const std::weak_ptr& e) : IfcSpatialStructureElementType(e) { } +// Ifc4x3_add2::IfcSpaceType::IfcSpaceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSpaceTypeEnum::Value v10_PredefinedType, std::optional< std::string > v11_LongName) : IfcSpatialStructureElementType(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSpaceTypeEnum::Class(),(size_t)v10_PredefinedType))); if (v11_LongName) {set_attribute_value(10, (*v11_LongName)); }; populate_derived(); } // Function implementations for IfcSpatialElement -boost::optional< std::string > Ifc4x3_add2::IfcSpatialElement::LongName() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcSpatialElement::setLongName(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcSpatialElement::LongName() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcSpatialElement::setLongName(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -::Ifc4x3_add2::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_add2::IfcSpatialElement::ContainsElements() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[926], 5)->as(); } -::Ifc4x3_add2::IfcRelServicesBuildings::list::ptr Ifc4x3_add2::IfcSpatialElement::ServicedBySystems() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[944], 5)->as(); } -::Ifc4x3_add2::IfcRelReferencedInSpatialStructure::list::ptr Ifc4x3_add2::IfcSpatialElement::ReferencesElements() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[942], 5)->as(); } -::Ifc4x3_add2::IfcRelInterferesElements::list::ptr Ifc4x3_add2::IfcSpatialElement::IsInterferedByElements() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[938], 5)->as(); } -::Ifc4x3_add2::IfcRelInterferesElements::list::ptr Ifc4x3_add2::IfcSpatialElement::InterferesElements() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[938], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelContainedInSpatialStructure> Ifc4x3_add2::IfcSpatialElement::ContainsElements() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[926], 5)); } +std::vector<::Ifc4x3_add2::IfcRelServicesBuildings> Ifc4x3_add2::IfcSpatialElement::ServicedBySystems() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[944], 5)); } +std::vector<::Ifc4x3_add2::IfcRelReferencedInSpatialStructure> Ifc4x3_add2::IfcSpatialElement::ReferencesElements() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[942], 5)); } +std::vector<::Ifc4x3_add2::IfcRelInterferesElements> Ifc4x3_add2::IfcSpatialElement::IsInterferedByElements() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[938], 5)); } +std::vector<::Ifc4x3_add2::IfcRelInterferesElements> Ifc4x3_add2::IfcSpatialElement::InterferesElements() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[938], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcSpatialElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1049]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSpatialElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1049]); } const IfcParse::entity& Ifc4x3_add2::IfcSpatialElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1049]); } -Ifc4x3_add2::IfcSpatialElement::IfcSpatialElement(IfcEntityInstanceData&& e) : IfcProduct(std::move(e)) { } -Ifc4x3_add2::IfcSpatialElement::IfcSpatialElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName) : IfcProduct(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); }; populate_derived(); } +// Ifc4x3_add2::IfcSpatialElement::IfcSpatialElement(const std::weak_ptr& e) : IfcProduct(e) { } +// Ifc4x3_add2::IfcSpatialElement::IfcSpatialElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName) : IfcProduct(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); }; populate_derived(); } // Function implementations for IfcSpatialElementType -boost::optional< std::string > Ifc4x3_add2::IfcSpatialElementType::ElementType() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< std::string > Ifc4x3_add2::IfcSpatialElementType::ElementType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcSpatialElementType::setElementType(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcSpatialElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1050]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSpatialElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1050]); } const IfcParse::entity& Ifc4x3_add2::IfcSpatialElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1050]); } -Ifc4x3_add2::IfcSpatialElementType::IfcSpatialElementType(IfcEntityInstanceData&& e) : IfcTypeProduct(std::move(e)) { } -Ifc4x3_add2::IfcSpatialElementType::IfcSpatialElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcTypeProduct(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcSpatialElementType::IfcSpatialElementType(const std::weak_ptr& e) : IfcTypeProduct(e) { } +// Ifc4x3_add2::IfcSpatialElementType::IfcSpatialElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcTypeProduct(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcSpatialStructureElement -boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > Ifc4x3_add2::IfcSpatialStructureElement::CompositionType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcElementCompositionEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > Ifc4x3_add2::IfcSpatialStructureElement::CompositionType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcElementCompositionEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcSpatialStructureElement::setCompositionType(const std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcSpatialStructureElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1052]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSpatialStructureElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1052]); } const IfcParse::entity& Ifc4x3_add2::IfcSpatialStructureElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1052]); } -Ifc4x3_add2::IfcSpatialStructureElement::IfcSpatialStructureElement(IfcEntityInstanceData&& e) : IfcSpatialElement(std::move(e)) { } -Ifc4x3_add2::IfcSpatialStructureElement::IfcSpatialStructureElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType) : IfcSpatialElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }; populate_derived(); } +// Ifc4x3_add2::IfcSpatialStructureElement::IfcSpatialStructureElement(const std::weak_ptr& e) : IfcSpatialElement(e) { } +// Ifc4x3_add2::IfcSpatialStructureElement::IfcSpatialStructureElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType) : IfcSpatialElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_CompositionType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcElementCompositionEnum::Class(),(size_t)*v9_CompositionType))); }; populate_derived(); } // Function implementations for IfcSpatialStructureElementType -const IfcParse::entity& Ifc4x3_add2::IfcSpatialStructureElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1053]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSpatialStructureElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1053]); } const IfcParse::entity& Ifc4x3_add2::IfcSpatialStructureElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1053]); } -Ifc4x3_add2::IfcSpatialStructureElementType::IfcSpatialStructureElementType(IfcEntityInstanceData&& e) : IfcSpatialElementType(std::move(e)) { } -Ifc4x3_add2::IfcSpatialStructureElementType::IfcSpatialStructureElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcSpatialElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcSpatialStructureElementType::IfcSpatialStructureElementType(const std::weak_ptr& e) : IfcSpatialElementType(e) { } +// Ifc4x3_add2::IfcSpatialStructureElementType::IfcSpatialStructureElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcSpatialElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcSpatialZone -boost::optional< ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value > Ifc4x3_add2::IfcSpatialZone::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value > Ifc4x3_add2::IfcSpatialZone::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcSpatialZone::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcSpatialZone::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1054]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSpatialZone::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1054]); } const IfcParse::entity& Ifc4x3_add2::IfcSpatialZone::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1054]); } -Ifc4x3_add2::IfcSpatialZone::IfcSpatialZone(IfcEntityInstanceData&& e) : IfcSpatialElement(std::move(e)) { } -Ifc4x3_add2::IfcSpatialZone::IfcSpatialZone(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value > v9_PredefinedType) : IfcSpatialElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcSpatialZone::IfcSpatialZone(const std::weak_ptr& e) : IfcSpatialElement(e) { } +// Ifc4x3_add2::IfcSpatialZone::IfcSpatialZone(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value > v9_PredefinedType) : IfcSpatialElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_LongName) {set_attribute_value(7, (*v8_LongName)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcSpatialZoneType ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value Ifc4x3_add2::IfcSpatialZoneType::PredefinedType() const { return ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcSpatialZoneType::setPredefinedType(::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -boost::optional< std::string > Ifc4x3_add2::IfcSpatialZoneType::LongName() const { if(get_attribute_value(10).isNull()) { return boost::none; } std::string v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +void Ifc4x3_add2::IfcSpatialZoneType::setPredefinedType(const ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +std::optional< std::string > Ifc4x3_add2::IfcSpatialZoneType::LongName() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } std::string v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcSpatialZoneType::setLongName(const std::optional< std::string >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcSpatialZoneType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1055]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSpatialZoneType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1055]); } const IfcParse::entity& Ifc4x3_add2::IfcSpatialZoneType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1055]); } -Ifc4x3_add2::IfcSpatialZoneType::IfcSpatialZoneType(IfcEntityInstanceData&& e) : IfcSpatialElementType(std::move(e)) { } -Ifc4x3_add2::IfcSpatialZoneType::IfcSpatialZoneType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value v10_PredefinedType, boost::optional< std::string > v11_LongName) : IfcSpatialElementType(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Class(),(size_t)v10_PredefinedType))); if (v11_LongName) {set_attribute_value(10, (*v11_LongName)); }; populate_derived(); } +// Ifc4x3_add2::IfcSpatialZoneType::IfcSpatialZoneType(const std::weak_ptr& e) : IfcSpatialElementType(e) { } +// Ifc4x3_add2::IfcSpatialZoneType::IfcSpatialZoneType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value v10_PredefinedType, std::optional< std::string > v11_LongName) : IfcSpatialElementType(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Class(),(size_t)v10_PredefinedType))); if (v11_LongName) {set_attribute_value(10, (*v11_LongName)); }; populate_derived(); } // Function implementations for IfcSphere double Ifc4x3_add2::IfcSphere::Radius() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcSphere::setRadius(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcSphere::setRadius(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcSphere::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1061]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSphere::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1061]); } const IfcParse::entity& Ifc4x3_add2::IfcSphere::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1061]); } -Ifc4x3_add2::IfcSphere::IfcSphere(IfcEntityInstanceData&& e) : IfcCsgPrimitive3D(std::move(e)) { } -Ifc4x3_add2::IfcSphere::IfcSphere(::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_Radius) : IfcCsgPrimitive3D(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Radius));; populate_derived(); } +// Ifc4x3_add2::IfcSphere::IfcSphere(const std::weak_ptr& e) : IfcCsgPrimitive3D(e) { } +// Ifc4x3_add2::IfcSphere::IfcSphere(::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_Radius) : IfcCsgPrimitive3D(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_Radius));; populate_derived(); } // Function implementations for IfcSphericalSurface double Ifc4x3_add2::IfcSphericalSurface::Radius() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcSphericalSurface::setRadius(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcSphericalSurface::setRadius(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcSphericalSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1062]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSphericalSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1062]); } const IfcParse::entity& Ifc4x3_add2::IfcSphericalSurface::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1062]); } -Ifc4x3_add2::IfcSphericalSurface::IfcSphericalSurface(IfcEntityInstanceData&& e) : IfcElementarySurface(std::move(e)) { } -Ifc4x3_add2::IfcSphericalSurface::IfcSphericalSurface(::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_Radius) : IfcElementarySurface(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Radius));; populate_derived(); } +// Ifc4x3_add2::IfcSphericalSurface::IfcSphericalSurface(const std::weak_ptr& e) : IfcElementarySurface(e) { } +// Ifc4x3_add2::IfcSphericalSurface::IfcSphericalSurface(::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_Radius) : IfcElementarySurface(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_Radius));; populate_derived(); } // Function implementations for IfcSpiral -::Ifc4x3_add2::IfcAxis2Placement* Ifc4x3_add2::IfcSpiral::Position() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcAxis2Placement>(true); } -void Ifc4x3_add2::IfcSpiral::setPosition(::Ifc4x3_add2::IfcAxis2Placement* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcAxis2Placement Ifc4x3_add2::IfcSpiral::Position() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcAxis2Placement>(); } +void Ifc4x3_add2::IfcSpiral::setPosition(const ::Ifc4x3_add2::IfcAxis2Placement& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcSpiral::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1063]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSpiral::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1063]); } const IfcParse::entity& Ifc4x3_add2::IfcSpiral::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1063]); } -Ifc4x3_add2::IfcSpiral::IfcSpiral(IfcEntityInstanceData&& e) : IfcCurve(std::move(e)) { } -Ifc4x3_add2::IfcSpiral::IfcSpiral(::Ifc4x3_add2::IfcAxis2Placement* v1_Position) : IfcCurve(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcSpiral::IfcSpiral(const std::weak_ptr& e) : IfcCurve(e) { } +// Ifc4x3_add2::IfcSpiral::IfcSpiral(::Ifc4x3_add2::IfcAxis2Placement v1_Position) : IfcCurve(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Position));; populate_derived(); } // Function implementations for IfcStackTerminal -boost::optional< ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value > Ifc4x3_add2::IfcStackTerminal::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcStackTerminalTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcStackTerminalTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value > Ifc4x3_add2::IfcStackTerminal::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcStackTerminalTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcStackTerminal::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcStackTerminalTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcStackTerminal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1064]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStackTerminal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1064]); } const IfcParse::entity& Ifc4x3_add2::IfcStackTerminal::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1064]); } -Ifc4x3_add2::IfcStackTerminal::IfcStackTerminal(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcStackTerminal::IfcStackTerminal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcStackTerminalTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcStackTerminal::IfcStackTerminal(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcStackTerminal::IfcStackTerminal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcStackTerminalTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcStackTerminalType ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value Ifc4x3_add2::IfcStackTerminalType::PredefinedType() const { return ::Ifc4x3_add2::IfcStackTerminalTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcStackTerminalType::setPredefinedType(::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcStackTerminalTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcStackTerminalType::setPredefinedType(const ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcStackTerminalTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcStackTerminalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1065]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStackTerminalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1065]); } const IfcParse::entity& Ifc4x3_add2::IfcStackTerminalType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1065]); } -Ifc4x3_add2::IfcStackTerminalType::IfcStackTerminalType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcStackTerminalType::IfcStackTerminalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcStackTerminalTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcStackTerminalType::IfcStackTerminalType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcStackTerminalType::IfcStackTerminalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcStackTerminalTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcStair -boost::optional< ::Ifc4x3_add2::IfcStairTypeEnum::Value > Ifc4x3_add2::IfcStair::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcStairTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcStair::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcStairTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcStairTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcStairTypeEnum::Value > Ifc4x3_add2::IfcStair::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcStairTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcStair::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcStairTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcStairTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcStair::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1067]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStair::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1067]); } const IfcParse::entity& Ifc4x3_add2::IfcStair::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1067]); } -Ifc4x3_add2::IfcStair::IfcStair(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcStair::IfcStair(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcStairTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcStairTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcStair::IfcStair(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcStair::IfcStair(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcStairTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcStairTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcStairFlight -boost::optional< int > Ifc4x3_add2::IfcStairFlight::NumberOfRisers() const { if(get_attribute_value(8).isNull()) { return boost::none; } int v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -boost::optional< int > Ifc4x3_add2::IfcStairFlight::NumberOfTreads() const { if(get_attribute_value(9).isNull()) { return boost::none; } int v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -boost::optional< double > Ifc4x3_add2::IfcStairFlight::RiserHeight() const { if(get_attribute_value(10).isNull()) { return boost::none; } double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcStairFlight::setRiserHeight(boost::optional< double > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< double > Ifc4x3_add2::IfcStairFlight::TreadLength() const { if(get_attribute_value(11).isNull()) { return boost::none; } double v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcStairFlight::setTreadLength(boost::optional< double > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -boost::optional< ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value > Ifc4x3_add2::IfcStairFlight::PredefinedType() const { if(get_attribute_value(12).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcStairFlightTypeEnum::FromString(get_attribute_value(12)); } -void Ifc4x3_add2::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value > v) { if (v) {set_attribute_value(12, EnumerationReference(&::Ifc4x3_add2::IfcStairFlightTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(12);} } +std::optional< int > Ifc4x3_add2::IfcStairFlight::NumberOfRisers() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } int v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcStairFlight::setNumberOfRisers(const std::optional< int >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< int > Ifc4x3_add2::IfcStairFlight::NumberOfTreads() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } int v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcStairFlight::setNumberOfTreads(const std::optional< int >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< double > Ifc4x3_add2::IfcStairFlight::RiserHeight() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } double v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcStairFlight::setRiserHeight(const std::optional< double >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< double > Ifc4x3_add2::IfcStairFlight::TreadLength() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } double v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcStairFlight::setTreadLength(const std::optional< double >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +std::optional< ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value > Ifc4x3_add2::IfcStairFlight::PredefinedType() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcStairFlightTypeEnum::FromString(get_attribute_value(12)); } +void Ifc4x3_add2::IfcStairFlight::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value >& v) { if (v) {set_attribute_value(12, EnumerationReference(&::Ifc4x3_add2::IfcStairFlightTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(12);} } -const IfcParse::entity& Ifc4x3_add2::IfcStairFlight::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1068]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStairFlight::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1068]); } const IfcParse::entity& Ifc4x3_add2::IfcStairFlight::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1068]); } -Ifc4x3_add2::IfcStairFlight::IfcStairFlight(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcStairFlight::IfcStairFlight(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< int > v9_NumberOfRisers, boost::optional< int > v10_NumberOfTreads, boost::optional< double > v11_RiserHeight, boost::optional< double > v12_TreadLength, boost::optional< ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value > v13_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_NumberOfRisers) {set_attribute_value(8, (*v9_NumberOfRisers)); } if (v10_NumberOfTreads) {set_attribute_value(9, (*v10_NumberOfTreads)); } if (v11_RiserHeight) {set_attribute_value(10, (*v11_RiserHeight)); } if (v12_TreadLength) {set_attribute_value(11, (*v12_TreadLength)); } if (v13_PredefinedType) {set_attribute_value(12, (EnumerationReference(&::Ifc4x3_add2::IfcStairFlightTypeEnum::Class(),(size_t)*v13_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcStairFlight::IfcStairFlight(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcStairFlight::IfcStairFlight(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< int > v9_NumberOfRisers, std::optional< int > v10_NumberOfTreads, std::optional< double > v11_RiserHeight, std::optional< double > v12_TreadLength, std::optional< ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value > v13_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_NumberOfRisers) {set_attribute_value(8, (*v9_NumberOfRisers)); } if (v10_NumberOfTreads) {set_attribute_value(9, (*v10_NumberOfTreads)); } if (v11_RiserHeight) {set_attribute_value(10, (*v11_RiserHeight)); } if (v12_TreadLength) {set_attribute_value(11, (*v12_TreadLength)); } if (v13_PredefinedType) {set_attribute_value(12, (EnumerationReference(&::Ifc4x3_add2::IfcStairFlightTypeEnum::Class(),(size_t)*v13_PredefinedType))); }; populate_derived(); } // Function implementations for IfcStairFlightType ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value Ifc4x3_add2::IfcStairFlightType::PredefinedType() const { return ::Ifc4x3_add2::IfcStairFlightTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcStairFlightType::setPredefinedType(::Ifc4x3_add2::IfcStairFlightTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcStairFlightTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcStairFlightType::setPredefinedType(const ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcStairFlightTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcStairFlightType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1069]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStairFlightType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1069]); } const IfcParse::entity& Ifc4x3_add2::IfcStairFlightType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1069]); } -Ifc4x3_add2::IfcStairFlightType::IfcStairFlightType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcStairFlightType::IfcStairFlightType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcStairFlightTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcStairFlightType::IfcStairFlightType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcStairFlightType::IfcStairFlightType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcStairFlightTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcStairType ::Ifc4x3_add2::IfcStairTypeEnum::Value Ifc4x3_add2::IfcStairType::PredefinedType() const { return ::Ifc4x3_add2::IfcStairTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcStairType::setPredefinedType(::Ifc4x3_add2::IfcStairTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcStairTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcStairType::setPredefinedType(const ::Ifc4x3_add2::IfcStairTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcStairTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcStairType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1071]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStairType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1071]); } const IfcParse::entity& Ifc4x3_add2::IfcStairType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1071]); } -Ifc4x3_add2::IfcStairType::IfcStairType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcStairType::IfcStairType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcStairTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcStairTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcStairType::IfcStairType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcStairType::IfcStairType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcStairTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcStairTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcStructuralAction -boost::optional< bool > Ifc4x3_add2::IfcStructuralAction::DestabilizingLoad() const { if(get_attribute_value(9).isNull()) { return boost::none; } bool v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< bool > Ifc4x3_add2::IfcStructuralAction::DestabilizingLoad() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } bool v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcStructuralAction::setDestabilizingLoad(const std::optional< bool >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralAction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1075]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralAction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1075]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralAction::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1075]); } -Ifc4x3_add2::IfcStructuralAction::IfcStructuralAction(IfcEntityInstanceData&& e) : IfcStructuralActivity(std::move(e)) { } -Ifc4x3_add2::IfcStructuralAction::IfcStructuralAction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad) : IfcStructuralActivity(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AppliedLoad ? v8_AppliedLoad->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal))); if (v10_DestabilizingLoad) {set_attribute_value(9, (*v10_DestabilizingLoad)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralAction::IfcStructuralAction(const std::weak_ptr& e) : IfcStructuralActivity(e) { } +// Ifc4x3_add2::IfcStructuralAction::IfcStructuralAction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, std::optional< bool > v10_DestabilizingLoad) : IfcStructuralActivity(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (v8_AppliedLoad));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal))); if (v10_DestabilizingLoad) {set_attribute_value(9, (*v10_DestabilizingLoad)); }; populate_derived(); } // Function implementations for IfcStructuralActivity -::Ifc4x3_add2::IfcStructuralLoad* Ifc4x3_add2::IfcStructuralActivity::AppliedLoad() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(7)))->as<::Ifc4x3_add2::IfcStructuralLoad>(true); } -void Ifc4x3_add2::IfcStructuralActivity::setAppliedLoad(::Ifc4x3_add2::IfcStructuralLoad* v) { set_attribute_value(7, v->as());if constexpr (false)unset_attribute_value(7); } +::Ifc4x3_add2::IfcStructuralLoad Ifc4x3_add2::IfcStructuralActivity::AppliedLoad() const { return ((express::Base)(get_attribute_value(7))).as<::Ifc4x3_add2::IfcStructuralLoad>(); } +void Ifc4x3_add2::IfcStructuralActivity::setAppliedLoad(const ::Ifc4x3_add2::IfcStructuralLoad& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value Ifc4x3_add2::IfcStructuralActivity::GlobalOrLocal() const { return ::Ifc4x3_add2::IfcGlobalOrLocalEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcStructuralActivity::setGlobalOrLocal(::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcStructuralActivity::setGlobalOrLocal(const ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value& v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } -::Ifc4x3_add2::IfcRelConnectsStructuralActivity::list::ptr Ifc4x3_add2::IfcStructuralActivity::AssignedToStructuralItem() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[922], 5)->as(); } +std::vector<::Ifc4x3_add2::IfcRelConnectsStructuralActivity> Ifc4x3_add2::IfcStructuralActivity::AssignedToStructuralItem() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[922], 5)); } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralActivity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1076]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralActivity::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1076]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralActivity::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1076]); } -Ifc4x3_add2::IfcStructuralActivity::IfcStructuralActivity(IfcEntityInstanceData&& e) : IfcProduct(std::move(e)) { } -Ifc4x3_add2::IfcStructuralActivity::IfcStructuralActivity(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal) : IfcProduct(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AppliedLoad ? v8_AppliedLoad->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal)));; populate_derived(); } +// Ifc4x3_add2::IfcStructuralActivity::IfcStructuralActivity(const std::weak_ptr& e) : IfcProduct(e) { } +// Ifc4x3_add2::IfcStructuralActivity::IfcStructuralActivity(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal) : IfcProduct(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (v8_AppliedLoad));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal)));; populate_derived(); } // Function implementations for IfcStructuralAnalysisModel ::Ifc4x3_add2::IfcAnalysisModelTypeEnum::Value Ifc4x3_add2::IfcStructuralAnalysisModel::PredefinedType() const { return ::Ifc4x3_add2::IfcAnalysisModelTypeEnum::FromString(get_attribute_value(5)); } -void Ifc4x3_add2::IfcStructuralAnalysisModel::setPredefinedType(::Ifc4x3_add2::IfcAnalysisModelTypeEnum::Value v) { set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcAnalysisModelTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcAxis2Placement3D* Ifc4x3_add2::IfcStructuralAnalysisModel::OrientationOf2DPlane() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcAxis2Placement3D>(true); } -void Ifc4x3_add2::IfcStructuralAnalysisModel::setOrientationOf2DPlane(::Ifc4x3_add2::IfcAxis2Placement3D* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcStructuralLoadGroup >::ptr > Ifc4x3_add2::IfcStructuralAnalysisModel::LoadedBy() const { if(get_attribute_value(7).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(7); return es->as< ::Ifc4x3_add2::IfcStructuralLoadGroup >(); } -void Ifc4x3_add2::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcStructuralLoadGroup >::ptr > v) { if (v) {set_attribute_value(7, (*v)->generalize());} else {unset_attribute_value(7);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcStructuralResultGroup >::ptr > Ifc4x3_add2::IfcStructuralAnalysisModel::HasResults() const { if(get_attribute_value(8).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(8); return es->as< ::Ifc4x3_add2::IfcStructuralResultGroup >(); } -void Ifc4x3_add2::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcStructuralResultGroup >::ptr > v) { if (v) {set_attribute_value(8, (*v)->generalize());} else {unset_attribute_value(8);} } -::Ifc4x3_add2::IfcObjectPlacement* Ifc4x3_add2::IfcStructuralAnalysisModel::SharedPlacement() const { if(get_attribute_value(9).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(9)))->as<::Ifc4x3_add2::IfcObjectPlacement>(true); } -void Ifc4x3_add2::IfcStructuralAnalysisModel::setSharedPlacement(::Ifc4x3_add2::IfcObjectPlacement* v) { set_attribute_value(9, v->as());if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcStructuralAnalysisModel::setPredefinedType(const ::Ifc4x3_add2::IfcAnalysisModelTypeEnum::Value& v) { set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcAnalysisModelTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcAxis2Placement3D Ifc4x3_add2::IfcStructuralAnalysisModel::OrientationOf2DPlane() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcAxis2Placement3D{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcAxis2Placement3D>(); } +void Ifc4x3_add2::IfcStructuralAnalysisModel::setOrientationOf2DPlane(const ::Ifc4x3_add2::IfcAxis2Placement3D& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< std::vector< ::Ifc4x3_add2::IfcStructuralLoadGroup > > Ifc4x3_add2::IfcStructuralAnalysisModel::LoadedBy() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(7); return cast_vector<::Ifc4x3_add2::IfcStructuralLoadGroup>(es); } +void Ifc4x3_add2::IfcStructuralAnalysisModel::setLoadedBy(const std::optional< std::vector< ::Ifc4x3_add2::IfcStructuralLoadGroup > >& v) { if (v) {set_attribute_value(7, cast_vector(*v));} else {unset_attribute_value(7);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcStructuralResultGroup > > Ifc4x3_add2::IfcStructuralAnalysisModel::HasResults() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(8); return cast_vector<::Ifc4x3_add2::IfcStructuralResultGroup>(es); } +void Ifc4x3_add2::IfcStructuralAnalysisModel::setHasResults(const std::optional< std::vector< ::Ifc4x3_add2::IfcStructuralResultGroup > >& v) { if (v) {set_attribute_value(8, cast_vector(*v));} else {unset_attribute_value(8);} } +::Ifc4x3_add2::IfcObjectPlacement Ifc4x3_add2::IfcStructuralAnalysisModel::SharedPlacement() const { if(get_attribute_value(9).isNull()) { return ::Ifc4x3_add2::IfcObjectPlacement{}; } return ((express::Base)(get_attribute_value(9))).as<::Ifc4x3_add2::IfcObjectPlacement>(); } +void Ifc4x3_add2::IfcStructuralAnalysisModel::setSharedPlacement(const ::Ifc4x3_add2::IfcObjectPlacement& v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralAnalysisModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1078]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralAnalysisModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1078]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralAnalysisModel::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1078]); } -Ifc4x3_add2::IfcStructuralAnalysisModel::IfcStructuralAnalysisModel(IfcEntityInstanceData&& e) : IfcSystem(std::move(e)) { } -Ifc4x3_add2::IfcStructuralAnalysisModel::IfcStructuralAnalysisModel(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcAnalysisModelTypeEnum::Value v6_PredefinedType, ::Ifc4x3_add2::IfcAxis2Placement3D* v7_OrientationOf2DPlane, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcStructuralLoadGroup >::ptr > v8_LoadedBy, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcStructuralResultGroup >::ptr > v9_HasResults, ::Ifc4x3_add2::IfcObjectPlacement* v10_SharedPlacement) : IfcSystem(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcAnalysisModelTypeEnum::Class(),(size_t)v6_PredefinedType)));set_attribute_value(6, v7_OrientationOf2DPlane ? v7_OrientationOf2DPlane->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_LoadedBy) {set_attribute_value(7, (*v8_LoadedBy)->generalize()); } if (v9_HasResults) {set_attribute_value(8, (*v9_HasResults)->generalize()); }set_attribute_value(9, v10_SharedPlacement ? v10_SharedPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcStructuralAnalysisModel::IfcStructuralAnalysisModel(const std::weak_ptr& e) : IfcSystem(e) { } +// Ifc4x3_add2::IfcStructuralAnalysisModel::IfcStructuralAnalysisModel(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcAnalysisModelTypeEnum::Value v6_PredefinedType, ::Ifc4x3_add2::IfcAxis2Placement3D v7_OrientationOf2DPlane, std::optional< std::vector< ::Ifc4x3_add2::IfcStructuralLoadGroup > > v8_LoadedBy, std::optional< std::vector< ::Ifc4x3_add2::IfcStructuralResultGroup > > v9_HasResults, ::Ifc4x3_add2::IfcObjectPlacement v10_SharedPlacement) : IfcSystem(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcAnalysisModelTypeEnum::Class(),(size_t)v6_PredefinedType))); if (v7_OrientationOf2DPlane) {set_attribute_value(6, (*v7_OrientationOf2DPlane)); } if (v8_LoadedBy) {set_attribute_value(7, (*v8_LoadedBy)->generalize()); } if (v9_HasResults) {set_attribute_value(8, (*v9_HasResults)->generalize()); } if (v10_SharedPlacement) {set_attribute_value(9, (*v10_SharedPlacement)); }; populate_derived(); } // Function implementations for IfcStructuralConnection -::Ifc4x3_add2::IfcBoundaryCondition* Ifc4x3_add2::IfcStructuralConnection::AppliedCondition() const { if(get_attribute_value(7).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(7)))->as<::Ifc4x3_add2::IfcBoundaryCondition>(true); } -void Ifc4x3_add2::IfcStructuralConnection::setAppliedCondition(::Ifc4x3_add2::IfcBoundaryCondition* v) { set_attribute_value(7, v->as());if constexpr (false)unset_attribute_value(7); } +::Ifc4x3_add2::IfcBoundaryCondition Ifc4x3_add2::IfcStructuralConnection::AppliedCondition() const { if(get_attribute_value(7).isNull()) { return ::Ifc4x3_add2::IfcBoundaryCondition{}; } return ((express::Base)(get_attribute_value(7))).as<::Ifc4x3_add2::IfcBoundaryCondition>(); } +void Ifc4x3_add2::IfcStructuralConnection::setAppliedCondition(const ::Ifc4x3_add2::IfcBoundaryCondition& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } -::Ifc4x3_add2::IfcRelConnectsStructuralMember::list::ptr Ifc4x3_add2::IfcStructuralConnection::ConnectsStructuralMembers() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[923], 5)->as(); } +std::vector<::Ifc4x3_add2::IfcRelConnectsStructuralMember> Ifc4x3_add2::IfcStructuralConnection::ConnectsStructuralMembers() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[923], 5)); } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralConnection::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1079]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralConnection::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1079]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralConnection::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1079]); } -Ifc4x3_add2::IfcStructuralConnection::IfcStructuralConnection(IfcEntityInstanceData&& e) : IfcStructuralItem(std::move(e)) { } -Ifc4x3_add2::IfcStructuralConnection::IfcStructuralConnection(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition* v8_AppliedCondition) : IfcStructuralItem(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AppliedCondition ? v8_AppliedCondition->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcStructuralConnection::IfcStructuralConnection(const std::weak_ptr& e) : IfcStructuralItem(e) { } +// Ifc4x3_add2::IfcStructuralConnection::IfcStructuralConnection(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition v8_AppliedCondition) : IfcStructuralItem(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_AppliedCondition) {set_attribute_value(7, (*v8_AppliedCondition)); }; populate_derived(); } // Function implementations for IfcStructuralConnectionCondition -boost::optional< std::string > Ifc4x3_add2::IfcStructuralConnectionCondition::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcStructuralConnectionCondition::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcStructuralConnectionCondition::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralConnectionCondition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1080]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralConnectionCondition::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1080]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralConnectionCondition::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1080]); } -Ifc4x3_add2::IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(1))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(std::optional< std::string > v1_Name) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(1))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }; populate_derived(); } // Function implementations for IfcStructuralCurveAction -boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_add2::IfcStructuralCurveAction::ProjectedOrTrue() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_add2::IfcStructuralCurveAction::ProjectedOrTrue() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcStructuralCurveAction::setProjectedOrTrue(const std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value Ifc4x3_add2::IfcStructuralCurveAction::PredefinedType() const { return ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::FromString(get_attribute_value(11)); } -void Ifc4x3_add2::IfcStructuralCurveAction::setPredefinedType(::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } +void Ifc4x3_add2::IfcStructuralCurveAction::setPredefinedType(const ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value& v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralCurveAction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1081]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralCurveAction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1081]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralCurveAction::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1081]); } -Ifc4x3_add2::IfcStructuralCurveAction::IfcStructuralCurveAction(IfcEntityInstanceData&& e) : IfcStructuralAction(std::move(e)) { } -Ifc4x3_add2::IfcStructuralCurveAction::IfcStructuralCurveAction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralAction(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AppliedLoad ? v8_AppliedLoad->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal))); if (v10_DestabilizingLoad) {set_attribute_value(9, (*v10_DestabilizingLoad)); } if (v11_ProjectedOrTrue) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Class(),(size_t)*v11_ProjectedOrTrue))); }set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcStructuralCurveAction::IfcStructuralCurveAction(const std::weak_ptr& e) : IfcStructuralAction(e) { } +// Ifc4x3_add2::IfcStructuralCurveAction::IfcStructuralCurveAction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, std::optional< bool > v10_DestabilizingLoad, std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralAction(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (v8_AppliedLoad));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal))); if (v10_DestabilizingLoad) {set_attribute_value(9, (*v10_DestabilizingLoad)); } if (v11_ProjectedOrTrue) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Class(),(size_t)*v11_ProjectedOrTrue))); }set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } // Function implementations for IfcStructuralCurveConnection -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcStructuralCurveConnection::AxisDirection() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(8)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcStructuralCurveConnection::setAxisDirection(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(8, v->as());if constexpr (false)unset_attribute_value(8); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcStructuralCurveConnection::AxisDirection() const { return ((express::Base)(get_attribute_value(8))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcStructuralCurveConnection::setAxisDirection(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralCurveConnection::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1083]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralCurveConnection::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1083]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralCurveConnection::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1083]); } -Ifc4x3_add2::IfcStructuralCurveConnection::IfcStructuralCurveConnection(IfcEntityInstanceData&& e) : IfcStructuralConnection(std::move(e)) { } -Ifc4x3_add2::IfcStructuralCurveConnection::IfcStructuralCurveConnection(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition* v8_AppliedCondition, ::Ifc4x3_add2::IfcDirection* v9_AxisDirection) : IfcStructuralConnection(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AppliedCondition ? v8_AppliedCondition->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, v9_AxisDirection ? v9_AxisDirection->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcStructuralCurveConnection::IfcStructuralCurveConnection(const std::weak_ptr& e) : IfcStructuralConnection(e) { } +// Ifc4x3_add2::IfcStructuralCurveConnection::IfcStructuralCurveConnection(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition v8_AppliedCondition, ::Ifc4x3_add2::IfcDirection v9_AxisDirection) : IfcStructuralConnection(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_AppliedCondition) {set_attribute_value(7, (*v8_AppliedCondition)); }set_attribute_value(8, (v9_AxisDirection));; populate_derived(); } // Function implementations for IfcStructuralCurveMember ::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Value Ifc4x3_add2::IfcStructuralCurveMember::PredefinedType() const { return ::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcStructuralCurveMember::setPredefinedType(::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Value v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcStructuralCurveMember::Axis() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(8)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcStructuralCurveMember::setAxis(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(8, v->as());if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcStructuralCurveMember::setPredefinedType(const ::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Value& v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcStructuralCurveMember::Axis() const { return ((express::Base)(get_attribute_value(8))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcStructuralCurveMember::setAxis(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralCurveMember::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1084]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralCurveMember::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1084]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralCurveMember::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1084]); } -Ifc4x3_add2::IfcStructuralCurveMember::IfcStructuralCurveMember(IfcEntityInstanceData&& e) : IfcStructuralMember(std::move(e)) { } -Ifc4x3_add2::IfcStructuralCurveMember::IfcStructuralCurveMember(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Value v8_PredefinedType, ::Ifc4x3_add2::IfcDirection* v9_Axis) : IfcStructuralMember(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Class(),(size_t)v8_PredefinedType)));set_attribute_value(8, v9_Axis ? v9_Axis->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcStructuralCurveMember::IfcStructuralCurveMember(const std::weak_ptr& e) : IfcStructuralMember(e) { } +// Ifc4x3_add2::IfcStructuralCurveMember::IfcStructuralCurveMember(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Value v8_PredefinedType, ::Ifc4x3_add2::IfcDirection v9_Axis) : IfcStructuralMember(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Class(),(size_t)v8_PredefinedType)));set_attribute_value(8, (v9_Axis));; populate_derived(); } // Function implementations for IfcStructuralCurveMemberVarying -const IfcParse::entity& Ifc4x3_add2::IfcStructuralCurveMemberVarying::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1086]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralCurveMemberVarying::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1086]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralCurveMemberVarying::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1086]); } -Ifc4x3_add2::IfcStructuralCurveMemberVarying::IfcStructuralCurveMemberVarying(IfcEntityInstanceData&& e) : IfcStructuralCurveMember(std::move(e)) { } -Ifc4x3_add2::IfcStructuralCurveMemberVarying::IfcStructuralCurveMemberVarying(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Value v8_PredefinedType, ::Ifc4x3_add2::IfcDirection* v9_Axis) : IfcStructuralCurveMember(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Class(),(size_t)v8_PredefinedType)));set_attribute_value(8, v9_Axis ? v9_Axis->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcStructuralCurveMemberVarying::IfcStructuralCurveMemberVarying(const std::weak_ptr& e) : IfcStructuralCurveMember(e) { } +// Ifc4x3_add2::IfcStructuralCurveMemberVarying::IfcStructuralCurveMemberVarying(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Value v8_PredefinedType, ::Ifc4x3_add2::IfcDirection v9_Axis) : IfcStructuralCurveMember(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Class(),(size_t)v8_PredefinedType)));set_attribute_value(8, (v9_Axis));; populate_derived(); } // Function implementations for IfcStructuralCurveReaction ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value Ifc4x3_add2::IfcStructuralCurveReaction::PredefinedType() const { return ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcStructuralCurveReaction::setPredefinedType(::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcStructuralCurveReaction::setPredefinedType(const ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralCurveReaction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1087]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralCurveReaction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1087]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralCurveReaction::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1087]); } -Ifc4x3_add2::IfcStructuralCurveReaction::IfcStructuralCurveReaction(IfcEntityInstanceData&& e) : IfcStructuralReaction(std::move(e)) { } -Ifc4x3_add2::IfcStructuralCurveReaction::IfcStructuralCurveReaction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v10_PredefinedType) : IfcStructuralReaction(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AppliedLoad ? v8_AppliedLoad->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal)));set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcStructuralCurveReaction::IfcStructuralCurveReaction(const std::weak_ptr& e) : IfcStructuralReaction(e) { } +// Ifc4x3_add2::IfcStructuralCurveReaction::IfcStructuralCurveReaction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v10_PredefinedType) : IfcStructuralReaction(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (v8_AppliedLoad));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal)));set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcStructuralItem -::Ifc4x3_add2::IfcRelConnectsStructuralActivity::list::ptr Ifc4x3_add2::IfcStructuralItem::AssignedStructuralActivity() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[922], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelConnectsStructuralActivity> Ifc4x3_add2::IfcStructuralItem::AssignedStructuralActivity() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[922], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1088]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1088]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralItem::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1088]); } -Ifc4x3_add2::IfcStructuralItem::IfcStructuralItem(IfcEntityInstanceData&& e) : IfcProduct(std::move(e)) { } -Ifc4x3_add2::IfcStructuralItem::IfcStructuralItem(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation) : IfcProduct(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcStructuralItem::IfcStructuralItem(const std::weak_ptr& e) : IfcProduct(e) { } +// Ifc4x3_add2::IfcStructuralItem::IfcStructuralItem(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation) : IfcProduct(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }; populate_derived(); } // Function implementations for IfcStructuralLinearAction -const IfcParse::entity& Ifc4x3_add2::IfcStructuralLinearAction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1089]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralLinearAction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1089]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralLinearAction::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1089]); } -Ifc4x3_add2::IfcStructuralLinearAction::IfcStructuralLinearAction(IfcEntityInstanceData&& e) : IfcStructuralCurveAction(std::move(e)) { } -Ifc4x3_add2::IfcStructuralLinearAction::IfcStructuralLinearAction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralCurveAction(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AppliedLoad ? v8_AppliedLoad->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal))); if (v10_DestabilizingLoad) {set_attribute_value(9, (*v10_DestabilizingLoad)); } if (v11_ProjectedOrTrue) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Class(),(size_t)*v11_ProjectedOrTrue))); }set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcStructuralLinearAction::IfcStructuralLinearAction(const std::weak_ptr& e) : IfcStructuralCurveAction(e) { } +// Ifc4x3_add2::IfcStructuralLinearAction::IfcStructuralLinearAction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, std::optional< bool > v10_DestabilizingLoad, std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralCurveAction(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (v8_AppliedLoad));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal))); if (v10_DestabilizingLoad) {set_attribute_value(9, (*v10_DestabilizingLoad)); } if (v11_ProjectedOrTrue) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Class(),(size_t)*v11_ProjectedOrTrue))); }set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } // Function implementations for IfcStructuralLoad -boost::optional< std::string > Ifc4x3_add2::IfcStructuralLoad::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcStructuralLoad::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcStructuralLoad::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcStructuralLoad::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoad::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1090]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoad::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1090]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoad::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1090]); } -Ifc4x3_add2::IfcStructuralLoad::IfcStructuralLoad(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcStructuralLoad::IfcStructuralLoad(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(1))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralLoad::IfcStructuralLoad(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcStructuralLoad::IfcStructuralLoad(std::optional< std::string > v1_Name) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(1))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }; populate_derived(); } // Function implementations for IfcStructuralLoadCase -boost::optional< std::vector< double > /*[3:3]*/ > Ifc4x3_add2::IfcStructuralLoadCase::SelfWeightCoefficients() const { if(get_attribute_value(10).isNull()) { return boost::none; } std::vector< double > /*[3:3]*/ v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< std::vector< double > /*[3:3]*/ > Ifc4x3_add2::IfcStructuralLoadCase::SelfWeightCoefficients() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } std::vector< double > /*[3:3]*/ v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcStructuralLoadCase::setSelfWeightCoefficients(const std::optional< std::vector< double > /*[3:3]*/ >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadCase::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1091]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadCase::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1091]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadCase::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1091]); } -Ifc4x3_add2::IfcStructuralLoadCase::IfcStructuralLoadCase(IfcEntityInstanceData&& e) : IfcStructuralLoadGroup(std::move(e)) { } -Ifc4x3_add2::IfcStructuralLoadCase::IfcStructuralLoadCase(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcLoadGroupTypeEnum::Value v6_PredefinedType, ::Ifc4x3_add2::IfcActionTypeEnum::Value v7_ActionType, ::Ifc4x3_add2::IfcActionSourceTypeEnum::Value v8_ActionSource, boost::optional< double > v9_Coefficient, boost::optional< std::string > v10_Purpose, boost::optional< std::vector< double > /*[3:3]*/ > v11_SelfWeightCoefficients) : IfcStructuralLoadGroup(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcLoadGroupTypeEnum::Class(),(size_t)v6_PredefinedType)));set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcActionTypeEnum::Class(),(size_t)v7_ActionType)));set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcActionSourceTypeEnum::Class(),(size_t)v8_ActionSource))); if (v9_Coefficient) {set_attribute_value(8, (*v9_Coefficient)); } if (v10_Purpose) {set_attribute_value(9, (*v10_Purpose)); } if (v11_SelfWeightCoefficients) {set_attribute_value(10, (*v11_SelfWeightCoefficients)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralLoadCase::IfcStructuralLoadCase(const std::weak_ptr& e) : IfcStructuralLoadGroup(e) { } +// Ifc4x3_add2::IfcStructuralLoadCase::IfcStructuralLoadCase(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcLoadGroupTypeEnum::Value v6_PredefinedType, ::Ifc4x3_add2::IfcActionTypeEnum::Value v7_ActionType, ::Ifc4x3_add2::IfcActionSourceTypeEnum::Value v8_ActionSource, std::optional< double > v9_Coefficient, std::optional< std::string > v10_Purpose, std::optional< std::vector< double > /*[3:3]*/ > v11_SelfWeightCoefficients) : IfcStructuralLoadGroup(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcLoadGroupTypeEnum::Class(),(size_t)v6_PredefinedType)));set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcActionTypeEnum::Class(),(size_t)v7_ActionType)));set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcActionSourceTypeEnum::Class(),(size_t)v8_ActionSource))); if (v9_Coefficient) {set_attribute_value(8, (*v9_Coefficient)); } if (v10_Purpose) {set_attribute_value(9, (*v10_Purpose)); } if (v11_SelfWeightCoefficients) {set_attribute_value(10, (*v11_SelfWeightCoefficients)); }; populate_derived(); } // Function implementations for IfcStructuralLoadConfiguration -aggregate_of< ::Ifc4x3_add2::IfcStructuralLoadOrResult >::ptr Ifc4x3_add2::IfcStructuralLoadConfiguration::Values() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcStructuralLoadOrResult >(); } -void Ifc4x3_add2::IfcStructuralLoadConfiguration::setValues(aggregate_of< ::Ifc4x3_add2::IfcStructuralLoadOrResult >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } -boost::optional< std::vector< std::vector< double > > > Ifc4x3_add2::IfcStructuralLoadConfiguration::Locations() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::vector< std::vector< double > > v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::vector< ::Ifc4x3_add2::IfcStructuralLoadOrResult > Ifc4x3_add2::IfcStructuralLoadConfiguration::Values() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcStructuralLoadOrResult>(es); } +void Ifc4x3_add2::IfcStructuralLoadConfiguration::setValues(const std::vector< ::Ifc4x3_add2::IfcStructuralLoadOrResult >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } +std::optional< std::vector< std::vector< double > > > Ifc4x3_add2::IfcStructuralLoadConfiguration::Locations() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::vector< std::vector< double > > v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcStructuralLoadConfiguration::setLocations(const std::optional< std::vector< std::vector< double > > >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadConfiguration::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1092]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadConfiguration::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1092]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadConfiguration::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1092]); } -Ifc4x3_add2::IfcStructuralLoadConfiguration::IfcStructuralLoadConfiguration(IfcEntityInstanceData&& e) : IfcStructuralLoad(std::move(e)) { } -Ifc4x3_add2::IfcStructuralLoadConfiguration::IfcStructuralLoadConfiguration(boost::optional< std::string > v1_Name, aggregate_of< ::Ifc4x3_add2::IfcStructuralLoadOrResult >::ptr v2_Values, boost::optional< std::vector< std::vector< double > > > v3_Locations) : IfcStructuralLoad(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (v2_Values)->generalize()); if (v3_Locations) {set_attribute_value(2, (*v3_Locations)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralLoadConfiguration::IfcStructuralLoadConfiguration(const std::weak_ptr& e) : IfcStructuralLoad(e) { } +// Ifc4x3_add2::IfcStructuralLoadConfiguration::IfcStructuralLoadConfiguration(std::optional< std::string > v1_Name, std::vector< ::Ifc4x3_add2::IfcStructuralLoadOrResult > v2_Values, std::optional< std::vector< std::vector< double > > > v3_Locations) : IfcStructuralLoad(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (v2_Values)->generalize()); if (v3_Locations) {set_attribute_value(2, (*v3_Locations)); }; populate_derived(); } // Function implementations for IfcStructuralLoadGroup ::Ifc4x3_add2::IfcLoadGroupTypeEnum::Value Ifc4x3_add2::IfcStructuralLoadGroup::PredefinedType() const { return ::Ifc4x3_add2::IfcLoadGroupTypeEnum::FromString(get_attribute_value(5)); } -void Ifc4x3_add2::IfcStructuralLoadGroup::setPredefinedType(::Ifc4x3_add2::IfcLoadGroupTypeEnum::Value v) { set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcLoadGroupTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcStructuralLoadGroup::setPredefinedType(const ::Ifc4x3_add2::IfcLoadGroupTypeEnum::Value& v) { set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcLoadGroupTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(5); } ::Ifc4x3_add2::IfcActionTypeEnum::Value Ifc4x3_add2::IfcStructuralLoadGroup::ActionType() const { return ::Ifc4x3_add2::IfcActionTypeEnum::FromString(get_attribute_value(6)); } -void Ifc4x3_add2::IfcStructuralLoadGroup::setActionType(::Ifc4x3_add2::IfcActionTypeEnum::Value v) { set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcActionTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(6); } +void Ifc4x3_add2::IfcStructuralLoadGroup::setActionType(const ::Ifc4x3_add2::IfcActionTypeEnum::Value& v) { set_attribute_value(6, EnumerationReference(&::Ifc4x3_add2::IfcActionTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(6); } ::Ifc4x3_add2::IfcActionSourceTypeEnum::Value Ifc4x3_add2::IfcStructuralLoadGroup::ActionSource() const { return ::Ifc4x3_add2::IfcActionSourceTypeEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcStructuralLoadGroup::setActionSource(::Ifc4x3_add2::IfcActionSourceTypeEnum::Value v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcActionSourceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadGroup::Coefficient() const { if(get_attribute_value(8).isNull()) { return boost::none; } double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -boost::optional< std::string > Ifc4x3_add2::IfcStructuralLoadGroup::Purpose() const { if(get_attribute_value(9).isNull()) { return boost::none; } std::string v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +void Ifc4x3_add2::IfcStructuralLoadGroup::setActionSource(const ::Ifc4x3_add2::IfcActionSourceTypeEnum::Value& v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcActionSourceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadGroup::Coefficient() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } double v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcStructuralLoadGroup::setCoefficient(const std::optional< double >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< std::string > Ifc4x3_add2::IfcStructuralLoadGroup::Purpose() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } std::string v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcStructuralLoadGroup::setPurpose(const std::optional< std::string >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -::Ifc4x3_add2::IfcStructuralResultGroup::list::ptr Ifc4x3_add2::IfcStructuralLoadGroup::SourceOfResultGroup() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[1109], 6)->as(); } -::Ifc4x3_add2::IfcStructuralAnalysisModel::list::ptr Ifc4x3_add2::IfcStructuralLoadGroup::LoadGroupFor() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[1078], 7)->as(); } +std::vector<::Ifc4x3_add2::IfcStructuralResultGroup> Ifc4x3_add2::IfcStructuralLoadGroup::SourceOfResultGroup() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[1109], 6)); } +std::vector<::Ifc4x3_add2::IfcStructuralAnalysisModel> Ifc4x3_add2::IfcStructuralLoadGroup::LoadGroupFor() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[1078], 7)); } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadGroup::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1093]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadGroup::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1093]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadGroup::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1093]); } -Ifc4x3_add2::IfcStructuralLoadGroup::IfcStructuralLoadGroup(IfcEntityInstanceData&& e) : IfcGroup(std::move(e)) { } -Ifc4x3_add2::IfcStructuralLoadGroup::IfcStructuralLoadGroup(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcLoadGroupTypeEnum::Value v6_PredefinedType, ::Ifc4x3_add2::IfcActionTypeEnum::Value v7_ActionType, ::Ifc4x3_add2::IfcActionSourceTypeEnum::Value v8_ActionSource, boost::optional< double > v9_Coefficient, boost::optional< std::string > v10_Purpose) : IfcGroup(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcLoadGroupTypeEnum::Class(),(size_t)v6_PredefinedType)));set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcActionTypeEnum::Class(),(size_t)v7_ActionType)));set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcActionSourceTypeEnum::Class(),(size_t)v8_ActionSource))); if (v9_Coefficient) {set_attribute_value(8, (*v9_Coefficient)); } if (v10_Purpose) {set_attribute_value(9, (*v10_Purpose)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralLoadGroup::IfcStructuralLoadGroup(const std::weak_ptr& e) : IfcGroup(e) { } +// Ifc4x3_add2::IfcStructuralLoadGroup::IfcStructuralLoadGroup(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcLoadGroupTypeEnum::Value v6_PredefinedType, ::Ifc4x3_add2::IfcActionTypeEnum::Value v7_ActionType, ::Ifc4x3_add2::IfcActionSourceTypeEnum::Value v8_ActionSource, std::optional< double > v9_Coefficient, std::optional< std::string > v10_Purpose) : IfcGroup(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcLoadGroupTypeEnum::Class(),(size_t)v6_PredefinedType)));set_attribute_value(6, (EnumerationReference(&::Ifc4x3_add2::IfcActionTypeEnum::Class(),(size_t)v7_ActionType)));set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcActionSourceTypeEnum::Class(),(size_t)v8_ActionSource))); if (v9_Coefficient) {set_attribute_value(8, (*v9_Coefficient)); } if (v10_Purpose) {set_attribute_value(9, (*v10_Purpose)); }; populate_derived(); } // Function implementations for IfcStructuralLoadLinearForce -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadLinearForce::LinearForceX() const { if(get_attribute_value(1).isNull()) { return boost::none; } double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadLinearForce::LinearForceY() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadLinearForce::LinearForceZ() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadLinearForce::LinearMomentX() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadLinearForce::LinearMomentY() const { if(get_attribute_value(5).isNull()) { return boost::none; } double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadLinearForce::LinearMomentZ() const { if(get_attribute_value(6).isNull()) { return boost::none; } double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadLinearForce::LinearForceX() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } double v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcStructuralLoadLinearForce::setLinearForceX(const std::optional< double >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadLinearForce::LinearForceY() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcStructuralLoadLinearForce::setLinearForceY(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadLinearForce::LinearForceZ() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcStructuralLoadLinearForce::setLinearForceZ(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadLinearForce::LinearMomentX() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcStructuralLoadLinearForce::setLinearMomentX(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadLinearForce::LinearMomentY() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } double v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcStructuralLoadLinearForce::setLinearMomentY(const std::optional< double >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadLinearForce::LinearMomentZ() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } double v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcStructuralLoadLinearForce::setLinearMomentZ(const std::optional< double >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadLinearForce::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1094]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadLinearForce::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1094]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadLinearForce::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1094]); } -Ifc4x3_add2::IfcStructuralLoadLinearForce::IfcStructuralLoadLinearForce(IfcEntityInstanceData&& e) : IfcStructuralLoadStatic(std::move(e)) { } -Ifc4x3_add2::IfcStructuralLoadLinearForce::IfcStructuralLoadLinearForce(boost::optional< std::string > v1_Name, boost::optional< double > v2_LinearForceX, boost::optional< double > v3_LinearForceY, boost::optional< double > v4_LinearForceZ, boost::optional< double > v5_LinearMomentX, boost::optional< double > v6_LinearMomentY, boost::optional< double > v7_LinearMomentZ) : IfcStructuralLoadStatic(IfcEntityInstanceData(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_LinearForceX) {set_attribute_value(1, (*v2_LinearForceX)); } if (v3_LinearForceY) {set_attribute_value(2, (*v3_LinearForceY)); } if (v4_LinearForceZ) {set_attribute_value(3, (*v4_LinearForceZ)); } if (v5_LinearMomentX) {set_attribute_value(4, (*v5_LinearMomentX)); } if (v6_LinearMomentY) {set_attribute_value(5, (*v6_LinearMomentY)); } if (v7_LinearMomentZ) {set_attribute_value(6, (*v7_LinearMomentZ)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralLoadLinearForce::IfcStructuralLoadLinearForce(const std::weak_ptr& e) : IfcStructuralLoadStatic(e) { } +// Ifc4x3_add2::IfcStructuralLoadLinearForce::IfcStructuralLoadLinearForce(std::optional< std::string > v1_Name, std::optional< double > v2_LinearForceX, std::optional< double > v3_LinearForceY, std::optional< double > v4_LinearForceZ, std::optional< double > v5_LinearMomentX, std::optional< double > v6_LinearMomentY, std::optional< double > v7_LinearMomentZ) : IfcStructuralLoadStatic(const std::weak_ptr&(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_LinearForceX) {set_attribute_value(1, (*v2_LinearForceX)); } if (v3_LinearForceY) {set_attribute_value(2, (*v3_LinearForceY)); } if (v4_LinearForceZ) {set_attribute_value(3, (*v4_LinearForceZ)); } if (v5_LinearMomentX) {set_attribute_value(4, (*v5_LinearMomentX)); } if (v6_LinearMomentY) {set_attribute_value(5, (*v6_LinearMomentY)); } if (v7_LinearMomentZ) {set_attribute_value(6, (*v7_LinearMomentZ)); }; populate_derived(); } // Function implementations for IfcStructuralLoadOrResult -const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadOrResult::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1095]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadOrResult::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1095]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadOrResult::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1095]); } -Ifc4x3_add2::IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(IfcEntityInstanceData&& e) : IfcStructuralLoad(std::move(e)) { } -Ifc4x3_add2::IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(boost::optional< std::string > v1_Name) : IfcStructuralLoad(IfcEntityInstanceData(in_memory_attribute_storage(1))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(const std::weak_ptr& e) : IfcStructuralLoad(e) { } +// Ifc4x3_add2::IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(std::optional< std::string > v1_Name) : IfcStructuralLoad(const std::weak_ptr&(in_memory_attribute_storage(1))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }; populate_derived(); } // Function implementations for IfcStructuralLoadPlanarForce -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadPlanarForce::PlanarForceX() const { if(get_attribute_value(1).isNull()) { return boost::none; } double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadPlanarForce::PlanarForceY() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadPlanarForce::PlanarForceZ() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadPlanarForce::PlanarForceX() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } double v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcStructuralLoadPlanarForce::setPlanarForceX(const std::optional< double >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadPlanarForce::PlanarForceY() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcStructuralLoadPlanarForce::setPlanarForceY(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadPlanarForce::PlanarForceZ() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcStructuralLoadPlanarForce::setPlanarForceZ(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadPlanarForce::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1096]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadPlanarForce::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1096]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadPlanarForce::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1096]); } -Ifc4x3_add2::IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(IfcEntityInstanceData&& e) : IfcStructuralLoadStatic(std::move(e)) { } -Ifc4x3_add2::IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(boost::optional< std::string > v1_Name, boost::optional< double > v2_PlanarForceX, boost::optional< double > v3_PlanarForceY, boost::optional< double > v4_PlanarForceZ) : IfcStructuralLoadStatic(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_PlanarForceX) {set_attribute_value(1, (*v2_PlanarForceX)); } if (v3_PlanarForceY) {set_attribute_value(2, (*v3_PlanarForceY)); } if (v4_PlanarForceZ) {set_attribute_value(3, (*v4_PlanarForceZ)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(const std::weak_ptr& e) : IfcStructuralLoadStatic(e) { } +// Ifc4x3_add2::IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(std::optional< std::string > v1_Name, std::optional< double > v2_PlanarForceX, std::optional< double > v3_PlanarForceY, std::optional< double > v4_PlanarForceZ) : IfcStructuralLoadStatic(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_PlanarForceX) {set_attribute_value(1, (*v2_PlanarForceX)); } if (v3_PlanarForceY) {set_attribute_value(2, (*v3_PlanarForceY)); } if (v4_PlanarForceZ) {set_attribute_value(3, (*v4_PlanarForceZ)); }; populate_derived(); } // Function implementations for IfcStructuralLoadSingleDisplacement -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::DisplacementX() const { if(get_attribute_value(1).isNull()) { return boost::none; } double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::DisplacementY() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::DisplacementZ() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRX() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRY() const { if(get_attribute_value(5).isNull()) { return boost::none; } double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRZ() const { if(get_attribute_value(6).isNull()) { return boost::none; } double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::DisplacementX() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } double v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::setDisplacementX(const std::optional< double >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::DisplacementY() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::setDisplacementY(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::DisplacementZ() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::setDisplacementZ(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRX() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRY() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } double v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(const std::optional< double >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRZ() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } double v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(const std::optional< double >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1097]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1097]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1097]); } -Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplacement(IfcEntityInstanceData&& e) : IfcStructuralLoadStatic(std::move(e)) { } -Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplacement(boost::optional< std::string > v1_Name, boost::optional< double > v2_DisplacementX, boost::optional< double > v3_DisplacementY, boost::optional< double > v4_DisplacementZ, boost::optional< double > v5_RotationalDisplacementRX, boost::optional< double > v6_RotationalDisplacementRY, boost::optional< double > v7_RotationalDisplacementRZ) : IfcStructuralLoadStatic(IfcEntityInstanceData(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DisplacementX) {set_attribute_value(1, (*v2_DisplacementX)); } if (v3_DisplacementY) {set_attribute_value(2, (*v3_DisplacementY)); } if (v4_DisplacementZ) {set_attribute_value(3, (*v4_DisplacementZ)); } if (v5_RotationalDisplacementRX) {set_attribute_value(4, (*v5_RotationalDisplacementRX)); } if (v6_RotationalDisplacementRY) {set_attribute_value(5, (*v6_RotationalDisplacementRY)); } if (v7_RotationalDisplacementRZ) {set_attribute_value(6, (*v7_RotationalDisplacementRZ)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplacement(const std::weak_ptr& e) : IfcStructuralLoadStatic(e) { } +// Ifc4x3_add2::IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplacement(std::optional< std::string > v1_Name, std::optional< double > v2_DisplacementX, std::optional< double > v3_DisplacementY, std::optional< double > v4_DisplacementZ, std::optional< double > v5_RotationalDisplacementRX, std::optional< double > v6_RotationalDisplacementRY, std::optional< double > v7_RotationalDisplacementRZ) : IfcStructuralLoadStatic(const std::weak_ptr&(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DisplacementX) {set_attribute_value(1, (*v2_DisplacementX)); } if (v3_DisplacementY) {set_attribute_value(2, (*v3_DisplacementY)); } if (v4_DisplacementZ) {set_attribute_value(3, (*v4_DisplacementZ)); } if (v5_RotationalDisplacementRX) {set_attribute_value(4, (*v5_RotationalDisplacementRX)); } if (v6_RotationalDisplacementRY) {set_attribute_value(5, (*v6_RotationalDisplacementRY)); } if (v7_RotationalDisplacementRZ) {set_attribute_value(6, (*v7_RotationalDisplacementRZ)); }; populate_derived(); } // Function implementations for IfcStructuralLoadSingleDisplacementDistortion -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleDisplacementDistortion::Distortion() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleDisplacementDistortion::Distortion() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadSingleDisplacementDistortion::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1098]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadSingleDisplacementDistortion::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1098]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadSingleDisplacementDistortion::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1098]); } -Ifc4x3_add2::IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSingleDisplacementDistortion(IfcEntityInstanceData&& e) : IfcStructuralLoadSingleDisplacement(std::move(e)) { } -Ifc4x3_add2::IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSingleDisplacementDistortion(boost::optional< std::string > v1_Name, boost::optional< double > v2_DisplacementX, boost::optional< double > v3_DisplacementY, boost::optional< double > v4_DisplacementZ, boost::optional< double > v5_RotationalDisplacementRX, boost::optional< double > v6_RotationalDisplacementRY, boost::optional< double > v7_RotationalDisplacementRZ, boost::optional< double > v8_Distortion) : IfcStructuralLoadSingleDisplacement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DisplacementX) {set_attribute_value(1, (*v2_DisplacementX)); } if (v3_DisplacementY) {set_attribute_value(2, (*v3_DisplacementY)); } if (v4_DisplacementZ) {set_attribute_value(3, (*v4_DisplacementZ)); } if (v5_RotationalDisplacementRX) {set_attribute_value(4, (*v5_RotationalDisplacementRX)); } if (v6_RotationalDisplacementRY) {set_attribute_value(5, (*v6_RotationalDisplacementRY)); } if (v7_RotationalDisplacementRZ) {set_attribute_value(6, (*v7_RotationalDisplacementRZ)); } if (v8_Distortion) {set_attribute_value(7, (*v8_Distortion)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSingleDisplacementDistortion(const std::weak_ptr& e) : IfcStructuralLoadSingleDisplacement(e) { } +// Ifc4x3_add2::IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSingleDisplacementDistortion(std::optional< std::string > v1_Name, std::optional< double > v2_DisplacementX, std::optional< double > v3_DisplacementY, std::optional< double > v4_DisplacementZ, std::optional< double > v5_RotationalDisplacementRX, std::optional< double > v6_RotationalDisplacementRY, std::optional< double > v7_RotationalDisplacementRZ, std::optional< double > v8_Distortion) : IfcStructuralLoadSingleDisplacement(const std::weak_ptr&(in_memory_attribute_storage(8))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DisplacementX) {set_attribute_value(1, (*v2_DisplacementX)); } if (v3_DisplacementY) {set_attribute_value(2, (*v3_DisplacementY)); } if (v4_DisplacementZ) {set_attribute_value(3, (*v4_DisplacementZ)); } if (v5_RotationalDisplacementRX) {set_attribute_value(4, (*v5_RotationalDisplacementRX)); } if (v6_RotationalDisplacementRY) {set_attribute_value(5, (*v6_RotationalDisplacementRY)); } if (v7_RotationalDisplacementRZ) {set_attribute_value(6, (*v7_RotationalDisplacementRZ)); } if (v8_Distortion) {set_attribute_value(7, (*v8_Distortion)); }; populate_derived(); } // Function implementations for IfcStructuralLoadSingleForce -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleForce::ForceX() const { if(get_attribute_value(1).isNull()) { return boost::none; } double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleForce::ForceY() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleForce::ForceZ() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleForce::MomentX() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleForce::MomentY() const { if(get_attribute_value(5).isNull()) { return boost::none; } double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleForce::MomentZ() const { if(get_attribute_value(6).isNull()) { return boost::none; } double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleForce::ForceX() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } double v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcStructuralLoadSingleForce::setForceX(const std::optional< double >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleForce::ForceY() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcStructuralLoadSingleForce::setForceY(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleForce::ForceZ() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcStructuralLoadSingleForce::setForceZ(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleForce::MomentX() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcStructuralLoadSingleForce::setMomentX(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleForce::MomentY() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } double v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcStructuralLoadSingleForce::setMomentY(const std::optional< double >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleForce::MomentZ() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } double v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcStructuralLoadSingleForce::setMomentZ(const std::optional< double >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadSingleForce::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1099]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadSingleForce::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1099]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadSingleForce::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1099]); } -Ifc4x3_add2::IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(IfcEntityInstanceData&& e) : IfcStructuralLoadStatic(std::move(e)) { } -Ifc4x3_add2::IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(boost::optional< std::string > v1_Name, boost::optional< double > v2_ForceX, boost::optional< double > v3_ForceY, boost::optional< double > v4_ForceZ, boost::optional< double > v5_MomentX, boost::optional< double > v6_MomentY, boost::optional< double > v7_MomentZ) : IfcStructuralLoadStatic(IfcEntityInstanceData(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_ForceX) {set_attribute_value(1, (*v2_ForceX)); } if (v3_ForceY) {set_attribute_value(2, (*v3_ForceY)); } if (v4_ForceZ) {set_attribute_value(3, (*v4_ForceZ)); } if (v5_MomentX) {set_attribute_value(4, (*v5_MomentX)); } if (v6_MomentY) {set_attribute_value(5, (*v6_MomentY)); } if (v7_MomentZ) {set_attribute_value(6, (*v7_MomentZ)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(const std::weak_ptr& e) : IfcStructuralLoadStatic(e) { } +// Ifc4x3_add2::IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(std::optional< std::string > v1_Name, std::optional< double > v2_ForceX, std::optional< double > v3_ForceY, std::optional< double > v4_ForceZ, std::optional< double > v5_MomentX, std::optional< double > v6_MomentY, std::optional< double > v7_MomentZ) : IfcStructuralLoadStatic(const std::weak_ptr&(in_memory_attribute_storage(7))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_ForceX) {set_attribute_value(1, (*v2_ForceX)); } if (v3_ForceY) {set_attribute_value(2, (*v3_ForceY)); } if (v4_ForceZ) {set_attribute_value(3, (*v4_ForceZ)); } if (v5_MomentX) {set_attribute_value(4, (*v5_MomentX)); } if (v6_MomentY) {set_attribute_value(5, (*v6_MomentY)); } if (v7_MomentZ) {set_attribute_value(6, (*v7_MomentZ)); }; populate_derived(); } // Function implementations for IfcStructuralLoadSingleForceWarping -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleForceWarping::WarpingMoment() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadSingleForceWarping::WarpingMoment() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcStructuralLoadSingleForceWarping::setWarpingMoment(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadSingleForceWarping::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1100]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadSingleForceWarping::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1100]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadSingleForceWarping::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1100]); } -Ifc4x3_add2::IfcStructuralLoadSingleForceWarping::IfcStructuralLoadSingleForceWarping(IfcEntityInstanceData&& e) : IfcStructuralLoadSingleForce(std::move(e)) { } -Ifc4x3_add2::IfcStructuralLoadSingleForceWarping::IfcStructuralLoadSingleForceWarping(boost::optional< std::string > v1_Name, boost::optional< double > v2_ForceX, boost::optional< double > v3_ForceY, boost::optional< double > v4_ForceZ, boost::optional< double > v5_MomentX, boost::optional< double > v6_MomentY, boost::optional< double > v7_MomentZ, boost::optional< double > v8_WarpingMoment) : IfcStructuralLoadSingleForce(IfcEntityInstanceData(in_memory_attribute_storage(8))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_ForceX) {set_attribute_value(1, (*v2_ForceX)); } if (v3_ForceY) {set_attribute_value(2, (*v3_ForceY)); } if (v4_ForceZ) {set_attribute_value(3, (*v4_ForceZ)); } if (v5_MomentX) {set_attribute_value(4, (*v5_MomentX)); } if (v6_MomentY) {set_attribute_value(5, (*v6_MomentY)); } if (v7_MomentZ) {set_attribute_value(6, (*v7_MomentZ)); } if (v8_WarpingMoment) {set_attribute_value(7, (*v8_WarpingMoment)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralLoadSingleForceWarping::IfcStructuralLoadSingleForceWarping(const std::weak_ptr& e) : IfcStructuralLoadSingleForce(e) { } +// Ifc4x3_add2::IfcStructuralLoadSingleForceWarping::IfcStructuralLoadSingleForceWarping(std::optional< std::string > v1_Name, std::optional< double > v2_ForceX, std::optional< double > v3_ForceY, std::optional< double > v4_ForceZ, std::optional< double > v5_MomentX, std::optional< double > v6_MomentY, std::optional< double > v7_MomentZ, std::optional< double > v8_WarpingMoment) : IfcStructuralLoadSingleForce(const std::weak_ptr&(in_memory_attribute_storage(8))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_ForceX) {set_attribute_value(1, (*v2_ForceX)); } if (v3_ForceY) {set_attribute_value(2, (*v3_ForceY)); } if (v4_ForceZ) {set_attribute_value(3, (*v4_ForceZ)); } if (v5_MomentX) {set_attribute_value(4, (*v5_MomentX)); } if (v6_MomentY) {set_attribute_value(5, (*v6_MomentY)); } if (v7_MomentZ) {set_attribute_value(6, (*v7_MomentZ)); } if (v8_WarpingMoment) {set_attribute_value(7, (*v8_WarpingMoment)); }; populate_derived(); } // Function implementations for IfcStructuralLoadStatic -const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadStatic::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1101]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadStatic::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1101]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadStatic::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1101]); } -Ifc4x3_add2::IfcStructuralLoadStatic::IfcStructuralLoadStatic(IfcEntityInstanceData&& e) : IfcStructuralLoadOrResult(std::move(e)) { } -Ifc4x3_add2::IfcStructuralLoadStatic::IfcStructuralLoadStatic(boost::optional< std::string > v1_Name) : IfcStructuralLoadOrResult(IfcEntityInstanceData(in_memory_attribute_storage(1))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralLoadStatic::IfcStructuralLoadStatic(const std::weak_ptr& e) : IfcStructuralLoadOrResult(e) { } +// Ifc4x3_add2::IfcStructuralLoadStatic::IfcStructuralLoadStatic(std::optional< std::string > v1_Name) : IfcStructuralLoadOrResult(const std::weak_ptr&(in_memory_attribute_storage(1))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }; populate_derived(); } // Function implementations for IfcStructuralLoadTemperature -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadTemperature::DeltaTConstant() const { if(get_attribute_value(1).isNull()) { return boost::none; } double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadTemperature::DeltaTY() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcStructuralLoadTemperature::DeltaTZ() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadTemperature::DeltaTConstant() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } double v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcStructuralLoadTemperature::setDeltaTConstant(const std::optional< double >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadTemperature::DeltaTY() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcStructuralLoadTemperature::setDeltaTY(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcStructuralLoadTemperature::DeltaTZ() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcStructuralLoadTemperature::setDeltaTZ(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadTemperature::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1102]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadTemperature::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1102]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralLoadTemperature::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1102]); } -Ifc4x3_add2::IfcStructuralLoadTemperature::IfcStructuralLoadTemperature(IfcEntityInstanceData&& e) : IfcStructuralLoadStatic(std::move(e)) { } -Ifc4x3_add2::IfcStructuralLoadTemperature::IfcStructuralLoadTemperature(boost::optional< std::string > v1_Name, boost::optional< double > v2_DeltaTConstant, boost::optional< double > v3_DeltaTY, boost::optional< double > v4_DeltaTZ) : IfcStructuralLoadStatic(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DeltaTConstant) {set_attribute_value(1, (*v2_DeltaTConstant)); } if (v3_DeltaTY) {set_attribute_value(2, (*v3_DeltaTY)); } if (v4_DeltaTZ) {set_attribute_value(3, (*v4_DeltaTZ)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralLoadTemperature::IfcStructuralLoadTemperature(const std::weak_ptr& e) : IfcStructuralLoadStatic(e) { } +// Ifc4x3_add2::IfcStructuralLoadTemperature::IfcStructuralLoadTemperature(std::optional< std::string > v1_Name, std::optional< double > v2_DeltaTConstant, std::optional< double > v3_DeltaTY, std::optional< double > v4_DeltaTZ) : IfcStructuralLoadStatic(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DeltaTConstant) {set_attribute_value(1, (*v2_DeltaTConstant)); } if (v3_DeltaTY) {set_attribute_value(2, (*v3_DeltaTY)); } if (v4_DeltaTZ) {set_attribute_value(3, (*v4_DeltaTZ)); }; populate_derived(); } // Function implementations for IfcStructuralMember -::Ifc4x3_add2::IfcRelConnectsStructuralMember::list::ptr Ifc4x3_add2::IfcStructuralMember::ConnectedBy() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[923], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelConnectsStructuralMember> Ifc4x3_add2::IfcStructuralMember::ConnectedBy() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[923], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralMember::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1103]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralMember::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1103]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralMember::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1103]); } -Ifc4x3_add2::IfcStructuralMember::IfcStructuralMember(IfcEntityInstanceData&& e) : IfcStructuralItem(std::move(e)) { } -Ifc4x3_add2::IfcStructuralMember::IfcStructuralMember(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation) : IfcStructuralItem(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcStructuralMember::IfcStructuralMember(const std::weak_ptr& e) : IfcStructuralItem(e) { } +// Ifc4x3_add2::IfcStructuralMember::IfcStructuralMember(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation) : IfcStructuralItem(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }; populate_derived(); } // Function implementations for IfcStructuralPlanarAction -const IfcParse::entity& Ifc4x3_add2::IfcStructuralPlanarAction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1104]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralPlanarAction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1104]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralPlanarAction::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1104]); } -Ifc4x3_add2::IfcStructuralPlanarAction::IfcStructuralPlanarAction(IfcEntityInstanceData&& e) : IfcStructuralSurfaceAction(std::move(e)) { } -Ifc4x3_add2::IfcStructuralPlanarAction::IfcStructuralPlanarAction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralSurfaceAction(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AppliedLoad ? v8_AppliedLoad->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal))); if (v10_DestabilizingLoad) {set_attribute_value(9, (*v10_DestabilizingLoad)); } if (v11_ProjectedOrTrue) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Class(),(size_t)*v11_ProjectedOrTrue))); }set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcStructuralPlanarAction::IfcStructuralPlanarAction(const std::weak_ptr& e) : IfcStructuralSurfaceAction(e) { } +// Ifc4x3_add2::IfcStructuralPlanarAction::IfcStructuralPlanarAction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, std::optional< bool > v10_DestabilizingLoad, std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralSurfaceAction(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (v8_AppliedLoad));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal))); if (v10_DestabilizingLoad) {set_attribute_value(9, (*v10_DestabilizingLoad)); } if (v11_ProjectedOrTrue) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Class(),(size_t)*v11_ProjectedOrTrue))); }set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } // Function implementations for IfcStructuralPointAction -const IfcParse::entity& Ifc4x3_add2::IfcStructuralPointAction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1105]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralPointAction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1105]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralPointAction::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1105]); } -Ifc4x3_add2::IfcStructuralPointAction::IfcStructuralPointAction(IfcEntityInstanceData&& e) : IfcStructuralAction(std::move(e)) { } -Ifc4x3_add2::IfcStructuralPointAction::IfcStructuralPointAction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad) : IfcStructuralAction(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AppliedLoad ? v8_AppliedLoad->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal))); if (v10_DestabilizingLoad) {set_attribute_value(9, (*v10_DestabilizingLoad)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralPointAction::IfcStructuralPointAction(const std::weak_ptr& e) : IfcStructuralAction(e) { } +// Ifc4x3_add2::IfcStructuralPointAction::IfcStructuralPointAction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, std::optional< bool > v10_DestabilizingLoad) : IfcStructuralAction(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (v8_AppliedLoad));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal))); if (v10_DestabilizingLoad) {set_attribute_value(9, (*v10_DestabilizingLoad)); }; populate_derived(); } // Function implementations for IfcStructuralPointConnection -::Ifc4x3_add2::IfcAxis2Placement3D* Ifc4x3_add2::IfcStructuralPointConnection::ConditionCoordinateSystem() const { if(get_attribute_value(8).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(8)))->as<::Ifc4x3_add2::IfcAxis2Placement3D>(true); } -void Ifc4x3_add2::IfcStructuralPointConnection::setConditionCoordinateSystem(::Ifc4x3_add2::IfcAxis2Placement3D* v) { set_attribute_value(8, v->as());if constexpr (false)unset_attribute_value(8); } +::Ifc4x3_add2::IfcAxis2Placement3D Ifc4x3_add2::IfcStructuralPointConnection::ConditionCoordinateSystem() const { if(get_attribute_value(8).isNull()) { return ::Ifc4x3_add2::IfcAxis2Placement3D{}; } return ((express::Base)(get_attribute_value(8))).as<::Ifc4x3_add2::IfcAxis2Placement3D>(); } +void Ifc4x3_add2::IfcStructuralPointConnection::setConditionCoordinateSystem(const ::Ifc4x3_add2::IfcAxis2Placement3D& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralPointConnection::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1106]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralPointConnection::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1106]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralPointConnection::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1106]); } -Ifc4x3_add2::IfcStructuralPointConnection::IfcStructuralPointConnection(IfcEntityInstanceData&& e) : IfcStructuralConnection(std::move(e)) { } -Ifc4x3_add2::IfcStructuralPointConnection::IfcStructuralPointConnection(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition* v8_AppliedCondition, ::Ifc4x3_add2::IfcAxis2Placement3D* v9_ConditionCoordinateSystem) : IfcStructuralConnection(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AppliedCondition ? v8_AppliedCondition->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, v9_ConditionCoordinateSystem ? v9_ConditionCoordinateSystem->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcStructuralPointConnection::IfcStructuralPointConnection(const std::weak_ptr& e) : IfcStructuralConnection(e) { } +// Ifc4x3_add2::IfcStructuralPointConnection::IfcStructuralPointConnection(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition v8_AppliedCondition, ::Ifc4x3_add2::IfcAxis2Placement3D v9_ConditionCoordinateSystem) : IfcStructuralConnection(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_AppliedCondition) {set_attribute_value(7, (*v8_AppliedCondition)); } if (v9_ConditionCoordinateSystem) {set_attribute_value(8, (*v9_ConditionCoordinateSystem)); }; populate_derived(); } // Function implementations for IfcStructuralPointReaction -const IfcParse::entity& Ifc4x3_add2::IfcStructuralPointReaction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1107]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralPointReaction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1107]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralPointReaction::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1107]); } -Ifc4x3_add2::IfcStructuralPointReaction::IfcStructuralPointReaction(IfcEntityInstanceData&& e) : IfcStructuralReaction(std::move(e)) { } -Ifc4x3_add2::IfcStructuralPointReaction::IfcStructuralPointReaction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal) : IfcStructuralReaction(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AppliedLoad ? v8_AppliedLoad->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal)));; populate_derived(); } +// Ifc4x3_add2::IfcStructuralPointReaction::IfcStructuralPointReaction(const std::weak_ptr& e) : IfcStructuralReaction(e) { } +// Ifc4x3_add2::IfcStructuralPointReaction::IfcStructuralPointReaction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal) : IfcStructuralReaction(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (v8_AppliedLoad));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal)));; populate_derived(); } // Function implementations for IfcStructuralReaction -const IfcParse::entity& Ifc4x3_add2::IfcStructuralReaction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1108]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralReaction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1108]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralReaction::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1108]); } -Ifc4x3_add2::IfcStructuralReaction::IfcStructuralReaction(IfcEntityInstanceData&& e) : IfcStructuralActivity(std::move(e)) { } -Ifc4x3_add2::IfcStructuralReaction::IfcStructuralReaction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal) : IfcStructuralActivity(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AppliedLoad ? v8_AppliedLoad->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal)));; populate_derived(); } +// Ifc4x3_add2::IfcStructuralReaction::IfcStructuralReaction(const std::weak_ptr& e) : IfcStructuralActivity(e) { } +// Ifc4x3_add2::IfcStructuralReaction::IfcStructuralReaction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal) : IfcStructuralActivity(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (v8_AppliedLoad));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal)));; populate_derived(); } // Function implementations for IfcStructuralResultGroup ::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Value Ifc4x3_add2::IfcStructuralResultGroup::TheoryType() const { return ::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::FromString(get_attribute_value(5)); } -void Ifc4x3_add2::IfcStructuralResultGroup::setTheoryType(::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Value v) { set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcStructuralLoadGroup* Ifc4x3_add2::IfcStructuralResultGroup::ResultForLoadGroup() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcStructuralLoadGroup>(true); } -void Ifc4x3_add2::IfcStructuralResultGroup::setResultForLoadGroup(::Ifc4x3_add2::IfcStructuralLoadGroup* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +void Ifc4x3_add2::IfcStructuralResultGroup::setTheoryType(const ::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Value& v) { set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcStructuralLoadGroup Ifc4x3_add2::IfcStructuralResultGroup::ResultForLoadGroup() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcStructuralLoadGroup{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcStructuralLoadGroup>(); } +void Ifc4x3_add2::IfcStructuralResultGroup::setResultForLoadGroup(const ::Ifc4x3_add2::IfcStructuralLoadGroup& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } bool Ifc4x3_add2::IfcStructuralResultGroup::IsLinear() const { bool v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcStructuralResultGroup::setIsLinear(bool v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } +void Ifc4x3_add2::IfcStructuralResultGroup::setIsLinear(const bool& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } -::Ifc4x3_add2::IfcStructuralAnalysisModel::list::ptr Ifc4x3_add2::IfcStructuralResultGroup::ResultGroupFor() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[1078], 8)->as(); } +std::vector<::Ifc4x3_add2::IfcStructuralAnalysisModel> Ifc4x3_add2::IfcStructuralResultGroup::ResultGroupFor() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[1078], 8)); } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralResultGroup::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1109]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralResultGroup::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1109]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralResultGroup::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1109]); } -Ifc4x3_add2::IfcStructuralResultGroup::IfcStructuralResultGroup(IfcEntityInstanceData&& e) : IfcGroup(std::move(e)) { } -Ifc4x3_add2::IfcStructuralResultGroup::IfcStructuralResultGroup(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Value v6_TheoryType, ::Ifc4x3_add2::IfcStructuralLoadGroup* v7_ResultForLoadGroup, bool v8_IsLinear) : IfcGroup(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Class(),(size_t)v6_TheoryType)));set_attribute_value(6, v7_ResultForLoadGroup ? v7_ResultForLoadGroup->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, (v8_IsLinear));; populate_derived(); } +// Ifc4x3_add2::IfcStructuralResultGroup::IfcStructuralResultGroup(const std::weak_ptr& e) : IfcGroup(e) { } +// Ifc4x3_add2::IfcStructuralResultGroup::IfcStructuralResultGroup(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Value v6_TheoryType, ::Ifc4x3_add2::IfcStructuralLoadGroup v7_ResultForLoadGroup, bool v8_IsLinear) : IfcGroup(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Class(),(size_t)v6_TheoryType))); if (v7_ResultForLoadGroup) {set_attribute_value(6, (*v7_ResultForLoadGroup)); }set_attribute_value(7, (v8_IsLinear));; populate_derived(); } // Function implementations for IfcStructuralSurfaceAction -boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_add2::IfcStructuralSurfaceAction::ProjectedOrTrue() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_add2::IfcStructuralSurfaceAction::ProjectedOrTrue() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcStructuralSurfaceAction::setProjectedOrTrue(const std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value Ifc4x3_add2::IfcStructuralSurfaceAction::PredefinedType() const { return ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::FromString(get_attribute_value(11)); } -void Ifc4x3_add2::IfcStructuralSurfaceAction::setPredefinedType(::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } +void Ifc4x3_add2::IfcStructuralSurfaceAction::setPredefinedType(const ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value& v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralSurfaceAction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1110]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralSurfaceAction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1110]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralSurfaceAction::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1110]); } -Ifc4x3_add2::IfcStructuralSurfaceAction::IfcStructuralSurfaceAction(IfcEntityInstanceData&& e) : IfcStructuralAction(std::move(e)) { } -Ifc4x3_add2::IfcStructuralSurfaceAction::IfcStructuralSurfaceAction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralAction(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AppliedLoad ? v8_AppliedLoad->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal))); if (v10_DestabilizingLoad) {set_attribute_value(9, (*v10_DestabilizingLoad)); } if (v11_ProjectedOrTrue) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Class(),(size_t)*v11_ProjectedOrTrue))); }set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcStructuralSurfaceAction::IfcStructuralSurfaceAction(const std::weak_ptr& e) : IfcStructuralAction(e) { } +// Ifc4x3_add2::IfcStructuralSurfaceAction::IfcStructuralSurfaceAction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, std::optional< bool > v10_DestabilizingLoad, std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralAction(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (v8_AppliedLoad));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal))); if (v10_DestabilizingLoad) {set_attribute_value(9, (*v10_DestabilizingLoad)); } if (v11_ProjectedOrTrue) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Class(),(size_t)*v11_ProjectedOrTrue))); }set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } // Function implementations for IfcStructuralSurfaceConnection -const IfcParse::entity& Ifc4x3_add2::IfcStructuralSurfaceConnection::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1112]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralSurfaceConnection::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1112]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralSurfaceConnection::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1112]); } -Ifc4x3_add2::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(IfcEntityInstanceData&& e) : IfcStructuralConnection(std::move(e)) { } -Ifc4x3_add2::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition* v8_AppliedCondition) : IfcStructuralConnection(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AppliedCondition ? v8_AppliedCondition->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(const std::weak_ptr& e) : IfcStructuralConnection(e) { } +// Ifc4x3_add2::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition v8_AppliedCondition) : IfcStructuralConnection(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_AppliedCondition) {set_attribute_value(7, (*v8_AppliedCondition)); }; populate_derived(); } // Function implementations for IfcStructuralSurfaceMember ::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Value Ifc4x3_add2::IfcStructuralSurfaceMember::PredefinedType() const { return ::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::FromString(get_attribute_value(7)); } -void Ifc4x3_add2::IfcStructuralSurfaceMember::setPredefinedType(::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Value v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } -boost::optional< double > Ifc4x3_add2::IfcStructuralSurfaceMember::Thickness() const { if(get_attribute_value(8).isNull()) { return boost::none; } double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +void Ifc4x3_add2::IfcStructuralSurfaceMember::setPredefinedType(const ::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Value& v) { set_attribute_value(7, EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(7); } +std::optional< double > Ifc4x3_add2::IfcStructuralSurfaceMember::Thickness() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } double v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcStructuralSurfaceMember::setThickness(const std::optional< double >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralSurfaceMember::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1113]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralSurfaceMember::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1113]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralSurfaceMember::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1113]); } -Ifc4x3_add2::IfcStructuralSurfaceMember::IfcStructuralSurfaceMember(IfcEntityInstanceData&& e) : IfcStructuralMember(std::move(e)) { } -Ifc4x3_add2::IfcStructuralSurfaceMember::IfcStructuralSurfaceMember(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Value v8_PredefinedType, boost::optional< double > v9_Thickness) : IfcStructuralMember(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Class(),(size_t)v8_PredefinedType))); if (v9_Thickness) {set_attribute_value(8, (*v9_Thickness)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralSurfaceMember::IfcStructuralSurfaceMember(const std::weak_ptr& e) : IfcStructuralMember(e) { } +// Ifc4x3_add2::IfcStructuralSurfaceMember::IfcStructuralSurfaceMember(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Value v8_PredefinedType, std::optional< double > v9_Thickness) : IfcStructuralMember(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Class(),(size_t)v8_PredefinedType))); if (v9_Thickness) {set_attribute_value(8, (*v9_Thickness)); }; populate_derived(); } // Function implementations for IfcStructuralSurfaceMemberVarying -const IfcParse::entity& Ifc4x3_add2::IfcStructuralSurfaceMemberVarying::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1115]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralSurfaceMemberVarying::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1115]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralSurfaceMemberVarying::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1115]); } -Ifc4x3_add2::IfcStructuralSurfaceMemberVarying::IfcStructuralSurfaceMemberVarying(IfcEntityInstanceData&& e) : IfcStructuralSurfaceMember(std::move(e)) { } -Ifc4x3_add2::IfcStructuralSurfaceMemberVarying::IfcStructuralSurfaceMemberVarying(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Value v8_PredefinedType, boost::optional< double > v9_Thickness) : IfcStructuralSurfaceMember(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Class(),(size_t)v8_PredefinedType))); if (v9_Thickness) {set_attribute_value(8, (*v9_Thickness)); }; populate_derived(); } +// Ifc4x3_add2::IfcStructuralSurfaceMemberVarying::IfcStructuralSurfaceMemberVarying(const std::weak_ptr& e) : IfcStructuralSurfaceMember(e) { } +// Ifc4x3_add2::IfcStructuralSurfaceMemberVarying::IfcStructuralSurfaceMemberVarying(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Value v8_PredefinedType, std::optional< double > v9_Thickness) : IfcStructuralSurfaceMember(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Class(),(size_t)v8_PredefinedType))); if (v9_Thickness) {set_attribute_value(8, (*v9_Thickness)); }; populate_derived(); } // Function implementations for IfcStructuralSurfaceReaction ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value Ifc4x3_add2::IfcStructuralSurfaceReaction::PredefinedType() const { return ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcStructuralSurfaceReaction::setPredefinedType(::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcStructuralSurfaceReaction::setPredefinedType(const ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcStructuralSurfaceReaction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1116]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStructuralSurfaceReaction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1116]); } const IfcParse::entity& Ifc4x3_add2::IfcStructuralSurfaceReaction::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1116]); } -Ifc4x3_add2::IfcStructuralSurfaceReaction::IfcStructuralSurfaceReaction(IfcEntityInstanceData&& e) : IfcStructuralReaction(std::move(e)) { } -Ifc4x3_add2::IfcStructuralSurfaceReaction::IfcStructuralSurfaceReaction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v10_PredefinedType) : IfcStructuralReaction(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_AppliedLoad ? v8_AppliedLoad->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal)));set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcStructuralSurfaceReaction::IfcStructuralSurfaceReaction(const std::weak_ptr& e) : IfcStructuralReaction(e) { } +// Ifc4x3_add2::IfcStructuralSurfaceReaction::IfcStructuralSurfaceReaction(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v10_PredefinedType) : IfcStructuralReaction(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); }set_attribute_value(7, (v8_AppliedLoad));set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcGlobalOrLocalEnum::Class(),(size_t)v9_GlobalOrLocal)));set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcStyleModel -const IfcParse::entity& Ifc4x3_add2::IfcStyleModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1119]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStyleModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1119]); } const IfcParse::entity& Ifc4x3_add2::IfcStyleModel::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1119]); } -Ifc4x3_add2::IfcStyleModel::IfcStyleModel(IfcEntityInstanceData&& e) : IfcRepresentation(std::move(e)) { } -Ifc4x3_add2::IfcStyleModel::IfcStyleModel(::Ifc4x3_add2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr v4_Items) : IfcRepresentation(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_ContextOfItems ? v1_ContextOfItems->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_RepresentationIdentifier) {set_attribute_value(1, (*v2_RepresentationIdentifier)); } if (v3_RepresentationType) {set_attribute_value(2, (*v3_RepresentationType)); }set_attribute_value(3, (v4_Items)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcStyleModel::IfcStyleModel(const std::weak_ptr& e) : IfcRepresentation(e) { } +// Ifc4x3_add2::IfcStyleModel::IfcStyleModel(::Ifc4x3_add2::IfcRepresentationContext v1_ContextOfItems, std::optional< std::string > v2_RepresentationIdentifier, std::optional< std::string > v3_RepresentationType, std::vector< ::Ifc4x3_add2::IfcRepresentationItem > v4_Items) : IfcRepresentation(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_ContextOfItems)); if (v2_RepresentationIdentifier) {set_attribute_value(1, (*v2_RepresentationIdentifier)); } if (v3_RepresentationType) {set_attribute_value(2, (*v3_RepresentationType)); }set_attribute_value(3, (v4_Items)->generalize());; populate_derived(); } // Function implementations for IfcStyledItem -::Ifc4x3_add2::IfcRepresentationItem* Ifc4x3_add2::IfcStyledItem::Item() const { if(get_attribute_value(0).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcRepresentationItem>(true); } -void Ifc4x3_add2::IfcStyledItem::setItem(::Ifc4x3_add2::IfcRepresentationItem* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -aggregate_of< ::Ifc4x3_add2::IfcPresentationStyle >::ptr Ifc4x3_add2::IfcStyledItem::Styles() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcPresentationStyle >(); } -void Ifc4x3_add2::IfcStyledItem::setStyles(aggregate_of< ::Ifc4x3_add2::IfcPresentationStyle >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } -boost::optional< std::string > Ifc4x3_add2::IfcStyledItem::Name() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcStyledItem::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +::Ifc4x3_add2::IfcRepresentationItem Ifc4x3_add2::IfcStyledItem::Item() const { if(get_attribute_value(0).isNull()) { return ::Ifc4x3_add2::IfcRepresentationItem{}; } return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcRepresentationItem>(); } +void Ifc4x3_add2::IfcStyledItem::setItem(const ::Ifc4x3_add2::IfcRepresentationItem& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcPresentationStyle > Ifc4x3_add2::IfcStyledItem::Styles() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcPresentationStyle>(es); } +void Ifc4x3_add2::IfcStyledItem::setStyles(const std::vector< ::Ifc4x3_add2::IfcPresentationStyle >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } +std::optional< std::string > Ifc4x3_add2::IfcStyledItem::Name() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcStyledItem::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -const IfcParse::entity& Ifc4x3_add2::IfcStyledItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1117]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStyledItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1117]); } const IfcParse::entity& Ifc4x3_add2::IfcStyledItem::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1117]); } -Ifc4x3_add2::IfcStyledItem::IfcStyledItem(IfcEntityInstanceData&& e) : IfcRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcStyledItem::IfcStyledItem(::Ifc4x3_add2::IfcRepresentationItem* v1_Item, aggregate_of< ::Ifc4x3_add2::IfcPresentationStyle >::ptr v2_Styles, boost::optional< std::string > v3_Name) : IfcRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_Item ? v1_Item->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Styles)->generalize()); if (v3_Name) {set_attribute_value(2, (*v3_Name)); }; populate_derived(); } +// Ifc4x3_add2::IfcStyledItem::IfcStyledItem(const std::weak_ptr& e) : IfcRepresentationItem(e) { } +// Ifc4x3_add2::IfcStyledItem::IfcStyledItem(::Ifc4x3_add2::IfcRepresentationItem v1_Item, std::vector< ::Ifc4x3_add2::IfcPresentationStyle > v2_Styles, std::optional< std::string > v3_Name) : IfcRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Item) {set_attribute_value(0, (*v1_Item)); }set_attribute_value(1, (v2_Styles)->generalize()); if (v3_Name) {set_attribute_value(2, (*v3_Name)); }; populate_derived(); } // Function implementations for IfcStyledRepresentation -const IfcParse::entity& Ifc4x3_add2::IfcStyledRepresentation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1118]); } +// const IfcParse::entity& Ifc4x3_add2::IfcStyledRepresentation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1118]); } const IfcParse::entity& Ifc4x3_add2::IfcStyledRepresentation::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1118]); } -Ifc4x3_add2::IfcStyledRepresentation::IfcStyledRepresentation(IfcEntityInstanceData&& e) : IfcStyleModel(std::move(e)) { } -Ifc4x3_add2::IfcStyledRepresentation::IfcStyledRepresentation(::Ifc4x3_add2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr v4_Items) : IfcStyleModel(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_ContextOfItems ? v1_ContextOfItems->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_RepresentationIdentifier) {set_attribute_value(1, (*v2_RepresentationIdentifier)); } if (v3_RepresentationType) {set_attribute_value(2, (*v3_RepresentationType)); }set_attribute_value(3, (v4_Items)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcStyledRepresentation::IfcStyledRepresentation(const std::weak_ptr& e) : IfcStyleModel(e) { } +// Ifc4x3_add2::IfcStyledRepresentation::IfcStyledRepresentation(::Ifc4x3_add2::IfcRepresentationContext v1_ContextOfItems, std::optional< std::string > v2_RepresentationIdentifier, std::optional< std::string > v3_RepresentationType, std::vector< ::Ifc4x3_add2::IfcRepresentationItem > v4_Items) : IfcStyleModel(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_ContextOfItems)); if (v2_RepresentationIdentifier) {set_attribute_value(1, (*v2_RepresentationIdentifier)); } if (v3_RepresentationType) {set_attribute_value(2, (*v3_RepresentationType)); }set_attribute_value(3, (v4_Items)->generalize());; populate_derived(); } // Function implementations for IfcSubContractResource -boost::optional< ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value > Ifc4x3_add2::IfcSubContractResource::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value > Ifc4x3_add2::IfcSubContractResource::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcSubContractResource::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcSubContractResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1120]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSubContractResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1120]); } const IfcParse::entity& Ifc4x3_add2::IfcSubContractResource::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1120]); } -Ifc4x3_add2::IfcSubContractResource::IfcSubContractResource(IfcEntityInstanceData&& e) : IfcConstructionResource(std::move(e)) { } -Ifc4x3_add2::IfcSubContractResource::IfcSubContractResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); }set_attribute_value(7, v8_Usage ? v8_Usage->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v9_BaseCosts) {set_attribute_value(8, (*v9_BaseCosts)->generalize()); }set_attribute_value(9, v10_BaseQuantity ? v10_BaseQuantity->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcSubContractResource::IfcSubContractResource(const std::weak_ptr& e) : IfcConstructionResource(e) { } +// Ifc4x3_add2::IfcSubContractResource::IfcSubContractResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime v8_Usage, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v10_BaseQuantity, std::optional< ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); } if (v8_Usage) {set_attribute_value(7, (*v8_Usage)); } if (v9_BaseCosts) {set_attribute_value(8, (*v9_BaseCosts)->generalize()); } if (v10_BaseQuantity) {set_attribute_value(9, (*v10_BaseQuantity)); } if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Class(),(size_t)*v11_PredefinedType))); }; populate_derived(); } // Function implementations for IfcSubContractResourceType ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value Ifc4x3_add2::IfcSubContractResourceType::PredefinedType() const { return ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::FromString(get_attribute_value(11)); } -void Ifc4x3_add2::IfcSubContractResourceType::setPredefinedType(::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } +void Ifc4x3_add2::IfcSubContractResourceType::setPredefinedType(const ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value& v) { set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(11); } -const IfcParse::entity& Ifc4x3_add2::IfcSubContractResourceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1121]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSubContractResourceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1121]); } const IfcParse::entity& Ifc4x3_add2::IfcSubContractResourceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1121]); } -Ifc4x3_add2::IfcSubContractResourceType::IfcSubContractResourceType(IfcEntityInstanceData&& e) : IfcConstructionResourceType(std::move(e)) { } -Ifc4x3_add2::IfcSubContractResourceType::IfcSubContractResourceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); } if (v10_BaseCosts) {set_attribute_value(9, (*v10_BaseCosts)->generalize()); }set_attribute_value(10, v11_BaseQuantity ? v11_BaseQuantity->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcSubContractResourceType::IfcSubContractResourceType(const std::weak_ptr& e) : IfcConstructionResourceType(e) { } +// Ifc4x3_add2::IfcSubContractResourceType::IfcSubContractResourceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v11_BaseQuantity, ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); } if (v10_BaseCosts) {set_attribute_value(9, (*v10_BaseCosts)->generalize()); } if (v11_BaseQuantity) {set_attribute_value(10, (*v11_BaseQuantity)); }set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Class(),(size_t)v12_PredefinedType)));; populate_derived(); } // Function implementations for IfcSubedge -::Ifc4x3_add2::IfcEdge* Ifc4x3_add2::IfcSubedge::ParentEdge() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcEdge>(true); } -void Ifc4x3_add2::IfcSubedge::setParentEdge(::Ifc4x3_add2::IfcEdge* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcEdge Ifc4x3_add2::IfcSubedge::ParentEdge() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcEdge>(); } +void Ifc4x3_add2::IfcSubedge::setParentEdge(const ::Ifc4x3_add2::IfcEdge& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcSubedge::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1123]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSubedge::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1123]); } const IfcParse::entity& Ifc4x3_add2::IfcSubedge::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1123]); } -Ifc4x3_add2::IfcSubedge::IfcSubedge(IfcEntityInstanceData&& e) : IfcEdge(std::move(e)) { } -Ifc4x3_add2::IfcSubedge::IfcSubedge(::Ifc4x3_add2::IfcVertex* v1_EdgeStart, ::Ifc4x3_add2::IfcVertex* v2_EdgeEnd, ::Ifc4x3_add2::IfcEdge* v3_ParentEdge) : IfcEdge(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_EdgeStart ? v1_EdgeStart->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_EdgeEnd ? v2_EdgeEnd->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_ParentEdge ? v3_ParentEdge->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcSubedge::IfcSubedge(const std::weak_ptr& e) : IfcEdge(e) { } +// Ifc4x3_add2::IfcSubedge::IfcSubedge(::Ifc4x3_add2::IfcVertex v1_EdgeStart, ::Ifc4x3_add2::IfcVertex v2_EdgeEnd, ::Ifc4x3_add2::IfcEdge v3_ParentEdge) : IfcEdge(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_EdgeStart));set_attribute_value(1, (v2_EdgeEnd));set_attribute_value(2, (v3_ParentEdge));; populate_derived(); } // Function implementations for IfcSurface -const IfcParse::entity& Ifc4x3_add2::IfcSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1124]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1124]); } const IfcParse::entity& Ifc4x3_add2::IfcSurface::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1124]); } -Ifc4x3_add2::IfcSurface::IfcSurface(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcSurface::IfcSurface() : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcSurface::IfcSurface(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcSurface::IfcSurface() : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcSurfaceCurve -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcSurfaceCurve::Curve3D() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcSurfaceCurve::setCurve3D(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -aggregate_of< ::Ifc4x3_add2::IfcPcurve >::ptr Ifc4x3_add2::IfcSurfaceCurve::AssociatedGeometry() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcPcurve >(); } -void Ifc4x3_add2::IfcSurfaceCurve::setAssociatedGeometry(aggregate_of< ::Ifc4x3_add2::IfcPcurve >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcSurfaceCurve::Curve3D() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcSurfaceCurve::setCurve3D(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcPcurve > Ifc4x3_add2::IfcSurfaceCurve::AssociatedGeometry() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcPcurve>(es); } +void Ifc4x3_add2::IfcSurfaceCurve::setAssociatedGeometry(const std::vector< ::Ifc4x3_add2::IfcPcurve >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value Ifc4x3_add2::IfcSurfaceCurve::MasterRepresentation() const { return ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::FromString(get_attribute_value(2)); } -void Ifc4x3_add2::IfcSurfaceCurve::setMasterRepresentation(::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value v) { set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Class(), (size_t) v));if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcSurfaceCurve::setMasterRepresentation(const ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value& v) { set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Class(), (size_t) v));if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcSurfaceCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1125]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSurfaceCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1125]); } const IfcParse::entity& Ifc4x3_add2::IfcSurfaceCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1125]); } -Ifc4x3_add2::IfcSurfaceCurve::IfcSurfaceCurve(IfcEntityInstanceData&& e) : IfcCurve(std::move(e)) { } -Ifc4x3_add2::IfcSurfaceCurve::IfcSurfaceCurve(::Ifc4x3_add2::IfcCurve* v1_Curve3D, aggregate_of< ::Ifc4x3_add2::IfcPcurve >::ptr v2_AssociatedGeometry, ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation) : IfcCurve(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_Curve3D ? v1_Curve3D->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_AssociatedGeometry)->generalize());set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Class(),(size_t)v3_MasterRepresentation)));; populate_derived(); } +// Ifc4x3_add2::IfcSurfaceCurve::IfcSurfaceCurve(const std::weak_ptr& e) : IfcCurve(e) { } +// Ifc4x3_add2::IfcSurfaceCurve::IfcSurfaceCurve(::Ifc4x3_add2::IfcCurve v1_Curve3D, std::vector< ::Ifc4x3_add2::IfcPcurve > v2_AssociatedGeometry, ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation) : IfcCurve(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Curve3D));set_attribute_value(1, (v2_AssociatedGeometry)->generalize());set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Class(),(size_t)v3_MasterRepresentation)));; populate_derived(); } // Function implementations for IfcSurfaceCurveSweptAreaSolid -::Ifc4x3_add2::IfcSurface* Ifc4x3_add2::IfcSurfaceCurveSweptAreaSolid::ReferenceSurface() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcSurface>(true); } -void Ifc4x3_add2::IfcSurfaceCurveSweptAreaSolid::setReferenceSurface(::Ifc4x3_add2::IfcSurface* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcSurface Ifc4x3_add2::IfcSurfaceCurveSweptAreaSolid::ReferenceSurface() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcSurface>(); } +void Ifc4x3_add2::IfcSurfaceCurveSweptAreaSolid::setReferenceSurface(const ::Ifc4x3_add2::IfcSurface& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcSurfaceCurveSweptAreaSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1126]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSurfaceCurveSweptAreaSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1126]); } const IfcParse::entity& Ifc4x3_add2::IfcSurfaceCurveSweptAreaSolid::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1126]); } -Ifc4x3_add2::IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(IfcEntityInstanceData&& e) : IfcDirectrixCurveSweptAreaSolid(std::move(e)) { } -Ifc4x3_add2::IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcCurve* v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect* v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect* v5_EndParam, ::Ifc4x3_add2::IfcSurface* v6_ReferenceSurface) : IfcDirectrixCurveSweptAreaSolid(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, v1_SweptArea ? v1_SweptArea->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Position ? v2_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_Directrix ? v3_Directrix->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_StartParam ? v4_StartParam->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, v5_EndParam ? v5_EndParam->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_ReferenceSurface ? v6_ReferenceSurface->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(const std::weak_ptr& e) : IfcDirectrixCurveSweptAreaSolid(e) { } +// Ifc4x3_add2::IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcCurve v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect v5_EndParam, ::Ifc4x3_add2::IfcSurface v6_ReferenceSurface) : IfcDirectrixCurveSweptAreaSolid(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_SweptArea)); if (v2_Position) {set_attribute_value(1, (*v2_Position)); }set_attribute_value(2, (v3_Directrix)); if (v4_StartParam) {set_attribute_value(3, (*v4_StartParam)); } if (v5_EndParam) {set_attribute_value(4, (*v5_EndParam)); }set_attribute_value(5, (v6_ReferenceSurface));; populate_derived(); } // Function implementations for IfcSurfaceFeature -boost::optional< ::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Value > Ifc4x3_add2::IfcSurfaceFeature::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Value > Ifc4x3_add2::IfcSurfaceFeature::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcSurfaceFeature::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -::Ifc4x3_add2::IfcRelAdheresToElement::list::ptr Ifc4x3_add2::IfcSurfaceFeature::AdheresToElement() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[898], 5)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAdheresToElement> Ifc4x3_add2::IfcSurfaceFeature::AdheresToElement() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[898], 5)); } -const IfcParse::entity& Ifc4x3_add2::IfcSurfaceFeature::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1127]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSurfaceFeature::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1127]); } const IfcParse::entity& Ifc4x3_add2::IfcSurfaceFeature::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1127]); } -Ifc4x3_add2::IfcSurfaceFeature::IfcSurfaceFeature(IfcEntityInstanceData&& e) : IfcFeatureElement(std::move(e)) { } -Ifc4x3_add2::IfcSurfaceFeature::IfcSurfaceFeature(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Value > v9_PredefinedType) : IfcFeatureElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcSurfaceFeature::IfcSurfaceFeature(const std::weak_ptr& e) : IfcFeatureElement(e) { } +// Ifc4x3_add2::IfcSurfaceFeature::IfcSurfaceFeature(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Value > v9_PredefinedType) : IfcFeatureElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcSurfaceOfLinearExtrusion -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcSurfaceOfLinearExtrusion::ExtrudedDirection() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcSurfaceOfLinearExtrusion::setExtrudedDirection(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcSurfaceOfLinearExtrusion::ExtrudedDirection() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcSurfaceOfLinearExtrusion::setExtrudedDirection(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } double Ifc4x3_add2::IfcSurfaceOfLinearExtrusion::Depth() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcSurfaceOfLinearExtrusion::setDepth(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcSurfaceOfLinearExtrusion::setDepth(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcSurfaceOfLinearExtrusion::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1129]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSurfaceOfLinearExtrusion::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1129]); } const IfcParse::entity& Ifc4x3_add2::IfcSurfaceOfLinearExtrusion::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1129]); } -Ifc4x3_add2::IfcSurfaceOfLinearExtrusion::IfcSurfaceOfLinearExtrusion(IfcEntityInstanceData&& e) : IfcSweptSurface(std::move(e)) { } -Ifc4x3_add2::IfcSurfaceOfLinearExtrusion::IfcSurfaceOfLinearExtrusion(::Ifc4x3_add2::IfcProfileDef* v1_SweptCurve, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcDirection* v3_ExtrudedDirection, double v4_Depth) : IfcSweptSurface(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_SweptCurve ? v1_SweptCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Position ? v2_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_ExtrudedDirection ? v3_ExtrudedDirection->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_Depth));; populate_derived(); } +// Ifc4x3_add2::IfcSurfaceOfLinearExtrusion::IfcSurfaceOfLinearExtrusion(const std::weak_ptr& e) : IfcSweptSurface(e) { } +// Ifc4x3_add2::IfcSurfaceOfLinearExtrusion::IfcSurfaceOfLinearExtrusion(::Ifc4x3_add2::IfcProfileDef v1_SweptCurve, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcDirection v3_ExtrudedDirection, double v4_Depth) : IfcSweptSurface(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_SweptCurve)); if (v2_Position) {set_attribute_value(1, (*v2_Position)); }set_attribute_value(2, (v3_ExtrudedDirection));set_attribute_value(3, (v4_Depth));; populate_derived(); } // Function implementations for IfcSurfaceOfRevolution -::Ifc4x3_add2::IfcAxis1Placement* Ifc4x3_add2::IfcSurfaceOfRevolution::AxisPosition() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcAxis1Placement>(true); } -void Ifc4x3_add2::IfcSurfaceOfRevolution::setAxisPosition(::Ifc4x3_add2::IfcAxis1Placement* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcAxis1Placement Ifc4x3_add2::IfcSurfaceOfRevolution::AxisPosition() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcAxis1Placement>(); } +void Ifc4x3_add2::IfcSurfaceOfRevolution::setAxisPosition(const ::Ifc4x3_add2::IfcAxis1Placement& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcSurfaceOfRevolution::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1130]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSurfaceOfRevolution::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1130]); } const IfcParse::entity& Ifc4x3_add2::IfcSurfaceOfRevolution::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1130]); } -Ifc4x3_add2::IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(IfcEntityInstanceData&& e) : IfcSweptSurface(std::move(e)) { } -Ifc4x3_add2::IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(::Ifc4x3_add2::IfcProfileDef* v1_SweptCurve, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcAxis1Placement* v3_AxisPosition) : IfcSweptSurface(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_SweptCurve ? v1_SweptCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Position ? v2_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_AxisPosition ? v3_AxisPosition->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(const std::weak_ptr& e) : IfcSweptSurface(e) { } +// Ifc4x3_add2::IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(::Ifc4x3_add2::IfcProfileDef v1_SweptCurve, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcAxis1Placement v3_AxisPosition) : IfcSweptSurface(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_SweptCurve)); if (v2_Position) {set_attribute_value(1, (*v2_Position)); }set_attribute_value(2, (v3_AxisPosition));; populate_derived(); } // Function implementations for IfcSurfaceReinforcementArea -boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x3_add2::IfcSurfaceReinforcementArea::SurfaceReinforcement1() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x3_add2::IfcSurfaceReinforcementArea::SurfaceReinforcement2() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcSurfaceReinforcementArea::ShearReinforcement() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< std::vector< double > /*[2:3]*/ > Ifc4x3_add2::IfcSurfaceReinforcementArea::SurfaceReinforcement1() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::vector< double > /*[2:3]*/ v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(const std::optional< std::vector< double > /*[2:3]*/ >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::vector< double > /*[2:3]*/ > Ifc4x3_add2::IfcSurfaceReinforcementArea::SurfaceReinforcement2() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::vector< double > /*[2:3]*/ v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(const std::optional< std::vector< double > /*[2:3]*/ >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcSurfaceReinforcementArea::ShearReinforcement() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcSurfaceReinforcementArea::setShearReinforcement(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -const IfcParse::entity& Ifc4x3_add2::IfcSurfaceReinforcementArea::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1132]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSurfaceReinforcementArea::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1132]); } const IfcParse::entity& Ifc4x3_add2::IfcSurfaceReinforcementArea::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1132]); } -Ifc4x3_add2::IfcSurfaceReinforcementArea::IfcSurfaceReinforcementArea(IfcEntityInstanceData&& e) : IfcStructuralLoadOrResult(std::move(e)) { } -Ifc4x3_add2::IfcSurfaceReinforcementArea::IfcSurfaceReinforcementArea(boost::optional< std::string > v1_Name, boost::optional< std::vector< double > /*[2:3]*/ > v2_SurfaceReinforcement1, boost::optional< std::vector< double > /*[2:3]*/ > v3_SurfaceReinforcement2, boost::optional< double > v4_ShearReinforcement) : IfcStructuralLoadOrResult(IfcEntityInstanceData(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_SurfaceReinforcement1) {set_attribute_value(1, (*v2_SurfaceReinforcement1)); } if (v3_SurfaceReinforcement2) {set_attribute_value(2, (*v3_SurfaceReinforcement2)); } if (v4_ShearReinforcement) {set_attribute_value(3, (*v4_ShearReinforcement)); }; populate_derived(); } +// Ifc4x3_add2::IfcSurfaceReinforcementArea::IfcSurfaceReinforcementArea(const std::weak_ptr& e) : IfcStructuralLoadOrResult(e) { } +// Ifc4x3_add2::IfcSurfaceReinforcementArea::IfcSurfaceReinforcementArea(std::optional< std::string > v1_Name, std::optional< std::vector< double > /*[2:3]*/ > v2_SurfaceReinforcement1, std::optional< std::vector< double > /*[2:3]*/ > v3_SurfaceReinforcement2, std::optional< double > v4_ShearReinforcement) : IfcStructuralLoadOrResult(const std::weak_ptr&(in_memory_attribute_storage(4))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_SurfaceReinforcement1) {set_attribute_value(1, (*v2_SurfaceReinforcement1)); } if (v3_SurfaceReinforcement2) {set_attribute_value(2, (*v3_SurfaceReinforcement2)); } if (v4_ShearReinforcement) {set_attribute_value(3, (*v4_ShearReinforcement)); }; populate_derived(); } // Function implementations for IfcSurfaceStyle ::Ifc4x3_add2::IfcSurfaceSide::Value Ifc4x3_add2::IfcSurfaceStyle::Side() const { return ::Ifc4x3_add2::IfcSurfaceSide::FromString(get_attribute_value(1)); } -void Ifc4x3_add2::IfcSurfaceStyle::setSide(::Ifc4x3_add2::IfcSurfaceSide::Value v) { set_attribute_value(1, EnumerationReference(&::Ifc4x3_add2::IfcSurfaceSide::Class(), (size_t) v));if constexpr (false)unset_attribute_value(1); } -aggregate_of< ::Ifc4x3_add2::IfcSurfaceStyleElementSelect >::ptr Ifc4x3_add2::IfcSurfaceStyle::Styles() const { aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcSurfaceStyleElementSelect >(); } -void Ifc4x3_add2::IfcSurfaceStyle::setStyles(aggregate_of< ::Ifc4x3_add2::IfcSurfaceStyleElementSelect >::ptr v) { set_attribute_value(2, (v)->generalize());if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcSurfaceStyle::setSide(const ::Ifc4x3_add2::IfcSurfaceSide::Value& v) { set_attribute_value(1, EnumerationReference(&::Ifc4x3_add2::IfcSurfaceSide::Class(), (size_t) v));if constexpr (false)unset_attribute_value(1); } +std::vector< ::Ifc4x3_add2::IfcSurfaceStyleElementSelect > Ifc4x3_add2::IfcSurfaceStyle::Styles() const { std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcSurfaceStyleElementSelect>(es); } +void Ifc4x3_add2::IfcSurfaceStyle::setStyles(const std::vector< ::Ifc4x3_add2::IfcSurfaceStyleElementSelect >& v) { set_attribute_value(2, cast_vector(v));if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1134]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1134]); } const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyle::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1134]); } -Ifc4x3_add2::IfcSurfaceStyle::IfcSurfaceStyle(IfcEntityInstanceData&& e) : IfcPresentationStyle(std::move(e)) { } -Ifc4x3_add2::IfcSurfaceStyle::IfcSurfaceStyle(boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcSurfaceSide::Value v2_Side, aggregate_of< ::Ifc4x3_add2::IfcSurfaceStyleElementSelect >::ptr v3_Styles) : IfcPresentationStyle(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcSurfaceSide::Class(),(size_t)v2_Side)));set_attribute_value(2, (v3_Styles)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcSurfaceStyle::IfcSurfaceStyle(const std::weak_ptr& e) : IfcPresentationStyle(e) { } +// Ifc4x3_add2::IfcSurfaceStyle::IfcSurfaceStyle(std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcSurfaceSide::Value v2_Side, std::vector< ::Ifc4x3_add2::IfcSurfaceStyleElementSelect > v3_Styles) : IfcPresentationStyle(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcSurfaceSide::Class(),(size_t)v2_Side)));set_attribute_value(2, (v3_Styles)->generalize());; populate_derived(); } // Function implementations for IfcSurfaceStyleLighting -::Ifc4x3_add2::IfcColourRgb* Ifc4x3_add2::IfcSurfaceStyleLighting::DiffuseTransmissionColour() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcColourRgb>(true); } -void Ifc4x3_add2::IfcSurfaceStyleLighting::setDiffuseTransmissionColour(::Ifc4x3_add2::IfcColourRgb* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcColourRgb* Ifc4x3_add2::IfcSurfaceStyleLighting::DiffuseReflectionColour() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcColourRgb>(true); } -void Ifc4x3_add2::IfcSurfaceStyleLighting::setDiffuseReflectionColour(::Ifc4x3_add2::IfcColourRgb* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcColourRgb* Ifc4x3_add2::IfcSurfaceStyleLighting::TransmissionColour() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcColourRgb>(true); } -void Ifc4x3_add2::IfcSurfaceStyleLighting::setTransmissionColour(::Ifc4x3_add2::IfcColourRgb* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcColourRgb* Ifc4x3_add2::IfcSurfaceStyleLighting::ReflectanceColour() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcColourRgb>(true); } -void Ifc4x3_add2::IfcSurfaceStyleLighting::setReflectanceColour(::Ifc4x3_add2::IfcColourRgb* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcColourRgb Ifc4x3_add2::IfcSurfaceStyleLighting::DiffuseTransmissionColour() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcColourRgb>(); } +void Ifc4x3_add2::IfcSurfaceStyleLighting::setDiffuseTransmissionColour(const ::Ifc4x3_add2::IfcColourRgb& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcColourRgb Ifc4x3_add2::IfcSurfaceStyleLighting::DiffuseReflectionColour() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcColourRgb>(); } +void Ifc4x3_add2::IfcSurfaceStyleLighting::setDiffuseReflectionColour(const ::Ifc4x3_add2::IfcColourRgb& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcColourRgb Ifc4x3_add2::IfcSurfaceStyleLighting::TransmissionColour() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcColourRgb>(); } +void Ifc4x3_add2::IfcSurfaceStyleLighting::setTransmissionColour(const ::Ifc4x3_add2::IfcColourRgb& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcColourRgb Ifc4x3_add2::IfcSurfaceStyleLighting::ReflectanceColour() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcColourRgb>(); } +void Ifc4x3_add2::IfcSurfaceStyleLighting::setReflectanceColour(const ::Ifc4x3_add2::IfcColourRgb& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyleLighting::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1136]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyleLighting::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1136]); } const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyleLighting::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1136]); } -Ifc4x3_add2::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(::Ifc4x3_add2::IfcColourRgb* v1_DiffuseTransmissionColour, ::Ifc4x3_add2::IfcColourRgb* v2_DiffuseReflectionColour, ::Ifc4x3_add2::IfcColourRgb* v3_TransmissionColour, ::Ifc4x3_add2::IfcColourRgb* v4_ReflectanceColour) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_DiffuseTransmissionColour ? v1_DiffuseTransmissionColour->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_DiffuseReflectionColour ? v2_DiffuseReflectionColour->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_TransmissionColour ? v3_TransmissionColour->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_ReflectanceColour ? v4_ReflectanceColour->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(::Ifc4x3_add2::IfcColourRgb v1_DiffuseTransmissionColour, ::Ifc4x3_add2::IfcColourRgb v2_DiffuseReflectionColour, ::Ifc4x3_add2::IfcColourRgb v3_TransmissionColour, ::Ifc4x3_add2::IfcColourRgb v4_ReflectanceColour) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_DiffuseTransmissionColour));set_attribute_value(1, (v2_DiffuseReflectionColour));set_attribute_value(2, (v3_TransmissionColour));set_attribute_value(3, (v4_ReflectanceColour));; populate_derived(); } // Function implementations for IfcSurfaceStyleRefraction -boost::optional< double > Ifc4x3_add2::IfcSurfaceStyleRefraction::RefractionIndex() const { if(get_attribute_value(0).isNull()) { return boost::none; } double v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< double > Ifc4x3_add2::IfcSurfaceStyleRefraction::DispersionFactor() const { if(get_attribute_value(1).isNull()) { return boost::none; } double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< double > Ifc4x3_add2::IfcSurfaceStyleRefraction::RefractionIndex() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } double v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcSurfaceStyleRefraction::setRefractionIndex(const std::optional< double >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< double > Ifc4x3_add2::IfcSurfaceStyleRefraction::DispersionFactor() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } double v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcSurfaceStyleRefraction::setDispersionFactor(const std::optional< double >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyleRefraction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1137]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyleRefraction::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1137]); } const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyleRefraction::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1137]); } -Ifc4x3_add2::IfcSurfaceStyleRefraction::IfcSurfaceStyleRefraction(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcSurfaceStyleRefraction::IfcSurfaceStyleRefraction(boost::optional< double > v1_RefractionIndex, boost::optional< double > v2_DispersionFactor) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(2))) { if (v1_RefractionIndex) {set_attribute_value(0, (*v1_RefractionIndex)); } if (v2_DispersionFactor) {set_attribute_value(1, (*v2_DispersionFactor)); }; populate_derived(); } +// Ifc4x3_add2::IfcSurfaceStyleRefraction::IfcSurfaceStyleRefraction(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcSurfaceStyleRefraction::IfcSurfaceStyleRefraction(std::optional< double > v1_RefractionIndex, std::optional< double > v2_DispersionFactor) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(2))) { if (v1_RefractionIndex) {set_attribute_value(0, (*v1_RefractionIndex)); } if (v2_DispersionFactor) {set_attribute_value(1, (*v2_DispersionFactor)); }; populate_derived(); } // Function implementations for IfcSurfaceStyleRendering -::Ifc4x3_add2::IfcColourOrFactor* Ifc4x3_add2::IfcSurfaceStyleRendering::DiffuseColour() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcColourOrFactor>(true); } -void Ifc4x3_add2::IfcSurfaceStyleRendering::setDiffuseColour(::Ifc4x3_add2::IfcColourOrFactor* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcColourOrFactor* Ifc4x3_add2::IfcSurfaceStyleRendering::TransmissionColour() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcColourOrFactor>(true); } -void Ifc4x3_add2::IfcSurfaceStyleRendering::setTransmissionColour(::Ifc4x3_add2::IfcColourOrFactor* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -::Ifc4x3_add2::IfcColourOrFactor* Ifc4x3_add2::IfcSurfaceStyleRendering::DiffuseTransmissionColour() const { if(get_attribute_value(4).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcColourOrFactor>(true); } -void Ifc4x3_add2::IfcSurfaceStyleRendering::setDiffuseTransmissionColour(::Ifc4x3_add2::IfcColourOrFactor* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -::Ifc4x3_add2::IfcColourOrFactor* Ifc4x3_add2::IfcSurfaceStyleRendering::ReflectionColour() const { if(get_attribute_value(5).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcColourOrFactor>(true); } -void Ifc4x3_add2::IfcSurfaceStyleRendering::setReflectionColour(::Ifc4x3_add2::IfcColourOrFactor* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } -::Ifc4x3_add2::IfcColourOrFactor* Ifc4x3_add2::IfcSurfaceStyleRendering::SpecularColour() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcColourOrFactor>(true); } -void Ifc4x3_add2::IfcSurfaceStyleRendering::setSpecularColour(::Ifc4x3_add2::IfcColourOrFactor* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } -::Ifc4x3_add2::IfcSpecularHighlightSelect* Ifc4x3_add2::IfcSurfaceStyleRendering::SpecularHighlight() const { if(get_attribute_value(7).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(7)))->as<::Ifc4x3_add2::IfcSpecularHighlightSelect>(true); } -void Ifc4x3_add2::IfcSurfaceStyleRendering::setSpecularHighlight(::Ifc4x3_add2::IfcSpecularHighlightSelect* v) { set_attribute_value(7, v->as());if constexpr (false)unset_attribute_value(7); } +::Ifc4x3_add2::IfcColourOrFactor Ifc4x3_add2::IfcSurfaceStyleRendering::DiffuseColour() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcColourOrFactor{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcColourOrFactor>(); } +void Ifc4x3_add2::IfcSurfaceStyleRendering::setDiffuseColour(const ::Ifc4x3_add2::IfcColourOrFactor& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcColourOrFactor Ifc4x3_add2::IfcSurfaceStyleRendering::TransmissionColour() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcColourOrFactor{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcColourOrFactor>(); } +void Ifc4x3_add2::IfcSurfaceStyleRendering::setTransmissionColour(const ::Ifc4x3_add2::IfcColourOrFactor& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcColourOrFactor Ifc4x3_add2::IfcSurfaceStyleRendering::DiffuseTransmissionColour() const { if(get_attribute_value(4).isNull()) { return ::Ifc4x3_add2::IfcColourOrFactor{}; } return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcColourOrFactor>(); } +void Ifc4x3_add2::IfcSurfaceStyleRendering::setDiffuseTransmissionColour(const ::Ifc4x3_add2::IfcColourOrFactor& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +::Ifc4x3_add2::IfcColourOrFactor Ifc4x3_add2::IfcSurfaceStyleRendering::ReflectionColour() const { if(get_attribute_value(5).isNull()) { return ::Ifc4x3_add2::IfcColourOrFactor{}; } return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcColourOrFactor>(); } +void Ifc4x3_add2::IfcSurfaceStyleRendering::setReflectionColour(const ::Ifc4x3_add2::IfcColourOrFactor& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +::Ifc4x3_add2::IfcColourOrFactor Ifc4x3_add2::IfcSurfaceStyleRendering::SpecularColour() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcColourOrFactor{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcColourOrFactor>(); } +void Ifc4x3_add2::IfcSurfaceStyleRendering::setSpecularColour(const ::Ifc4x3_add2::IfcColourOrFactor& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcSpecularHighlightSelect Ifc4x3_add2::IfcSurfaceStyleRendering::SpecularHighlight() const { if(get_attribute_value(7).isNull()) { return ::Ifc4x3_add2::IfcSpecularHighlightSelect{}; } return ((express::Base)(get_attribute_value(7))).as<::Ifc4x3_add2::IfcSpecularHighlightSelect>(); } +void Ifc4x3_add2::IfcSurfaceStyleRendering::setSpecularHighlight(const ::Ifc4x3_add2::IfcSpecularHighlightSelect& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } ::Ifc4x3_add2::IfcReflectanceMethodEnum::Value Ifc4x3_add2::IfcSurfaceStyleRendering::ReflectanceMethod() const { return ::Ifc4x3_add2::IfcReflectanceMethodEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcSurfaceStyleRendering::setReflectanceMethod(::Ifc4x3_add2::IfcReflectanceMethodEnum::Value v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcReflectanceMethodEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcSurfaceStyleRendering::setReflectanceMethod(const ::Ifc4x3_add2::IfcReflectanceMethodEnum::Value& v) { set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcReflectanceMethodEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyleRendering::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1138]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyleRendering::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1138]); } const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyleRendering::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1138]); } -Ifc4x3_add2::IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(IfcEntityInstanceData&& e) : IfcSurfaceStyleShading(std::move(e)) { } -Ifc4x3_add2::IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(::Ifc4x3_add2::IfcColourRgb* v1_SurfaceColour, boost::optional< double > v2_Transparency, ::Ifc4x3_add2::IfcColourOrFactor* v3_DiffuseColour, ::Ifc4x3_add2::IfcColourOrFactor* v4_TransmissionColour, ::Ifc4x3_add2::IfcColourOrFactor* v5_DiffuseTransmissionColour, ::Ifc4x3_add2::IfcColourOrFactor* v6_ReflectionColour, ::Ifc4x3_add2::IfcColourOrFactor* v7_SpecularColour, ::Ifc4x3_add2::IfcSpecularHighlightSelect* v8_SpecularHighlight, ::Ifc4x3_add2::IfcReflectanceMethodEnum::Value v9_ReflectanceMethod) : IfcSurfaceStyleShading(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, v1_SurfaceColour ? v1_SurfaceColour->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_Transparency) {set_attribute_value(1, (*v2_Transparency)); }set_attribute_value(2, v3_DiffuseColour ? v3_DiffuseColour->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_TransmissionColour ? v4_TransmissionColour->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, v5_DiffuseTransmissionColour ? v5_DiffuseTransmissionColour->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(5, v6_ReflectionColour ? v6_ReflectionColour->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_SpecularColour ? v7_SpecularColour->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(7, v8_SpecularHighlight ? v8_SpecularHighlight->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcReflectanceMethodEnum::Class(),(size_t)v9_ReflectanceMethod)));; populate_derived(); } +// Ifc4x3_add2::IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(const std::weak_ptr& e) : IfcSurfaceStyleShading(e) { } +// Ifc4x3_add2::IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(::Ifc4x3_add2::IfcColourRgb v1_SurfaceColour, std::optional< double > v2_Transparency, ::Ifc4x3_add2::IfcColourOrFactor v3_DiffuseColour, ::Ifc4x3_add2::IfcColourOrFactor v4_TransmissionColour, ::Ifc4x3_add2::IfcColourOrFactor v5_DiffuseTransmissionColour, ::Ifc4x3_add2::IfcColourOrFactor v6_ReflectionColour, ::Ifc4x3_add2::IfcColourOrFactor v7_SpecularColour, ::Ifc4x3_add2::IfcSpecularHighlightSelect v8_SpecularHighlight, ::Ifc4x3_add2::IfcReflectanceMethodEnum::Value v9_ReflectanceMethod) : IfcSurfaceStyleShading(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_SurfaceColour)); if (v2_Transparency) {set_attribute_value(1, (*v2_Transparency)); } if (v3_DiffuseColour) {set_attribute_value(2, (*v3_DiffuseColour)); } if (v4_TransmissionColour) {set_attribute_value(3, (*v4_TransmissionColour)); } if (v5_DiffuseTransmissionColour) {set_attribute_value(4, (*v5_DiffuseTransmissionColour)); } if (v6_ReflectionColour) {set_attribute_value(5, (*v6_ReflectionColour)); } if (v7_SpecularColour) {set_attribute_value(6, (*v7_SpecularColour)); } if (v8_SpecularHighlight) {set_attribute_value(7, (*v8_SpecularHighlight)); }set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcReflectanceMethodEnum::Class(),(size_t)v9_ReflectanceMethod)));; populate_derived(); } // Function implementations for IfcSurfaceStyleShading -::Ifc4x3_add2::IfcColourRgb* Ifc4x3_add2::IfcSurfaceStyleShading::SurfaceColour() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcColourRgb>(true); } -void Ifc4x3_add2::IfcSurfaceStyleShading::setSurfaceColour(::Ifc4x3_add2::IfcColourRgb* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -boost::optional< double > Ifc4x3_add2::IfcSurfaceStyleShading::Transparency() const { if(get_attribute_value(1).isNull()) { return boost::none; } double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +::Ifc4x3_add2::IfcColourRgb Ifc4x3_add2::IfcSurfaceStyleShading::SurfaceColour() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcColourRgb>(); } +void Ifc4x3_add2::IfcSurfaceStyleShading::setSurfaceColour(const ::Ifc4x3_add2::IfcColourRgb& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< double > Ifc4x3_add2::IfcSurfaceStyleShading::Transparency() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } double v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcSurfaceStyleShading::setTransparency(const std::optional< double >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyleShading::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1139]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyleShading::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1139]); } const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyleShading::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1139]); } -Ifc4x3_add2::IfcSurfaceStyleShading::IfcSurfaceStyleShading(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcSurfaceStyleShading::IfcSurfaceStyleShading(::Ifc4x3_add2::IfcColourRgb* v1_SurfaceColour, boost::optional< double > v2_Transparency) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_SurfaceColour ? v1_SurfaceColour->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_Transparency) {set_attribute_value(1, (*v2_Transparency)); }; populate_derived(); } +// Ifc4x3_add2::IfcSurfaceStyleShading::IfcSurfaceStyleShading(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcSurfaceStyleShading::IfcSurfaceStyleShading(::Ifc4x3_add2::IfcColourRgb v1_SurfaceColour, std::optional< double > v2_Transparency) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_SurfaceColour)); if (v2_Transparency) {set_attribute_value(1, (*v2_Transparency)); }; populate_derived(); } // Function implementations for IfcSurfaceStyleWithTextures -aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr Ifc4x3_add2::IfcSurfaceStyleWithTextures::Textures() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcSurfaceTexture >(); } -void Ifc4x3_add2::IfcSurfaceStyleWithTextures::setTextures(aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > Ifc4x3_add2::IfcSurfaceStyleWithTextures::Textures() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcSurfaceTexture>(es); } +void Ifc4x3_add2::IfcSurfaceStyleWithTextures::setTextures(const std::vector< ::Ifc4x3_add2::IfcSurfaceTexture >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyleWithTextures::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1140]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyleWithTextures::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1140]); } const IfcParse::entity& Ifc4x3_add2::IfcSurfaceStyleWithTextures::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1140]); } -Ifc4x3_add2::IfcSurfaceStyleWithTextures::IfcSurfaceStyleWithTextures(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcSurfaceStyleWithTextures::IfcSurfaceStyleWithTextures(aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v1_Textures) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Textures)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcSurfaceStyleWithTextures::IfcSurfaceStyleWithTextures(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcSurfaceStyleWithTextures::IfcSurfaceStyleWithTextures(std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > v1_Textures) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Textures)->generalize());; populate_derived(); } // Function implementations for IfcSurfaceTexture bool Ifc4x3_add2::IfcSurfaceTexture::RepeatS() const { bool v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcSurfaceTexture::setRepeatS(bool v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcSurfaceTexture::setRepeatS(const bool& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } bool Ifc4x3_add2::IfcSurfaceTexture::RepeatT() const { bool v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcSurfaceTexture::setRepeatT(bool v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -boost::optional< std::string > Ifc4x3_add2::IfcSurfaceTexture::Mode() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -::Ifc4x3_add2::IfcCartesianTransformationOperator2D* Ifc4x3_add2::IfcSurfaceTexture::TextureTransform() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcCartesianTransformationOperator2D>(true); } -void Ifc4x3_add2::IfcSurfaceTexture::setTextureTransform(::Ifc4x3_add2::IfcCartesianTransformationOperator2D* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcSurfaceTexture::Parameter() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +void Ifc4x3_add2::IfcSurfaceTexture::setRepeatT(const bool& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< std::string > Ifc4x3_add2::IfcSurfaceTexture::Mode() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcSurfaceTexture::setMode(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +::Ifc4x3_add2::IfcCartesianTransformationOperator2D Ifc4x3_add2::IfcSurfaceTexture::TextureTransform() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcCartesianTransformationOperator2D{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcCartesianTransformationOperator2D>(); } +void Ifc4x3_add2::IfcSurfaceTexture::setTextureTransform(const ::Ifc4x3_add2::IfcCartesianTransformationOperator2D& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcSurfaceTexture::Parameter() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcSurfaceTexture::setParameter(const std::optional< std::vector< std::string > /*[1:?]*/ >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -::Ifc4x3_add2::IfcTextureCoordinate::list::ptr Ifc4x3_add2::IfcSurfaceTexture::IsMappedBy() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[1192], 0)->as(); } -::Ifc4x3_add2::IfcSurfaceStyleWithTextures::list::ptr Ifc4x3_add2::IfcSurfaceTexture::UsedInStyles() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[1140], 0)->as(); } +std::vector<::Ifc4x3_add2::IfcTextureCoordinate> Ifc4x3_add2::IfcSurfaceTexture::IsMappedBy() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[1192], 0)); } +std::vector<::Ifc4x3_add2::IfcSurfaceStyleWithTextures> Ifc4x3_add2::IfcSurfaceTexture::UsedInStyles() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[1140], 0)); } -const IfcParse::entity& Ifc4x3_add2::IfcSurfaceTexture::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1141]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSurfaceTexture::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1141]); } const IfcParse::entity& Ifc4x3_add2::IfcSurfaceTexture::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1141]); } -Ifc4x3_add2::IfcSurfaceTexture::IfcSurfaceTexture(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcSurfaceTexture::IfcSurfaceTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_RepeatS));set_attribute_value(1, (v2_RepeatT)); if (v3_Mode) {set_attribute_value(2, (*v3_Mode)); }set_attribute_value(3, v4_TextureTransform ? v4_TextureTransform->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_Parameter) {set_attribute_value(4, (*v5_Parameter)); }; populate_derived(); } +// Ifc4x3_add2::IfcSurfaceTexture::IfcSurfaceTexture(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcSurfaceTexture::IfcSurfaceTexture(bool v1_RepeatS, bool v2_RepeatT, std::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D v4_TextureTransform, std::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_RepeatS));set_attribute_value(1, (v2_RepeatT)); if (v3_Mode) {set_attribute_value(2, (*v3_Mode)); } if (v4_TextureTransform) {set_attribute_value(3, (*v4_TextureTransform)); } if (v5_Parameter) {set_attribute_value(4, (*v5_Parameter)); }; populate_derived(); } // Function implementations for IfcSweptAreaSolid -::Ifc4x3_add2::IfcProfileDef* Ifc4x3_add2::IfcSweptAreaSolid::SweptArea() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcProfileDef>(true); } -void Ifc4x3_add2::IfcSweptAreaSolid::setSweptArea(::Ifc4x3_add2::IfcProfileDef* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcAxis2Placement3D* Ifc4x3_add2::IfcSweptAreaSolid::Position() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcAxis2Placement3D>(true); } -void Ifc4x3_add2::IfcSweptAreaSolid::setPosition(::Ifc4x3_add2::IfcAxis2Placement3D* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcProfileDef Ifc4x3_add2::IfcSweptAreaSolid::SweptArea() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcProfileDef>(); } +void Ifc4x3_add2::IfcSweptAreaSolid::setSweptArea(const ::Ifc4x3_add2::IfcProfileDef& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcAxis2Placement3D Ifc4x3_add2::IfcSweptAreaSolid::Position() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcAxis2Placement3D{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcAxis2Placement3D>(); } +void Ifc4x3_add2::IfcSweptAreaSolid::setPosition(const ::Ifc4x3_add2::IfcAxis2Placement3D& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcSweptAreaSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1142]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSweptAreaSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1142]); } const IfcParse::entity& Ifc4x3_add2::IfcSweptAreaSolid::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1142]); } -Ifc4x3_add2::IfcSweptAreaSolid::IfcSweptAreaSolid(IfcEntityInstanceData&& e) : IfcSolidModel(std::move(e)) { } -Ifc4x3_add2::IfcSweptAreaSolid::IfcSweptAreaSolid(::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position) : IfcSolidModel(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_SweptArea ? v1_SweptArea->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Position ? v2_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcSweptAreaSolid::IfcSweptAreaSolid(const std::weak_ptr& e) : IfcSolidModel(e) { } +// Ifc4x3_add2::IfcSweptAreaSolid::IfcSweptAreaSolid(::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position) : IfcSolidModel(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_SweptArea)); if (v2_Position) {set_attribute_value(1, (*v2_Position)); }; populate_derived(); } // Function implementations for IfcSweptDiskSolid -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcSweptDiskSolid::Directrix() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcSweptDiskSolid::setDirectrix(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcSweptDiskSolid::Directrix() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcSweptDiskSolid::setDirectrix(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } double Ifc4x3_add2::IfcSweptDiskSolid::Radius() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcSweptDiskSolid::setRadius(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -boost::optional< double > Ifc4x3_add2::IfcSweptDiskSolid::InnerRadius() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcSweptDiskSolid::StartParam() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< double > Ifc4x3_add2::IfcSweptDiskSolid::EndParam() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +void Ifc4x3_add2::IfcSweptDiskSolid::setRadius(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< double > Ifc4x3_add2::IfcSweptDiskSolid::InnerRadius() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcSweptDiskSolid::setInnerRadius(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcSweptDiskSolid::StartParam() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcSweptDiskSolid::setStartParam(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< double > Ifc4x3_add2::IfcSweptDiskSolid::EndParam() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcSweptDiskSolid::setEndParam(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcSweptDiskSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1143]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSweptDiskSolid::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1143]); } const IfcParse::entity& Ifc4x3_add2::IfcSweptDiskSolid::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1143]); } -Ifc4x3_add2::IfcSweptDiskSolid::IfcSweptDiskSolid(IfcEntityInstanceData&& e) : IfcSolidModel(std::move(e)) { } -Ifc4x3_add2::IfcSweptDiskSolid::IfcSweptDiskSolid(::Ifc4x3_add2::IfcCurve* v1_Directrix, double v2_Radius, boost::optional< double > v3_InnerRadius, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam) : IfcSolidModel(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_Directrix ? v1_Directrix->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Radius)); if (v3_InnerRadius) {set_attribute_value(2, (*v3_InnerRadius)); } if (v4_StartParam) {set_attribute_value(3, (*v4_StartParam)); } if (v5_EndParam) {set_attribute_value(4, (*v5_EndParam)); }; populate_derived(); } +// Ifc4x3_add2::IfcSweptDiskSolid::IfcSweptDiskSolid(const std::weak_ptr& e) : IfcSolidModel(e) { } +// Ifc4x3_add2::IfcSweptDiskSolid::IfcSweptDiskSolid(::Ifc4x3_add2::IfcCurve v1_Directrix, double v2_Radius, std::optional< double > v3_InnerRadius, std::optional< double > v4_StartParam, std::optional< double > v5_EndParam) : IfcSolidModel(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Directrix));set_attribute_value(1, (v2_Radius)); if (v3_InnerRadius) {set_attribute_value(2, (*v3_InnerRadius)); } if (v4_StartParam) {set_attribute_value(3, (*v4_StartParam)); } if (v5_EndParam) {set_attribute_value(4, (*v5_EndParam)); }; populate_derived(); } // Function implementations for IfcSweptDiskSolidPolygonal -boost::optional< double > Ifc4x3_add2::IfcSweptDiskSolidPolygonal::FilletRadius() const { if(get_attribute_value(5).isNull()) { return boost::none; } double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< double > Ifc4x3_add2::IfcSweptDiskSolidPolygonal::FilletRadius() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } double v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcSweptDiskSolidPolygonal::setFilletRadius(const std::optional< double >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -const IfcParse::entity& Ifc4x3_add2::IfcSweptDiskSolidPolygonal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1144]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSweptDiskSolidPolygonal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1144]); } const IfcParse::entity& Ifc4x3_add2::IfcSweptDiskSolidPolygonal::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1144]); } -Ifc4x3_add2::IfcSweptDiskSolidPolygonal::IfcSweptDiskSolidPolygonal(IfcEntityInstanceData&& e) : IfcSweptDiskSolid(std::move(e)) { } -Ifc4x3_add2::IfcSweptDiskSolidPolygonal::IfcSweptDiskSolidPolygonal(::Ifc4x3_add2::IfcCurve* v1_Directrix, double v2_Radius, boost::optional< double > v3_InnerRadius, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam, boost::optional< double > v6_FilletRadius) : IfcSweptDiskSolid(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, v1_Directrix ? v1_Directrix->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Radius)); if (v3_InnerRadius) {set_attribute_value(2, (*v3_InnerRadius)); } if (v4_StartParam) {set_attribute_value(3, (*v4_StartParam)); } if (v5_EndParam) {set_attribute_value(4, (*v5_EndParam)); } if (v6_FilletRadius) {set_attribute_value(5, (*v6_FilletRadius)); }; populate_derived(); } +// Ifc4x3_add2::IfcSweptDiskSolidPolygonal::IfcSweptDiskSolidPolygonal(const std::weak_ptr& e) : IfcSweptDiskSolid(e) { } +// Ifc4x3_add2::IfcSweptDiskSolidPolygonal::IfcSweptDiskSolidPolygonal(::Ifc4x3_add2::IfcCurve v1_Directrix, double v2_Radius, std::optional< double > v3_InnerRadius, std::optional< double > v4_StartParam, std::optional< double > v5_EndParam, std::optional< double > v6_FilletRadius) : IfcSweptDiskSolid(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_Directrix));set_attribute_value(1, (v2_Radius)); if (v3_InnerRadius) {set_attribute_value(2, (*v3_InnerRadius)); } if (v4_StartParam) {set_attribute_value(3, (*v4_StartParam)); } if (v5_EndParam) {set_attribute_value(4, (*v5_EndParam)); } if (v6_FilletRadius) {set_attribute_value(5, (*v6_FilletRadius)); }; populate_derived(); } // Function implementations for IfcSweptSurface -::Ifc4x3_add2::IfcProfileDef* Ifc4x3_add2::IfcSweptSurface::SweptCurve() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcProfileDef>(true); } -void Ifc4x3_add2::IfcSweptSurface::setSweptCurve(::Ifc4x3_add2::IfcProfileDef* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcAxis2Placement3D* Ifc4x3_add2::IfcSweptSurface::Position() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcAxis2Placement3D>(true); } -void Ifc4x3_add2::IfcSweptSurface::setPosition(::Ifc4x3_add2::IfcAxis2Placement3D* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcProfileDef Ifc4x3_add2::IfcSweptSurface::SweptCurve() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcProfileDef>(); } +void Ifc4x3_add2::IfcSweptSurface::setSweptCurve(const ::Ifc4x3_add2::IfcProfileDef& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcAxis2Placement3D Ifc4x3_add2::IfcSweptSurface::Position() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcAxis2Placement3D{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcAxis2Placement3D>(); } +void Ifc4x3_add2::IfcSweptSurface::setPosition(const ::Ifc4x3_add2::IfcAxis2Placement3D& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcSweptSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1145]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSweptSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1145]); } const IfcParse::entity& Ifc4x3_add2::IfcSweptSurface::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1145]); } -Ifc4x3_add2::IfcSweptSurface::IfcSweptSurface(IfcEntityInstanceData&& e) : IfcSurface(std::move(e)) { } -Ifc4x3_add2::IfcSweptSurface::IfcSweptSurface(::Ifc4x3_add2::IfcProfileDef* v1_SweptCurve, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position) : IfcSurface(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_SweptCurve ? v1_SweptCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_Position ? v2_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcSweptSurface::IfcSweptSurface(const std::weak_ptr& e) : IfcSurface(e) { } +// Ifc4x3_add2::IfcSweptSurface::IfcSweptSurface(::Ifc4x3_add2::IfcProfileDef v1_SweptCurve, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position) : IfcSurface(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_SweptCurve)); if (v2_Position) {set_attribute_value(1, (*v2_Position)); }; populate_derived(); } // Function implementations for IfcSwitchingDevice -boost::optional< ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value > Ifc4x3_add2::IfcSwitchingDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value > Ifc4x3_add2::IfcSwitchingDevice::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcSwitchingDevice::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcSwitchingDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1146]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSwitchingDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1146]); } const IfcParse::entity& Ifc4x3_add2::IfcSwitchingDevice::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1146]); } -Ifc4x3_add2::IfcSwitchingDevice::IfcSwitchingDevice(IfcEntityInstanceData&& e) : IfcFlowController(std::move(e)) { } -Ifc4x3_add2::IfcSwitchingDevice::IfcSwitchingDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowController(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcSwitchingDevice::IfcSwitchingDevice(const std::weak_ptr& e) : IfcFlowController(e) { } +// Ifc4x3_add2::IfcSwitchingDevice::IfcSwitchingDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowController(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcSwitchingDeviceType ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value Ifc4x3_add2::IfcSwitchingDeviceType::PredefinedType() const { return ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcSwitchingDeviceType::setPredefinedType(::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcSwitchingDeviceType::setPredefinedType(const ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcSwitchingDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1147]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSwitchingDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1147]); } const IfcParse::entity& Ifc4x3_add2::IfcSwitchingDeviceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1147]); } -Ifc4x3_add2::IfcSwitchingDeviceType::IfcSwitchingDeviceType(IfcEntityInstanceData&& e) : IfcFlowControllerType(std::move(e)) { } -Ifc4x3_add2::IfcSwitchingDeviceType::IfcSwitchingDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcSwitchingDeviceType::IfcSwitchingDeviceType(const std::weak_ptr& e) : IfcFlowControllerType(e) { } +// Ifc4x3_add2::IfcSwitchingDeviceType::IfcSwitchingDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcSystem -::Ifc4x3_add2::IfcRelServicesBuildings::list::ptr Ifc4x3_add2::IfcSystem::ServicesBuildings() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[944], 4)->as(); } -::Ifc4x3_add2::IfcRelReferencedInSpatialStructure::list::ptr Ifc4x3_add2::IfcSystem::ServicesFacilities() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[942], 4)->as(); } +std::vector<::Ifc4x3_add2::IfcRelServicesBuildings> Ifc4x3_add2::IfcSystem::ServicesBuildings() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[944], 4)); } +std::vector<::Ifc4x3_add2::IfcRelReferencedInSpatialStructure> Ifc4x3_add2::IfcSystem::ServicesFacilities() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[942], 4)); } -const IfcParse::entity& Ifc4x3_add2::IfcSystem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1149]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSystem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1149]); } const IfcParse::entity& Ifc4x3_add2::IfcSystem::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1149]); } -Ifc4x3_add2::IfcSystem::IfcSystem(IfcEntityInstanceData&& e) : IfcGroup(std::move(e)) { } -Ifc4x3_add2::IfcSystem::IfcSystem(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType) : IfcGroup(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }; populate_derived(); } +// Ifc4x3_add2::IfcSystem::IfcSystem(const std::weak_ptr& e) : IfcGroup(e) { } +// Ifc4x3_add2::IfcSystem::IfcSystem(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType) : IfcGroup(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }; populate_derived(); } // Function implementations for IfcSystemFurnitureElement -boost::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_add2::IfcSystemFurnitureElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_add2::IfcSystemFurnitureElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcSystemFurnitureElement::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcSystemFurnitureElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1150]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSystemFurnitureElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1150]); } const IfcParse::entity& Ifc4x3_add2::IfcSystemFurnitureElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1150]); } -Ifc4x3_add2::IfcSystemFurnitureElement::IfcSystemFurnitureElement(IfcEntityInstanceData&& e) : IfcFurnishingElement(std::move(e)) { } -Ifc4x3_add2::IfcSystemFurnitureElement::IfcSystemFurnitureElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > v9_PredefinedType) : IfcFurnishingElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcSystemFurnitureElement::IfcSystemFurnitureElement(const std::weak_ptr& e) : IfcFurnishingElement(e) { } +// Ifc4x3_add2::IfcSystemFurnitureElement::IfcSystemFurnitureElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > v9_PredefinedType) : IfcFurnishingElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcSystemFurnitureElementType -boost::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_add2::IfcSystemFurnitureElementType::PredefinedType() const { if(get_attribute_value(9).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } +std::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_add2::IfcSystemFurnitureElementType::PredefinedType() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::FromString(get_attribute_value(9)); } +void Ifc4x3_add2::IfcSystemFurnitureElementType::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value >& v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcSystemFurnitureElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1151]); } +// const IfcParse::entity& Ifc4x3_add2::IfcSystemFurnitureElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1151]); } const IfcParse::entity& Ifc4x3_add2::IfcSystemFurnitureElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1151]); } -Ifc4x3_add2::IfcSystemFurnitureElementType::IfcSystemFurnitureElementType(IfcEntityInstanceData&& e) : IfcFurnishingElementType(std::move(e)) { } -Ifc4x3_add2::IfcSystemFurnitureElementType::IfcSystemFurnitureElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, boost::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > v10_PredefinedType) : IfcFurnishingElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcSystemFurnitureElementType::IfcSystemFurnitureElementType(const std::weak_ptr& e) : IfcFurnishingElementType(e) { } +// Ifc4x3_add2::IfcSystemFurnitureElementType::IfcSystemFurnitureElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, std::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > v10_PredefinedType) : IfcFurnishingElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } // Function implementations for IfcTShapeProfileDef double Ifc4x3_add2::IfcTShapeProfileDef::Depth() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcTShapeProfileDef::setDepth(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcTShapeProfileDef::setDepth(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcTShapeProfileDef::FlangeWidth() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcTShapeProfileDef::setFlangeWidth(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcTShapeProfileDef::setFlangeWidth(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } double Ifc4x3_add2::IfcTShapeProfileDef::WebThickness() const { double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcTShapeProfileDef::setWebThickness(double v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcTShapeProfileDef::setWebThickness(const double& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } double Ifc4x3_add2::IfcTShapeProfileDef::FlangeThickness() const { double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcTShapeProfileDef::setFlangeThickness(double v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -boost::optional< double > Ifc4x3_add2::IfcTShapeProfileDef::FilletRadius() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< double > Ifc4x3_add2::IfcTShapeProfileDef::FlangeEdgeRadius() const { if(get_attribute_value(8).isNull()) { return boost::none; } double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -boost::optional< double > Ifc4x3_add2::IfcTShapeProfileDef::WebEdgeRadius() const { if(get_attribute_value(9).isNull()) { return boost::none; } double v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -boost::optional< double > Ifc4x3_add2::IfcTShapeProfileDef::WebSlope() const { if(get_attribute_value(10).isNull()) { return boost::none; } double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< double > Ifc4x3_add2::IfcTShapeProfileDef::FlangeSlope() const { if(get_attribute_value(11).isNull()) { return boost::none; } double v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +void Ifc4x3_add2::IfcTShapeProfileDef::setFlangeThickness(const double& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< double > Ifc4x3_add2::IfcTShapeProfileDef::FilletRadius() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcTShapeProfileDef::setFilletRadius(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< double > Ifc4x3_add2::IfcTShapeProfileDef::FlangeEdgeRadius() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } double v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcTShapeProfileDef::setFlangeEdgeRadius(const std::optional< double >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< double > Ifc4x3_add2::IfcTShapeProfileDef::WebEdgeRadius() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } double v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcTShapeProfileDef::setWebEdgeRadius(const std::optional< double >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< double > Ifc4x3_add2::IfcTShapeProfileDef::WebSlope() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } double v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcTShapeProfileDef::setWebSlope(const std::optional< double >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< double > Ifc4x3_add2::IfcTShapeProfileDef::FlangeSlope() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } double v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcTShapeProfileDef::setFlangeSlope(const std::optional< double >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -const IfcParse::entity& Ifc4x3_add2::IfcTShapeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1237]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTShapeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1237]); } const IfcParse::entity& Ifc4x3_add2::IfcTShapeProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1237]); } -Ifc4x3_add2::IfcTShapeProfileDef::IfcTShapeProfileDef(IfcEntityInstanceData&& e) : IfcParameterizedProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcTShapeProfileDef::IfcTShapeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_FlangeEdgeRadius, boost::optional< double > v10_WebEdgeRadius, boost::optional< double > v11_WebSlope, boost::optional< double > v12_FlangeSlope) : IfcParameterizedProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(12))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_Depth));set_attribute_value(4, (v5_FlangeWidth));set_attribute_value(5, (v6_WebThickness));set_attribute_value(6, (v7_FlangeThickness)); if (v8_FilletRadius) {set_attribute_value(7, (*v8_FilletRadius)); } if (v9_FlangeEdgeRadius) {set_attribute_value(8, (*v9_FlangeEdgeRadius)); } if (v10_WebEdgeRadius) {set_attribute_value(9, (*v10_WebEdgeRadius)); } if (v11_WebSlope) {set_attribute_value(10, (*v11_WebSlope)); } if (v12_FlangeSlope) {set_attribute_value(11, (*v12_FlangeSlope)); }; populate_derived(); } +// Ifc4x3_add2::IfcTShapeProfileDef::IfcTShapeProfileDef(const std::weak_ptr& e) : IfcParameterizedProfileDef(e) { } +// Ifc4x3_add2::IfcTShapeProfileDef::IfcTShapeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, std::optional< double > v8_FilletRadius, std::optional< double > v9_FlangeEdgeRadius, std::optional< double > v10_WebEdgeRadius, std::optional< double > v11_WebSlope, std::optional< double > v12_FlangeSlope) : IfcParameterizedProfileDef(const std::weak_ptr&(in_memory_attribute_storage(12))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); } if (v3_Position) {set_attribute_value(2, (*v3_Position)); }set_attribute_value(3, (v4_Depth));set_attribute_value(4, (v5_FlangeWidth));set_attribute_value(5, (v6_WebThickness));set_attribute_value(6, (v7_FlangeThickness)); if (v8_FilletRadius) {set_attribute_value(7, (*v8_FilletRadius)); } if (v9_FlangeEdgeRadius) {set_attribute_value(8, (*v9_FlangeEdgeRadius)); } if (v10_WebEdgeRadius) {set_attribute_value(9, (*v10_WebEdgeRadius)); } if (v11_WebSlope) {set_attribute_value(10, (*v11_WebSlope)); } if (v12_FlangeSlope) {set_attribute_value(11, (*v12_FlangeSlope)); }; populate_derived(); } // Function implementations for IfcTable -boost::optional< std::string > Ifc4x3_add2::IfcTable::Name() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcTable::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTableRow >::ptr > Ifc4x3_add2::IfcTable::Rows() const { if(get_attribute_value(1).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcTableRow >(); } -void Ifc4x3_add2::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTableRow >::ptr > v) { if (v) {set_attribute_value(1, (*v)->generalize());} else {unset_attribute_value(1);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTableColumn >::ptr > Ifc4x3_add2::IfcTable::Columns() const { if(get_attribute_value(2).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcTableColumn >(); } -void Ifc4x3_add2::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTableColumn >::ptr > v) { if (v) {set_attribute_value(2, (*v)->generalize());} else {unset_attribute_value(2);} } +std::optional< std::string > Ifc4x3_add2::IfcTable::Name() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcTable::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcTableRow > > Ifc4x3_add2::IfcTable::Rows() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcTableRow>(es); } +void Ifc4x3_add2::IfcTable::setRows(const std::optional< std::vector< ::Ifc4x3_add2::IfcTableRow > >& v) { if (v) {set_attribute_value(1, cast_vector(*v));} else {unset_attribute_value(1);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcTableColumn > > Ifc4x3_add2::IfcTable::Columns() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcTableColumn>(es); } +void Ifc4x3_add2::IfcTable::setColumns(const std::optional< std::vector< ::Ifc4x3_add2::IfcTableColumn > >& v) { if (v) {set_attribute_value(2, cast_vector(*v));} else {unset_attribute_value(2);} } -const IfcParse::entity& Ifc4x3_add2::IfcTable::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1153]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTable::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1153]); } const IfcParse::entity& Ifc4x3_add2::IfcTable::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1153]); } -Ifc4x3_add2::IfcTable::IfcTable(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcTable::IfcTable(boost::optional< std::string > v1_Name, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTableRow >::ptr > v2_Rows, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTableColumn >::ptr > v3_Columns) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Rows) {set_attribute_value(1, (*v2_Rows)->generalize()); } if (v3_Columns) {set_attribute_value(2, (*v3_Columns)->generalize()); }; populate_derived(); } +// Ifc4x3_add2::IfcTable::IfcTable(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcTable::IfcTable(std::optional< std::string > v1_Name, std::optional< std::vector< ::Ifc4x3_add2::IfcTableRow > > v2_Rows, std::optional< std::vector< ::Ifc4x3_add2::IfcTableColumn > > v3_Columns) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(3))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_Rows) {set_attribute_value(1, (*v2_Rows)->generalize()); } if (v3_Columns) {set_attribute_value(2, (*v3_Columns)->generalize()); }; populate_derived(); } // Function implementations for IfcTableColumn -boost::optional< std::string > Ifc4x3_add2::IfcTableColumn::Identifier() const { if(get_attribute_value(0).isNull()) { return boost::none; } std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } -boost::optional< std::string > Ifc4x3_add2::IfcTableColumn::Name() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcTableColumn::setName(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::string > Ifc4x3_add2::IfcTableColumn::Description() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcTableColumn::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -::Ifc4x3_add2::IfcUnit* Ifc4x3_add2::IfcTableColumn::Unit() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcUnit>(true); } -void Ifc4x3_add2::IfcTableColumn::setUnit(::Ifc4x3_add2::IfcUnit* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -::Ifc4x3_add2::IfcReference* Ifc4x3_add2::IfcTableColumn::ReferencePath() const { if(get_attribute_value(4).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcReference>(true); } -void Ifc4x3_add2::IfcTableColumn::setReferencePath(::Ifc4x3_add2::IfcReference* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } +std::optional< std::string > Ifc4x3_add2::IfcTableColumn::Identifier() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::string v = get_attribute_value(0); return v; } +void Ifc4x3_add2::IfcTableColumn::setIdentifier(const std::optional< std::string >& v) { if (v) {set_attribute_value(0, *v);} else {unset_attribute_value(0);} } +std::optional< std::string > Ifc4x3_add2::IfcTableColumn::Name() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcTableColumn::setName(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcTableColumn::Description() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcTableColumn::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +::Ifc4x3_add2::IfcUnit Ifc4x3_add2::IfcTableColumn::Unit() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcUnit{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcUnit>(); } +void Ifc4x3_add2::IfcTableColumn::setUnit(const ::Ifc4x3_add2::IfcUnit& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcReference Ifc4x3_add2::IfcTableColumn::ReferencePath() const { if(get_attribute_value(4).isNull()) { return ::Ifc4x3_add2::IfcReference{}; } return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcReference>(); } +void Ifc4x3_add2::IfcTableColumn::setReferencePath(const ::Ifc4x3_add2::IfcReference& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcTableColumn::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1154]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTableColumn::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1154]); } const IfcParse::entity& Ifc4x3_add2::IfcTableColumn::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1154]); } -Ifc4x3_add2::IfcTableColumn::IfcTableColumn(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcTableColumn::IfcTableColumn(boost::optional< std::string > v1_Identifier, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, ::Ifc4x3_add2::IfcUnit* v4_Unit, ::Ifc4x3_add2::IfcReference* v5_ReferencePath) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(5))) { if (v1_Identifier) {set_attribute_value(0, (*v1_Identifier)); } if (v2_Name) {set_attribute_value(1, (*v2_Name)); } if (v3_Description) {set_attribute_value(2, (*v3_Description)); }set_attribute_value(3, v4_Unit ? v4_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, v5_ReferencePath ? v5_ReferencePath->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcTableColumn::IfcTableColumn(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcTableColumn::IfcTableColumn(std::optional< std::string > v1_Identifier, std::optional< std::string > v2_Name, std::optional< std::string > v3_Description, ::Ifc4x3_add2::IfcUnit v4_Unit, ::Ifc4x3_add2::IfcReference v5_ReferencePath) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(5))) { if (v1_Identifier) {set_attribute_value(0, (*v1_Identifier)); } if (v2_Name) {set_attribute_value(1, (*v2_Name)); } if (v3_Description) {set_attribute_value(2, (*v3_Description)); } if (v4_Unit) {set_attribute_value(3, (*v4_Unit)); } if (v5_ReferencePath) {set_attribute_value(4, (*v5_ReferencePath)); }; populate_derived(); } // Function implementations for IfcTableRow -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > Ifc4x3_add2::IfcTableRow::RowCells() const { if(get_attribute_value(0).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcValue >(); } -void Ifc4x3_add2::IfcTableRow::setRowCells(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v) { if (v) {set_attribute_value(0, (*v)->generalize());} else {unset_attribute_value(0);} } -boost::optional< bool > Ifc4x3_add2::IfcTableRow::IsHeading() const { if(get_attribute_value(1).isNull()) { return boost::none; } bool v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcTableRow::setIsHeading(boost::optional< bool > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > Ifc4x3_add2::IfcTableRow::RowCells() const { if(get_attribute_value(0).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcValue>(es); } +void Ifc4x3_add2::IfcTableRow::setRowCells(const std::optional< std::vector< ::Ifc4x3_add2::IfcValue > >& v) { if (v) {set_attribute_value(0, cast_vector(*v));} else {unset_attribute_value(0);} } +std::optional< bool > Ifc4x3_add2::IfcTableRow::IsHeading() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } bool v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcTableRow::setIsHeading(const std::optional< bool >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -const IfcParse::entity& Ifc4x3_add2::IfcTableRow::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1155]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTableRow::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1155]); } const IfcParse::entity& Ifc4x3_add2::IfcTableRow::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1155]); } -Ifc4x3_add2::IfcTableRow::IfcTableRow(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcTableRow::IfcTableRow(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v1_RowCells, boost::optional< bool > v2_IsHeading) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { if (v1_RowCells) {set_attribute_value(0, (*v1_RowCells)->generalize()); } if (v2_IsHeading) {set_attribute_value(1, (*v2_IsHeading)); }; populate_derived(); } +// Ifc4x3_add2::IfcTableRow::IfcTableRow(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcTableRow::IfcTableRow(std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > v1_RowCells, std::optional< bool > v2_IsHeading) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { if (v1_RowCells) {set_attribute_value(0, (*v1_RowCells)->generalize()); } if (v2_IsHeading) {set_attribute_value(1, (*v2_IsHeading)); }; populate_derived(); } // Function implementations for IfcTank -boost::optional< ::Ifc4x3_add2::IfcTankTypeEnum::Value > Ifc4x3_add2::IfcTank::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcTankTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcTank::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTankTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcTankTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcTankTypeEnum::Value > Ifc4x3_add2::IfcTank::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcTankTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcTank::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTankTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcTankTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcTank::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1156]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTank::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1156]); } const IfcParse::entity& Ifc4x3_add2::IfcTank::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1156]); } -Ifc4x3_add2::IfcTank::IfcTank(IfcEntityInstanceData&& e) : IfcFlowStorageDevice(std::move(e)) { } -Ifc4x3_add2::IfcTank::IfcTank(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcTankTypeEnum::Value > v9_PredefinedType) : IfcFlowStorageDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcTankTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcTank::IfcTank(const std::weak_ptr& e) : IfcFlowStorageDevice(e) { } +// Ifc4x3_add2::IfcTank::IfcTank(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcTankTypeEnum::Value > v9_PredefinedType) : IfcFlowStorageDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcTankTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcTankType ::Ifc4x3_add2::IfcTankTypeEnum::Value Ifc4x3_add2::IfcTankType::PredefinedType() const { return ::Ifc4x3_add2::IfcTankTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcTankType::setPredefinedType(::Ifc4x3_add2::IfcTankTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTankTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcTankType::setPredefinedType(const ::Ifc4x3_add2::IfcTankTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTankTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcTankType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1157]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTankType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1157]); } const IfcParse::entity& Ifc4x3_add2::IfcTankType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1157]); } -Ifc4x3_add2::IfcTankType::IfcTankType(IfcEntityInstanceData&& e) : IfcFlowStorageDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcTankType::IfcTankType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTankTypeEnum::Value v10_PredefinedType) : IfcFlowStorageDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTankTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcTankType::IfcTankType(const std::weak_ptr& e) : IfcFlowStorageDeviceType(e) { } +// Ifc4x3_add2::IfcTankType::IfcTankType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTankTypeEnum::Value v10_PredefinedType) : IfcFlowStorageDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTankTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcTask -boost::optional< std::string > Ifc4x3_add2::IfcTask::Status() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcTask::setStatus(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< std::string > Ifc4x3_add2::IfcTask::WorkMethod() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcTask::setWorkMethod(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< std::string > Ifc4x3_add2::IfcTask::Status() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcTask::setStatus(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcTask::WorkMethod() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcTask::setWorkMethod(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } bool Ifc4x3_add2::IfcTask::IsMilestone() const { bool v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcTask::setIsMilestone(bool v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } -boost::optional< int > Ifc4x3_add2::IfcTask::Priority() const { if(get_attribute_value(10).isNull()) { return boost::none; } int v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcTask::setPriority(boost::optional< int > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -::Ifc4x3_add2::IfcTaskTime* Ifc4x3_add2::IfcTask::TaskTime() const { if(get_attribute_value(11).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(11)))->as<::Ifc4x3_add2::IfcTaskTime>(true); } -void Ifc4x3_add2::IfcTask::setTaskTime(::Ifc4x3_add2::IfcTaskTime* v) { set_attribute_value(11, v->as());if constexpr (false)unset_attribute_value(11); } -boost::optional< ::Ifc4x3_add2::IfcTaskTypeEnum::Value > Ifc4x3_add2::IfcTask::PredefinedType() const { if(get_attribute_value(12).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcTaskTypeEnum::FromString(get_attribute_value(12)); } -void Ifc4x3_add2::IfcTask::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTaskTypeEnum::Value > v) { if (v) {set_attribute_value(12, EnumerationReference(&::Ifc4x3_add2::IfcTaskTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(12);} } +void Ifc4x3_add2::IfcTask::setIsMilestone(const bool& v) { set_attribute_value(9, v);if constexpr (false)unset_attribute_value(9); } +std::optional< int > Ifc4x3_add2::IfcTask::Priority() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } int v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcTask::setPriority(const std::optional< int >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +::Ifc4x3_add2::IfcTaskTime Ifc4x3_add2::IfcTask::TaskTime() const { if(get_attribute_value(11).isNull()) { return ::Ifc4x3_add2::IfcTaskTime{}; } return ((express::Base)(get_attribute_value(11))).as<::Ifc4x3_add2::IfcTaskTime>(); } +void Ifc4x3_add2::IfcTask::setTaskTime(const ::Ifc4x3_add2::IfcTaskTime& v) { set_attribute_value(11, v);if constexpr (false)unset_attribute_value(11); } +std::optional< ::Ifc4x3_add2::IfcTaskTypeEnum::Value > Ifc4x3_add2::IfcTask::PredefinedType() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcTaskTypeEnum::FromString(get_attribute_value(12)); } +void Ifc4x3_add2::IfcTask::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTaskTypeEnum::Value >& v) { if (v) {set_attribute_value(12, EnumerationReference(&::Ifc4x3_add2::IfcTaskTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(12);} } -const IfcParse::entity& Ifc4x3_add2::IfcTask::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1159]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTask::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1159]); } const IfcParse::entity& Ifc4x3_add2::IfcTask::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1159]); } -Ifc4x3_add2::IfcTask::IfcTask(IfcEntityInstanceData&& e) : IfcProcess(std::move(e)) { } -Ifc4x3_add2::IfcTask::IfcTask(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_WorkMethod, bool v10_IsMilestone, boost::optional< int > v11_Priority, ::Ifc4x3_add2::IfcTaskTime* v12_TaskTime, boost::optional< ::Ifc4x3_add2::IfcTaskTypeEnum::Value > v13_PredefinedType) : IfcProcess(IfcEntityInstanceData(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); } if (v8_Status) {set_attribute_value(7, (*v8_Status)); } if (v9_WorkMethod) {set_attribute_value(8, (*v9_WorkMethod)); }set_attribute_value(9, (v10_IsMilestone)); if (v11_Priority) {set_attribute_value(10, (*v11_Priority)); }set_attribute_value(11, v12_TaskTime ? v12_TaskTime->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v13_PredefinedType) {set_attribute_value(12, (EnumerationReference(&::Ifc4x3_add2::IfcTaskTypeEnum::Class(),(size_t)*v13_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcTask::IfcTask(const std::weak_ptr& e) : IfcProcess(e) { } +// Ifc4x3_add2::IfcTask::IfcTask(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, std::optional< std::string > v8_Status, std::optional< std::string > v9_WorkMethod, bool v10_IsMilestone, std::optional< int > v11_Priority, ::Ifc4x3_add2::IfcTaskTime v12_TaskTime, std::optional< ::Ifc4x3_add2::IfcTaskTypeEnum::Value > v13_PredefinedType) : IfcProcess(const std::weak_ptr&(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_LongDescription) {set_attribute_value(6, (*v7_LongDescription)); } if (v8_Status) {set_attribute_value(7, (*v8_Status)); } if (v9_WorkMethod) {set_attribute_value(8, (*v9_WorkMethod)); }set_attribute_value(9, (v10_IsMilestone)); if (v11_Priority) {set_attribute_value(10, (*v11_Priority)); } if (v12_TaskTime) {set_attribute_value(11, (*v12_TaskTime)); } if (v13_PredefinedType) {set_attribute_value(12, (EnumerationReference(&::Ifc4x3_add2::IfcTaskTypeEnum::Class(),(size_t)*v13_PredefinedType))); }; populate_derived(); } // Function implementations for IfcTaskTime -boost::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value > Ifc4x3_add2::IfcTaskTime::DurationType() const { if(get_attribute_value(3).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcTaskDurationEnum::FromString(get_attribute_value(3)); } -void Ifc4x3_add2::IfcTaskTime::setDurationType(boost::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value > v) { if (v) {set_attribute_value(3, EnumerationReference(&::Ifc4x3_add2::IfcTaskDurationEnum::Class(), (size_t) *v));} else {unset_attribute_value(3);} } -boost::optional< std::string > Ifc4x3_add2::IfcTaskTime::ScheduleDuration() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcTaskTime::ScheduleStart() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< std::string > Ifc4x3_add2::IfcTaskTime::ScheduleFinish() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< std::string > Ifc4x3_add2::IfcTaskTime::EarlyStart() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< std::string > Ifc4x3_add2::IfcTaskTime::EarlyFinish() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -boost::optional< std::string > Ifc4x3_add2::IfcTaskTime::LateStart() const { if(get_attribute_value(9).isNull()) { return boost::none; } std::string v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcTaskTime::setLateStart(boost::optional< std::string > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -boost::optional< std::string > Ifc4x3_add2::IfcTaskTime::LateFinish() const { if(get_attribute_value(10).isNull()) { return boost::none; } std::string v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< std::string > Ifc4x3_add2::IfcTaskTime::FreeFloat() const { if(get_attribute_value(11).isNull()) { return boost::none; } std::string v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -boost::optional< std::string > Ifc4x3_add2::IfcTaskTime::TotalFloat() const { if(get_attribute_value(12).isNull()) { return boost::none; } std::string v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -boost::optional< bool > Ifc4x3_add2::IfcTaskTime::IsCritical() const { if(get_attribute_value(13).isNull()) { return boost::none; } bool v = get_attribute_value(13); return v; } -void Ifc4x3_add2::IfcTaskTime::setIsCritical(boost::optional< bool > v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } -boost::optional< std::string > Ifc4x3_add2::IfcTaskTime::StatusTime() const { if(get_attribute_value(14).isNull()) { return boost::none; } std::string v = get_attribute_value(14); return v; } -void Ifc4x3_add2::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } -boost::optional< std::string > Ifc4x3_add2::IfcTaskTime::ActualDuration() const { if(get_attribute_value(15).isNull()) { return boost::none; } std::string v = get_attribute_value(15); return v; } -void Ifc4x3_add2::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { if (v) {set_attribute_value(15, *v);} else {unset_attribute_value(15);} } -boost::optional< std::string > Ifc4x3_add2::IfcTaskTime::ActualStart() const { if(get_attribute_value(16).isNull()) { return boost::none; } std::string v = get_attribute_value(16); return v; } -void Ifc4x3_add2::IfcTaskTime::setActualStart(boost::optional< std::string > v) { if (v) {set_attribute_value(16, *v);} else {unset_attribute_value(16);} } -boost::optional< std::string > Ifc4x3_add2::IfcTaskTime::ActualFinish() const { if(get_attribute_value(17).isNull()) { return boost::none; } std::string v = get_attribute_value(17); return v; } -void Ifc4x3_add2::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { if (v) {set_attribute_value(17, *v);} else {unset_attribute_value(17);} } -boost::optional< std::string > Ifc4x3_add2::IfcTaskTime::RemainingTime() const { if(get_attribute_value(18).isNull()) { return boost::none; } std::string v = get_attribute_value(18); return v; } -void Ifc4x3_add2::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { if (v) {set_attribute_value(18, *v);} else {unset_attribute_value(18);} } -boost::optional< double > Ifc4x3_add2::IfcTaskTime::Completion() const { if(get_attribute_value(19).isNull()) { return boost::none; } double v = get_attribute_value(19); return v; } -void Ifc4x3_add2::IfcTaskTime::setCompletion(boost::optional< double > v) { if (v) {set_attribute_value(19, *v);} else {unset_attribute_value(19);} } +std::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value > Ifc4x3_add2::IfcTaskTime::DurationType() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcTaskDurationEnum::FromString(get_attribute_value(3)); } +void Ifc4x3_add2::IfcTaskTime::setDurationType(const std::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value >& v) { if (v) {set_attribute_value(3, EnumerationReference(&::Ifc4x3_add2::IfcTaskDurationEnum::Class(), (size_t) *v));} else {unset_attribute_value(3);} } +std::optional< std::string > Ifc4x3_add2::IfcTaskTime::ScheduleDuration() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcTaskTime::setScheduleDuration(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcTaskTime::ScheduleStart() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcTaskTime::setScheduleStart(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcTaskTime::ScheduleFinish() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcTaskTime::setScheduleFinish(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcTaskTime::EarlyStart() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcTaskTime::setEarlyStart(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcTaskTime::EarlyFinish() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcTaskTime::setEarlyFinish(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< std::string > Ifc4x3_add2::IfcTaskTime::LateStart() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } std::string v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcTaskTime::setLateStart(const std::optional< std::string >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< std::string > Ifc4x3_add2::IfcTaskTime::LateFinish() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } std::string v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcTaskTime::setLateFinish(const std::optional< std::string >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< std::string > Ifc4x3_add2::IfcTaskTime::FreeFloat() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } std::string v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcTaskTime::setFreeFloat(const std::optional< std::string >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +std::optional< std::string > Ifc4x3_add2::IfcTaskTime::TotalFloat() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } std::string v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcTaskTime::setTotalFloat(const std::optional< std::string >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +std::optional< bool > Ifc4x3_add2::IfcTaskTime::IsCritical() const { if(get_attribute_value(13).isNull()) { return std::nullopt; } bool v = get_attribute_value(13); return v; } +void Ifc4x3_add2::IfcTaskTime::setIsCritical(const std::optional< bool >& v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } +std::optional< std::string > Ifc4x3_add2::IfcTaskTime::StatusTime() const { if(get_attribute_value(14).isNull()) { return std::nullopt; } std::string v = get_attribute_value(14); return v; } +void Ifc4x3_add2::IfcTaskTime::setStatusTime(const std::optional< std::string >& v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } +std::optional< std::string > Ifc4x3_add2::IfcTaskTime::ActualDuration() const { if(get_attribute_value(15).isNull()) { return std::nullopt; } std::string v = get_attribute_value(15); return v; } +void Ifc4x3_add2::IfcTaskTime::setActualDuration(const std::optional< std::string >& v) { if (v) {set_attribute_value(15, *v);} else {unset_attribute_value(15);} } +std::optional< std::string > Ifc4x3_add2::IfcTaskTime::ActualStart() const { if(get_attribute_value(16).isNull()) { return std::nullopt; } std::string v = get_attribute_value(16); return v; } +void Ifc4x3_add2::IfcTaskTime::setActualStart(const std::optional< std::string >& v) { if (v) {set_attribute_value(16, *v);} else {unset_attribute_value(16);} } +std::optional< std::string > Ifc4x3_add2::IfcTaskTime::ActualFinish() const { if(get_attribute_value(17).isNull()) { return std::nullopt; } std::string v = get_attribute_value(17); return v; } +void Ifc4x3_add2::IfcTaskTime::setActualFinish(const std::optional< std::string >& v) { if (v) {set_attribute_value(17, *v);} else {unset_attribute_value(17);} } +std::optional< std::string > Ifc4x3_add2::IfcTaskTime::RemainingTime() const { if(get_attribute_value(18).isNull()) { return std::nullopt; } std::string v = get_attribute_value(18); return v; } +void Ifc4x3_add2::IfcTaskTime::setRemainingTime(const std::optional< std::string >& v) { if (v) {set_attribute_value(18, *v);} else {unset_attribute_value(18);} } +std::optional< double > Ifc4x3_add2::IfcTaskTime::Completion() const { if(get_attribute_value(19).isNull()) { return std::nullopt; } double v = get_attribute_value(19); return v; } +void Ifc4x3_add2::IfcTaskTime::setCompletion(const std::optional< double >& v) { if (v) {set_attribute_value(19, *v);} else {unset_attribute_value(19);} } -const IfcParse::entity& Ifc4x3_add2::IfcTaskTime::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1161]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTaskTime::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1161]); } const IfcParse::entity& Ifc4x3_add2::IfcTaskTime::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1161]); } -Ifc4x3_add2::IfcTaskTime::IfcTaskTime(IfcEntityInstanceData&& e) : IfcSchedulingTime(std::move(e)) { } -Ifc4x3_add2::IfcTaskTime::IfcTaskTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value > v4_DurationType, boost::optional< std::string > v5_ScheduleDuration, boost::optional< std::string > v6_ScheduleStart, boost::optional< std::string > v7_ScheduleFinish, boost::optional< std::string > v8_EarlyStart, boost::optional< std::string > v9_EarlyFinish, boost::optional< std::string > v10_LateStart, boost::optional< std::string > v11_LateFinish, boost::optional< std::string > v12_FreeFloat, boost::optional< std::string > v13_TotalFloat, boost::optional< bool > v14_IsCritical, boost::optional< std::string > v15_StatusTime, boost::optional< std::string > v16_ActualDuration, boost::optional< std::string > v17_ActualStart, boost::optional< std::string > v18_ActualFinish, boost::optional< std::string > v19_RemainingTime, boost::optional< double > v20_Completion) : IfcSchedulingTime(IfcEntityInstanceData(in_memory_attribute_storage(20))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DataOrigin) {set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)*v2_DataOrigin))); } if (v3_UserDefinedDataOrigin) {set_attribute_value(2, (*v3_UserDefinedDataOrigin)); } if (v4_DurationType) {set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcTaskDurationEnum::Class(),(size_t)*v4_DurationType))); } if (v5_ScheduleDuration) {set_attribute_value(4, (*v5_ScheduleDuration)); } if (v6_ScheduleStart) {set_attribute_value(5, (*v6_ScheduleStart)); } if (v7_ScheduleFinish) {set_attribute_value(6, (*v7_ScheduleFinish)); } if (v8_EarlyStart) {set_attribute_value(7, (*v8_EarlyStart)); } if (v9_EarlyFinish) {set_attribute_value(8, (*v9_EarlyFinish)); } if (v10_LateStart) {set_attribute_value(9, (*v10_LateStart)); } if (v11_LateFinish) {set_attribute_value(10, (*v11_LateFinish)); } if (v12_FreeFloat) {set_attribute_value(11, (*v12_FreeFloat)); } if (v13_TotalFloat) {set_attribute_value(12, (*v13_TotalFloat)); } if (v14_IsCritical) {set_attribute_value(13, (*v14_IsCritical)); } if (v15_StatusTime) {set_attribute_value(14, (*v15_StatusTime)); } if (v16_ActualDuration) {set_attribute_value(15, (*v16_ActualDuration)); } if (v17_ActualStart) {set_attribute_value(16, (*v17_ActualStart)); } if (v18_ActualFinish) {set_attribute_value(17, (*v18_ActualFinish)); } if (v19_RemainingTime) {set_attribute_value(18, (*v19_RemainingTime)); } if (v20_Completion) {set_attribute_value(19, (*v20_Completion)); }; populate_derived(); } +// Ifc4x3_add2::IfcTaskTime::IfcTaskTime(const std::weak_ptr& e) : IfcSchedulingTime(e) { } +// Ifc4x3_add2::IfcTaskTime::IfcTaskTime(std::optional< std::string > v1_Name, std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, std::optional< std::string > v3_UserDefinedDataOrigin, std::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value > v4_DurationType, std::optional< std::string > v5_ScheduleDuration, std::optional< std::string > v6_ScheduleStart, std::optional< std::string > v7_ScheduleFinish, std::optional< std::string > v8_EarlyStart, std::optional< std::string > v9_EarlyFinish, std::optional< std::string > v10_LateStart, std::optional< std::string > v11_LateFinish, std::optional< std::string > v12_FreeFloat, std::optional< std::string > v13_TotalFloat, std::optional< bool > v14_IsCritical, std::optional< std::string > v15_StatusTime, std::optional< std::string > v16_ActualDuration, std::optional< std::string > v17_ActualStart, std::optional< std::string > v18_ActualFinish, std::optional< std::string > v19_RemainingTime, std::optional< double > v20_Completion) : IfcSchedulingTime(const std::weak_ptr&(in_memory_attribute_storage(20))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DataOrigin) {set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)*v2_DataOrigin))); } if (v3_UserDefinedDataOrigin) {set_attribute_value(2, (*v3_UserDefinedDataOrigin)); } if (v4_DurationType) {set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcTaskDurationEnum::Class(),(size_t)*v4_DurationType))); } if (v5_ScheduleDuration) {set_attribute_value(4, (*v5_ScheduleDuration)); } if (v6_ScheduleStart) {set_attribute_value(5, (*v6_ScheduleStart)); } if (v7_ScheduleFinish) {set_attribute_value(6, (*v7_ScheduleFinish)); } if (v8_EarlyStart) {set_attribute_value(7, (*v8_EarlyStart)); } if (v9_EarlyFinish) {set_attribute_value(8, (*v9_EarlyFinish)); } if (v10_LateStart) {set_attribute_value(9, (*v10_LateStart)); } if (v11_LateFinish) {set_attribute_value(10, (*v11_LateFinish)); } if (v12_FreeFloat) {set_attribute_value(11, (*v12_FreeFloat)); } if (v13_TotalFloat) {set_attribute_value(12, (*v13_TotalFloat)); } if (v14_IsCritical) {set_attribute_value(13, (*v14_IsCritical)); } if (v15_StatusTime) {set_attribute_value(14, (*v15_StatusTime)); } if (v16_ActualDuration) {set_attribute_value(15, (*v16_ActualDuration)); } if (v17_ActualStart) {set_attribute_value(16, (*v17_ActualStart)); } if (v18_ActualFinish) {set_attribute_value(17, (*v18_ActualFinish)); } if (v19_RemainingTime) {set_attribute_value(18, (*v19_RemainingTime)); } if (v20_Completion) {set_attribute_value(19, (*v20_Completion)); }; populate_derived(); } // Function implementations for IfcTaskTimeRecurring -::Ifc4x3_add2::IfcRecurrencePattern* Ifc4x3_add2::IfcTaskTimeRecurring::Recurrence() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(20)))->as<::Ifc4x3_add2::IfcRecurrencePattern>(true); } -void Ifc4x3_add2::IfcTaskTimeRecurring::setRecurrence(::Ifc4x3_add2::IfcRecurrencePattern* v) { set_attribute_value(20, v->as());if constexpr (false)unset_attribute_value(20); } +::Ifc4x3_add2::IfcRecurrencePattern Ifc4x3_add2::IfcTaskTimeRecurring::Recurrence() const { return ((express::Base)(get_attribute_value(20))).as<::Ifc4x3_add2::IfcRecurrencePattern>(); } +void Ifc4x3_add2::IfcTaskTimeRecurring::setRecurrence(const ::Ifc4x3_add2::IfcRecurrencePattern& v) { set_attribute_value(20, v);if constexpr (false)unset_attribute_value(20); } -const IfcParse::entity& Ifc4x3_add2::IfcTaskTimeRecurring::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1162]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTaskTimeRecurring::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1162]); } const IfcParse::entity& Ifc4x3_add2::IfcTaskTimeRecurring::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1162]); } -Ifc4x3_add2::IfcTaskTimeRecurring::IfcTaskTimeRecurring(IfcEntityInstanceData&& e) : IfcTaskTime(std::move(e)) { } -Ifc4x3_add2::IfcTaskTimeRecurring::IfcTaskTimeRecurring(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value > v4_DurationType, boost::optional< std::string > v5_ScheduleDuration, boost::optional< std::string > v6_ScheduleStart, boost::optional< std::string > v7_ScheduleFinish, boost::optional< std::string > v8_EarlyStart, boost::optional< std::string > v9_EarlyFinish, boost::optional< std::string > v10_LateStart, boost::optional< std::string > v11_LateFinish, boost::optional< std::string > v12_FreeFloat, boost::optional< std::string > v13_TotalFloat, boost::optional< bool > v14_IsCritical, boost::optional< std::string > v15_StatusTime, boost::optional< std::string > v16_ActualDuration, boost::optional< std::string > v17_ActualStart, boost::optional< std::string > v18_ActualFinish, boost::optional< std::string > v19_RemainingTime, boost::optional< double > v20_Completion, ::Ifc4x3_add2::IfcRecurrencePattern* v21_Recurrence) : IfcTaskTime(IfcEntityInstanceData(in_memory_attribute_storage(21))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DataOrigin) {set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)*v2_DataOrigin))); } if (v3_UserDefinedDataOrigin) {set_attribute_value(2, (*v3_UserDefinedDataOrigin)); } if (v4_DurationType) {set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcTaskDurationEnum::Class(),(size_t)*v4_DurationType))); } if (v5_ScheduleDuration) {set_attribute_value(4, (*v5_ScheduleDuration)); } if (v6_ScheduleStart) {set_attribute_value(5, (*v6_ScheduleStart)); } if (v7_ScheduleFinish) {set_attribute_value(6, (*v7_ScheduleFinish)); } if (v8_EarlyStart) {set_attribute_value(7, (*v8_EarlyStart)); } if (v9_EarlyFinish) {set_attribute_value(8, (*v9_EarlyFinish)); } if (v10_LateStart) {set_attribute_value(9, (*v10_LateStart)); } if (v11_LateFinish) {set_attribute_value(10, (*v11_LateFinish)); } if (v12_FreeFloat) {set_attribute_value(11, (*v12_FreeFloat)); } if (v13_TotalFloat) {set_attribute_value(12, (*v13_TotalFloat)); } if (v14_IsCritical) {set_attribute_value(13, (*v14_IsCritical)); } if (v15_StatusTime) {set_attribute_value(14, (*v15_StatusTime)); } if (v16_ActualDuration) {set_attribute_value(15, (*v16_ActualDuration)); } if (v17_ActualStart) {set_attribute_value(16, (*v17_ActualStart)); } if (v18_ActualFinish) {set_attribute_value(17, (*v18_ActualFinish)); } if (v19_RemainingTime) {set_attribute_value(18, (*v19_RemainingTime)); } if (v20_Completion) {set_attribute_value(19, (*v20_Completion)); }set_attribute_value(20, v21_Recurrence ? v21_Recurrence->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcTaskTimeRecurring::IfcTaskTimeRecurring(const std::weak_ptr& e) : IfcTaskTime(e) { } +// Ifc4x3_add2::IfcTaskTimeRecurring::IfcTaskTimeRecurring(std::optional< std::string > v1_Name, std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, std::optional< std::string > v3_UserDefinedDataOrigin, std::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value > v4_DurationType, std::optional< std::string > v5_ScheduleDuration, std::optional< std::string > v6_ScheduleStart, std::optional< std::string > v7_ScheduleFinish, std::optional< std::string > v8_EarlyStart, std::optional< std::string > v9_EarlyFinish, std::optional< std::string > v10_LateStart, std::optional< std::string > v11_LateFinish, std::optional< std::string > v12_FreeFloat, std::optional< std::string > v13_TotalFloat, std::optional< bool > v14_IsCritical, std::optional< std::string > v15_StatusTime, std::optional< std::string > v16_ActualDuration, std::optional< std::string > v17_ActualStart, std::optional< std::string > v18_ActualFinish, std::optional< std::string > v19_RemainingTime, std::optional< double > v20_Completion, ::Ifc4x3_add2::IfcRecurrencePattern v21_Recurrence) : IfcTaskTime(const std::weak_ptr&(in_memory_attribute_storage(21))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DataOrigin) {set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)*v2_DataOrigin))); } if (v3_UserDefinedDataOrigin) {set_attribute_value(2, (*v3_UserDefinedDataOrigin)); } if (v4_DurationType) {set_attribute_value(3, (EnumerationReference(&::Ifc4x3_add2::IfcTaskDurationEnum::Class(),(size_t)*v4_DurationType))); } if (v5_ScheduleDuration) {set_attribute_value(4, (*v5_ScheduleDuration)); } if (v6_ScheduleStart) {set_attribute_value(5, (*v6_ScheduleStart)); } if (v7_ScheduleFinish) {set_attribute_value(6, (*v7_ScheduleFinish)); } if (v8_EarlyStart) {set_attribute_value(7, (*v8_EarlyStart)); } if (v9_EarlyFinish) {set_attribute_value(8, (*v9_EarlyFinish)); } if (v10_LateStart) {set_attribute_value(9, (*v10_LateStart)); } if (v11_LateFinish) {set_attribute_value(10, (*v11_LateFinish)); } if (v12_FreeFloat) {set_attribute_value(11, (*v12_FreeFloat)); } if (v13_TotalFloat) {set_attribute_value(12, (*v13_TotalFloat)); } if (v14_IsCritical) {set_attribute_value(13, (*v14_IsCritical)); } if (v15_StatusTime) {set_attribute_value(14, (*v15_StatusTime)); } if (v16_ActualDuration) {set_attribute_value(15, (*v16_ActualDuration)); } if (v17_ActualStart) {set_attribute_value(16, (*v17_ActualStart)); } if (v18_ActualFinish) {set_attribute_value(17, (*v18_ActualFinish)); } if (v19_RemainingTime) {set_attribute_value(18, (*v19_RemainingTime)); } if (v20_Completion) {set_attribute_value(19, (*v20_Completion)); }set_attribute_value(20, (v21_Recurrence));; populate_derived(); } // Function implementations for IfcTaskType ::Ifc4x3_add2::IfcTaskTypeEnum::Value Ifc4x3_add2::IfcTaskType::PredefinedType() const { return ::Ifc4x3_add2::IfcTaskTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcTaskType::setPredefinedType(::Ifc4x3_add2::IfcTaskTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTaskTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -boost::optional< std::string > Ifc4x3_add2::IfcTaskType::WorkMethod() const { if(get_attribute_value(10).isNull()) { return boost::none; } std::string v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +void Ifc4x3_add2::IfcTaskType::setPredefinedType(const ::Ifc4x3_add2::IfcTaskTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTaskTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +std::optional< std::string > Ifc4x3_add2::IfcTaskType::WorkMethod() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } std::string v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcTaskType::setWorkMethod(const std::optional< std::string >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -const IfcParse::entity& Ifc4x3_add2::IfcTaskType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1163]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTaskType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1163]); } const IfcParse::entity& Ifc4x3_add2::IfcTaskType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1163]); } -Ifc4x3_add2::IfcTaskType::IfcTaskType(IfcEntityInstanceData&& e) : IfcTypeProcess(std::move(e)) { } -Ifc4x3_add2::IfcTaskType::IfcTaskType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, ::Ifc4x3_add2::IfcTaskTypeEnum::Value v10_PredefinedType, boost::optional< std::string > v11_WorkMethod) : IfcTypeProcess(IfcEntityInstanceData(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ProcessType) {set_attribute_value(8, (*v9_ProcessType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTaskTypeEnum::Class(),(size_t)v10_PredefinedType))); if (v11_WorkMethod) {set_attribute_value(10, (*v11_WorkMethod)); }; populate_derived(); } +// Ifc4x3_add2::IfcTaskType::IfcTaskType(const std::weak_ptr& e) : IfcTypeProcess(e) { } +// Ifc4x3_add2::IfcTaskType::IfcTaskType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ProcessType, ::Ifc4x3_add2::IfcTaskTypeEnum::Value v10_PredefinedType, std::optional< std::string > v11_WorkMethod) : IfcTypeProcess(const std::weak_ptr&(in_memory_attribute_storage(11))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ProcessType) {set_attribute_value(8, (*v9_ProcessType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTaskTypeEnum::Class(),(size_t)v10_PredefinedType))); if (v11_WorkMethod) {set_attribute_value(10, (*v11_WorkMethod)); }; populate_derived(); } // Function implementations for IfcTelecomAddress -boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcTelecomAddress::TelephoneNumbers() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcTelecomAddress::FacsimileNumbers() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcTelecomAddress::PagerNumber() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcTelecomAddress::ElectronicMailAddresses() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< std::string > Ifc4x3_add2::IfcTelecomAddress::WWWHomePageURL() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcTelecomAddress::MessagingIDs() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcTelecomAddress::TelephoneNumbers() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcTelecomAddress::setTelephoneNumbers(const std::optional< std::vector< std::string > /*[1:?]*/ >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcTelecomAddress::FacsimileNumbers() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcTelecomAddress::setFacsimileNumbers(const std::optional< std::vector< std::string > /*[1:?]*/ >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcTelecomAddress::PagerNumber() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcTelecomAddress::setPagerNumber(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcTelecomAddress::ElectronicMailAddresses() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcTelecomAddress::setElectronicMailAddresses(const std::optional< std::vector< std::string > /*[1:?]*/ >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcTelecomAddress::WWWHomePageURL() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcTelecomAddress::setWWWHomePageURL(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_add2::IfcTelecomAddress::MessagingIDs() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::vector< std::string > /*[1:?]*/ v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcTelecomAddress::setMessagingIDs(const std::optional< std::vector< std::string > /*[1:?]*/ >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcTelecomAddress::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1165]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTelecomAddress::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1165]); } const IfcParse::entity& Ifc4x3_add2::IfcTelecomAddress::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1165]); } -Ifc4x3_add2::IfcTelecomAddress::IfcTelecomAddress(IfcEntityInstanceData&& e) : IfcAddress(std::move(e)) { } -Ifc4x3_add2::IfcTelecomAddress::IfcTelecomAddress(boost::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose, boost::optional< std::vector< std::string > /*[1:?]*/ > v4_TelephoneNumbers, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_FacsimileNumbers, boost::optional< std::string > v6_PagerNumber, boost::optional< std::vector< std::string > /*[1:?]*/ > v7_ElectronicMailAddresses, boost::optional< std::string > v8_WWWHomePageURL, boost::optional< std::vector< std::string > /*[1:?]*/ > v9_MessagingIDs) : IfcAddress(IfcEntityInstanceData(in_memory_attribute_storage(9))) { if (v1_Purpose) {set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcAddressTypeEnum::Class(),(size_t)*v1_Purpose))); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_UserDefinedPurpose) {set_attribute_value(2, (*v3_UserDefinedPurpose)); } if (v4_TelephoneNumbers) {set_attribute_value(3, (*v4_TelephoneNumbers)); } if (v5_FacsimileNumbers) {set_attribute_value(4, (*v5_FacsimileNumbers)); } if (v6_PagerNumber) {set_attribute_value(5, (*v6_PagerNumber)); } if (v7_ElectronicMailAddresses) {set_attribute_value(6, (*v7_ElectronicMailAddresses)); } if (v8_WWWHomePageURL) {set_attribute_value(7, (*v8_WWWHomePageURL)); } if (v9_MessagingIDs) {set_attribute_value(8, (*v9_MessagingIDs)); }; populate_derived(); } +// Ifc4x3_add2::IfcTelecomAddress::IfcTelecomAddress(const std::weak_ptr& e) : IfcAddress(e) { } +// Ifc4x3_add2::IfcTelecomAddress::IfcTelecomAddress(std::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > v1_Purpose, std::optional< std::string > v2_Description, std::optional< std::string > v3_UserDefinedPurpose, std::optional< std::vector< std::string > /*[1:?]*/ > v4_TelephoneNumbers, std::optional< std::vector< std::string > /*[1:?]*/ > v5_FacsimileNumbers, std::optional< std::string > v6_PagerNumber, std::optional< std::vector< std::string > /*[1:?]*/ > v7_ElectronicMailAddresses, std::optional< std::string > v8_WWWHomePageURL, std::optional< std::vector< std::string > /*[1:?]*/ > v9_MessagingIDs) : IfcAddress(const std::weak_ptr&(in_memory_attribute_storage(9))) { if (v1_Purpose) {set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcAddressTypeEnum::Class(),(size_t)*v1_Purpose))); } if (v2_Description) {set_attribute_value(1, (*v2_Description)); } if (v3_UserDefinedPurpose) {set_attribute_value(2, (*v3_UserDefinedPurpose)); } if (v4_TelephoneNumbers) {set_attribute_value(3, (*v4_TelephoneNumbers)); } if (v5_FacsimileNumbers) {set_attribute_value(4, (*v5_FacsimileNumbers)); } if (v6_PagerNumber) {set_attribute_value(5, (*v6_PagerNumber)); } if (v7_ElectronicMailAddresses) {set_attribute_value(6, (*v7_ElectronicMailAddresses)); } if (v8_WWWHomePageURL) {set_attribute_value(7, (*v8_WWWHomePageURL)); } if (v9_MessagingIDs) {set_attribute_value(8, (*v9_MessagingIDs)); }; populate_derived(); } // Function implementations for IfcTendon -boost::optional< ::Ifc4x3_add2::IfcTendonTypeEnum::Value > Ifc4x3_add2::IfcTendon::PredefinedType() const { if(get_attribute_value(9).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcTendonTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcTendon::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTendonTypeEnum::Value > v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTendonTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } -boost::optional< double > Ifc4x3_add2::IfcTendon::NominalDiameter() const { if(get_attribute_value(10).isNull()) { return boost::none; } double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcTendon::setNominalDiameter(boost::optional< double > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< double > Ifc4x3_add2::IfcTendon::CrossSectionArea() const { if(get_attribute_value(11).isNull()) { return boost::none; } double v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcTendon::setCrossSectionArea(boost::optional< double > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -boost::optional< double > Ifc4x3_add2::IfcTendon::TensionForce() const { if(get_attribute_value(12).isNull()) { return boost::none; } double v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcTendon::setTensionForce(boost::optional< double > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -boost::optional< double > Ifc4x3_add2::IfcTendon::PreStress() const { if(get_attribute_value(13).isNull()) { return boost::none; } double v = get_attribute_value(13); return v; } -void Ifc4x3_add2::IfcTendon::setPreStress(boost::optional< double > v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } -boost::optional< double > Ifc4x3_add2::IfcTendon::FrictionCoefficient() const { if(get_attribute_value(14).isNull()) { return boost::none; } double v = get_attribute_value(14); return v; } -void Ifc4x3_add2::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } -boost::optional< double > Ifc4x3_add2::IfcTendon::AnchorageSlip() const { if(get_attribute_value(15).isNull()) { return boost::none; } double v = get_attribute_value(15); return v; } -void Ifc4x3_add2::IfcTendon::setAnchorageSlip(boost::optional< double > v) { if (v) {set_attribute_value(15, *v);} else {unset_attribute_value(15);} } -boost::optional< double > Ifc4x3_add2::IfcTendon::MinCurvatureRadius() const { if(get_attribute_value(16).isNull()) { return boost::none; } double v = get_attribute_value(16); return v; } -void Ifc4x3_add2::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { if (v) {set_attribute_value(16, *v);} else {unset_attribute_value(16);} } +std::optional< ::Ifc4x3_add2::IfcTendonTypeEnum::Value > Ifc4x3_add2::IfcTendon::PredefinedType() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcTendonTypeEnum::FromString(get_attribute_value(9)); } +void Ifc4x3_add2::IfcTendon::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTendonTypeEnum::Value >& v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTendonTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } +std::optional< double > Ifc4x3_add2::IfcTendon::NominalDiameter() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } double v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcTendon::setNominalDiameter(const std::optional< double >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< double > Ifc4x3_add2::IfcTendon::CrossSectionArea() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } double v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcTendon::setCrossSectionArea(const std::optional< double >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +std::optional< double > Ifc4x3_add2::IfcTendon::TensionForce() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } double v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcTendon::setTensionForce(const std::optional< double >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +std::optional< double > Ifc4x3_add2::IfcTendon::PreStress() const { if(get_attribute_value(13).isNull()) { return std::nullopt; } double v = get_attribute_value(13); return v; } +void Ifc4x3_add2::IfcTendon::setPreStress(const std::optional< double >& v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } +std::optional< double > Ifc4x3_add2::IfcTendon::FrictionCoefficient() const { if(get_attribute_value(14).isNull()) { return std::nullopt; } double v = get_attribute_value(14); return v; } +void Ifc4x3_add2::IfcTendon::setFrictionCoefficient(const std::optional< double >& v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } +std::optional< double > Ifc4x3_add2::IfcTendon::AnchorageSlip() const { if(get_attribute_value(15).isNull()) { return std::nullopt; } double v = get_attribute_value(15); return v; } +void Ifc4x3_add2::IfcTendon::setAnchorageSlip(const std::optional< double >& v) { if (v) {set_attribute_value(15, *v);} else {unset_attribute_value(15);} } +std::optional< double > Ifc4x3_add2::IfcTendon::MinCurvatureRadius() const { if(get_attribute_value(16).isNull()) { return std::nullopt; } double v = get_attribute_value(16); return v; } +void Ifc4x3_add2::IfcTendon::setMinCurvatureRadius(const std::optional< double >& v) { if (v) {set_attribute_value(16, *v);} else {unset_attribute_value(16);} } -const IfcParse::entity& Ifc4x3_add2::IfcTendon::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1168]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTendon::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1168]); } const IfcParse::entity& Ifc4x3_add2::IfcTendon::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1168]); } -Ifc4x3_add2::IfcTendon::IfcTendon(IfcEntityInstanceData&& e) : IfcReinforcingElement(std::move(e)) { } -Ifc4x3_add2::IfcTendon::IfcTendon(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< ::Ifc4x3_add2::IfcTendonTypeEnum::Value > v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_TensionForce, boost::optional< double > v14_PreStress, boost::optional< double > v15_FrictionCoefficient, boost::optional< double > v16_AnchorageSlip, boost::optional< double > v17_MinCurvatureRadius) : IfcReinforcingElement(IfcEntityInstanceData(in_memory_attribute_storage(17))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_SteelGrade) {set_attribute_value(8, (*v9_SteelGrade)); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTendonTypeEnum::Class(),(size_t)*v10_PredefinedType))); } if (v11_NominalDiameter) {set_attribute_value(10, (*v11_NominalDiameter)); } if (v12_CrossSectionArea) {set_attribute_value(11, (*v12_CrossSectionArea)); } if (v13_TensionForce) {set_attribute_value(12, (*v13_TensionForce)); } if (v14_PreStress) {set_attribute_value(13, (*v14_PreStress)); } if (v15_FrictionCoefficient) {set_attribute_value(14, (*v15_FrictionCoefficient)); } if (v16_AnchorageSlip) {set_attribute_value(15, (*v16_AnchorageSlip)); } if (v17_MinCurvatureRadius) {set_attribute_value(16, (*v17_MinCurvatureRadius)); }; populate_derived(); } +// Ifc4x3_add2::IfcTendon::IfcTendon(const std::weak_ptr& e) : IfcReinforcingElement(e) { } +// Ifc4x3_add2::IfcTendon::IfcTendon(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< std::string > v9_SteelGrade, std::optional< ::Ifc4x3_add2::IfcTendonTypeEnum::Value > v10_PredefinedType, std::optional< double > v11_NominalDiameter, std::optional< double > v12_CrossSectionArea, std::optional< double > v13_TensionForce, std::optional< double > v14_PreStress, std::optional< double > v15_FrictionCoefficient, std::optional< double > v16_AnchorageSlip, std::optional< double > v17_MinCurvatureRadius) : IfcReinforcingElement(const std::weak_ptr&(in_memory_attribute_storage(17))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_SteelGrade) {set_attribute_value(8, (*v9_SteelGrade)); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTendonTypeEnum::Class(),(size_t)*v10_PredefinedType))); } if (v11_NominalDiameter) {set_attribute_value(10, (*v11_NominalDiameter)); } if (v12_CrossSectionArea) {set_attribute_value(11, (*v12_CrossSectionArea)); } if (v13_TensionForce) {set_attribute_value(12, (*v13_TensionForce)); } if (v14_PreStress) {set_attribute_value(13, (*v14_PreStress)); } if (v15_FrictionCoefficient) {set_attribute_value(14, (*v15_FrictionCoefficient)); } if (v16_AnchorageSlip) {set_attribute_value(15, (*v16_AnchorageSlip)); } if (v17_MinCurvatureRadius) {set_attribute_value(16, (*v17_MinCurvatureRadius)); }; populate_derived(); } // Function implementations for IfcTendonAnchor -boost::optional< ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value > Ifc4x3_add2::IfcTendonAnchor::PredefinedType() const { if(get_attribute_value(9).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value > v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } +std::optional< ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value > Ifc4x3_add2::IfcTendonAnchor::PredefinedType() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::FromString(get_attribute_value(9)); } +void Ifc4x3_add2::IfcTendonAnchor::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value >& v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcTendonAnchor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1169]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTendonAnchor::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1169]); } const IfcParse::entity& Ifc4x3_add2::IfcTendonAnchor::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1169]); } -Ifc4x3_add2::IfcTendonAnchor::IfcTendonAnchor(IfcEntityInstanceData&& e) : IfcReinforcingElement(std::move(e)) { } -Ifc4x3_add2::IfcTendonAnchor::IfcTendonAnchor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value > v10_PredefinedType) : IfcReinforcingElement(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_SteelGrade) {set_attribute_value(8, (*v9_SteelGrade)); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcTendonAnchor::IfcTendonAnchor(const std::weak_ptr& e) : IfcReinforcingElement(e) { } +// Ifc4x3_add2::IfcTendonAnchor::IfcTendonAnchor(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< std::string > v9_SteelGrade, std::optional< ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value > v10_PredefinedType) : IfcReinforcingElement(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_SteelGrade) {set_attribute_value(8, (*v9_SteelGrade)); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } // Function implementations for IfcTendonAnchorType ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value Ifc4x3_add2::IfcTendonAnchorType::PredefinedType() const { return ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcTendonAnchorType::setPredefinedType(::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcTendonAnchorType::setPredefinedType(const ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcTendonAnchorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1170]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTendonAnchorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1170]); } const IfcParse::entity& Ifc4x3_add2::IfcTendonAnchorType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1170]); } -Ifc4x3_add2::IfcTendonAnchorType::IfcTendonAnchorType(IfcEntityInstanceData&& e) : IfcReinforcingElementType(std::move(e)) { } -Ifc4x3_add2::IfcTendonAnchorType::IfcTendonAnchorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value v10_PredefinedType) : IfcReinforcingElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcTendonAnchorType::IfcTendonAnchorType(const std::weak_ptr& e) : IfcReinforcingElementType(e) { } +// Ifc4x3_add2::IfcTendonAnchorType::IfcTendonAnchorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value v10_PredefinedType) : IfcReinforcingElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcTendonConduit -boost::optional< ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value > Ifc4x3_add2::IfcTendonConduit::PredefinedType() const { if(get_attribute_value(9).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcTendonConduitTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcTendonConduit::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value > v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTendonConduitTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } +std::optional< ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value > Ifc4x3_add2::IfcTendonConduit::PredefinedType() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcTendonConduitTypeEnum::FromString(get_attribute_value(9)); } +void Ifc4x3_add2::IfcTendonConduit::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value >& v) { if (v) {set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTendonConduitTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcTendonConduit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1172]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTendonConduit::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1172]); } const IfcParse::entity& Ifc4x3_add2::IfcTendonConduit::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1172]); } -Ifc4x3_add2::IfcTendonConduit::IfcTendonConduit(IfcEntityInstanceData&& e) : IfcReinforcingElement(std::move(e)) { } -Ifc4x3_add2::IfcTendonConduit::IfcTendonConduit(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value > v10_PredefinedType) : IfcReinforcingElement(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_SteelGrade) {set_attribute_value(8, (*v9_SteelGrade)); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTendonConduitTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcTendonConduit::IfcTendonConduit(const std::weak_ptr& e) : IfcReinforcingElement(e) { } +// Ifc4x3_add2::IfcTendonConduit::IfcTendonConduit(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< std::string > v9_SteelGrade, std::optional< ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value > v10_PredefinedType) : IfcReinforcingElement(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_SteelGrade) {set_attribute_value(8, (*v9_SteelGrade)); } if (v10_PredefinedType) {set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTendonConduitTypeEnum::Class(),(size_t)*v10_PredefinedType))); }; populate_derived(); } // Function implementations for IfcTendonConduitType ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value Ifc4x3_add2::IfcTendonConduitType::PredefinedType() const { return ::Ifc4x3_add2::IfcTendonConduitTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcTendonConduitType::setPredefinedType(::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTendonConduitTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcTendonConduitType::setPredefinedType(const ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTendonConduitTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcTendonConduitType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1173]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTendonConduitType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1173]); } const IfcParse::entity& Ifc4x3_add2::IfcTendonConduitType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1173]); } -Ifc4x3_add2::IfcTendonConduitType::IfcTendonConduitType(IfcEntityInstanceData&& e) : IfcReinforcingElementType(std::move(e)) { } -Ifc4x3_add2::IfcTendonConduitType::IfcTendonConduitType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value v10_PredefinedType) : IfcReinforcingElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTendonConduitTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcTendonConduitType::IfcTendonConduitType(const std::weak_ptr& e) : IfcReinforcingElementType(e) { } +// Ifc4x3_add2::IfcTendonConduitType::IfcTendonConduitType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value v10_PredefinedType) : IfcReinforcingElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTendonConduitTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcTendonType ::Ifc4x3_add2::IfcTendonTypeEnum::Value Ifc4x3_add2::IfcTendonType::PredefinedType() const { return ::Ifc4x3_add2::IfcTendonTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcTendonType::setPredefinedType(::Ifc4x3_add2::IfcTendonTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTendonTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -boost::optional< double > Ifc4x3_add2::IfcTendonType::NominalDiameter() const { if(get_attribute_value(10).isNull()) { return boost::none; } double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcTendonType::setNominalDiameter(boost::optional< double > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< double > Ifc4x3_add2::IfcTendonType::CrossSectionArea() const { if(get_attribute_value(11).isNull()) { return boost::none; } double v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -boost::optional< double > Ifc4x3_add2::IfcTendonType::SheathDiameter() const { if(get_attribute_value(12).isNull()) { return boost::none; } double v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcTendonType::setSheathDiameter(boost::optional< double > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +void Ifc4x3_add2::IfcTendonType::setPredefinedType(const ::Ifc4x3_add2::IfcTendonTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTendonTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +std::optional< double > Ifc4x3_add2::IfcTendonType::NominalDiameter() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } double v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcTendonType::setNominalDiameter(const std::optional< double >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< double > Ifc4x3_add2::IfcTendonType::CrossSectionArea() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } double v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcTendonType::setCrossSectionArea(const std::optional< double >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +std::optional< double > Ifc4x3_add2::IfcTendonType::SheathDiameter() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } double v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcTendonType::setSheathDiameter(const std::optional< double >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -const IfcParse::entity& Ifc4x3_add2::IfcTendonType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1175]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTendonType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1175]); } const IfcParse::entity& Ifc4x3_add2::IfcTendonType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1175]); } -Ifc4x3_add2::IfcTendonType::IfcTendonType(IfcEntityInstanceData&& e) : IfcReinforcingElementType(std::move(e)) { } -Ifc4x3_add2::IfcTendonType::IfcTendonType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTendonTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_SheathDiameter) : IfcReinforcingElementType(IfcEntityInstanceData(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTendonTypeEnum::Class(),(size_t)v10_PredefinedType))); if (v11_NominalDiameter) {set_attribute_value(10, (*v11_NominalDiameter)); } if (v12_CrossSectionArea) {set_attribute_value(11, (*v12_CrossSectionArea)); } if (v13_SheathDiameter) {set_attribute_value(12, (*v13_SheathDiameter)); }; populate_derived(); } +// Ifc4x3_add2::IfcTendonType::IfcTendonType(const std::weak_ptr& e) : IfcReinforcingElementType(e) { } +// Ifc4x3_add2::IfcTendonType::IfcTendonType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTendonTypeEnum::Value v10_PredefinedType, std::optional< double > v11_NominalDiameter, std::optional< double > v12_CrossSectionArea, std::optional< double > v13_SheathDiameter) : IfcReinforcingElementType(const std::weak_ptr&(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTendonTypeEnum::Class(),(size_t)v10_PredefinedType))); if (v11_NominalDiameter) {set_attribute_value(10, (*v11_NominalDiameter)); } if (v12_CrossSectionArea) {set_attribute_value(11, (*v12_CrossSectionArea)); } if (v13_SheathDiameter) {set_attribute_value(12, (*v13_SheathDiameter)); }; populate_derived(); } // Function implementations for IfcTessellatedFaceSet -::Ifc4x3_add2::IfcCartesianPointList3D* Ifc4x3_add2::IfcTessellatedFaceSet::Coordinates() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCartesianPointList3D>(true); } -void Ifc4x3_add2::IfcTessellatedFaceSet::setCoordinates(::Ifc4x3_add2::IfcCartesianPointList3D* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcCartesianPointList3D Ifc4x3_add2::IfcTessellatedFaceSet::Coordinates() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCartesianPointList3D>(); } +void Ifc4x3_add2::IfcTessellatedFaceSet::setCoordinates(const ::Ifc4x3_add2::IfcCartesianPointList3D& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcIndexedColourMap::list::ptr Ifc4x3_add2::IfcTessellatedFaceSet::HasColours() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[542], 0)->as(); } -::Ifc4x3_add2::IfcIndexedTextureMap::list::ptr Ifc4x3_add2::IfcTessellatedFaceSet::HasTextures() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[547], 1)->as(); } +std::vector<::Ifc4x3_add2::IfcIndexedColourMap> Ifc4x3_add2::IfcTessellatedFaceSet::HasColours() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[542], 0)); } +std::vector<::Ifc4x3_add2::IfcIndexedTextureMap> Ifc4x3_add2::IfcTessellatedFaceSet::HasTextures() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[547], 1)); } -const IfcParse::entity& Ifc4x3_add2::IfcTessellatedFaceSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1177]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTessellatedFaceSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1177]); } const IfcParse::entity& Ifc4x3_add2::IfcTessellatedFaceSet::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1177]); } -Ifc4x3_add2::IfcTessellatedFaceSet::IfcTessellatedFaceSet(IfcEntityInstanceData&& e) : IfcTessellatedItem(std::move(e)) { } -Ifc4x3_add2::IfcTessellatedFaceSet::IfcTessellatedFaceSet(::Ifc4x3_add2::IfcCartesianPointList3D* v1_Coordinates) : IfcTessellatedItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, v1_Coordinates ? v1_Coordinates->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcTessellatedFaceSet::IfcTessellatedFaceSet(const std::weak_ptr& e) : IfcTessellatedItem(e) { } +// Ifc4x3_add2::IfcTessellatedFaceSet::IfcTessellatedFaceSet(::Ifc4x3_add2::IfcCartesianPointList3D v1_Coordinates) : IfcTessellatedItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Coordinates));; populate_derived(); } // Function implementations for IfcTessellatedItem -const IfcParse::entity& Ifc4x3_add2::IfcTessellatedItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1178]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTessellatedItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1178]); } const IfcParse::entity& Ifc4x3_add2::IfcTessellatedItem::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1178]); } -Ifc4x3_add2::IfcTessellatedItem::IfcTessellatedItem(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcTessellatedItem::IfcTessellatedItem() : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcTessellatedItem::IfcTessellatedItem(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcTessellatedItem::IfcTessellatedItem() : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcTextLiteral std::string Ifc4x3_add2::IfcTextLiteral::Literal() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcTextLiteral::setLiteral(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcAxis2Placement* Ifc4x3_add2::IfcTextLiteral::Placement() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcAxis2Placement>(true); } -void Ifc4x3_add2::IfcTextLiteral::setPlacement(::Ifc4x3_add2::IfcAxis2Placement* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcTextLiteral::setLiteral(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcAxis2Placement Ifc4x3_add2::IfcTextLiteral::Placement() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcAxis2Placement>(); } +void Ifc4x3_add2::IfcTextLiteral::setPlacement(const ::Ifc4x3_add2::IfcAxis2Placement& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } ::Ifc4x3_add2::IfcTextPath::Value Ifc4x3_add2::IfcTextLiteral::Path() const { return ::Ifc4x3_add2::IfcTextPath::FromString(get_attribute_value(2)); } -void Ifc4x3_add2::IfcTextLiteral::setPath(::Ifc4x3_add2::IfcTextPath::Value v) { set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcTextPath::Class(), (size_t) v));if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcTextLiteral::setPath(const ::Ifc4x3_add2::IfcTextPath::Value& v) { set_attribute_value(2, EnumerationReference(&::Ifc4x3_add2::IfcTextPath::Class(), (size_t) v));if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcTextLiteral::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1184]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTextLiteral::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1184]); } const IfcParse::entity& Ifc4x3_add2::IfcTextLiteral::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1184]); } -Ifc4x3_add2::IfcTextLiteral::IfcTextLiteral(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcTextLiteral::IfcTextLiteral(std::string v1_Literal, ::Ifc4x3_add2::IfcAxis2Placement* v2_Placement, ::Ifc4x3_add2::IfcTextPath::Value v3_Path) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Literal));set_attribute_value(1, v2_Placement ? v2_Placement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcTextPath::Class(),(size_t)v3_Path)));; populate_derived(); } +// Ifc4x3_add2::IfcTextLiteral::IfcTextLiteral(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcTextLiteral::IfcTextLiteral(std::string v1_Literal, ::Ifc4x3_add2::IfcAxis2Placement v2_Placement, ::Ifc4x3_add2::IfcTextPath::Value v3_Path) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Literal));set_attribute_value(1, (v2_Placement));set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcTextPath::Class(),(size_t)v3_Path)));; populate_derived(); } // Function implementations for IfcTextLiteralWithExtent -::Ifc4x3_add2::IfcPlanarExtent* Ifc4x3_add2::IfcTextLiteralWithExtent::Extent() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcPlanarExtent>(true); } -void Ifc4x3_add2::IfcTextLiteralWithExtent::setExtent(::Ifc4x3_add2::IfcPlanarExtent* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcPlanarExtent Ifc4x3_add2::IfcTextLiteralWithExtent::Extent() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcPlanarExtent>(); } +void Ifc4x3_add2::IfcTextLiteralWithExtent::setExtent(const ::Ifc4x3_add2::IfcPlanarExtent& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } std::string Ifc4x3_add2::IfcTextLiteralWithExtent::BoxAlignment() const { std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcTextLiteralWithExtent::setBoxAlignment(std::string v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcTextLiteralWithExtent::setBoxAlignment(const std::string& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcTextLiteralWithExtent::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1185]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTextLiteralWithExtent::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1185]); } const IfcParse::entity& Ifc4x3_add2::IfcTextLiteralWithExtent::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1185]); } -Ifc4x3_add2::IfcTextLiteralWithExtent::IfcTextLiteralWithExtent(IfcEntityInstanceData&& e) : IfcTextLiteral(std::move(e)) { } -Ifc4x3_add2::IfcTextLiteralWithExtent::IfcTextLiteralWithExtent(std::string v1_Literal, ::Ifc4x3_add2::IfcAxis2Placement* v2_Placement, ::Ifc4x3_add2::IfcTextPath::Value v3_Path, ::Ifc4x3_add2::IfcPlanarExtent* v4_Extent, std::string v5_BoxAlignment) : IfcTextLiteral(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Literal));set_attribute_value(1, v2_Placement ? v2_Placement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcTextPath::Class(),(size_t)v3_Path)));set_attribute_value(3, v4_Extent ? v4_Extent->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, (v5_BoxAlignment));; populate_derived(); } +// Ifc4x3_add2::IfcTextLiteralWithExtent::IfcTextLiteralWithExtent(const std::weak_ptr& e) : IfcTextLiteral(e) { } +// Ifc4x3_add2::IfcTextLiteralWithExtent::IfcTextLiteralWithExtent(std::string v1_Literal, ::Ifc4x3_add2::IfcAxis2Placement v2_Placement, ::Ifc4x3_add2::IfcTextPath::Value v3_Path, ::Ifc4x3_add2::IfcPlanarExtent v4_Extent, std::string v5_BoxAlignment) : IfcTextLiteral(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Literal));set_attribute_value(1, (v2_Placement));set_attribute_value(2, (EnumerationReference(&::Ifc4x3_add2::IfcTextPath::Class(),(size_t)v3_Path)));set_attribute_value(3, (v4_Extent));set_attribute_value(4, (v5_BoxAlignment));; populate_derived(); } // Function implementations for IfcTextStyle -::Ifc4x3_add2::IfcTextStyleForDefinedFont* Ifc4x3_add2::IfcTextStyle::TextCharacterAppearance() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcTextStyleForDefinedFont>(true); } -void Ifc4x3_add2::IfcTextStyle::setTextCharacterAppearance(::Ifc4x3_add2::IfcTextStyleForDefinedFont* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcTextStyleTextModel* Ifc4x3_add2::IfcTextStyle::TextStyle() const { if(get_attribute_value(2).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcTextStyleTextModel>(true); } -void Ifc4x3_add2::IfcTextStyle::setTextStyle(::Ifc4x3_add2::IfcTextStyleTextModel* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } -::Ifc4x3_add2::IfcTextFontSelect* Ifc4x3_add2::IfcTextStyle::TextFontStyle() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcTextFontSelect>(true); } -void Ifc4x3_add2::IfcTextStyle::setTextFontStyle(::Ifc4x3_add2::IfcTextFontSelect* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -boost::optional< bool > Ifc4x3_add2::IfcTextStyle::ModelOrDraughting() const { if(get_attribute_value(4).isNull()) { return boost::none; } bool v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +::Ifc4x3_add2::IfcTextStyleForDefinedFont Ifc4x3_add2::IfcTextStyle::TextCharacterAppearance() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcTextStyleForDefinedFont{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcTextStyleForDefinedFont>(); } +void Ifc4x3_add2::IfcTextStyle::setTextCharacterAppearance(const ::Ifc4x3_add2::IfcTextStyleForDefinedFont& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcTextStyleTextModel Ifc4x3_add2::IfcTextStyle::TextStyle() const { if(get_attribute_value(2).isNull()) { return ::Ifc4x3_add2::IfcTextStyleTextModel{}; } return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcTextStyleTextModel>(); } +void Ifc4x3_add2::IfcTextStyle::setTextStyle(const ::Ifc4x3_add2::IfcTextStyleTextModel& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcTextFontSelect Ifc4x3_add2::IfcTextStyle::TextFontStyle() const { return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcTextFontSelect>(); } +void Ifc4x3_add2::IfcTextStyle::setTextFontStyle(const ::Ifc4x3_add2::IfcTextFontSelect& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< bool > Ifc4x3_add2::IfcTextStyle::ModelOrDraughting() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } bool v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcTextStyle::setModelOrDraughting(const std::optional< bool >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcTextStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1187]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTextStyle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1187]); } const IfcParse::entity& Ifc4x3_add2::IfcTextStyle::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1187]); } -Ifc4x3_add2::IfcTextStyle::IfcTextStyle(IfcEntityInstanceData&& e) : IfcPresentationStyle(std::move(e)) { } -Ifc4x3_add2::IfcTextStyle::IfcTextStyle(boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcTextStyleForDefinedFont* v2_TextCharacterAppearance, ::Ifc4x3_add2::IfcTextStyleTextModel* v3_TextStyle, ::Ifc4x3_add2::IfcTextFontSelect* v4_TextFontStyle, boost::optional< bool > v5_ModelOrDraughting) : IfcPresentationStyle(IfcEntityInstanceData(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); }set_attribute_value(1, v2_TextCharacterAppearance ? v2_TextCharacterAppearance->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, v3_TextStyle ? v3_TextStyle->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, v4_TextFontStyle ? v4_TextFontStyle->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_ModelOrDraughting) {set_attribute_value(4, (*v5_ModelOrDraughting)); }; populate_derived(); } +// Ifc4x3_add2::IfcTextStyle::IfcTextStyle(const std::weak_ptr& e) : IfcPresentationStyle(e) { } +// Ifc4x3_add2::IfcTextStyle::IfcTextStyle(std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcTextStyleForDefinedFont v2_TextCharacterAppearance, ::Ifc4x3_add2::IfcTextStyleTextModel v3_TextStyle, ::Ifc4x3_add2::IfcTextFontSelect v4_TextFontStyle, std::optional< bool > v5_ModelOrDraughting) : IfcPresentationStyle(const std::weak_ptr&(in_memory_attribute_storage(5))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_TextCharacterAppearance) {set_attribute_value(1, (*v2_TextCharacterAppearance)); } if (v3_TextStyle) {set_attribute_value(2, (*v3_TextStyle)); }set_attribute_value(3, (v4_TextFontStyle)); if (v5_ModelOrDraughting) {set_attribute_value(4, (*v5_ModelOrDraughting)); }; populate_derived(); } // Function implementations for IfcTextStyleFontModel std::vector< std::string > /*[1:?]*/ Ifc4x3_add2::IfcTextStyleFontModel::FontFamily() const { std::vector< std::string > /*[1:?]*/ v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcTextStyleFontModel::setFontFamily(std::vector< std::string > /*[1:?]*/ v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -boost::optional< std::string > Ifc4x3_add2::IfcTextStyleFontModel::FontStyle() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< std::string > Ifc4x3_add2::IfcTextStyleFontModel::FontVariant() const { if(get_attribute_value(3).isNull()) { return boost::none; } std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< std::string > Ifc4x3_add2::IfcTextStyleFontModel::FontWeight() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -::Ifc4x3_add2::IfcSizeSelect* Ifc4x3_add2::IfcTextStyleFontModel::FontSize() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(5)))->as<::Ifc4x3_add2::IfcSizeSelect>(true); } -void Ifc4x3_add2::IfcTextStyleFontModel::setFontSize(::Ifc4x3_add2::IfcSizeSelect* v) { set_attribute_value(5, v->as());if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcTextStyleFontModel::setFontFamily(const std::vector< std::string > /*[1:?]*/& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< std::string > Ifc4x3_add2::IfcTextStyleFontModel::FontStyle() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcTextStyleFontModel::setFontStyle(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::string > Ifc4x3_add2::IfcTextStyleFontModel::FontVariant() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } std::string v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcTextStyleFontModel::setFontVariant(const std::optional< std::string >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< std::string > Ifc4x3_add2::IfcTextStyleFontModel::FontWeight() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcTextStyleFontModel::setFontWeight(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +::Ifc4x3_add2::IfcSizeSelect Ifc4x3_add2::IfcTextStyleFontModel::FontSize() const { return ((express::Base)(get_attribute_value(5))).as<::Ifc4x3_add2::IfcSizeSelect>(); } +void Ifc4x3_add2::IfcTextStyleFontModel::setFontSize(const ::Ifc4x3_add2::IfcSizeSelect& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcTextStyleFontModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1188]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTextStyleFontModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1188]); } const IfcParse::entity& Ifc4x3_add2::IfcTextStyleFontModel::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1188]); } -Ifc4x3_add2::IfcTextStyleFontModel::IfcTextStyleFontModel(IfcEntityInstanceData&& e) : IfcPreDefinedTextFont(std::move(e)) { } -Ifc4x3_add2::IfcTextStyleFontModel::IfcTextStyleFontModel(std::string v1_Name, std::vector< std::string > /*[1:?]*/ v2_FontFamily, boost::optional< std::string > v3_FontStyle, boost::optional< std::string > v4_FontVariant, boost::optional< std::string > v5_FontWeight, ::Ifc4x3_add2::IfcSizeSelect* v6_FontSize) : IfcPreDefinedTextFont(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_Name));set_attribute_value(1, (v2_FontFamily)); if (v3_FontStyle) {set_attribute_value(2, (*v3_FontStyle)); } if (v4_FontVariant) {set_attribute_value(3, (*v4_FontVariant)); } if (v5_FontWeight) {set_attribute_value(4, (*v5_FontWeight)); }set_attribute_value(5, v6_FontSize ? v6_FontSize->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcTextStyleFontModel::IfcTextStyleFontModel(const std::weak_ptr& e) : IfcPreDefinedTextFont(e) { } +// Ifc4x3_add2::IfcTextStyleFontModel::IfcTextStyleFontModel(std::string v1_Name, std::vector< std::string > /*[1:?]*/ v2_FontFamily, std::optional< std::string > v3_FontStyle, std::optional< std::string > v4_FontVariant, std::optional< std::string > v5_FontWeight, ::Ifc4x3_add2::IfcSizeSelect v6_FontSize) : IfcPreDefinedTextFont(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_Name));set_attribute_value(1, (v2_FontFamily)); if (v3_FontStyle) {set_attribute_value(2, (*v3_FontStyle)); } if (v4_FontVariant) {set_attribute_value(3, (*v4_FontVariant)); } if (v5_FontWeight) {set_attribute_value(4, (*v5_FontWeight)); }set_attribute_value(5, (v6_FontSize));; populate_derived(); } // Function implementations for IfcTextStyleForDefinedFont -::Ifc4x3_add2::IfcColour* Ifc4x3_add2::IfcTextStyleForDefinedFont::Colour() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcColour>(true); } -void Ifc4x3_add2::IfcTextStyleForDefinedFont::setColour(::Ifc4x3_add2::IfcColour* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcColour* Ifc4x3_add2::IfcTextStyleForDefinedFont::BackgroundColour() const { if(get_attribute_value(1).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcColour>(true); } -void Ifc4x3_add2::IfcTextStyleForDefinedFont::setBackgroundColour(::Ifc4x3_add2::IfcColour* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcColour Ifc4x3_add2::IfcTextStyleForDefinedFont::Colour() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcColour>(); } +void Ifc4x3_add2::IfcTextStyleForDefinedFont::setColour(const ::Ifc4x3_add2::IfcColour& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcColour Ifc4x3_add2::IfcTextStyleForDefinedFont::BackgroundColour() const { if(get_attribute_value(1).isNull()) { return ::Ifc4x3_add2::IfcColour{}; } return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcColour>(); } +void Ifc4x3_add2::IfcTextStyleForDefinedFont::setBackgroundColour(const ::Ifc4x3_add2::IfcColour& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcTextStyleForDefinedFont::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1189]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTextStyleForDefinedFont::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1189]); } const IfcParse::entity& Ifc4x3_add2::IfcTextStyleForDefinedFont::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1189]); } -Ifc4x3_add2::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(::Ifc4x3_add2::IfcColour* v1_Colour, ::Ifc4x3_add2::IfcColour* v2_BackgroundColour) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Colour ? v1_Colour->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, v2_BackgroundColour ? v2_BackgroundColour->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(::Ifc4x3_add2::IfcColour v1_Colour, ::Ifc4x3_add2::IfcColour v2_BackgroundColour) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Colour)); if (v2_BackgroundColour) {set_attribute_value(1, (*v2_BackgroundColour)); }; populate_derived(); } // Function implementations for IfcTextStyleTextModel -::Ifc4x3_add2::IfcSizeSelect* Ifc4x3_add2::IfcTextStyleTextModel::TextIndent() const { if(get_attribute_value(0).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcSizeSelect>(true); } -void Ifc4x3_add2::IfcTextStyleTextModel::setTextIndent(::Ifc4x3_add2::IfcSizeSelect* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -boost::optional< std::string > Ifc4x3_add2::IfcTextStyleTextModel::TextAlign() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< std::string > Ifc4x3_add2::IfcTextStyleTextModel::TextDecoration() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -::Ifc4x3_add2::IfcSizeSelect* Ifc4x3_add2::IfcTextStyleTextModel::LetterSpacing() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcSizeSelect>(true); } -void Ifc4x3_add2::IfcTextStyleTextModel::setLetterSpacing(::Ifc4x3_add2::IfcSizeSelect* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -::Ifc4x3_add2::IfcSizeSelect* Ifc4x3_add2::IfcTextStyleTextModel::WordSpacing() const { if(get_attribute_value(4).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(4)))->as<::Ifc4x3_add2::IfcSizeSelect>(true); } -void Ifc4x3_add2::IfcTextStyleTextModel::setWordSpacing(::Ifc4x3_add2::IfcSizeSelect* v) { set_attribute_value(4, v->as());if constexpr (false)unset_attribute_value(4); } -boost::optional< std::string > Ifc4x3_add2::IfcTextStyleTextModel::TextTransform() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -::Ifc4x3_add2::IfcSizeSelect* Ifc4x3_add2::IfcTextStyleTextModel::LineHeight() const { if(get_attribute_value(6).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(6)))->as<::Ifc4x3_add2::IfcSizeSelect>(true); } -void Ifc4x3_add2::IfcTextStyleTextModel::setLineHeight(::Ifc4x3_add2::IfcSizeSelect* v) { set_attribute_value(6, v->as());if constexpr (false)unset_attribute_value(6); } +::Ifc4x3_add2::IfcSizeSelect Ifc4x3_add2::IfcTextStyleTextModel::TextIndent() const { if(get_attribute_value(0).isNull()) { return ::Ifc4x3_add2::IfcSizeSelect{}; } return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcSizeSelect>(); } +void Ifc4x3_add2::IfcTextStyleTextModel::setTextIndent(const ::Ifc4x3_add2::IfcSizeSelect& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< std::string > Ifc4x3_add2::IfcTextStyleTextModel::TextAlign() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcTextStyleTextModel::setTextAlign(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< std::string > Ifc4x3_add2::IfcTextStyleTextModel::TextDecoration() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::string v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcTextStyleTextModel::setTextDecoration(const std::optional< std::string >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +::Ifc4x3_add2::IfcSizeSelect Ifc4x3_add2::IfcTextStyleTextModel::LetterSpacing() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcSizeSelect{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcSizeSelect>(); } +void Ifc4x3_add2::IfcTextStyleTextModel::setLetterSpacing(const ::Ifc4x3_add2::IfcSizeSelect& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +::Ifc4x3_add2::IfcSizeSelect Ifc4x3_add2::IfcTextStyleTextModel::WordSpacing() const { if(get_attribute_value(4).isNull()) { return ::Ifc4x3_add2::IfcSizeSelect{}; } return ((express::Base)(get_attribute_value(4))).as<::Ifc4x3_add2::IfcSizeSelect>(); } +void Ifc4x3_add2::IfcTextStyleTextModel::setWordSpacing(const ::Ifc4x3_add2::IfcSizeSelect& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +std::optional< std::string > Ifc4x3_add2::IfcTextStyleTextModel::TextTransform() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcTextStyleTextModel::setTextTransform(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +::Ifc4x3_add2::IfcSizeSelect Ifc4x3_add2::IfcTextStyleTextModel::LineHeight() const { if(get_attribute_value(6).isNull()) { return ::Ifc4x3_add2::IfcSizeSelect{}; } return ((express::Base)(get_attribute_value(6))).as<::Ifc4x3_add2::IfcSizeSelect>(); } +void Ifc4x3_add2::IfcTextStyleTextModel::setLineHeight(const ::Ifc4x3_add2::IfcSizeSelect& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcTextStyleTextModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1190]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTextStyleTextModel::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1190]); } const IfcParse::entity& Ifc4x3_add2::IfcTextStyleTextModel::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1190]); } -Ifc4x3_add2::IfcTextStyleTextModel::IfcTextStyleTextModel(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcTextStyleTextModel::IfcTextStyleTextModel(::Ifc4x3_add2::IfcSizeSelect* v1_TextIndent, boost::optional< std::string > v2_TextAlign, boost::optional< std::string > v3_TextDecoration, ::Ifc4x3_add2::IfcSizeSelect* v4_LetterSpacing, ::Ifc4x3_add2::IfcSizeSelect* v5_WordSpacing, boost::optional< std::string > v6_TextTransform, ::Ifc4x3_add2::IfcSizeSelect* v7_LineHeight) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, v1_TextIndent ? v1_TextIndent->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_TextAlign) {set_attribute_value(1, (*v2_TextAlign)); } if (v3_TextDecoration) {set_attribute_value(2, (*v3_TextDecoration)); }set_attribute_value(3, v4_LetterSpacing ? v4_LetterSpacing->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(4, v5_WordSpacing ? v5_WordSpacing->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v6_TextTransform) {set_attribute_value(5, (*v6_TextTransform)); }set_attribute_value(6, v7_LineHeight ? v7_LineHeight->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcTextStyleTextModel::IfcTextStyleTextModel(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcTextStyleTextModel::IfcTextStyleTextModel(::Ifc4x3_add2::IfcSizeSelect v1_TextIndent, std::optional< std::string > v2_TextAlign, std::optional< std::string > v3_TextDecoration, ::Ifc4x3_add2::IfcSizeSelect v4_LetterSpacing, ::Ifc4x3_add2::IfcSizeSelect v5_WordSpacing, std::optional< std::string > v6_TextTransform, ::Ifc4x3_add2::IfcSizeSelect v7_LineHeight) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(7))) { if (v1_TextIndent) {set_attribute_value(0, (*v1_TextIndent)); } if (v2_TextAlign) {set_attribute_value(1, (*v2_TextAlign)); } if (v3_TextDecoration) {set_attribute_value(2, (*v3_TextDecoration)); } if (v4_LetterSpacing) {set_attribute_value(3, (*v4_LetterSpacing)); } if (v5_WordSpacing) {set_attribute_value(4, (*v5_WordSpacing)); } if (v6_TextTransform) {set_attribute_value(5, (*v6_TextTransform)); } if (v7_LineHeight) {set_attribute_value(6, (*v7_LineHeight)); }; populate_derived(); } // Function implementations for IfcTextureCoordinate -aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr Ifc4x3_add2::IfcTextureCoordinate::Maps() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcSurfaceTexture >(); } -void Ifc4x3_add2::IfcTextureCoordinate::setMaps(aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > Ifc4x3_add2::IfcTextureCoordinate::Maps() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcSurfaceTexture>(es); } +void Ifc4x3_add2::IfcTextureCoordinate::setMaps(const std::vector< ::Ifc4x3_add2::IfcSurfaceTexture >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcTextureCoordinate::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1192]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTextureCoordinate::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1192]); } const IfcParse::entity& Ifc4x3_add2::IfcTextureCoordinate::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1192]); } -Ifc4x3_add2::IfcTextureCoordinate::IfcTextureCoordinate(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcTextureCoordinate::IfcTextureCoordinate(aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v1_Maps) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Maps)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcTextureCoordinate::IfcTextureCoordinate(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcTextureCoordinate::IfcTextureCoordinate(std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > v1_Maps) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Maps)->generalize());; populate_derived(); } // Function implementations for IfcTextureCoordinateGenerator std::string Ifc4x3_add2::IfcTextureCoordinateGenerator::Mode() const { std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcTextureCoordinateGenerator::setMode(std::string v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -boost::optional< std::vector< double > /*[1:?]*/ > Ifc4x3_add2::IfcTextureCoordinateGenerator::Parameter() const { if(get_attribute_value(2).isNull()) { return boost::none; } std::vector< double > /*[1:?]*/ v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +void Ifc4x3_add2::IfcTextureCoordinateGenerator::setMode(const std::string& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< std::vector< double > /*[1:?]*/ > Ifc4x3_add2::IfcTextureCoordinateGenerator::Parameter() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } std::vector< double > /*[1:?]*/ v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcTextureCoordinateGenerator::setParameter(const std::optional< std::vector< double > /*[1:?]*/ >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -const IfcParse::entity& Ifc4x3_add2::IfcTextureCoordinateGenerator::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1193]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTextureCoordinateGenerator::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1193]); } const IfcParse::entity& Ifc4x3_add2::IfcTextureCoordinateGenerator::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1193]); } -Ifc4x3_add2::IfcTextureCoordinateGenerator::IfcTextureCoordinateGenerator(IfcEntityInstanceData&& e) : IfcTextureCoordinate(std::move(e)) { } -Ifc4x3_add2::IfcTextureCoordinateGenerator::IfcTextureCoordinateGenerator(aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v1_Maps, std::string v2_Mode, boost::optional< std::vector< double > /*[1:?]*/ > v3_Parameter) : IfcTextureCoordinate(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Maps)->generalize());set_attribute_value(1, (v2_Mode)); if (v3_Parameter) {set_attribute_value(2, (*v3_Parameter)); }; populate_derived(); } +// Ifc4x3_add2::IfcTextureCoordinateGenerator::IfcTextureCoordinateGenerator(const std::weak_ptr& e) : IfcTextureCoordinate(e) { } +// Ifc4x3_add2::IfcTextureCoordinateGenerator::IfcTextureCoordinateGenerator(std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > v1_Maps, std::string v2_Mode, std::optional< std::vector< double > /*[1:?]*/ > v3_Parameter) : IfcTextureCoordinate(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Maps)->generalize());set_attribute_value(1, (v2_Mode)); if (v3_Parameter) {set_attribute_value(2, (*v3_Parameter)); }; populate_derived(); } // Function implementations for IfcTextureCoordinateIndices std::vector< int > /*[3:?]*/ Ifc4x3_add2::IfcTextureCoordinateIndices::TexCoordIndex() const { std::vector< int > /*[3:?]*/ v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcTextureCoordinateIndices::setTexCoordIndex(std::vector< int > /*[3:?]*/ v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcIndexedPolygonalFace* Ifc4x3_add2::IfcTextureCoordinateIndices::TexCoordsOf() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcIndexedPolygonalFace>(true); } -void Ifc4x3_add2::IfcTextureCoordinateIndices::setTexCoordsOf(::Ifc4x3_add2::IfcIndexedPolygonalFace* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcTextureCoordinateIndices::setTexCoordIndex(const std::vector< int > /*[3:?]*/& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcIndexedPolygonalFace Ifc4x3_add2::IfcTextureCoordinateIndices::TexCoordsOf() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcIndexedPolygonalFace>(); } +void Ifc4x3_add2::IfcTextureCoordinateIndices::setTexCoordsOf(const ::Ifc4x3_add2::IfcIndexedPolygonalFace& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcIndexedPolygonalTextureMap::list::ptr Ifc4x3_add2::IfcTextureCoordinateIndices::ToTexMap() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[546], 3)->as(); } +std::vector<::Ifc4x3_add2::IfcIndexedPolygonalTextureMap> Ifc4x3_add2::IfcTextureCoordinateIndices::ToTexMap() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[546], 3)); } -const IfcParse::entity& Ifc4x3_add2::IfcTextureCoordinateIndices::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1194]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTextureCoordinateIndices::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1194]); } const IfcParse::entity& Ifc4x3_add2::IfcTextureCoordinateIndices::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1194]); } -Ifc4x3_add2::IfcTextureCoordinateIndices::IfcTextureCoordinateIndices(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcTextureCoordinateIndices::IfcTextureCoordinateIndices(std::vector< int > /*[3:?]*/ v1_TexCoordIndex, ::Ifc4x3_add2::IfcIndexedPolygonalFace* v2_TexCoordsOf) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_TexCoordIndex));set_attribute_value(1, v2_TexCoordsOf ? v2_TexCoordsOf->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcTextureCoordinateIndices::IfcTextureCoordinateIndices(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcTextureCoordinateIndices::IfcTextureCoordinateIndices(std::vector< int > /*[3:?]*/ v1_TexCoordIndex, ::Ifc4x3_add2::IfcIndexedPolygonalFace v2_TexCoordsOf) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_TexCoordIndex));set_attribute_value(1, (v2_TexCoordsOf));; populate_derived(); } // Function implementations for IfcTextureCoordinateIndicesWithVoids std::vector< std::vector< int > > Ifc4x3_add2::IfcTextureCoordinateIndicesWithVoids::InnerTexCoordIndices() const { std::vector< std::vector< int > > v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcTextureCoordinateIndicesWithVoids::setInnerTexCoordIndices(std::vector< std::vector< int > > v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcTextureCoordinateIndicesWithVoids::setInnerTexCoordIndices(const std::vector< std::vector< int > >& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcTextureCoordinateIndicesWithVoids::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1195]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTextureCoordinateIndicesWithVoids::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1195]); } const IfcParse::entity& Ifc4x3_add2::IfcTextureCoordinateIndicesWithVoids::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1195]); } -Ifc4x3_add2::IfcTextureCoordinateIndicesWithVoids::IfcTextureCoordinateIndicesWithVoids(IfcEntityInstanceData&& e) : IfcTextureCoordinateIndices(std::move(e)) { } -Ifc4x3_add2::IfcTextureCoordinateIndicesWithVoids::IfcTextureCoordinateIndicesWithVoids(std::vector< int > /*[3:?]*/ v1_TexCoordIndex, ::Ifc4x3_add2::IfcIndexedPolygonalFace* v2_TexCoordsOf, std::vector< std::vector< int > > v3_InnerTexCoordIndices) : IfcTextureCoordinateIndices(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_TexCoordIndex));set_attribute_value(1, v2_TexCoordsOf ? v2_TexCoordsOf->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(2, (v3_InnerTexCoordIndices));; populate_derived(); } +// Ifc4x3_add2::IfcTextureCoordinateIndicesWithVoids::IfcTextureCoordinateIndicesWithVoids(const std::weak_ptr& e) : IfcTextureCoordinateIndices(e) { } +// Ifc4x3_add2::IfcTextureCoordinateIndicesWithVoids::IfcTextureCoordinateIndicesWithVoids(std::vector< int > /*[3:?]*/ v1_TexCoordIndex, ::Ifc4x3_add2::IfcIndexedPolygonalFace v2_TexCoordsOf, std::vector< std::vector< int > > v3_InnerTexCoordIndices) : IfcTextureCoordinateIndices(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_TexCoordIndex));set_attribute_value(1, (v2_TexCoordsOf));set_attribute_value(2, (v3_InnerTexCoordIndices));; populate_derived(); } // Function implementations for IfcTextureMap -aggregate_of< ::Ifc4x3_add2::IfcTextureVertex >::ptr Ifc4x3_add2::IfcTextureMap::Vertices() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcTextureVertex >(); } -void Ifc4x3_add2::IfcTextureMap::setVertices(aggregate_of< ::Ifc4x3_add2::IfcTextureVertex >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } -::Ifc4x3_add2::IfcFace* Ifc4x3_add2::IfcTextureMap::MappedTo() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(2)))->as<::Ifc4x3_add2::IfcFace>(true); } -void Ifc4x3_add2::IfcTextureMap::setMappedTo(::Ifc4x3_add2::IfcFace* v) { set_attribute_value(2, v->as());if constexpr (false)unset_attribute_value(2); } +std::vector< ::Ifc4x3_add2::IfcTextureVertex > Ifc4x3_add2::IfcTextureMap::Vertices() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcTextureVertex>(es); } +void Ifc4x3_add2::IfcTextureMap::setVertices(const std::vector< ::Ifc4x3_add2::IfcTextureVertex >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } +::Ifc4x3_add2::IfcFace Ifc4x3_add2::IfcTextureMap::MappedTo() const { return ((express::Base)(get_attribute_value(2))).as<::Ifc4x3_add2::IfcFace>(); } +void Ifc4x3_add2::IfcTextureMap::setMappedTo(const ::Ifc4x3_add2::IfcFace& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcTextureMap::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1196]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTextureMap::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1196]); } const IfcParse::entity& Ifc4x3_add2::IfcTextureMap::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1196]); } -Ifc4x3_add2::IfcTextureMap::IfcTextureMap(IfcEntityInstanceData&& e) : IfcTextureCoordinate(std::move(e)) { } -Ifc4x3_add2::IfcTextureMap::IfcTextureMap(aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v1_Maps, aggregate_of< ::Ifc4x3_add2::IfcTextureVertex >::ptr v2_Vertices, ::Ifc4x3_add2::IfcFace* v3_MappedTo) : IfcTextureCoordinate(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Maps)->generalize());set_attribute_value(1, (v2_Vertices)->generalize());set_attribute_value(2, v3_MappedTo ? v3_MappedTo->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcTextureMap::IfcTextureMap(const std::weak_ptr& e) : IfcTextureCoordinate(e) { } +// Ifc4x3_add2::IfcTextureMap::IfcTextureMap(std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > v1_Maps, std::vector< ::Ifc4x3_add2::IfcTextureVertex > v2_Vertices, ::Ifc4x3_add2::IfcFace v3_MappedTo) : IfcTextureCoordinate(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Maps)->generalize());set_attribute_value(1, (v2_Vertices)->generalize());set_attribute_value(2, (v3_MappedTo));; populate_derived(); } // Function implementations for IfcTextureVertex std::vector< double > /*[2:2]*/ Ifc4x3_add2::IfcTextureVertex::Coordinates() const { std::vector< double > /*[2:2]*/ v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcTextureVertex::setCoordinates(std::vector< double > /*[2:2]*/ v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcTextureVertex::setCoordinates(const std::vector< double > /*[2:2]*/& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcTextureVertex::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1197]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTextureVertex::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1197]); } const IfcParse::entity& Ifc4x3_add2::IfcTextureVertex::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1197]); } -Ifc4x3_add2::IfcTextureVertex::IfcTextureVertex(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcTextureVertex::IfcTextureVertex(std::vector< double > /*[2:2]*/ v1_Coordinates) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Coordinates));; populate_derived(); } +// Ifc4x3_add2::IfcTextureVertex::IfcTextureVertex(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcTextureVertex::IfcTextureVertex(std::vector< double > /*[2:2]*/ v1_Coordinates) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Coordinates));; populate_derived(); } // Function implementations for IfcTextureVertexList std::vector< std::vector< double > > Ifc4x3_add2::IfcTextureVertexList::TexCoordsList() const { std::vector< std::vector< double > > v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcTextureVertexList::setTexCoordsList(std::vector< std::vector< double > > v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcTextureVertexList::setTexCoordsList(const std::vector< std::vector< double > >& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcTextureVertexList::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1198]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTextureVertexList::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1198]); } const IfcParse::entity& Ifc4x3_add2::IfcTextureVertexList::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1198]); } -Ifc4x3_add2::IfcTextureVertexList::IfcTextureVertexList(IfcEntityInstanceData&& e) : IfcPresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcTextureVertexList::IfcTextureVertexList(std::vector< std::vector< double > > v1_TexCoordsList) : IfcPresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_TexCoordsList));; populate_derived(); } +// Ifc4x3_add2::IfcTextureVertexList::IfcTextureVertexList(const std::weak_ptr& e) : IfcPresentationItem(e) { } +// Ifc4x3_add2::IfcTextureVertexList::IfcTextureVertexList(std::vector< std::vector< double > > v1_TexCoordsList) : IfcPresentationItem(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_TexCoordsList));; populate_derived(); } // Function implementations for IfcThirdOrderPolynomialSpiral double Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::CubicTerm() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::setCubicTerm(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -boost::optional< double > Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::QuadraticTerm() const { if(get_attribute_value(2).isNull()) { return boost::none; } double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::setQuadraticTerm(boost::optional< double > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } -boost::optional< double > Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::LinearTerm() const { if(get_attribute_value(3).isNull()) { return boost::none; } double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::setLinearTerm(boost::optional< double > v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } -boost::optional< double > Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::ConstantTerm() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::setConstantTerm(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +void Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::setCubicTerm(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +std::optional< double > Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::QuadraticTerm() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } double v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::setQuadraticTerm(const std::optional< double >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< double > Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::LinearTerm() const { if(get_attribute_value(3).isNull()) { return std::nullopt; } double v = get_attribute_value(3); return v; } +void Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::setLinearTerm(const std::optional< double >& v) { if (v) {set_attribute_value(3, *v);} else {unset_attribute_value(3);} } +std::optional< double > Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::ConstantTerm() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::setConstantTerm(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1205]); } +// const IfcParse::entity& Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1205]); } const IfcParse::entity& Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1205]); } -Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::IfcThirdOrderPolynomialSpiral(IfcEntityInstanceData&& e) : IfcSpiral(std::move(e)) { } -Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::IfcThirdOrderPolynomialSpiral(::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_CubicTerm, boost::optional< double > v3_QuadraticTerm, boost::optional< double > v4_LinearTerm, boost::optional< double > v5_ConstantTerm) : IfcSpiral(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_CubicTerm)); if (v3_QuadraticTerm) {set_attribute_value(2, (*v3_QuadraticTerm)); } if (v4_LinearTerm) {set_attribute_value(3, (*v4_LinearTerm)); } if (v5_ConstantTerm) {set_attribute_value(4, (*v5_ConstantTerm)); }; populate_derived(); } +// Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::IfcThirdOrderPolynomialSpiral(const std::weak_ptr& e) : IfcSpiral(e) { } +// Ifc4x3_add2::IfcThirdOrderPolynomialSpiral::IfcThirdOrderPolynomialSpiral(::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_CubicTerm, std::optional< double > v3_QuadraticTerm, std::optional< double > v4_LinearTerm, std::optional< double > v5_ConstantTerm) : IfcSpiral(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_CubicTerm)); if (v3_QuadraticTerm) {set_attribute_value(2, (*v3_QuadraticTerm)); } if (v4_LinearTerm) {set_attribute_value(3, (*v4_LinearTerm)); } if (v5_ConstantTerm) {set_attribute_value(4, (*v5_ConstantTerm)); }; populate_derived(); } // Function implementations for IfcTimePeriod std::string Ifc4x3_add2::IfcTimePeriod::StartTime() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcTimePeriod::setStartTime(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +void Ifc4x3_add2::IfcTimePeriod::setStartTime(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } std::string Ifc4x3_add2::IfcTimePeriod::EndTime() const { std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcTimePeriod::setEndTime(std::string v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcTimePeriod::setEndTime(const std::string& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcTimePeriod::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1209]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTimePeriod::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1209]); } const IfcParse::entity& Ifc4x3_add2::IfcTimePeriod::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1209]); } -Ifc4x3_add2::IfcTimePeriod::IfcTimePeriod(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcTimePeriod::IfcTimePeriod(std::string v1_StartTime, std::string v2_EndTime) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_StartTime));set_attribute_value(1, (v2_EndTime));; populate_derived(); } +// Ifc4x3_add2::IfcTimePeriod::IfcTimePeriod(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcTimePeriod::IfcTimePeriod(std::string v1_StartTime, std::string v2_EndTime) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_StartTime));set_attribute_value(1, (v2_EndTime));; populate_derived(); } // Function implementations for IfcTimeSeries std::string Ifc4x3_add2::IfcTimeSeries::Name() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcTimeSeries::setName(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -boost::optional< std::string > Ifc4x3_add2::IfcTimeSeries::Description() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::string v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcTimeSeries::setDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +void Ifc4x3_add2::IfcTimeSeries::setName(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::optional< std::string > Ifc4x3_add2::IfcTimeSeries::Description() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::string v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcTimeSeries::setDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } std::string Ifc4x3_add2::IfcTimeSeries::StartTime() const { std::string v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcTimeSeries::setStartTime(std::string v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcTimeSeries::setStartTime(const std::string& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } std::string Ifc4x3_add2::IfcTimeSeries::EndTime() const { std::string v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcTimeSeries::setEndTime(std::string v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcTimeSeries::setEndTime(const std::string& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value Ifc4x3_add2::IfcTimeSeries::TimeSeriesDataType() const { return ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::FromString(get_attribute_value(4)); } -void Ifc4x3_add2::IfcTimeSeries::setTimeSeriesDataType(::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value v) { set_attribute_value(4, EnumerationReference(&::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcTimeSeries::setTimeSeriesDataType(const ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value& v) { set_attribute_value(4, EnumerationReference(&::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(4); } ::Ifc4x3_add2::IfcDataOriginEnum::Value Ifc4x3_add2::IfcTimeSeries::DataOrigin() const { return ::Ifc4x3_add2::IfcDataOriginEnum::FromString(get_attribute_value(5)); } -void Ifc4x3_add2::IfcTimeSeries::setDataOrigin(::Ifc4x3_add2::IfcDataOriginEnum::Value v) { set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(5); } -boost::optional< std::string > Ifc4x3_add2::IfcTimeSeries::UserDefinedDataOrigin() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -::Ifc4x3_add2::IfcUnit* Ifc4x3_add2::IfcTimeSeries::Unit() const { if(get_attribute_value(7).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(7)))->as<::Ifc4x3_add2::IfcUnit>(true); } -void Ifc4x3_add2::IfcTimeSeries::setUnit(::Ifc4x3_add2::IfcUnit* v) { set_attribute_value(7, v->as());if constexpr (false)unset_attribute_value(7); } +void Ifc4x3_add2::IfcTimeSeries::setDataOrigin(const ::Ifc4x3_add2::IfcDataOriginEnum::Value& v) { set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(5); } +std::optional< std::string > Ifc4x3_add2::IfcTimeSeries::UserDefinedDataOrigin() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcTimeSeries::setUserDefinedDataOrigin(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +::Ifc4x3_add2::IfcUnit Ifc4x3_add2::IfcTimeSeries::Unit() const { if(get_attribute_value(7).isNull()) { return ::Ifc4x3_add2::IfcUnit{}; } return ((express::Base)(get_attribute_value(7))).as<::Ifc4x3_add2::IfcUnit>(); } +void Ifc4x3_add2::IfcTimeSeries::setUnit(const ::Ifc4x3_add2::IfcUnit& v) { set_attribute_value(7, v);if constexpr (false)unset_attribute_value(7); } -::Ifc4x3_add2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_add2::IfcTimeSeries::HasExternalReference() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[427], 3)->as(); } +std::vector<::Ifc4x3_add2::IfcExternalReferenceRelationship> Ifc4x3_add2::IfcTimeSeries::HasExternalReference() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[427], 3)); } -const IfcParse::entity& Ifc4x3_add2::IfcTimeSeries::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1210]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTimeSeries::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1210]); } const IfcParse::entity& Ifc4x3_add2::IfcTimeSeries::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1210]); } -Ifc4x3_add2::IfcTimeSeries::IfcTimeSeries(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcTimeSeries::IfcTimeSeries(std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_add2::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcUnit* v8_Unit) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_StartTime));set_attribute_value(3, (v4_EndTime));set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Class(),(size_t)v5_TimeSeriesDataType)));set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)v6_DataOrigin))); if (v7_UserDefinedDataOrigin) {set_attribute_value(6, (*v7_UserDefinedDataOrigin)); }set_attribute_value(7, v8_Unit ? v8_Unit->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcTimeSeries::IfcTimeSeries(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcTimeSeries::IfcTimeSeries(std::string v1_Name, std::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_add2::IfcDataOriginEnum::Value v6_DataOrigin, std::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcUnit v8_Unit) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_Name)); if (v2_Description) {set_attribute_value(1, (*v2_Description)); }set_attribute_value(2, (v3_StartTime));set_attribute_value(3, (v4_EndTime));set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Class(),(size_t)v5_TimeSeriesDataType)));set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)v6_DataOrigin))); if (v7_UserDefinedDataOrigin) {set_attribute_value(6, (*v7_UserDefinedDataOrigin)); } if (v8_Unit) {set_attribute_value(7, (*v8_Unit)); }; populate_derived(); } // Function implementations for IfcTimeSeriesValue -aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr Ifc4x3_add2::IfcTimeSeriesValue::ListValues() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcValue >(); } -void Ifc4x3_add2::IfcTimeSeriesValue::setListValues(aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcValue > Ifc4x3_add2::IfcTimeSeriesValue::ListValues() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcValue>(es); } +void Ifc4x3_add2::IfcTimeSeriesValue::setListValues(const std::vector< ::Ifc4x3_add2::IfcValue >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcTimeSeriesValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1212]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTimeSeriesValue::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1212]); } const IfcParse::entity& Ifc4x3_add2::IfcTimeSeriesValue::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1212]); } -Ifc4x3_add2::IfcTimeSeriesValue::IfcTimeSeriesValue(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcTimeSeriesValue::IfcTimeSeriesValue(aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr v1_ListValues) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_ListValues)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcTimeSeriesValue::IfcTimeSeriesValue(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcTimeSeriesValue::IfcTimeSeriesValue(std::vector< ::Ifc4x3_add2::IfcValue > v1_ListValues) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_ListValues)->generalize());; populate_derived(); } // Function implementations for IfcTopologicalRepresentationItem -const IfcParse::entity& Ifc4x3_add2::IfcTopologicalRepresentationItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1214]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTopologicalRepresentationItem::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1214]); } const IfcParse::entity& Ifc4x3_add2::IfcTopologicalRepresentationItem::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1214]); } -Ifc4x3_add2::IfcTopologicalRepresentationItem::IfcTopologicalRepresentationItem(IfcEntityInstanceData&& e) : IfcRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcTopologicalRepresentationItem::IfcTopologicalRepresentationItem() : IfcRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcTopologicalRepresentationItem::IfcTopologicalRepresentationItem(const std::weak_ptr& e) : IfcRepresentationItem(e) { } +// Ifc4x3_add2::IfcTopologicalRepresentationItem::IfcTopologicalRepresentationItem() : IfcRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcTopologyRepresentation -const IfcParse::entity& Ifc4x3_add2::IfcTopologyRepresentation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1215]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTopologyRepresentation::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1215]); } const IfcParse::entity& Ifc4x3_add2::IfcTopologyRepresentation::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1215]); } -Ifc4x3_add2::IfcTopologyRepresentation::IfcTopologyRepresentation(IfcEntityInstanceData&& e) : IfcShapeModel(std::move(e)) { } -Ifc4x3_add2::IfcTopologyRepresentation::IfcTopologyRepresentation(::Ifc4x3_add2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr v4_Items) : IfcShapeModel(IfcEntityInstanceData(in_memory_attribute_storage(4))) { set_attribute_value(0, v1_ContextOfItems ? v1_ContextOfItems->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_RepresentationIdentifier) {set_attribute_value(1, (*v2_RepresentationIdentifier)); } if (v3_RepresentationType) {set_attribute_value(2, (*v3_RepresentationType)); }set_attribute_value(3, (v4_Items)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcTopologyRepresentation::IfcTopologyRepresentation(const std::weak_ptr& e) : IfcShapeModel(e) { } +// Ifc4x3_add2::IfcTopologyRepresentation::IfcTopologyRepresentation(::Ifc4x3_add2::IfcRepresentationContext v1_ContextOfItems, std::optional< std::string > v2_RepresentationIdentifier, std::optional< std::string > v3_RepresentationType, std::vector< ::Ifc4x3_add2::IfcRepresentationItem > v4_Items) : IfcShapeModel(const std::weak_ptr&(in_memory_attribute_storage(4))) { set_attribute_value(0, (v1_ContextOfItems)); if (v2_RepresentationIdentifier) {set_attribute_value(1, (*v2_RepresentationIdentifier)); } if (v3_RepresentationType) {set_attribute_value(2, (*v3_RepresentationType)); }set_attribute_value(3, (v4_Items)->generalize());; populate_derived(); } // Function implementations for IfcToroidalSurface double Ifc4x3_add2::IfcToroidalSurface::MajorRadius() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcToroidalSurface::setMajorRadius(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcToroidalSurface::setMajorRadius(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } double Ifc4x3_add2::IfcToroidalSurface::MinorRadius() const { double v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcToroidalSurface::setMinorRadius(double v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } +void Ifc4x3_add2::IfcToroidalSurface::setMinorRadius(const double& v) { set_attribute_value(2, v);if constexpr (false)unset_attribute_value(2); } -const IfcParse::entity& Ifc4x3_add2::IfcToroidalSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1216]); } +// const IfcParse::entity& Ifc4x3_add2::IfcToroidalSurface::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1216]); } const IfcParse::entity& Ifc4x3_add2::IfcToroidalSurface::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1216]); } -Ifc4x3_add2::IfcToroidalSurface::IfcToroidalSurface(IfcEntityInstanceData&& e) : IfcElementarySurface(std::move(e)) { } -Ifc4x3_add2::IfcToroidalSurface::IfcToroidalSurface(::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_MajorRadius, double v3_MinorRadius) : IfcElementarySurface(IfcEntityInstanceData(in_memory_attribute_storage(3))) { set_attribute_value(0, v1_Position ? v1_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_MajorRadius));set_attribute_value(2, (v3_MinorRadius));; populate_derived(); } +// Ifc4x3_add2::IfcToroidalSurface::IfcToroidalSurface(const std::weak_ptr& e) : IfcElementarySurface(e) { } +// Ifc4x3_add2::IfcToroidalSurface::IfcToroidalSurface(::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_MajorRadius, double v3_MinorRadius) : IfcElementarySurface(const std::weak_ptr&(in_memory_attribute_storage(3))) { set_attribute_value(0, (v1_Position));set_attribute_value(1, (v2_MajorRadius));set_attribute_value(2, (v3_MinorRadius));; populate_derived(); } // Function implementations for IfcTrackElement -boost::optional< ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value > Ifc4x3_add2::IfcTrackElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcTrackElementTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcTrackElement::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcTrackElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value > Ifc4x3_add2::IfcTrackElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcTrackElementTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcTrackElement::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcTrackElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcTrackElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1218]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTrackElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1218]); } const IfcParse::entity& Ifc4x3_add2::IfcTrackElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1218]); } -Ifc4x3_add2::IfcTrackElement::IfcTrackElement(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcTrackElement::IfcTrackElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcTrackElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcTrackElement::IfcTrackElement(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcTrackElement::IfcTrackElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcTrackElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcTrackElementType ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value Ifc4x3_add2::IfcTrackElementType::PredefinedType() const { return ::Ifc4x3_add2::IfcTrackElementTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcTrackElementType::setPredefinedType(::Ifc4x3_add2::IfcTrackElementTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTrackElementTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcTrackElementType::setPredefinedType(const ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTrackElementTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcTrackElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1219]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTrackElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1219]); } const IfcParse::entity& Ifc4x3_add2::IfcTrackElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1219]); } -Ifc4x3_add2::IfcTrackElementType::IfcTrackElementType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcTrackElementType::IfcTrackElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTrackElementTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcTrackElementType::IfcTrackElementType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcTrackElementType::IfcTrackElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTrackElementTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcTransformer -boost::optional< ::Ifc4x3_add2::IfcTransformerTypeEnum::Value > Ifc4x3_add2::IfcTransformer::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcTransformerTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTransformerTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcTransformerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcTransformerTypeEnum::Value > Ifc4x3_add2::IfcTransformer::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcTransformerTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcTransformer::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTransformerTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcTransformerTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcTransformer::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1221]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTransformer::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1221]); } const IfcParse::entity& Ifc4x3_add2::IfcTransformer::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1221]); } -Ifc4x3_add2::IfcTransformer::IfcTransformer(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcTransformer::IfcTransformer(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcTransformerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcTransformerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcTransformer::IfcTransformer(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcTransformer::IfcTransformer(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcTransformerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcTransformerTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcTransformerType ::Ifc4x3_add2::IfcTransformerTypeEnum::Value Ifc4x3_add2::IfcTransformerType::PredefinedType() const { return ::Ifc4x3_add2::IfcTransformerTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcTransformerType::setPredefinedType(::Ifc4x3_add2::IfcTransformerTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTransformerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcTransformerType::setPredefinedType(const ::Ifc4x3_add2::IfcTransformerTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTransformerTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcTransformerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1222]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTransformerType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1222]); } const IfcParse::entity& Ifc4x3_add2::IfcTransformerType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1222]); } -Ifc4x3_add2::IfcTransformerType::IfcTransformerType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcTransformerType::IfcTransformerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTransformerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTransformerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcTransformerType::IfcTransformerType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcTransformerType::IfcTransformerType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTransformerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTransformerTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcTransportElement -boost::optional< ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value > Ifc4x3_add2::IfcTransportElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcTransportElementTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcTransportElement::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcTransportElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value > Ifc4x3_add2::IfcTransportElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcTransportElementTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcTransportElement::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcTransportElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcTransportElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1228]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTransportElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1228]); } const IfcParse::entity& Ifc4x3_add2::IfcTransportElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1228]); } -Ifc4x3_add2::IfcTransportElement::IfcTransportElement(IfcEntityInstanceData&& e) : IfcTransportationDevice(std::move(e)) { } -Ifc4x3_add2::IfcTransportElement::IfcTransportElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value > v9_PredefinedType) : IfcTransportationDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcTransportElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcTransportElement::IfcTransportElement(const std::weak_ptr& e) : IfcTransportationDevice(e) { } +// Ifc4x3_add2::IfcTransportElement::IfcTransportElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value > v9_PredefinedType) : IfcTransportationDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcTransportElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcTransportElementType ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value Ifc4x3_add2::IfcTransportElementType::PredefinedType() const { return ::Ifc4x3_add2::IfcTransportElementTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcTransportElementType::setPredefinedType(::Ifc4x3_add2::IfcTransportElementTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTransportElementTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcTransportElementType::setPredefinedType(const ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTransportElementTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcTransportElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1229]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTransportElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1229]); } const IfcParse::entity& Ifc4x3_add2::IfcTransportElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1229]); } -Ifc4x3_add2::IfcTransportElementType::IfcTransportElementType(IfcEntityInstanceData&& e) : IfcTransportationDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcTransportElementType::IfcTransportElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value v10_PredefinedType) : IfcTransportationDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTransportElementTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcTransportElementType::IfcTransportElementType(const std::weak_ptr& e) : IfcTransportationDeviceType(e) { } +// Ifc4x3_add2::IfcTransportElementType::IfcTransportElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value v10_PredefinedType) : IfcTransportationDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTransportElementTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcTransportationDevice -const IfcParse::entity& Ifc4x3_add2::IfcTransportationDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1226]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTransportationDevice::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1226]); } const IfcParse::entity& Ifc4x3_add2::IfcTransportationDevice::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1226]); } -Ifc4x3_add2::IfcTransportationDevice::IfcTransportationDevice(IfcEntityInstanceData&& e) : IfcElement(std::move(e)) { } -Ifc4x3_add2::IfcTransportationDevice::IfcTransportationDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcTransportationDevice::IfcTransportationDevice(const std::weak_ptr& e) : IfcElement(e) { } +// Ifc4x3_add2::IfcTransportationDevice::IfcTransportationDevice(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag) : IfcElement(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcTransportationDeviceType -const IfcParse::entity& Ifc4x3_add2::IfcTransportationDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1227]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTransportationDeviceType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1227]); } const IfcParse::entity& Ifc4x3_add2::IfcTransportationDeviceType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1227]); } -Ifc4x3_add2::IfcTransportationDeviceType::IfcTransportationDeviceType(IfcEntityInstanceData&& e) : IfcElementType(std::move(e)) { } -Ifc4x3_add2::IfcTransportationDeviceType::IfcTransportationDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } +// Ifc4x3_add2::IfcTransportationDeviceType::IfcTransportationDeviceType(const std::weak_ptr& e) : IfcElementType(e) { } +// Ifc4x3_add2::IfcTransportationDeviceType::IfcTransportationDeviceType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType) : IfcElementType(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }; populate_derived(); } // Function implementations for IfcTrapeziumProfileDef double Ifc4x3_add2::IfcTrapeziumProfileDef::BottomXDim() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcTrapeziumProfileDef::setBottomXDim(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcTrapeziumProfileDef::setBottomXDim(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcTrapeziumProfileDef::TopXDim() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcTrapeziumProfileDef::setTopXDim(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcTrapeziumProfileDef::setTopXDim(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } double Ifc4x3_add2::IfcTrapeziumProfileDef::YDim() const { double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcTrapeziumProfileDef::setYDim(double v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcTrapeziumProfileDef::setYDim(const double& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } double Ifc4x3_add2::IfcTrapeziumProfileDef::TopXOffset() const { double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcTrapeziumProfileDef::setTopXOffset(double v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +void Ifc4x3_add2::IfcTrapeziumProfileDef::setTopXOffset(const double& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -const IfcParse::entity& Ifc4x3_add2::IfcTrapeziumProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1231]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTrapeziumProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1231]); } const IfcParse::entity& Ifc4x3_add2::IfcTrapeziumProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1231]); } -Ifc4x3_add2::IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(IfcEntityInstanceData&& e) : IfcParameterizedProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_BottomXDim, double v5_TopXDim, double v6_YDim, double v7_TopXOffset) : IfcParameterizedProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(7))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_BottomXDim));set_attribute_value(4, (v5_TopXDim));set_attribute_value(5, (v6_YDim));set_attribute_value(6, (v7_TopXOffset));; populate_derived(); } +// Ifc4x3_add2::IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(const std::weak_ptr& e) : IfcParameterizedProfileDef(e) { } +// Ifc4x3_add2::IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_BottomXDim, double v5_TopXDim, double v6_YDim, double v7_TopXOffset) : IfcParameterizedProfileDef(const std::weak_ptr&(in_memory_attribute_storage(7))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); } if (v3_Position) {set_attribute_value(2, (*v3_Position)); }set_attribute_value(3, (v4_BottomXDim));set_attribute_value(4, (v5_TopXDim));set_attribute_value(5, (v6_YDim));set_attribute_value(6, (v7_TopXOffset));; populate_derived(); } // Function implementations for IfcTriangulatedFaceSet -boost::optional< std::vector< std::vector< double > > > Ifc4x3_add2::IfcTriangulatedFaceSet::Normals() const { if(get_attribute_value(1).isNull()) { return boost::none; } std::vector< std::vector< double > > v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } -boost::optional< bool > Ifc4x3_add2::IfcTriangulatedFaceSet::Closed() const { if(get_attribute_value(2).isNull()) { return boost::none; } bool v = get_attribute_value(2); return v; } -void Ifc4x3_add2::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } +std::optional< std::vector< std::vector< double > > > Ifc4x3_add2::IfcTriangulatedFaceSet::Normals() const { if(get_attribute_value(1).isNull()) { return std::nullopt; } std::vector< std::vector< double > > v = get_attribute_value(1); return v; } +void Ifc4x3_add2::IfcTriangulatedFaceSet::setNormals(const std::optional< std::vector< std::vector< double > > >& v) { if (v) {set_attribute_value(1, *v);} else {unset_attribute_value(1);} } +std::optional< bool > Ifc4x3_add2::IfcTriangulatedFaceSet::Closed() const { if(get_attribute_value(2).isNull()) { return std::nullopt; } bool v = get_attribute_value(2); return v; } +void Ifc4x3_add2::IfcTriangulatedFaceSet::setClosed(const std::optional< bool >& v) { if (v) {set_attribute_value(2, *v);} else {unset_attribute_value(2);} } std::vector< std::vector< int > > Ifc4x3_add2::IfcTriangulatedFaceSet::CoordIndex() const { std::vector< std::vector< int > > v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcTriangulatedFaceSet::setCoordIndex(std::vector< std::vector< int > > v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } -boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_add2::IfcTriangulatedFaceSet::PnIndex() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +void Ifc4x3_add2::IfcTriangulatedFaceSet::setCoordIndex(const std::vector< std::vector< int > >& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_add2::IfcTriangulatedFaceSet::PnIndex() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::vector< int > /*[1:?]*/ v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcTriangulatedFaceSet::setPnIndex(const std::optional< std::vector< int > /*[1:?]*/ >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -const IfcParse::entity& Ifc4x3_add2::IfcTriangulatedFaceSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1232]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTriangulatedFaceSet::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1232]); } const IfcParse::entity& Ifc4x3_add2::IfcTriangulatedFaceSet::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1232]); } -Ifc4x3_add2::IfcTriangulatedFaceSet::IfcTriangulatedFaceSet(IfcEntityInstanceData&& e) : IfcTessellatedFaceSet(std::move(e)) { } -Ifc4x3_add2::IfcTriangulatedFaceSet::IfcTriangulatedFaceSet(::Ifc4x3_add2::IfcCartesianPointList3D* v1_Coordinates, boost::optional< std::vector< std::vector< double > > > v2_Normals, boost::optional< bool > v3_Closed, std::vector< std::vector< int > > v4_CoordIndex, boost::optional< std::vector< int > /*[1:?]*/ > v5_PnIndex) : IfcTessellatedFaceSet(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_Coordinates ? v1_Coordinates->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_Normals) {set_attribute_value(1, (*v2_Normals)); } if (v3_Closed) {set_attribute_value(2, (*v3_Closed)); }set_attribute_value(3, (v4_CoordIndex)); if (v5_PnIndex) {set_attribute_value(4, (*v5_PnIndex)); }; populate_derived(); } +// Ifc4x3_add2::IfcTriangulatedFaceSet::IfcTriangulatedFaceSet(const std::weak_ptr& e) : IfcTessellatedFaceSet(e) { } +// Ifc4x3_add2::IfcTriangulatedFaceSet::IfcTriangulatedFaceSet(::Ifc4x3_add2::IfcCartesianPointList3D v1_Coordinates, std::optional< std::vector< std::vector< double > > > v2_Normals, std::optional< bool > v3_Closed, std::vector< std::vector< int > > v4_CoordIndex, std::optional< std::vector< int > /*[1:?]*/ > v5_PnIndex) : IfcTessellatedFaceSet(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_Coordinates)); if (v2_Normals) {set_attribute_value(1, (*v2_Normals)); } if (v3_Closed) {set_attribute_value(2, (*v3_Closed)); }set_attribute_value(3, (v4_CoordIndex)); if (v5_PnIndex) {set_attribute_value(4, (*v5_PnIndex)); }; populate_derived(); } // Function implementations for IfcTriangulatedIrregularNetwork std::vector< int > /*[1:?]*/ Ifc4x3_add2::IfcTriangulatedIrregularNetwork::Flags() const { std::vector< int > /*[1:?]*/ v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcTriangulatedIrregularNetwork::setFlags(std::vector< int > /*[1:?]*/ v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcTriangulatedIrregularNetwork::setFlags(const std::vector< int > /*[1:?]*/& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } -const IfcParse::entity& Ifc4x3_add2::IfcTriangulatedIrregularNetwork::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1233]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTriangulatedIrregularNetwork::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1233]); } const IfcParse::entity& Ifc4x3_add2::IfcTriangulatedIrregularNetwork::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1233]); } -Ifc4x3_add2::IfcTriangulatedIrregularNetwork::IfcTriangulatedIrregularNetwork(IfcEntityInstanceData&& e) : IfcTriangulatedFaceSet(std::move(e)) { } -Ifc4x3_add2::IfcTriangulatedIrregularNetwork::IfcTriangulatedIrregularNetwork(::Ifc4x3_add2::IfcCartesianPointList3D* v1_Coordinates, boost::optional< std::vector< std::vector< double > > > v2_Normals, boost::optional< bool > v3_Closed, std::vector< std::vector< int > > v4_CoordIndex, boost::optional< std::vector< int > /*[1:?]*/ > v5_PnIndex, std::vector< int > /*[1:?]*/ v6_Flags) : IfcTriangulatedFaceSet(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, v1_Coordinates ? v1_Coordinates->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v2_Normals) {set_attribute_value(1, (*v2_Normals)); } if (v3_Closed) {set_attribute_value(2, (*v3_Closed)); }set_attribute_value(3, (v4_CoordIndex)); if (v5_PnIndex) {set_attribute_value(4, (*v5_PnIndex)); }set_attribute_value(5, (v6_Flags));; populate_derived(); } +// Ifc4x3_add2::IfcTriangulatedIrregularNetwork::IfcTriangulatedIrregularNetwork(const std::weak_ptr& e) : IfcTriangulatedFaceSet(e) { } +// Ifc4x3_add2::IfcTriangulatedIrregularNetwork::IfcTriangulatedIrregularNetwork(::Ifc4x3_add2::IfcCartesianPointList3D v1_Coordinates, std::optional< std::vector< std::vector< double > > > v2_Normals, std::optional< bool > v3_Closed, std::vector< std::vector< int > > v4_CoordIndex, std::optional< std::vector< int > /*[1:?]*/ > v5_PnIndex, std::vector< int > /*[1:?]*/ v6_Flags) : IfcTriangulatedFaceSet(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_Coordinates)); if (v2_Normals) {set_attribute_value(1, (*v2_Normals)); } if (v3_Closed) {set_attribute_value(2, (*v3_Closed)); }set_attribute_value(3, (v4_CoordIndex)); if (v5_PnIndex) {set_attribute_value(4, (*v5_PnIndex)); }set_attribute_value(5, (v6_Flags));; populate_derived(); } // Function implementations for IfcTrimmedCurve -::Ifc4x3_add2::IfcCurve* Ifc4x3_add2::IfcTrimmedCurve::BasisCurve() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcCurve>(true); } -void Ifc4x3_add2::IfcTrimmedCurve::setBasisCurve(::Ifc4x3_add2::IfcCurve* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } -aggregate_of< ::Ifc4x3_add2::IfcTrimmingSelect >::ptr Ifc4x3_add2::IfcTrimmedCurve::Trim1() const { aggregate_of_instance::ptr es = get_attribute_value(1); return es->as< ::Ifc4x3_add2::IfcTrimmingSelect >(); } -void Ifc4x3_add2::IfcTrimmedCurve::setTrim1(aggregate_of< ::Ifc4x3_add2::IfcTrimmingSelect >::ptr v) { set_attribute_value(1, (v)->generalize());if constexpr (false)unset_attribute_value(1); } -aggregate_of< ::Ifc4x3_add2::IfcTrimmingSelect >::ptr Ifc4x3_add2::IfcTrimmedCurve::Trim2() const { aggregate_of_instance::ptr es = get_attribute_value(2); return es->as< ::Ifc4x3_add2::IfcTrimmingSelect >(); } -void Ifc4x3_add2::IfcTrimmedCurve::setTrim2(aggregate_of< ::Ifc4x3_add2::IfcTrimmingSelect >::ptr v) { set_attribute_value(2, (v)->generalize());if constexpr (false)unset_attribute_value(2); } +::Ifc4x3_add2::IfcCurve Ifc4x3_add2::IfcTrimmedCurve::BasisCurve() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcCurve>(); } +void Ifc4x3_add2::IfcTrimmedCurve::setBasisCurve(const ::Ifc4x3_add2::IfcCurve& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcTrimmingSelect > Ifc4x3_add2::IfcTrimmedCurve::Trim1() const { std::vector es = get_attribute_value(1); return cast_vector<::Ifc4x3_add2::IfcTrimmingSelect>(es); } +void Ifc4x3_add2::IfcTrimmedCurve::setTrim1(const std::vector< ::Ifc4x3_add2::IfcTrimmingSelect >& v) { set_attribute_value(1, cast_vector(v));if constexpr (false)unset_attribute_value(1); } +std::vector< ::Ifc4x3_add2::IfcTrimmingSelect > Ifc4x3_add2::IfcTrimmedCurve::Trim2() const { std::vector es = get_attribute_value(2); return cast_vector<::Ifc4x3_add2::IfcTrimmingSelect>(es); } +void Ifc4x3_add2::IfcTrimmedCurve::setTrim2(const std::vector< ::Ifc4x3_add2::IfcTrimmingSelect >& v) { set_attribute_value(2, cast_vector(v));if constexpr (false)unset_attribute_value(2); } bool Ifc4x3_add2::IfcTrimmedCurve::SenseAgreement() const { bool v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcTrimmedCurve::setSenseAgreement(bool v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcTrimmedCurve::setSenseAgreement(const bool& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } ::Ifc4x3_add2::IfcTrimmingPreference::Value Ifc4x3_add2::IfcTrimmedCurve::MasterRepresentation() const { return ::Ifc4x3_add2::IfcTrimmingPreference::FromString(get_attribute_value(4)); } -void Ifc4x3_add2::IfcTrimmedCurve::setMasterRepresentation(::Ifc4x3_add2::IfcTrimmingPreference::Value v) { set_attribute_value(4, EnumerationReference(&::Ifc4x3_add2::IfcTrimmingPreference::Class(), (size_t) v));if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcTrimmedCurve::setMasterRepresentation(const ::Ifc4x3_add2::IfcTrimmingPreference::Value& v) { set_attribute_value(4, EnumerationReference(&::Ifc4x3_add2::IfcTrimmingPreference::Class(), (size_t) v));if constexpr (false)unset_attribute_value(4); } -const IfcParse::entity& Ifc4x3_add2::IfcTrimmedCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1234]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTrimmedCurve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1234]); } const IfcParse::entity& Ifc4x3_add2::IfcTrimmedCurve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1234]); } -Ifc4x3_add2::IfcTrimmedCurve::IfcTrimmedCurve(IfcEntityInstanceData&& e) : IfcBoundedCurve(std::move(e)) { } -Ifc4x3_add2::IfcTrimmedCurve::IfcTrimmedCurve(::Ifc4x3_add2::IfcCurve* v1_BasisCurve, aggregate_of< ::Ifc4x3_add2::IfcTrimmingSelect >::ptr v2_Trim1, aggregate_of< ::Ifc4x3_add2::IfcTrimmingSelect >::ptr v3_Trim2, bool v4_SenseAgreement, ::Ifc4x3_add2::IfcTrimmingPreference::Value v5_MasterRepresentation) : IfcBoundedCurve(IfcEntityInstanceData(in_memory_attribute_storage(5))) { set_attribute_value(0, v1_BasisCurve ? v1_BasisCurve->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Trim1)->generalize());set_attribute_value(2, (v3_Trim2)->generalize());set_attribute_value(3, (v4_SenseAgreement));set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcTrimmingPreference::Class(),(size_t)v5_MasterRepresentation)));; populate_derived(); } +// Ifc4x3_add2::IfcTrimmedCurve::IfcTrimmedCurve(const std::weak_ptr& e) : IfcBoundedCurve(e) { } +// Ifc4x3_add2::IfcTrimmedCurve::IfcTrimmedCurve(::Ifc4x3_add2::IfcCurve v1_BasisCurve, std::vector< ::Ifc4x3_add2::IfcTrimmingSelect > v2_Trim1, std::vector< ::Ifc4x3_add2::IfcTrimmingSelect > v3_Trim2, bool v4_SenseAgreement, ::Ifc4x3_add2::IfcTrimmingPreference::Value v5_MasterRepresentation) : IfcBoundedCurve(const std::weak_ptr&(in_memory_attribute_storage(5))) { set_attribute_value(0, (v1_BasisCurve));set_attribute_value(1, (v2_Trim1)->generalize());set_attribute_value(2, (v3_Trim2)->generalize());set_attribute_value(3, (v4_SenseAgreement));set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcTrimmingPreference::Class(),(size_t)v5_MasterRepresentation)));; populate_derived(); } // Function implementations for IfcTubeBundle -boost::optional< ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value > Ifc4x3_add2::IfcTubeBundle::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcTubeBundleTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcTubeBundleTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value > Ifc4x3_add2::IfcTubeBundle::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcTubeBundleTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcTubeBundle::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcTubeBundleTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcTubeBundle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1238]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTubeBundle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1238]); } const IfcParse::entity& Ifc4x3_add2::IfcTubeBundle::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1238]); } -Ifc4x3_add2::IfcTubeBundle::IfcTubeBundle(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcTubeBundle::IfcTubeBundle(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcTubeBundleTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcTubeBundle::IfcTubeBundle(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcTubeBundle::IfcTubeBundle(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcTubeBundleTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcTubeBundleType ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value Ifc4x3_add2::IfcTubeBundleType::PredefinedType() const { return ::Ifc4x3_add2::IfcTubeBundleTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcTubeBundleType::setPredefinedType(::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTubeBundleTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcTubeBundleType::setPredefinedType(const ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcTubeBundleTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcTubeBundleType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1239]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTubeBundleType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1239]); } const IfcParse::entity& Ifc4x3_add2::IfcTubeBundleType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1239]); } -Ifc4x3_add2::IfcTubeBundleType::IfcTubeBundleType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcTubeBundleType::IfcTubeBundleType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTubeBundleTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcTubeBundleType::IfcTubeBundleType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcTubeBundleType::IfcTubeBundleType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcTubeBundleTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcTypeObject -boost::optional< std::string > Ifc4x3_add2::IfcTypeObject::ApplicableOccurrence() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > Ifc4x3_add2::IfcTypeObject::HasPropertySets() const { if(get_attribute_value(5).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(5); return es->as< ::Ifc4x3_add2::IfcPropertySetDefinition >(); } -void Ifc4x3_add2::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v) { if (v) {set_attribute_value(5, (*v)->generalize());} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcTypeObject::ApplicableOccurrence() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcTypeObject::setApplicableOccurrence(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > Ifc4x3_add2::IfcTypeObject::HasPropertySets() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(5); return cast_vector<::Ifc4x3_add2::IfcPropertySetDefinition>(es); } +void Ifc4x3_add2::IfcTypeObject::setHasPropertySets(const std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > >& v) { if (v) {set_attribute_value(5, cast_vector(*v));} else {unset_attribute_value(5);} } -::Ifc4x3_add2::IfcRelDefinesByType::list::ptr Ifc4x3_add2::IfcTypeObject::Types() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[935], 5)->as(); } +std::vector<::Ifc4x3_add2::IfcRelDefinesByType> Ifc4x3_add2::IfcTypeObject::Types() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[935], 5)); } -const IfcParse::entity& Ifc4x3_add2::IfcTypeObject::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1241]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTypeObject::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1241]); } const IfcParse::entity& Ifc4x3_add2::IfcTypeObject::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1241]); } -Ifc4x3_add2::IfcTypeObject::IfcTypeObject(IfcEntityInstanceData&& e) : IfcObjectDefinition(std::move(e)) { } -Ifc4x3_add2::IfcTypeObject::IfcTypeObject(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets) : IfcObjectDefinition(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); }; populate_derived(); } +// Ifc4x3_add2::IfcTypeObject::IfcTypeObject(const std::weak_ptr& e) : IfcObjectDefinition(e) { } +// Ifc4x3_add2::IfcTypeObject::IfcTypeObject(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets) : IfcObjectDefinition(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); }; populate_derived(); } // Function implementations for IfcTypeProcess -boost::optional< std::string > Ifc4x3_add2::IfcTypeProcess::Identification() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< std::string > Ifc4x3_add2::IfcTypeProcess::LongDescription() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< std::string > Ifc4x3_add2::IfcTypeProcess::ProcessType() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< std::string > Ifc4x3_add2::IfcTypeProcess::Identification() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcTypeProcess::setIdentification(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcTypeProcess::LongDescription() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcTypeProcess::setLongDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcTypeProcess::ProcessType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcTypeProcess::setProcessType(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -::Ifc4x3_add2::IfcRelAssignsToProcess::list::ptr Ifc4x3_add2::IfcTypeProcess::OperatesOn() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[905], 6)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssignsToProcess> Ifc4x3_add2::IfcTypeProcess::OperatesOn() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[905], 6)); } -const IfcParse::entity& Ifc4x3_add2::IfcTypeProcess::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1242]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTypeProcess::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1242]); } const IfcParse::entity& Ifc4x3_add2::IfcTypeProcess::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1242]); } -Ifc4x3_add2::IfcTypeProcess::IfcTypeProcess(IfcEntityInstanceData&& e) : IfcTypeObject(std::move(e)) { } -Ifc4x3_add2::IfcTypeProcess::IfcTypeProcess(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType) : IfcTypeObject(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ProcessType) {set_attribute_value(8, (*v9_ProcessType)); }; populate_derived(); } +// Ifc4x3_add2::IfcTypeProcess::IfcTypeProcess(const std::weak_ptr& e) : IfcTypeObject(e) { } +// Ifc4x3_add2::IfcTypeProcess::IfcTypeProcess(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ProcessType) : IfcTypeObject(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ProcessType) {set_attribute_value(8, (*v9_ProcessType)); }; populate_derived(); } // Function implementations for IfcTypeProduct -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > Ifc4x3_add2::IfcTypeProduct::RepresentationMaps() const { if(get_attribute_value(6).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(6); return es->as< ::Ifc4x3_add2::IfcRepresentationMap >(); } -void Ifc4x3_add2::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v) { if (v) {set_attribute_value(6, (*v)->generalize());} else {unset_attribute_value(6);} } -boost::optional< std::string > Ifc4x3_add2::IfcTypeProduct::Tag() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcTypeProduct::setTag(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > Ifc4x3_add2::IfcTypeProduct::RepresentationMaps() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(6); return cast_vector<::Ifc4x3_add2::IfcRepresentationMap>(es); } +void Ifc4x3_add2::IfcTypeProduct::setRepresentationMaps(const std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > >& v) { if (v) {set_attribute_value(6, cast_vector(*v));} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcTypeProduct::Tag() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcTypeProduct::setTag(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -::Ifc4x3_add2::IfcRelAssignsToProduct::list::ptr Ifc4x3_add2::IfcTypeProduct::ReferencedBy() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[906], 6)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssignsToProduct> Ifc4x3_add2::IfcTypeProduct::ReferencedBy() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[906], 6)); } -const IfcParse::entity& Ifc4x3_add2::IfcTypeProduct::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1243]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTypeProduct::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1243]); } const IfcParse::entity& Ifc4x3_add2::IfcTypeProduct::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1243]); } -Ifc4x3_add2::IfcTypeProduct::IfcTypeProduct(IfcEntityInstanceData&& e) : IfcTypeObject(std::move(e)) { } -Ifc4x3_add2::IfcTypeProduct::IfcTypeProduct(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag) : IfcTypeObject(IfcEntityInstanceData(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } +// Ifc4x3_add2::IfcTypeProduct::IfcTypeProduct(const std::weak_ptr& e) : IfcTypeObject(e) { } +// Ifc4x3_add2::IfcTypeProduct::IfcTypeProduct(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag) : IfcTypeObject(const std::weak_ptr&(in_memory_attribute_storage(8))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); }; populate_derived(); } // Function implementations for IfcTypeResource -boost::optional< std::string > Ifc4x3_add2::IfcTypeResource::Identification() const { if(get_attribute_value(6).isNull()) { return boost::none; } std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcTypeResource::setIdentification(boost::optional< std::string > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< std::string > Ifc4x3_add2::IfcTypeResource::LongDescription() const { if(get_attribute_value(7).isNull()) { return boost::none; } std::string v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< std::string > Ifc4x3_add2::IfcTypeResource::ResourceType() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcTypeResource::setResourceType(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< std::string > Ifc4x3_add2::IfcTypeResource::Identification() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::string v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcTypeResource::setIdentification(const std::optional< std::string >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< std::string > Ifc4x3_add2::IfcTypeResource::LongDescription() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::string v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcTypeResource::setLongDescription(const std::optional< std::string >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcTypeResource::ResourceType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcTypeResource::setResourceType(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -::Ifc4x3_add2::IfcRelAssignsToResource::list::ptr Ifc4x3_add2::IfcTypeResource::ResourceOf() const { if (!file_) { return nullptr; } return file_->getInverse(id_, IFC4X3_ADD2_types[907], 6)->as(); } +std::vector<::Ifc4x3_add2::IfcRelAssignsToResource> Ifc4x3_add2::IfcTypeResource::ResourceOf() const { return cast_vector(data()->file()->getInverse(data()->id(), IFC4X3_ADD2_types[907], 6)); } -const IfcParse::entity& Ifc4x3_add2::IfcTypeResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1244]); } +// const IfcParse::entity& Ifc4x3_add2::IfcTypeResource::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1244]); } const IfcParse::entity& Ifc4x3_add2::IfcTypeResource::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1244]); } -Ifc4x3_add2::IfcTypeResource::IfcTypeResource(IfcEntityInstanceData&& e) : IfcTypeObject(std::move(e)) { } -Ifc4x3_add2::IfcTypeResource::IfcTypeResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType) : IfcTypeObject(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); }; populate_derived(); } +// Ifc4x3_add2::IfcTypeResource::IfcTypeResource(const std::weak_ptr& e) : IfcTypeObject(e) { } +// Ifc4x3_add2::IfcTypeResource::IfcTypeResource(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType) : IfcTypeObject(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_Identification) {set_attribute_value(6, (*v7_Identification)); } if (v8_LongDescription) {set_attribute_value(7, (*v8_LongDescription)); } if (v9_ResourceType) {set_attribute_value(8, (*v9_ResourceType)); }; populate_derived(); } // Function implementations for IfcUShapeProfileDef double Ifc4x3_add2::IfcUShapeProfileDef::Depth() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcUShapeProfileDef::setDepth(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcUShapeProfileDef::setDepth(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcUShapeProfileDef::FlangeWidth() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcUShapeProfileDef::setFlangeWidth(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcUShapeProfileDef::setFlangeWidth(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } double Ifc4x3_add2::IfcUShapeProfileDef::WebThickness() const { double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcUShapeProfileDef::setWebThickness(double v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcUShapeProfileDef::setWebThickness(const double& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } double Ifc4x3_add2::IfcUShapeProfileDef::FlangeThickness() const { double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcUShapeProfileDef::setFlangeThickness(double v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -boost::optional< double > Ifc4x3_add2::IfcUShapeProfileDef::FilletRadius() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< double > Ifc4x3_add2::IfcUShapeProfileDef::EdgeRadius() const { if(get_attribute_value(8).isNull()) { return boost::none; } double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -boost::optional< double > Ifc4x3_add2::IfcUShapeProfileDef::FlangeSlope() const { if(get_attribute_value(9).isNull()) { return boost::none; } double v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +void Ifc4x3_add2::IfcUShapeProfileDef::setFlangeThickness(const double& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< double > Ifc4x3_add2::IfcUShapeProfileDef::FilletRadius() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcUShapeProfileDef::setFilletRadius(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< double > Ifc4x3_add2::IfcUShapeProfileDef::EdgeRadius() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } double v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcUShapeProfileDef::setEdgeRadius(const std::optional< double >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< double > Ifc4x3_add2::IfcUShapeProfileDef::FlangeSlope() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } double v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcUShapeProfileDef::setFlangeSlope(const std::optional< double >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -const IfcParse::entity& Ifc4x3_add2::IfcUShapeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1255]); } +// const IfcParse::entity& Ifc4x3_add2::IfcUShapeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1255]); } const IfcParse::entity& Ifc4x3_add2::IfcUShapeProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1255]); } -Ifc4x3_add2::IfcUShapeProfileDef::IfcUShapeProfileDef(IfcEntityInstanceData&& e) : IfcParameterizedProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcUShapeProfileDef::IfcUShapeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_EdgeRadius, boost::optional< double > v10_FlangeSlope) : IfcParameterizedProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_Depth));set_attribute_value(4, (v5_FlangeWidth));set_attribute_value(5, (v6_WebThickness));set_attribute_value(6, (v7_FlangeThickness)); if (v8_FilletRadius) {set_attribute_value(7, (*v8_FilletRadius)); } if (v9_EdgeRadius) {set_attribute_value(8, (*v9_EdgeRadius)); } if (v10_FlangeSlope) {set_attribute_value(9, (*v10_FlangeSlope)); }; populate_derived(); } +// Ifc4x3_add2::IfcUShapeProfileDef::IfcUShapeProfileDef(const std::weak_ptr& e) : IfcParameterizedProfileDef(e) { } +// Ifc4x3_add2::IfcUShapeProfileDef::IfcUShapeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, std::optional< double > v8_FilletRadius, std::optional< double > v9_EdgeRadius, std::optional< double > v10_FlangeSlope) : IfcParameterizedProfileDef(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); } if (v3_Position) {set_attribute_value(2, (*v3_Position)); }set_attribute_value(3, (v4_Depth));set_attribute_value(4, (v5_FlangeWidth));set_attribute_value(5, (v6_WebThickness));set_attribute_value(6, (v7_FlangeThickness)); if (v8_FilletRadius) {set_attribute_value(7, (*v8_FilletRadius)); } if (v9_EdgeRadius) {set_attribute_value(8, (*v9_EdgeRadius)); } if (v10_FlangeSlope) {set_attribute_value(9, (*v10_FlangeSlope)); }; populate_derived(); } // Function implementations for IfcUnitAssignment -aggregate_of< ::Ifc4x3_add2::IfcUnit >::ptr Ifc4x3_add2::IfcUnitAssignment::Units() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcUnit >(); } -void Ifc4x3_add2::IfcUnitAssignment::setUnits(aggregate_of< ::Ifc4x3_add2::IfcUnit >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcUnit > Ifc4x3_add2::IfcUnitAssignment::Units() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcUnit>(es); } +void Ifc4x3_add2::IfcUnitAssignment::setUnits(const std::vector< ::Ifc4x3_add2::IfcUnit >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcUnitAssignment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1252]); } +// const IfcParse::entity& Ifc4x3_add2::IfcUnitAssignment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1252]); } const IfcParse::entity& Ifc4x3_add2::IfcUnitAssignment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1252]); } -Ifc4x3_add2::IfcUnitAssignment::IfcUnitAssignment(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcUnitAssignment::IfcUnitAssignment(aggregate_of< ::Ifc4x3_add2::IfcUnit >::ptr v1_Units) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Units)->generalize());; populate_derived(); } +// Ifc4x3_add2::IfcUnitAssignment::IfcUnitAssignment(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcUnitAssignment::IfcUnitAssignment(std::vector< ::Ifc4x3_add2::IfcUnit > v1_Units) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_Units)->generalize());; populate_derived(); } // Function implementations for IfcUnitaryControlElement -boost::optional< ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value > Ifc4x3_add2::IfcUnitaryControlElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value > Ifc4x3_add2::IfcUnitaryControlElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcUnitaryControlElement::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcUnitaryControlElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1246]); } +// const IfcParse::entity& Ifc4x3_add2::IfcUnitaryControlElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1246]); } const IfcParse::entity& Ifc4x3_add2::IfcUnitaryControlElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1246]); } -Ifc4x3_add2::IfcUnitaryControlElement::IfcUnitaryControlElement(IfcEntityInstanceData&& e) : IfcDistributionControlElement(std::move(e)) { } -Ifc4x3_add2::IfcUnitaryControlElement::IfcUnitaryControlElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcUnitaryControlElement::IfcUnitaryControlElement(const std::weak_ptr& e) : IfcDistributionControlElement(e) { } +// Ifc4x3_add2::IfcUnitaryControlElement::IfcUnitaryControlElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcUnitaryControlElementType ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value Ifc4x3_add2::IfcUnitaryControlElementType::PredefinedType() const { return ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcUnitaryControlElementType::setPredefinedType(::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcUnitaryControlElementType::setPredefinedType(const ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcUnitaryControlElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1247]); } +// const IfcParse::entity& Ifc4x3_add2::IfcUnitaryControlElementType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1247]); } const IfcParse::entity& Ifc4x3_add2::IfcUnitaryControlElementType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1247]); } -Ifc4x3_add2::IfcUnitaryControlElementType::IfcUnitaryControlElementType(IfcEntityInstanceData&& e) : IfcDistributionControlElementType(std::move(e)) { } -Ifc4x3_add2::IfcUnitaryControlElementType::IfcUnitaryControlElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcUnitaryControlElementType::IfcUnitaryControlElementType(const std::weak_ptr& e) : IfcDistributionControlElementType(e) { } +// Ifc4x3_add2::IfcUnitaryControlElementType::IfcUnitaryControlElementType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcUnitaryEquipment -boost::optional< ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value > Ifc4x3_add2::IfcUnitaryEquipment::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value > Ifc4x3_add2::IfcUnitaryEquipment::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcUnitaryEquipment::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcUnitaryEquipment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1249]); } +// const IfcParse::entity& Ifc4x3_add2::IfcUnitaryEquipment::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1249]); } const IfcParse::entity& Ifc4x3_add2::IfcUnitaryEquipment::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1249]); } -Ifc4x3_add2::IfcUnitaryEquipment::IfcUnitaryEquipment(IfcEntityInstanceData&& e) : IfcEnergyConversionDevice(std::move(e)) { } -Ifc4x3_add2::IfcUnitaryEquipment::IfcUnitaryEquipment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcUnitaryEquipment::IfcUnitaryEquipment(const std::weak_ptr& e) : IfcEnergyConversionDevice(e) { } +// Ifc4x3_add2::IfcUnitaryEquipment::IfcUnitaryEquipment(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcUnitaryEquipmentType ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value Ifc4x3_add2::IfcUnitaryEquipmentType::PredefinedType() const { return ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcUnitaryEquipmentType::setPredefinedType(::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcUnitaryEquipmentType::setPredefinedType(const ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcUnitaryEquipmentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1250]); } +// const IfcParse::entity& Ifc4x3_add2::IfcUnitaryEquipmentType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1250]); } const IfcParse::entity& Ifc4x3_add2::IfcUnitaryEquipmentType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1250]); } -Ifc4x3_add2::IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(IfcEntityInstanceData&& e) : IfcEnergyConversionDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(const std::weak_ptr& e) : IfcEnergyConversionDeviceType(e) { } +// Ifc4x3_add2::IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcValve -boost::optional< ::Ifc4x3_add2::IfcValveTypeEnum::Value > Ifc4x3_add2::IfcValve::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcValveTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcValve::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcValveTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcValveTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcValveTypeEnum::Value > Ifc4x3_add2::IfcValve::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcValveTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcValve::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcValveTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcValveTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcValve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1257]); } +// const IfcParse::entity& Ifc4x3_add2::IfcValve::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1257]); } const IfcParse::entity& Ifc4x3_add2::IfcValve::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1257]); } -Ifc4x3_add2::IfcValve::IfcValve(IfcEntityInstanceData&& e) : IfcFlowController(std::move(e)) { } -Ifc4x3_add2::IfcValve::IfcValve(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcValveTypeEnum::Value > v9_PredefinedType) : IfcFlowController(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcValveTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcValve::IfcValve(const std::weak_ptr& e) : IfcFlowController(e) { } +// Ifc4x3_add2::IfcValve::IfcValve(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcValveTypeEnum::Value > v9_PredefinedType) : IfcFlowController(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcValveTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcValveType ::Ifc4x3_add2::IfcValveTypeEnum::Value Ifc4x3_add2::IfcValveType::PredefinedType() const { return ::Ifc4x3_add2::IfcValveTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcValveType::setPredefinedType(::Ifc4x3_add2::IfcValveTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcValveTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcValveType::setPredefinedType(const ::Ifc4x3_add2::IfcValveTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcValveTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcValveType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1258]); } +// const IfcParse::entity& Ifc4x3_add2::IfcValveType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1258]); } const IfcParse::entity& Ifc4x3_add2::IfcValveType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1258]); } -Ifc4x3_add2::IfcValveType::IfcValveType(IfcEntityInstanceData&& e) : IfcFlowControllerType(std::move(e)) { } -Ifc4x3_add2::IfcValveType::IfcValveType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcValveTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcValveTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcValveType::IfcValveType(const std::weak_ptr& e) : IfcFlowControllerType(e) { } +// Ifc4x3_add2::IfcValveType::IfcValveType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcValveTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcValveTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcVector -::Ifc4x3_add2::IfcDirection* Ifc4x3_add2::IfcVector::Orientation() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcDirection>(true); } -void Ifc4x3_add2::IfcVector::setOrientation(::Ifc4x3_add2::IfcDirection* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcDirection Ifc4x3_add2::IfcVector::Orientation() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcDirection>(); } +void Ifc4x3_add2::IfcVector::setOrientation(const ::Ifc4x3_add2::IfcDirection& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } double Ifc4x3_add2::IfcVector::Magnitude() const { double v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcVector::setMagnitude(double v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcVector::setMagnitude(const double& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcVector::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1261]); } +// const IfcParse::entity& Ifc4x3_add2::IfcVector::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1261]); } const IfcParse::entity& Ifc4x3_add2::IfcVector::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1261]); } -Ifc4x3_add2::IfcVector::IfcVector(IfcEntityInstanceData&& e) : IfcGeometricRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcVector::IfcVector(::Ifc4x3_add2::IfcDirection* v1_Orientation, double v2_Magnitude) : IfcGeometricRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, v1_Orientation ? v1_Orientation->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(1, (v2_Magnitude));; populate_derived(); } +// Ifc4x3_add2::IfcVector::IfcVector(const std::weak_ptr& e) : IfcGeometricRepresentationItem(e) { } +// Ifc4x3_add2::IfcVector::IfcVector(::Ifc4x3_add2::IfcDirection v1_Orientation, double v2_Magnitude) : IfcGeometricRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_Orientation));set_attribute_value(1, (v2_Magnitude));; populate_derived(); } // Function implementations for IfcVehicle -boost::optional< ::Ifc4x3_add2::IfcVehicleTypeEnum::Value > Ifc4x3_add2::IfcVehicle::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcVehicleTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcVehicle::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcVehicleTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcVehicleTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcVehicleTypeEnum::Value > Ifc4x3_add2::IfcVehicle::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcVehicleTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcVehicle::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcVehicleTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcVehicleTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcVehicle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1263]); } +// const IfcParse::entity& Ifc4x3_add2::IfcVehicle::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1263]); } const IfcParse::entity& Ifc4x3_add2::IfcVehicle::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1263]); } -Ifc4x3_add2::IfcVehicle::IfcVehicle(IfcEntityInstanceData&& e) : IfcTransportationDevice(std::move(e)) { } -Ifc4x3_add2::IfcVehicle::IfcVehicle(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcVehicleTypeEnum::Value > v9_PredefinedType) : IfcTransportationDevice(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcVehicleTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcVehicle::IfcVehicle(const std::weak_ptr& e) : IfcTransportationDevice(e) { } +// Ifc4x3_add2::IfcVehicle::IfcVehicle(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcVehicleTypeEnum::Value > v9_PredefinedType) : IfcTransportationDevice(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcVehicleTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcVehicleType ::Ifc4x3_add2::IfcVehicleTypeEnum::Value Ifc4x3_add2::IfcVehicleType::PredefinedType() const { return ::Ifc4x3_add2::IfcVehicleTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcVehicleType::setPredefinedType(::Ifc4x3_add2::IfcVehicleTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcVehicleTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcVehicleType::setPredefinedType(const ::Ifc4x3_add2::IfcVehicleTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcVehicleTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcVehicleType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1264]); } +// const IfcParse::entity& Ifc4x3_add2::IfcVehicleType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1264]); } const IfcParse::entity& Ifc4x3_add2::IfcVehicleType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1264]); } -Ifc4x3_add2::IfcVehicleType::IfcVehicleType(IfcEntityInstanceData&& e) : IfcTransportationDeviceType(std::move(e)) { } -Ifc4x3_add2::IfcVehicleType::IfcVehicleType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcVehicleTypeEnum::Value v10_PredefinedType) : IfcTransportationDeviceType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcVehicleTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcVehicleType::IfcVehicleType(const std::weak_ptr& e) : IfcTransportationDeviceType(e) { } +// Ifc4x3_add2::IfcVehicleType::IfcVehicleType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcVehicleTypeEnum::Value v10_PredefinedType) : IfcTransportationDeviceType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcVehicleTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcVertex -const IfcParse::entity& Ifc4x3_add2::IfcVertex::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1266]); } +// const IfcParse::entity& Ifc4x3_add2::IfcVertex::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1266]); } const IfcParse::entity& Ifc4x3_add2::IfcVertex::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1266]); } -Ifc4x3_add2::IfcVertex::IfcVertex(IfcEntityInstanceData&& e) : IfcTopologicalRepresentationItem(std::move(e)) { } -Ifc4x3_add2::IfcVertex::IfcVertex() : IfcTopologicalRepresentationItem(IfcEntityInstanceData(in_memory_attribute_storage(0))) { ; populate_derived(); } +// Ifc4x3_add2::IfcVertex::IfcVertex(const std::weak_ptr& e) : IfcTopologicalRepresentationItem(e) { } +// Ifc4x3_add2::IfcVertex::IfcVertex() : IfcTopologicalRepresentationItem(const std::weak_ptr&(in_memory_attribute_storage(0))) { ; populate_derived(); } // Function implementations for IfcVertexLoop -::Ifc4x3_add2::IfcVertex* Ifc4x3_add2::IfcVertexLoop::LoopVertex() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcVertex>(true); } -void Ifc4x3_add2::IfcVertexLoop::setLoopVertex(::Ifc4x3_add2::IfcVertex* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcVertex Ifc4x3_add2::IfcVertexLoop::LoopVertex() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcVertex>(); } +void Ifc4x3_add2::IfcVertexLoop::setLoopVertex(const ::Ifc4x3_add2::IfcVertex& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcVertexLoop::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1267]); } +// const IfcParse::entity& Ifc4x3_add2::IfcVertexLoop::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1267]); } const IfcParse::entity& Ifc4x3_add2::IfcVertexLoop::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1267]); } -Ifc4x3_add2::IfcVertexLoop::IfcVertexLoop(IfcEntityInstanceData&& e) : IfcLoop(std::move(e)) { } -Ifc4x3_add2::IfcVertexLoop::IfcVertexLoop(::Ifc4x3_add2::IfcVertex* v1_LoopVertex) : IfcLoop(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, v1_LoopVertex ? v1_LoopVertex->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcVertexLoop::IfcVertexLoop(const std::weak_ptr& e) : IfcLoop(e) { } +// Ifc4x3_add2::IfcVertexLoop::IfcVertexLoop(::Ifc4x3_add2::IfcVertex v1_LoopVertex) : IfcLoop(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_LoopVertex));; populate_derived(); } // Function implementations for IfcVertexPoint -::Ifc4x3_add2::IfcPoint* Ifc4x3_add2::IfcVertexPoint::VertexGeometry() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(0)))->as<::Ifc4x3_add2::IfcPoint>(true); } -void Ifc4x3_add2::IfcVertexPoint::setVertexGeometry(::Ifc4x3_add2::IfcPoint* v) { set_attribute_value(0, v->as());if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcPoint Ifc4x3_add2::IfcVertexPoint::VertexGeometry() const { return ((express::Base)(get_attribute_value(0))).as<::Ifc4x3_add2::IfcPoint>(); } +void Ifc4x3_add2::IfcVertexPoint::setVertexGeometry(const ::Ifc4x3_add2::IfcPoint& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -const IfcParse::entity& Ifc4x3_add2::IfcVertexPoint::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1268]); } +// const IfcParse::entity& Ifc4x3_add2::IfcVertexPoint::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1268]); } const IfcParse::entity& Ifc4x3_add2::IfcVertexPoint::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1268]); } -Ifc4x3_add2::IfcVertexPoint::IfcVertexPoint(IfcEntityInstanceData&& e) : IfcVertex(std::move(e)) { } -Ifc4x3_add2::IfcVertexPoint::IfcVertexPoint(::Ifc4x3_add2::IfcPoint* v1_VertexGeometry) : IfcVertex(IfcEntityInstanceData(in_memory_attribute_storage(1))) { set_attribute_value(0, v1_VertexGeometry ? v1_VertexGeometry->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcVertexPoint::IfcVertexPoint(const std::weak_ptr& e) : IfcVertex(e) { } +// Ifc4x3_add2::IfcVertexPoint::IfcVertexPoint(::Ifc4x3_add2::IfcPoint v1_VertexGeometry) : IfcVertex(const std::weak_ptr&(in_memory_attribute_storage(1))) { set_attribute_value(0, (v1_VertexGeometry));; populate_derived(); } // Function implementations for IfcVibrationDamper -boost::optional< ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value > Ifc4x3_add2::IfcVibrationDamper::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcVibrationDamper::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value > Ifc4x3_add2::IfcVibrationDamper::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcVibrationDamper::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcVibrationDamper::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1269]); } +// const IfcParse::entity& Ifc4x3_add2::IfcVibrationDamper::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1269]); } const IfcParse::entity& Ifc4x3_add2::IfcVibrationDamper::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1269]); } -Ifc4x3_add2::IfcVibrationDamper::IfcVibrationDamper(IfcEntityInstanceData&& e) : IfcElementComponent(std::move(e)) { } -Ifc4x3_add2::IfcVibrationDamper::IfcVibrationDamper(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value > v9_PredefinedType) : IfcElementComponent(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcVibrationDamper::IfcVibrationDamper(const std::weak_ptr& e) : IfcElementComponent(e) { } +// Ifc4x3_add2::IfcVibrationDamper::IfcVibrationDamper(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value > v9_PredefinedType) : IfcElementComponent(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcVibrationDamperType ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value Ifc4x3_add2::IfcVibrationDamperType::PredefinedType() const { return ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcVibrationDamperType::setPredefinedType(::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcVibrationDamperType::setPredefinedType(const ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcVibrationDamperType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1270]); } +// const IfcParse::entity& Ifc4x3_add2::IfcVibrationDamperType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1270]); } const IfcParse::entity& Ifc4x3_add2::IfcVibrationDamperType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1270]); } -Ifc4x3_add2::IfcVibrationDamperType::IfcVibrationDamperType(IfcEntityInstanceData&& e) : IfcElementComponentType(std::move(e)) { } -Ifc4x3_add2::IfcVibrationDamperType::IfcVibrationDamperType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value v10_PredefinedType) : IfcElementComponentType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcVibrationDamperType::IfcVibrationDamperType(const std::weak_ptr& e) : IfcElementComponentType(e) { } +// Ifc4x3_add2::IfcVibrationDamperType::IfcVibrationDamperType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value v10_PredefinedType) : IfcElementComponentType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcVibrationIsolator -boost::optional< ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value > Ifc4x3_add2::IfcVibrationIsolator::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value > Ifc4x3_add2::IfcVibrationIsolator::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcVibrationIsolator::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcVibrationIsolator::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1272]); } +// const IfcParse::entity& Ifc4x3_add2::IfcVibrationIsolator::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1272]); } const IfcParse::entity& Ifc4x3_add2::IfcVibrationIsolator::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1272]); } -Ifc4x3_add2::IfcVibrationIsolator::IfcVibrationIsolator(IfcEntityInstanceData&& e) : IfcElementComponent(std::move(e)) { } -Ifc4x3_add2::IfcVibrationIsolator::IfcVibrationIsolator(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value > v9_PredefinedType) : IfcElementComponent(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcVibrationIsolator::IfcVibrationIsolator(const std::weak_ptr& e) : IfcElementComponent(e) { } +// Ifc4x3_add2::IfcVibrationIsolator::IfcVibrationIsolator(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value > v9_PredefinedType) : IfcElementComponent(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcVibrationIsolatorType ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value Ifc4x3_add2::IfcVibrationIsolatorType::PredefinedType() const { return ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcVibrationIsolatorType::setPredefinedType(::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcVibrationIsolatorType::setPredefinedType(const ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcVibrationIsolatorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1273]); } +// const IfcParse::entity& Ifc4x3_add2::IfcVibrationIsolatorType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1273]); } const IfcParse::entity& Ifc4x3_add2::IfcVibrationIsolatorType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1273]); } -Ifc4x3_add2::IfcVibrationIsolatorType::IfcVibrationIsolatorType(IfcEntityInstanceData&& e) : IfcElementComponentType(std::move(e)) { } -Ifc4x3_add2::IfcVibrationIsolatorType::IfcVibrationIsolatorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value v10_PredefinedType) : IfcElementComponentType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcVibrationIsolatorType::IfcVibrationIsolatorType(const std::weak_ptr& e) : IfcElementComponentType(e) { } +// Ifc4x3_add2::IfcVibrationIsolatorType::IfcVibrationIsolatorType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value v10_PredefinedType) : IfcElementComponentType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcVirtualElement -boost::optional< ::Ifc4x3_add2::IfcVirtualElementTypeEnum::Value > Ifc4x3_add2::IfcVirtualElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcVirtualElementTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcVirtualElement::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcVirtualElementTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcVirtualElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcVirtualElementTypeEnum::Value > Ifc4x3_add2::IfcVirtualElement::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcVirtualElementTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcVirtualElement::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcVirtualElementTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcVirtualElementTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcVirtualElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1275]); } +// const IfcParse::entity& Ifc4x3_add2::IfcVirtualElement::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1275]); } const IfcParse::entity& Ifc4x3_add2::IfcVirtualElement::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1275]); } -Ifc4x3_add2::IfcVirtualElement::IfcVirtualElement(IfcEntityInstanceData&& e) : IfcElement(std::move(e)) { } -Ifc4x3_add2::IfcVirtualElement::IfcVirtualElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcVirtualElementTypeEnum::Value > v9_PredefinedType) : IfcElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcVirtualElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcVirtualElement::IfcVirtualElement(const std::weak_ptr& e) : IfcElement(e) { } +// Ifc4x3_add2::IfcVirtualElement::IfcVirtualElement(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcVirtualElementTypeEnum::Value > v9_PredefinedType) : IfcElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcVirtualElementTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcVirtualGridIntersection -aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr Ifc4x3_add2::IfcVirtualGridIntersection::IntersectingAxes() const { aggregate_of_instance::ptr es = get_attribute_value(0); return es->as< ::Ifc4x3_add2::IfcGridAxis >(); } -void Ifc4x3_add2::IfcVirtualGridIntersection::setIntersectingAxes(aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr v) { set_attribute_value(0, (v)->generalize());if constexpr (false)unset_attribute_value(0); } +std::vector< ::Ifc4x3_add2::IfcGridAxis > Ifc4x3_add2::IfcVirtualGridIntersection::IntersectingAxes() const { std::vector es = get_attribute_value(0); return cast_vector<::Ifc4x3_add2::IfcGridAxis>(es); } +void Ifc4x3_add2::IfcVirtualGridIntersection::setIntersectingAxes(const std::vector< ::Ifc4x3_add2::IfcGridAxis >& v) { set_attribute_value(0, cast_vector(v));if constexpr (false)unset_attribute_value(0); } std::vector< double > /*[2:3]*/ Ifc4x3_add2::IfcVirtualGridIntersection::OffsetDistances() const { std::vector< double > /*[2:3]*/ v = get_attribute_value(1); return v; } -void Ifc4x3_add2::IfcVirtualGridIntersection::setOffsetDistances(std::vector< double > /*[2:3]*/ v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcVirtualGridIntersection::setOffsetDistances(const std::vector< double > /*[2:3]*/& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcVirtualGridIntersection::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1277]); } +// const IfcParse::entity& Ifc4x3_add2::IfcVirtualGridIntersection::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1277]); } const IfcParse::entity& Ifc4x3_add2::IfcVirtualGridIntersection::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1277]); } -Ifc4x3_add2::IfcVirtualGridIntersection::IfcVirtualGridIntersection(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcVirtualGridIntersection::IfcVirtualGridIntersection(aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr v1_IntersectingAxes, std::vector< double > /*[2:3]*/ v2_OffsetDistances) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_IntersectingAxes)->generalize());set_attribute_value(1, (v2_OffsetDistances));; populate_derived(); } +// Ifc4x3_add2::IfcVirtualGridIntersection::IfcVirtualGridIntersection(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcVirtualGridIntersection::IfcVirtualGridIntersection(std::vector< ::Ifc4x3_add2::IfcGridAxis > v1_IntersectingAxes, std::vector< double > /*[2:3]*/ v2_OffsetDistances) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_IntersectingAxes)->generalize());set_attribute_value(1, (v2_OffsetDistances));; populate_derived(); } // Function implementations for IfcVoidingFeature -boost::optional< ::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Value > Ifc4x3_add2::IfcVoidingFeature::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Value > Ifc4x3_add2::IfcVoidingFeature::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcVoidingFeature::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcVoidingFeature::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1278]); } +// const IfcParse::entity& Ifc4x3_add2::IfcVoidingFeature::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1278]); } const IfcParse::entity& Ifc4x3_add2::IfcVoidingFeature::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1278]); } -Ifc4x3_add2::IfcVoidingFeature::IfcVoidingFeature(IfcEntityInstanceData&& e) : IfcFeatureElementSubtraction(std::move(e)) { } -Ifc4x3_add2::IfcVoidingFeature::IfcVoidingFeature(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementSubtraction(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcVoidingFeature::IfcVoidingFeature(const std::weak_ptr& e) : IfcFeatureElementSubtraction(e) { } +// Ifc4x3_add2::IfcVoidingFeature::IfcVoidingFeature(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementSubtraction(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcWall -boost::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value > Ifc4x3_add2::IfcWall::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcWallTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcWall::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcWallTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value > Ifc4x3_add2::IfcWall::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcWallTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcWall::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcWallTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcWall::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1282]); } +// const IfcParse::entity& Ifc4x3_add2::IfcWall::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1282]); } const IfcParse::entity& Ifc4x3_add2::IfcWall::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1282]); } -Ifc4x3_add2::IfcWall::IfcWall(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcWall::IfcWall(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcWallTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcWall::IfcWall(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcWall::IfcWall(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcWallTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcWallStandardCase -const IfcParse::entity& Ifc4x3_add2::IfcWallStandardCase::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1283]); } +// const IfcParse::entity& Ifc4x3_add2::IfcWallStandardCase::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1283]); } const IfcParse::entity& Ifc4x3_add2::IfcWallStandardCase::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1283]); } -Ifc4x3_add2::IfcWallStandardCase::IfcWallStandardCase(IfcEntityInstanceData&& e) : IfcWall(std::move(e)) { } -Ifc4x3_add2::IfcWallStandardCase::IfcWallStandardCase(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value > v9_PredefinedType) : IfcWall(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcWallTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcWallStandardCase::IfcWallStandardCase(const std::weak_ptr& e) : IfcWall(e) { } +// Ifc4x3_add2::IfcWallStandardCase::IfcWallStandardCase(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value > v9_PredefinedType) : IfcWall(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcWallTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcWallType ::Ifc4x3_add2::IfcWallTypeEnum::Value Ifc4x3_add2::IfcWallType::PredefinedType() const { return ::Ifc4x3_add2::IfcWallTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcWallType::setPredefinedType(::Ifc4x3_add2::IfcWallTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcWallTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcWallType::setPredefinedType(const ::Ifc4x3_add2::IfcWallTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcWallTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcWallType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1284]); } +// const IfcParse::entity& Ifc4x3_add2::IfcWallType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1284]); } const IfcParse::entity& Ifc4x3_add2::IfcWallType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1284]); } -Ifc4x3_add2::IfcWallType::IfcWallType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcWallType::IfcWallType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcWallTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcWallTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcWallType::IfcWallType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcWallType::IfcWallType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcWallTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcWallTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcWasteTerminal -boost::optional< ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value > Ifc4x3_add2::IfcWasteTerminal::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value > Ifc4x3_add2::IfcWasteTerminal::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcWasteTerminal::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcWasteTerminal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1289]); } +// const IfcParse::entity& Ifc4x3_add2::IfcWasteTerminal::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1289]); } const IfcParse::entity& Ifc4x3_add2::IfcWasteTerminal::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1289]); } -Ifc4x3_add2::IfcWasteTerminal::IfcWasteTerminal(IfcEntityInstanceData&& e) : IfcFlowTerminal(std::move(e)) { } -Ifc4x3_add2::IfcWasteTerminal::IfcWasteTerminal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcWasteTerminal::IfcWasteTerminal(const std::weak_ptr& e) : IfcFlowTerminal(e) { } +// Ifc4x3_add2::IfcWasteTerminal::IfcWasteTerminal(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcWasteTerminalType ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value Ifc4x3_add2::IfcWasteTerminalType::PredefinedType() const { return ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcWasteTerminalType::setPredefinedType(::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcWasteTerminalType::setPredefinedType(const ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } -const IfcParse::entity& Ifc4x3_add2::IfcWasteTerminalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1290]); } +// const IfcParse::entity& Ifc4x3_add2::IfcWasteTerminalType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1290]); } const IfcParse::entity& Ifc4x3_add2::IfcWasteTerminalType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1290]); } -Ifc4x3_add2::IfcWasteTerminalType::IfcWasteTerminalType(IfcEntityInstanceData&& e) : IfcFlowTerminalType(std::move(e)) { } -Ifc4x3_add2::IfcWasteTerminalType::IfcWasteTerminalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(IfcEntityInstanceData(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } +// Ifc4x3_add2::IfcWasteTerminalType::IfcWasteTerminalType(const std::weak_ptr& e) : IfcFlowTerminalType(e) { } +// Ifc4x3_add2::IfcWasteTerminalType::IfcWasteTerminalType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType(const std::weak_ptr&(in_memory_attribute_storage(10))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Class(),(size_t)v10_PredefinedType)));; populate_derived(); } // Function implementations for IfcWellKnownText std::string Ifc4x3_add2::IfcWellKnownText::WellKnownText() const { std::string v = get_attribute_value(0); return v; } -void Ifc4x3_add2::IfcWellKnownText::setWellKnownText(std::string v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } -::Ifc4x3_add2::IfcCoordinateReferenceSystem* Ifc4x3_add2::IfcWellKnownText::CoordinateReferenceSystem() const { return ((IfcUtil::IfcBaseClass*)(get_attribute_value(1)))->as<::Ifc4x3_add2::IfcCoordinateReferenceSystem>(true); } -void Ifc4x3_add2::IfcWellKnownText::setCoordinateReferenceSystem(::Ifc4x3_add2::IfcCoordinateReferenceSystem* v) { set_attribute_value(1, v->as());if constexpr (false)unset_attribute_value(1); } +void Ifc4x3_add2::IfcWellKnownText::setWellKnownText(const std::string& v) { set_attribute_value(0, v);if constexpr (false)unset_attribute_value(0); } +::Ifc4x3_add2::IfcCoordinateReferenceSystem Ifc4x3_add2::IfcWellKnownText::CoordinateReferenceSystem() const { return ((express::Base)(get_attribute_value(1))).as<::Ifc4x3_add2::IfcCoordinateReferenceSystem>(); } +void Ifc4x3_add2::IfcWellKnownText::setCoordinateReferenceSystem(const ::Ifc4x3_add2::IfcCoordinateReferenceSystem& v) { set_attribute_value(1, v);if constexpr (false)unset_attribute_value(1); } -const IfcParse::entity& Ifc4x3_add2::IfcWellKnownText::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1292]); } +// const IfcParse::entity& Ifc4x3_add2::IfcWellKnownText::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1292]); } const IfcParse::entity& Ifc4x3_add2::IfcWellKnownText::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1292]); } -Ifc4x3_add2::IfcWellKnownText::IfcWellKnownText(IfcEntityInstanceData&& e) : IfcUtil::IfcBaseEntity(std::move(e)) { } -Ifc4x3_add2::IfcWellKnownText::IfcWellKnownText(std::string v1_WellKnownText, ::Ifc4x3_add2::IfcCoordinateReferenceSystem* v2_CoordinateReferenceSystem) : IfcUtil::IfcBaseEntity(IfcEntityInstanceData(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_WellKnownText));set_attribute_value(1, v2_CoordinateReferenceSystem ? v2_CoordinateReferenceSystem->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcWellKnownText::IfcWellKnownText(const std::weak_ptr& e) : express::Entity(e) { } +// Ifc4x3_add2::IfcWellKnownText::IfcWellKnownText(std::string v1_WellKnownText, ::Ifc4x3_add2::IfcCoordinateReferenceSystem v2_CoordinateReferenceSystem) : express::Entity(const std::weak_ptr&(in_memory_attribute_storage(2))) { set_attribute_value(0, (v1_WellKnownText));set_attribute_value(1, (v2_CoordinateReferenceSystem));; populate_derived(); } // Function implementations for IfcWindow -boost::optional< double > Ifc4x3_add2::IfcWindow::OverallHeight() const { if(get_attribute_value(8).isNull()) { return boost::none; } double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcWindow::setOverallHeight(boost::optional< double > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -boost::optional< double > Ifc4x3_add2::IfcWindow::OverallWidth() const { if(get_attribute_value(9).isNull()) { return boost::none; } double v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcWindow::setOverallWidth(boost::optional< double > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -boost::optional< ::Ifc4x3_add2::IfcWindowTypeEnum::Value > Ifc4x3_add2::IfcWindow::PredefinedType() const { if(get_attribute_value(10).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcWindowTypeEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcWindow::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcWindowTypeEnum::Value > v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcWindowTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } -boost::optional< ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value > Ifc4x3_add2::IfcWindow::PartitioningType() const { if(get_attribute_value(11).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::FromString(get_attribute_value(11)); } -void Ifc4x3_add2::IfcWindow::setPartitioningType(boost::optional< ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value > v) { if (v) {set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Class(), (size_t) *v));} else {unset_attribute_value(11);} } -boost::optional< std::string > Ifc4x3_add2::IfcWindow::UserDefinedPartitioningType() const { if(get_attribute_value(12).isNull()) { return boost::none; } std::string v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +std::optional< double > Ifc4x3_add2::IfcWindow::OverallHeight() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } double v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcWindow::setOverallHeight(const std::optional< double >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< double > Ifc4x3_add2::IfcWindow::OverallWidth() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } double v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcWindow::setOverallWidth(const std::optional< double >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< ::Ifc4x3_add2::IfcWindowTypeEnum::Value > Ifc4x3_add2::IfcWindow::PredefinedType() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcWindowTypeEnum::FromString(get_attribute_value(10)); } +void Ifc4x3_add2::IfcWindow::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcWindowTypeEnum::Value >& v) { if (v) {set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcWindowTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(10);} } +std::optional< ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value > Ifc4x3_add2::IfcWindow::PartitioningType() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::FromString(get_attribute_value(11)); } +void Ifc4x3_add2::IfcWindow::setPartitioningType(const std::optional< ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value >& v) { if (v) {set_attribute_value(11, EnumerationReference(&::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Class(), (size_t) *v));} else {unset_attribute_value(11);} } +std::optional< std::string > Ifc4x3_add2::IfcWindow::UserDefinedPartitioningType() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } std::string v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcWindow::setUserDefinedPartitioningType(const std::optional< std::string >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -const IfcParse::entity& Ifc4x3_add2::IfcWindow::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1294]); } +// const IfcParse::entity& Ifc4x3_add2::IfcWindow::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1294]); } const IfcParse::entity& Ifc4x3_add2::IfcWindow::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1294]); } -Ifc4x3_add2::IfcWindow::IfcWindow(IfcEntityInstanceData&& e) : IfcBuiltElement(std::move(e)) { } -Ifc4x3_add2::IfcWindow::IfcWindow(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4x3_add2::IfcWindowTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value > v12_PartitioningType, boost::optional< std::string > v13_UserDefinedPartitioningType) : IfcBuiltElement(IfcEntityInstanceData(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); }set_attribute_value(5, v6_ObjectPlacement ? v6_ObjectPlacement->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(6, v7_Representation ? v7_Representation->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_OverallHeight) {set_attribute_value(8, (*v9_OverallHeight)); } if (v10_OverallWidth) {set_attribute_value(9, (*v10_OverallWidth)); } if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcWindowTypeEnum::Class(),(size_t)*v11_PredefinedType))); } if (v12_PartitioningType) {set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Class(),(size_t)*v12_PartitioningType))); } if (v13_UserDefinedPartitioningType) {set_attribute_value(12, (*v13_UserDefinedPartitioningType)); }; populate_derived(); } +// Ifc4x3_add2::IfcWindow::IfcWindow(const std::weak_ptr& e) : IfcBuiltElement(e) { } +// Ifc4x3_add2::IfcWindow::IfcWindow(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< double > v9_OverallHeight, std::optional< double > v10_OverallWidth, std::optional< ::Ifc4x3_add2::IfcWindowTypeEnum::Value > v11_PredefinedType, std::optional< ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value > v12_PartitioningType, std::optional< std::string > v13_UserDefinedPartitioningType) : IfcBuiltElement(const std::weak_ptr&(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_ObjectPlacement) {set_attribute_value(5, (*v6_ObjectPlacement)); } if (v7_Representation) {set_attribute_value(6, (*v7_Representation)); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_OverallHeight) {set_attribute_value(8, (*v9_OverallHeight)); } if (v10_OverallWidth) {set_attribute_value(9, (*v10_OverallWidth)); } if (v11_PredefinedType) {set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcWindowTypeEnum::Class(),(size_t)*v11_PredefinedType))); } if (v12_PartitioningType) {set_attribute_value(11, (EnumerationReference(&::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Class(),(size_t)*v12_PartitioningType))); } if (v13_UserDefinedPartitioningType) {set_attribute_value(12, (*v13_UserDefinedPartitioningType)); }; populate_derived(); } // Function implementations for IfcWindowLiningProperties -boost::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::LiningDepth() const { if(get_attribute_value(4).isNull()) { return boost::none; } double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::LiningThickness() const { if(get_attribute_value(5).isNull()) { return boost::none; } double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -boost::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::TransomThickness() const { if(get_attribute_value(6).isNull()) { return boost::none; } double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::MullionThickness() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::FirstTransomOffset() const { if(get_attribute_value(8).isNull()) { return boost::none; } double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -boost::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::SecondTransomOffset() const { if(get_attribute_value(9).isNull()) { return boost::none; } double v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -boost::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::FirstMullionOffset() const { if(get_attribute_value(10).isNull()) { return boost::none; } double v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } -boost::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::SecondMullionOffset() const { if(get_attribute_value(11).isNull()) { return boost::none; } double v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -::Ifc4x3_add2::IfcShapeAspect* Ifc4x3_add2::IfcWindowLiningProperties::ShapeAspectStyle() const { if(get_attribute_value(12).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(12)))->as<::Ifc4x3_add2::IfcShapeAspect>(true); } -void Ifc4x3_add2::IfcWindowLiningProperties::setShapeAspectStyle(::Ifc4x3_add2::IfcShapeAspect* v) { set_attribute_value(12, v->as());if constexpr (false)unset_attribute_value(12); } -boost::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::LiningOffset() const { if(get_attribute_value(13).isNull()) { return boost::none; } double v = get_attribute_value(13); return v; } -void Ifc4x3_add2::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } -boost::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::LiningToPanelOffsetX() const { if(get_attribute_value(14).isNull()) { return boost::none; } double v = get_attribute_value(14); return v; } -void Ifc4x3_add2::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } -boost::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::LiningToPanelOffsetY() const { if(get_attribute_value(15).isNull()) { return boost::none; } double v = get_attribute_value(15); return v; } -void Ifc4x3_add2::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { if (v) {set_attribute_value(15, *v);} else {unset_attribute_value(15);} } +std::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::LiningDepth() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } double v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcWindowLiningProperties::setLiningDepth(const std::optional< double >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::LiningThickness() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } double v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcWindowLiningProperties::setLiningThickness(const std::optional< double >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::TransomThickness() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } double v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcWindowLiningProperties::setTransomThickness(const std::optional< double >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::MullionThickness() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcWindowLiningProperties::setMullionThickness(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::FirstTransomOffset() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } double v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcWindowLiningProperties::setFirstTransomOffset(const std::optional< double >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::SecondTransomOffset() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } double v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcWindowLiningProperties::setSecondTransomOffset(const std::optional< double >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::FirstMullionOffset() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } double v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcWindowLiningProperties::setFirstMullionOffset(const std::optional< double >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +std::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::SecondMullionOffset() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } double v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcWindowLiningProperties::setSecondMullionOffset(const std::optional< double >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +::Ifc4x3_add2::IfcShapeAspect Ifc4x3_add2::IfcWindowLiningProperties::ShapeAspectStyle() const { if(get_attribute_value(12).isNull()) { return ::Ifc4x3_add2::IfcShapeAspect{}; } return ((express::Base)(get_attribute_value(12))).as<::Ifc4x3_add2::IfcShapeAspect>(); } +void Ifc4x3_add2::IfcWindowLiningProperties::setShapeAspectStyle(const ::Ifc4x3_add2::IfcShapeAspect& v) { set_attribute_value(12, v);if constexpr (false)unset_attribute_value(12); } +std::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::LiningOffset() const { if(get_attribute_value(13).isNull()) { return std::nullopt; } double v = get_attribute_value(13); return v; } +void Ifc4x3_add2::IfcWindowLiningProperties::setLiningOffset(const std::optional< double >& v) { if (v) {set_attribute_value(13, *v);} else {unset_attribute_value(13);} } +std::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::LiningToPanelOffsetX() const { if(get_attribute_value(14).isNull()) { return std::nullopt; } double v = get_attribute_value(14); return v; } +void Ifc4x3_add2::IfcWindowLiningProperties::setLiningToPanelOffsetX(const std::optional< double >& v) { if (v) {set_attribute_value(14, *v);} else {unset_attribute_value(14);} } +std::optional< double > Ifc4x3_add2::IfcWindowLiningProperties::LiningToPanelOffsetY() const { if(get_attribute_value(15).isNull()) { return std::nullopt; } double v = get_attribute_value(15); return v; } +void Ifc4x3_add2::IfcWindowLiningProperties::setLiningToPanelOffsetY(const std::optional< double >& v) { if (v) {set_attribute_value(15, *v);} else {unset_attribute_value(15);} } -const IfcParse::entity& Ifc4x3_add2::IfcWindowLiningProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1295]); } +// const IfcParse::entity& Ifc4x3_add2::IfcWindowLiningProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1295]); } const IfcParse::entity& Ifc4x3_add2::IfcWindowLiningProperties::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1295]); } -Ifc4x3_add2::IfcWindowLiningProperties::IfcWindowLiningProperties(IfcEntityInstanceData&& e) : IfcPreDefinedPropertySet(std::move(e)) { } -Ifc4x3_add2::IfcWindowLiningProperties::IfcWindowLiningProperties(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_LiningDepth, boost::optional< double > v6_LiningThickness, boost::optional< double > v7_TransomThickness, boost::optional< double > v8_MullionThickness, boost::optional< double > v9_FirstTransomOffset, boost::optional< double > v10_SecondTransomOffset, boost::optional< double > v11_FirstMullionOffset, boost::optional< double > v12_SecondMullionOffset, ::Ifc4x3_add2::IfcShapeAspect* v13_ShapeAspectStyle, boost::optional< double > v14_LiningOffset, boost::optional< double > v15_LiningToPanelOffsetX, boost::optional< double > v16_LiningToPanelOffsetY) : IfcPreDefinedPropertySet(IfcEntityInstanceData(in_memory_attribute_storage(16))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_LiningDepth) {set_attribute_value(4, (*v5_LiningDepth)); } if (v6_LiningThickness) {set_attribute_value(5, (*v6_LiningThickness)); } if (v7_TransomThickness) {set_attribute_value(6, (*v7_TransomThickness)); } if (v8_MullionThickness) {set_attribute_value(7, (*v8_MullionThickness)); } if (v9_FirstTransomOffset) {set_attribute_value(8, (*v9_FirstTransomOffset)); } if (v10_SecondTransomOffset) {set_attribute_value(9, (*v10_SecondTransomOffset)); } if (v11_FirstMullionOffset) {set_attribute_value(10, (*v11_FirstMullionOffset)); } if (v12_SecondMullionOffset) {set_attribute_value(11, (*v12_SecondMullionOffset)); }set_attribute_value(12, v13_ShapeAspectStyle ? v13_ShapeAspectStyle->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v14_LiningOffset) {set_attribute_value(13, (*v14_LiningOffset)); } if (v15_LiningToPanelOffsetX) {set_attribute_value(14, (*v15_LiningToPanelOffsetX)); } if (v16_LiningToPanelOffsetY) {set_attribute_value(15, (*v16_LiningToPanelOffsetY)); }; populate_derived(); } +// Ifc4x3_add2::IfcWindowLiningProperties::IfcWindowLiningProperties(const std::weak_ptr& e) : IfcPreDefinedPropertySet(e) { } +// Ifc4x3_add2::IfcWindowLiningProperties::IfcWindowLiningProperties(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< double > v5_LiningDepth, std::optional< double > v6_LiningThickness, std::optional< double > v7_TransomThickness, std::optional< double > v8_MullionThickness, std::optional< double > v9_FirstTransomOffset, std::optional< double > v10_SecondTransomOffset, std::optional< double > v11_FirstMullionOffset, std::optional< double > v12_SecondMullionOffset, ::Ifc4x3_add2::IfcShapeAspect v13_ShapeAspectStyle, std::optional< double > v14_LiningOffset, std::optional< double > v15_LiningToPanelOffsetX, std::optional< double > v16_LiningToPanelOffsetY) : IfcPreDefinedPropertySet(const std::weak_ptr&(in_memory_attribute_storage(16))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_LiningDepth) {set_attribute_value(4, (*v5_LiningDepth)); } if (v6_LiningThickness) {set_attribute_value(5, (*v6_LiningThickness)); } if (v7_TransomThickness) {set_attribute_value(6, (*v7_TransomThickness)); } if (v8_MullionThickness) {set_attribute_value(7, (*v8_MullionThickness)); } if (v9_FirstTransomOffset) {set_attribute_value(8, (*v9_FirstTransomOffset)); } if (v10_SecondTransomOffset) {set_attribute_value(9, (*v10_SecondTransomOffset)); } if (v11_FirstMullionOffset) {set_attribute_value(10, (*v11_FirstMullionOffset)); } if (v12_SecondMullionOffset) {set_attribute_value(11, (*v12_SecondMullionOffset)); } if (v13_ShapeAspectStyle) {set_attribute_value(12, (*v13_ShapeAspectStyle)); } if (v14_LiningOffset) {set_attribute_value(13, (*v14_LiningOffset)); } if (v15_LiningToPanelOffsetX) {set_attribute_value(14, (*v15_LiningToPanelOffsetX)); } if (v16_LiningToPanelOffsetY) {set_attribute_value(15, (*v16_LiningToPanelOffsetY)); }; populate_derived(); } // Function implementations for IfcWindowPanelProperties ::Ifc4x3_add2::IfcWindowPanelOperationEnum::Value Ifc4x3_add2::IfcWindowPanelProperties::OperationType() const { return ::Ifc4x3_add2::IfcWindowPanelOperationEnum::FromString(get_attribute_value(4)); } -void Ifc4x3_add2::IfcWindowPanelProperties::setOperationType(::Ifc4x3_add2::IfcWindowPanelOperationEnum::Value v) { set_attribute_value(4, EnumerationReference(&::Ifc4x3_add2::IfcWindowPanelOperationEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcWindowPanelProperties::setOperationType(const ::Ifc4x3_add2::IfcWindowPanelOperationEnum::Value& v) { set_attribute_value(4, EnumerationReference(&::Ifc4x3_add2::IfcWindowPanelOperationEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(4); } ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value Ifc4x3_add2::IfcWindowPanelProperties::PanelPosition() const { return ::Ifc4x3_add2::IfcWindowPanelPositionEnum::FromString(get_attribute_value(5)); } -void Ifc4x3_add2::IfcWindowPanelProperties::setPanelPosition(::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value v) { set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcWindowPanelPositionEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(5); } -boost::optional< double > Ifc4x3_add2::IfcWindowPanelProperties::FrameDepth() const { if(get_attribute_value(6).isNull()) { return boost::none; } double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } -boost::optional< double > Ifc4x3_add2::IfcWindowPanelProperties::FrameThickness() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -::Ifc4x3_add2::IfcShapeAspect* Ifc4x3_add2::IfcWindowPanelProperties::ShapeAspectStyle() const { if(get_attribute_value(8).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(8)))->as<::Ifc4x3_add2::IfcShapeAspect>(true); } -void Ifc4x3_add2::IfcWindowPanelProperties::setShapeAspectStyle(::Ifc4x3_add2::IfcShapeAspect* v) { set_attribute_value(8, v->as());if constexpr (false)unset_attribute_value(8); } +void Ifc4x3_add2::IfcWindowPanelProperties::setPanelPosition(const ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value& v) { set_attribute_value(5, EnumerationReference(&::Ifc4x3_add2::IfcWindowPanelPositionEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(5); } +std::optional< double > Ifc4x3_add2::IfcWindowPanelProperties::FrameDepth() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } double v = get_attribute_value(6); return v; } +void Ifc4x3_add2::IfcWindowPanelProperties::setFrameDepth(const std::optional< double >& v) { if (v) {set_attribute_value(6, *v);} else {unset_attribute_value(6);} } +std::optional< double > Ifc4x3_add2::IfcWindowPanelProperties::FrameThickness() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcWindowPanelProperties::setFrameThickness(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +::Ifc4x3_add2::IfcShapeAspect Ifc4x3_add2::IfcWindowPanelProperties::ShapeAspectStyle() const { if(get_attribute_value(8).isNull()) { return ::Ifc4x3_add2::IfcShapeAspect{}; } return ((express::Base)(get_attribute_value(8))).as<::Ifc4x3_add2::IfcShapeAspect>(); } +void Ifc4x3_add2::IfcWindowPanelProperties::setShapeAspectStyle(const ::Ifc4x3_add2::IfcShapeAspect& v) { set_attribute_value(8, v);if constexpr (false)unset_attribute_value(8); } -const IfcParse::entity& Ifc4x3_add2::IfcWindowPanelProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1298]); } +// const IfcParse::entity& Ifc4x3_add2::IfcWindowPanelProperties::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1298]); } const IfcParse::entity& Ifc4x3_add2::IfcWindowPanelProperties::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1298]); } -Ifc4x3_add2::IfcWindowPanelProperties::IfcWindowPanelProperties(IfcEntityInstanceData&& e) : IfcPreDefinedPropertySet(std::move(e)) { } -Ifc4x3_add2::IfcWindowPanelProperties::IfcWindowPanelProperties(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcWindowPanelOperationEnum::Value v5_OperationType, ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, ::Ifc4x3_add2::IfcShapeAspect* v9_ShapeAspectStyle) : IfcPreDefinedPropertySet(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcWindowPanelOperationEnum::Class(),(size_t)v5_OperationType)));set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcWindowPanelPositionEnum::Class(),(size_t)v6_PanelPosition))); if (v7_FrameDepth) {set_attribute_value(6, (*v7_FrameDepth)); } if (v8_FrameThickness) {set_attribute_value(7, (*v8_FrameThickness)); }set_attribute_value(8, v9_ShapeAspectStyle ? v9_ShapeAspectStyle->as() : (IfcUtil::IfcBaseClass*) nullptr);; populate_derived(); } +// Ifc4x3_add2::IfcWindowPanelProperties::IfcWindowPanelProperties(const std::weak_ptr& e) : IfcPreDefinedPropertySet(e) { } +// Ifc4x3_add2::IfcWindowPanelProperties::IfcWindowPanelProperties(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcWindowPanelOperationEnum::Value v5_OperationType, ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value v6_PanelPosition, std::optional< double > v7_FrameDepth, std::optional< double > v8_FrameThickness, ::Ifc4x3_add2::IfcShapeAspect v9_ShapeAspectStyle) : IfcPreDefinedPropertySet(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); }set_attribute_value(4, (EnumerationReference(&::Ifc4x3_add2::IfcWindowPanelOperationEnum::Class(),(size_t)v5_OperationType)));set_attribute_value(5, (EnumerationReference(&::Ifc4x3_add2::IfcWindowPanelPositionEnum::Class(),(size_t)v6_PanelPosition))); if (v7_FrameDepth) {set_attribute_value(6, (*v7_FrameDepth)); } if (v8_FrameThickness) {set_attribute_value(7, (*v8_FrameThickness)); } if (v9_ShapeAspectStyle) {set_attribute_value(8, (*v9_ShapeAspectStyle)); }; populate_derived(); } // Function implementations for IfcWindowType ::Ifc4x3_add2::IfcWindowTypeEnum::Value Ifc4x3_add2::IfcWindowType::PredefinedType() const { return ::Ifc4x3_add2::IfcWindowTypeEnum::FromString(get_attribute_value(9)); } -void Ifc4x3_add2::IfcWindowType::setPredefinedType(::Ifc4x3_add2::IfcWindowTypeEnum::Value v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcWindowTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } +void Ifc4x3_add2::IfcWindowType::setPredefinedType(const ::Ifc4x3_add2::IfcWindowTypeEnum::Value& v) { set_attribute_value(9, EnumerationReference(&::Ifc4x3_add2::IfcWindowTypeEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(9); } ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value Ifc4x3_add2::IfcWindowType::PartitioningType() const { return ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::FromString(get_attribute_value(10)); } -void Ifc4x3_add2::IfcWindowType::setPartitioningType(::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value v) { set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(10); } -boost::optional< bool > Ifc4x3_add2::IfcWindowType::ParameterTakesPrecedence() const { if(get_attribute_value(11).isNull()) { return boost::none; } bool v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } -boost::optional< std::string > Ifc4x3_add2::IfcWindowType::UserDefinedPartitioningType() const { if(get_attribute_value(12).isNull()) { return boost::none; } std::string v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +void Ifc4x3_add2::IfcWindowType::setPartitioningType(const ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value& v) { set_attribute_value(10, EnumerationReference(&::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Class(), (size_t) v));if constexpr (false)unset_attribute_value(10); } +std::optional< bool > Ifc4x3_add2::IfcWindowType::ParameterTakesPrecedence() const { if(get_attribute_value(11).isNull()) { return std::nullopt; } bool v = get_attribute_value(11); return v; } +void Ifc4x3_add2::IfcWindowType::setParameterTakesPrecedence(const std::optional< bool >& v) { if (v) {set_attribute_value(11, *v);} else {unset_attribute_value(11);} } +std::optional< std::string > Ifc4x3_add2::IfcWindowType::UserDefinedPartitioningType() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } std::string v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcWindowType::setUserDefinedPartitioningType(const std::optional< std::string >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -const IfcParse::entity& Ifc4x3_add2::IfcWindowType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1299]); } +// const IfcParse::entity& Ifc4x3_add2::IfcWindowType::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1299]); } const IfcParse::entity& Ifc4x3_add2::IfcWindowType::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1299]); } -Ifc4x3_add2::IfcWindowType::IfcWindowType(IfcEntityInstanceData&& e) : IfcBuiltElementType(std::move(e)) { } -Ifc4x3_add2::IfcWindowType::IfcWindowType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcWindowTypeEnum::Value v10_PredefinedType, ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value v11_PartitioningType, boost::optional< bool > v12_ParameterTakesPrecedence, boost::optional< std::string > v13_UserDefinedPartitioningType) : IfcBuiltElementType(IfcEntityInstanceData(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcWindowTypeEnum::Class(),(size_t)v10_PredefinedType)));set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Class(),(size_t)v11_PartitioningType))); if (v12_ParameterTakesPrecedence) {set_attribute_value(11, (*v12_ParameterTakesPrecedence)); } if (v13_UserDefinedPartitioningType) {set_attribute_value(12, (*v13_UserDefinedPartitioningType)); }; populate_derived(); } +// Ifc4x3_add2::IfcWindowType::IfcWindowType(const std::weak_ptr& e) : IfcBuiltElementType(e) { } +// Ifc4x3_add2::IfcWindowType::IfcWindowType(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcWindowTypeEnum::Value v10_PredefinedType, ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value v11_PartitioningType, std::optional< bool > v12_ParameterTakesPrecedence, std::optional< std::string > v13_UserDefinedPartitioningType) : IfcBuiltElementType(const std::weak_ptr&(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ApplicableOccurrence) {set_attribute_value(4, (*v5_ApplicableOccurrence)); } if (v6_HasPropertySets) {set_attribute_value(5, (*v6_HasPropertySets)->generalize()); } if (v7_RepresentationMaps) {set_attribute_value(6, (*v7_RepresentationMaps)->generalize()); } if (v8_Tag) {set_attribute_value(7, (*v8_Tag)); } if (v9_ElementType) {set_attribute_value(8, (*v9_ElementType)); }set_attribute_value(9, (EnumerationReference(&::Ifc4x3_add2::IfcWindowTypeEnum::Class(),(size_t)v10_PredefinedType)));set_attribute_value(10, (EnumerationReference(&::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Class(),(size_t)v11_PartitioningType))); if (v12_ParameterTakesPrecedence) {set_attribute_value(11, (*v12_ParameterTakesPrecedence)); } if (v13_UserDefinedPartitioningType) {set_attribute_value(12, (*v13_UserDefinedPartitioningType)); }; populate_derived(); } // Function implementations for IfcWorkCalendar -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcWorkTime >::ptr > Ifc4x3_add2::IfcWorkCalendar::WorkingTimes() const { if(get_attribute_value(6).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(6); return es->as< ::Ifc4x3_add2::IfcWorkTime >(); } -void Ifc4x3_add2::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcWorkTime >::ptr > v) { if (v) {set_attribute_value(6, (*v)->generalize());} else {unset_attribute_value(6);} } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcWorkTime >::ptr > Ifc4x3_add2::IfcWorkCalendar::ExceptionTimes() const { if(get_attribute_value(7).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(7); return es->as< ::Ifc4x3_add2::IfcWorkTime >(); } -void Ifc4x3_add2::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcWorkTime >::ptr > v) { if (v) {set_attribute_value(7, (*v)->generalize());} else {unset_attribute_value(7);} } -boost::optional< ::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Value > Ifc4x3_add2::IfcWorkCalendar::PredefinedType() const { if(get_attribute_value(8).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcWorkCalendarTypeEnum::FromString(get_attribute_value(8)); } -void Ifc4x3_add2::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Value > v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcWorkTime > > Ifc4x3_add2::IfcWorkCalendar::WorkingTimes() const { if(get_attribute_value(6).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(6); return cast_vector<::Ifc4x3_add2::IfcWorkTime>(es); } +void Ifc4x3_add2::IfcWorkCalendar::setWorkingTimes(const std::optional< std::vector< ::Ifc4x3_add2::IfcWorkTime > >& v) { if (v) {set_attribute_value(6, cast_vector(*v));} else {unset_attribute_value(6);} } +std::optional< std::vector< ::Ifc4x3_add2::IfcWorkTime > > Ifc4x3_add2::IfcWorkCalendar::ExceptionTimes() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(7); return cast_vector<::Ifc4x3_add2::IfcWorkTime>(es); } +void Ifc4x3_add2::IfcWorkCalendar::setExceptionTimes(const std::optional< std::vector< ::Ifc4x3_add2::IfcWorkTime > >& v) { if (v) {set_attribute_value(7, cast_vector(*v));} else {unset_attribute_value(7);} } +std::optional< ::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Value > Ifc4x3_add2::IfcWorkCalendar::PredefinedType() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcWorkCalendarTypeEnum::FromString(get_attribute_value(8)); } +void Ifc4x3_add2::IfcWorkCalendar::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Value >& v) { if (v) {set_attribute_value(8, EnumerationReference(&::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcWorkCalendar::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1302]); } +// const IfcParse::entity& Ifc4x3_add2::IfcWorkCalendar::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1302]); } const IfcParse::entity& Ifc4x3_add2::IfcWorkCalendar::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1302]); } -Ifc4x3_add2::IfcWorkCalendar::IfcWorkCalendar(IfcEntityInstanceData&& e) : IfcControl(std::move(e)) { } -Ifc4x3_add2::IfcWorkCalendar::IfcWorkCalendar(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcWorkTime >::ptr > v7_WorkingTimes, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcWorkTime >::ptr > v8_ExceptionTimes, boost::optional< ::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Value > v9_PredefinedType) : IfcControl(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_WorkingTimes) {set_attribute_value(6, (*v7_WorkingTimes)->generalize()); } if (v8_ExceptionTimes) {set_attribute_value(7, (*v8_ExceptionTimes)->generalize()); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcWorkCalendar::IfcWorkCalendar(const std::weak_ptr& e) : IfcControl(e) { } +// Ifc4x3_add2::IfcWorkCalendar::IfcWorkCalendar(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::vector< ::Ifc4x3_add2::IfcWorkTime > > v7_WorkingTimes, std::optional< std::vector< ::Ifc4x3_add2::IfcWorkTime > > v8_ExceptionTimes, std::optional< ::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Value > v9_PredefinedType) : IfcControl(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); } if (v7_WorkingTimes) {set_attribute_value(6, (*v7_WorkingTimes)->generalize()); } if (v8_ExceptionTimes) {set_attribute_value(7, (*v8_ExceptionTimes)->generalize()); } if (v9_PredefinedType) {set_attribute_value(8, (EnumerationReference(&::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Class(),(size_t)*v9_PredefinedType))); }; populate_derived(); } // Function implementations for IfcWorkControl std::string Ifc4x3_add2::IfcWorkControl::CreationDate() const { std::string v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcWorkControl::setCreationDate(std::string v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > Ifc4x3_add2::IfcWorkControl::Creators() const { if(get_attribute_value(7).isNull()) { return boost::none; } aggregate_of_instance::ptr es = get_attribute_value(7); return es->as< ::Ifc4x3_add2::IfcPerson >(); } -void Ifc4x3_add2::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > v) { if (v) {set_attribute_value(7, (*v)->generalize());} else {unset_attribute_value(7);} } -boost::optional< std::string > Ifc4x3_add2::IfcWorkControl::Purpose() const { if(get_attribute_value(8).isNull()) { return boost::none; } std::string v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcWorkControl::setPurpose(boost::optional< std::string > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -boost::optional< std::string > Ifc4x3_add2::IfcWorkControl::Duration() const { if(get_attribute_value(9).isNull()) { return boost::none; } std::string v = get_attribute_value(9); return v; } -void Ifc4x3_add2::IfcWorkControl::setDuration(boost::optional< std::string > v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } -boost::optional< std::string > Ifc4x3_add2::IfcWorkControl::TotalFloat() const { if(get_attribute_value(10).isNull()) { return boost::none; } std::string v = get_attribute_value(10); return v; } -void Ifc4x3_add2::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } +void Ifc4x3_add2::IfcWorkControl::setCreationDate(const std::string& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > > Ifc4x3_add2::IfcWorkControl::Creators() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } std::vector es = get_attribute_value(7); return cast_vector<::Ifc4x3_add2::IfcPerson>(es); } +void Ifc4x3_add2::IfcWorkControl::setCreators(const std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > >& v) { if (v) {set_attribute_value(7, cast_vector(*v));} else {unset_attribute_value(7);} } +std::optional< std::string > Ifc4x3_add2::IfcWorkControl::Purpose() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } std::string v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcWorkControl::setPurpose(const std::optional< std::string >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +std::optional< std::string > Ifc4x3_add2::IfcWorkControl::Duration() const { if(get_attribute_value(9).isNull()) { return std::nullopt; } std::string v = get_attribute_value(9); return v; } +void Ifc4x3_add2::IfcWorkControl::setDuration(const std::optional< std::string >& v) { if (v) {set_attribute_value(9, *v);} else {unset_attribute_value(9);} } +std::optional< std::string > Ifc4x3_add2::IfcWorkControl::TotalFloat() const { if(get_attribute_value(10).isNull()) { return std::nullopt; } std::string v = get_attribute_value(10); return v; } +void Ifc4x3_add2::IfcWorkControl::setTotalFloat(const std::optional< std::string >& v) { if (v) {set_attribute_value(10, *v);} else {unset_attribute_value(10);} } std::string Ifc4x3_add2::IfcWorkControl::StartTime() const { std::string v = get_attribute_value(11); return v; } -void Ifc4x3_add2::IfcWorkControl::setStartTime(std::string v) { set_attribute_value(11, v);if constexpr (false)unset_attribute_value(11); } -boost::optional< std::string > Ifc4x3_add2::IfcWorkControl::FinishTime() const { if(get_attribute_value(12).isNull()) { return boost::none; } std::string v = get_attribute_value(12); return v; } -void Ifc4x3_add2::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } +void Ifc4x3_add2::IfcWorkControl::setStartTime(const std::string& v) { set_attribute_value(11, v);if constexpr (false)unset_attribute_value(11); } +std::optional< std::string > Ifc4x3_add2::IfcWorkControl::FinishTime() const { if(get_attribute_value(12).isNull()) { return std::nullopt; } std::string v = get_attribute_value(12); return v; } +void Ifc4x3_add2::IfcWorkControl::setFinishTime(const std::optional< std::string >& v) { if (v) {set_attribute_value(12, *v);} else {unset_attribute_value(12);} } -const IfcParse::entity& Ifc4x3_add2::IfcWorkControl::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1304]); } +// const IfcParse::entity& Ifc4x3_add2::IfcWorkControl::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1304]); } const IfcParse::entity& Ifc4x3_add2::IfcWorkControl::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1304]); } -Ifc4x3_add2::IfcWorkControl::IfcWorkControl(IfcEntityInstanceData&& e) : IfcControl(std::move(e)) { } -Ifc4x3_add2::IfcWorkControl::IfcWorkControl(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_CreationDate, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< std::string > v10_Duration, boost::optional< std::string > v11_TotalFloat, std::string v12_StartTime, boost::optional< std::string > v13_FinishTime) : IfcControl(IfcEntityInstanceData(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); }set_attribute_value(6, (v7_CreationDate)); if (v8_Creators) {set_attribute_value(7, (*v8_Creators)->generalize()); } if (v9_Purpose) {set_attribute_value(8, (*v9_Purpose)); } if (v10_Duration) {set_attribute_value(9, (*v10_Duration)); } if (v11_TotalFloat) {set_attribute_value(10, (*v11_TotalFloat)); }set_attribute_value(11, (v12_StartTime)); if (v13_FinishTime) {set_attribute_value(12, (*v13_FinishTime)); }; populate_derived(); } +// Ifc4x3_add2::IfcWorkControl::IfcWorkControl(const std::weak_ptr& e) : IfcControl(e) { } +// Ifc4x3_add2::IfcWorkControl::IfcWorkControl(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::string v7_CreationDate, std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > > v8_Creators, std::optional< std::string > v9_Purpose, std::optional< std::string > v10_Duration, std::optional< std::string > v11_TotalFloat, std::string v12_StartTime, std::optional< std::string > v13_FinishTime) : IfcControl(const std::weak_ptr&(in_memory_attribute_storage(13))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); }set_attribute_value(6, (v7_CreationDate)); if (v8_Creators) {set_attribute_value(7, (*v8_Creators)->generalize()); } if (v9_Purpose) {set_attribute_value(8, (*v9_Purpose)); } if (v10_Duration) {set_attribute_value(9, (*v10_Duration)); } if (v11_TotalFloat) {set_attribute_value(10, (*v11_TotalFloat)); }set_attribute_value(11, (v12_StartTime)); if (v13_FinishTime) {set_attribute_value(12, (*v13_FinishTime)); }; populate_derived(); } // Function implementations for IfcWorkPlan -boost::optional< ::Ifc4x3_add2::IfcWorkPlanTypeEnum::Value > Ifc4x3_add2::IfcWorkPlan::PredefinedType() const { if(get_attribute_value(13).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcWorkPlanTypeEnum::FromString(get_attribute_value(13)); } -void Ifc4x3_add2::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcWorkPlanTypeEnum::Value > v) { if (v) {set_attribute_value(13, EnumerationReference(&::Ifc4x3_add2::IfcWorkPlanTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(13);} } +std::optional< ::Ifc4x3_add2::IfcWorkPlanTypeEnum::Value > Ifc4x3_add2::IfcWorkPlan::PredefinedType() const { if(get_attribute_value(13).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcWorkPlanTypeEnum::FromString(get_attribute_value(13)); } +void Ifc4x3_add2::IfcWorkPlan::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcWorkPlanTypeEnum::Value >& v) { if (v) {set_attribute_value(13, EnumerationReference(&::Ifc4x3_add2::IfcWorkPlanTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(13);} } -const IfcParse::entity& Ifc4x3_add2::IfcWorkPlan::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1305]); } +// const IfcParse::entity& Ifc4x3_add2::IfcWorkPlan::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1305]); } const IfcParse::entity& Ifc4x3_add2::IfcWorkPlan::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1305]); } -Ifc4x3_add2::IfcWorkPlan::IfcWorkPlan(IfcEntityInstanceData&& e) : IfcWorkControl(std::move(e)) { } -Ifc4x3_add2::IfcWorkPlan::IfcWorkPlan(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_CreationDate, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< std::string > v10_Duration, boost::optional< std::string > v11_TotalFloat, std::string v12_StartTime, boost::optional< std::string > v13_FinishTime, boost::optional< ::Ifc4x3_add2::IfcWorkPlanTypeEnum::Value > v14_PredefinedType) : IfcWorkControl(IfcEntityInstanceData(in_memory_attribute_storage(14))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); }set_attribute_value(6, (v7_CreationDate)); if (v8_Creators) {set_attribute_value(7, (*v8_Creators)->generalize()); } if (v9_Purpose) {set_attribute_value(8, (*v9_Purpose)); } if (v10_Duration) {set_attribute_value(9, (*v10_Duration)); } if (v11_TotalFloat) {set_attribute_value(10, (*v11_TotalFloat)); }set_attribute_value(11, (v12_StartTime)); if (v13_FinishTime) {set_attribute_value(12, (*v13_FinishTime)); } if (v14_PredefinedType) {set_attribute_value(13, (EnumerationReference(&::Ifc4x3_add2::IfcWorkPlanTypeEnum::Class(),(size_t)*v14_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcWorkPlan::IfcWorkPlan(const std::weak_ptr& e) : IfcWorkControl(e) { } +// Ifc4x3_add2::IfcWorkPlan::IfcWorkPlan(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::string v7_CreationDate, std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > > v8_Creators, std::optional< std::string > v9_Purpose, std::optional< std::string > v10_Duration, std::optional< std::string > v11_TotalFloat, std::string v12_StartTime, std::optional< std::string > v13_FinishTime, std::optional< ::Ifc4x3_add2::IfcWorkPlanTypeEnum::Value > v14_PredefinedType) : IfcWorkControl(const std::weak_ptr&(in_memory_attribute_storage(14))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); }set_attribute_value(6, (v7_CreationDate)); if (v8_Creators) {set_attribute_value(7, (*v8_Creators)->generalize()); } if (v9_Purpose) {set_attribute_value(8, (*v9_Purpose)); } if (v10_Duration) {set_attribute_value(9, (*v10_Duration)); } if (v11_TotalFloat) {set_attribute_value(10, (*v11_TotalFloat)); }set_attribute_value(11, (v12_StartTime)); if (v13_FinishTime) {set_attribute_value(12, (*v13_FinishTime)); } if (v14_PredefinedType) {set_attribute_value(13, (EnumerationReference(&::Ifc4x3_add2::IfcWorkPlanTypeEnum::Class(),(size_t)*v14_PredefinedType))); }; populate_derived(); } // Function implementations for IfcWorkSchedule -boost::optional< ::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Value > Ifc4x3_add2::IfcWorkSchedule::PredefinedType() const { if(get_attribute_value(13).isNull()) { return boost::none; } return ::Ifc4x3_add2::IfcWorkScheduleTypeEnum::FromString(get_attribute_value(13)); } -void Ifc4x3_add2::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Value > v) { if (v) {set_attribute_value(13, EnumerationReference(&::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(13);} } +std::optional< ::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Value > Ifc4x3_add2::IfcWorkSchedule::PredefinedType() const { if(get_attribute_value(13).isNull()) { return std::nullopt; } return ::Ifc4x3_add2::IfcWorkScheduleTypeEnum::FromString(get_attribute_value(13)); } +void Ifc4x3_add2::IfcWorkSchedule::setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Value >& v) { if (v) {set_attribute_value(13, EnumerationReference(&::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Class(), (size_t) *v));} else {unset_attribute_value(13);} } -const IfcParse::entity& Ifc4x3_add2::IfcWorkSchedule::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1307]); } +// const IfcParse::entity& Ifc4x3_add2::IfcWorkSchedule::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1307]); } const IfcParse::entity& Ifc4x3_add2::IfcWorkSchedule::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1307]); } -Ifc4x3_add2::IfcWorkSchedule::IfcWorkSchedule(IfcEntityInstanceData&& e) : IfcWorkControl(std::move(e)) { } -Ifc4x3_add2::IfcWorkSchedule::IfcWorkSchedule(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_CreationDate, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< std::string > v10_Duration, boost::optional< std::string > v11_TotalFloat, std::string v12_StartTime, boost::optional< std::string > v13_FinishTime, boost::optional< ::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Value > v14_PredefinedType) : IfcWorkControl(IfcEntityInstanceData(in_memory_attribute_storage(14))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); }set_attribute_value(6, (v7_CreationDate)); if (v8_Creators) {set_attribute_value(7, (*v8_Creators)->generalize()); } if (v9_Purpose) {set_attribute_value(8, (*v9_Purpose)); } if (v10_Duration) {set_attribute_value(9, (*v10_Duration)); } if (v11_TotalFloat) {set_attribute_value(10, (*v11_TotalFloat)); }set_attribute_value(11, (v12_StartTime)); if (v13_FinishTime) {set_attribute_value(12, (*v13_FinishTime)); } if (v14_PredefinedType) {set_attribute_value(13, (EnumerationReference(&::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Class(),(size_t)*v14_PredefinedType))); }; populate_derived(); } +// Ifc4x3_add2::IfcWorkSchedule::IfcWorkSchedule(const std::weak_ptr& e) : IfcWorkControl(e) { } +// Ifc4x3_add2::IfcWorkSchedule::IfcWorkSchedule(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::string v7_CreationDate, std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > > v8_Creators, std::optional< std::string > v9_Purpose, std::optional< std::string > v10_Duration, std::optional< std::string > v11_TotalFloat, std::string v12_StartTime, std::optional< std::string > v13_FinishTime, std::optional< ::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Value > v14_PredefinedType) : IfcWorkControl(const std::weak_ptr&(in_memory_attribute_storage(14))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_Identification) {set_attribute_value(5, (*v6_Identification)); }set_attribute_value(6, (v7_CreationDate)); if (v8_Creators) {set_attribute_value(7, (*v8_Creators)->generalize()); } if (v9_Purpose) {set_attribute_value(8, (*v9_Purpose)); } if (v10_Duration) {set_attribute_value(9, (*v10_Duration)); } if (v11_TotalFloat) {set_attribute_value(10, (*v11_TotalFloat)); }set_attribute_value(11, (v12_StartTime)); if (v13_FinishTime) {set_attribute_value(12, (*v13_FinishTime)); } if (v14_PredefinedType) {set_attribute_value(13, (EnumerationReference(&::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Class(),(size_t)*v14_PredefinedType))); }; populate_derived(); } // Function implementations for IfcWorkTime -::Ifc4x3_add2::IfcRecurrencePattern* Ifc4x3_add2::IfcWorkTime::RecurrencePattern() const { if(get_attribute_value(3).isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(get_attribute_value(3)))->as<::Ifc4x3_add2::IfcRecurrencePattern>(true); } -void Ifc4x3_add2::IfcWorkTime::setRecurrencePattern(::Ifc4x3_add2::IfcRecurrencePattern* v) { set_attribute_value(3, v->as());if constexpr (false)unset_attribute_value(3); } -boost::optional< std::string > Ifc4x3_add2::IfcWorkTime::StartDate() const { if(get_attribute_value(4).isNull()) { return boost::none; } std::string v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcWorkTime::setStartDate(boost::optional< std::string > v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } -boost::optional< std::string > Ifc4x3_add2::IfcWorkTime::FinishDate() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcWorkTime::setFinishDate(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +::Ifc4x3_add2::IfcRecurrencePattern Ifc4x3_add2::IfcWorkTime::RecurrencePattern() const { if(get_attribute_value(3).isNull()) { return ::Ifc4x3_add2::IfcRecurrencePattern{}; } return ((express::Base)(get_attribute_value(3))).as<::Ifc4x3_add2::IfcRecurrencePattern>(); } +void Ifc4x3_add2::IfcWorkTime::setRecurrencePattern(const ::Ifc4x3_add2::IfcRecurrencePattern& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +std::optional< std::string > Ifc4x3_add2::IfcWorkTime::StartDate() const { if(get_attribute_value(4).isNull()) { return std::nullopt; } std::string v = get_attribute_value(4); return v; } +void Ifc4x3_add2::IfcWorkTime::setStartDate(const std::optional< std::string >& v) { if (v) {set_attribute_value(4, *v);} else {unset_attribute_value(4);} } +std::optional< std::string > Ifc4x3_add2::IfcWorkTime::FinishDate() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcWorkTime::setFinishDate(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -const IfcParse::entity& Ifc4x3_add2::IfcWorkTime::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1309]); } +// const IfcParse::entity& Ifc4x3_add2::IfcWorkTime::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1309]); } const IfcParse::entity& Ifc4x3_add2::IfcWorkTime::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1309]); } -Ifc4x3_add2::IfcWorkTime::IfcWorkTime(IfcEntityInstanceData&& e) : IfcSchedulingTime(std::move(e)) { } -Ifc4x3_add2::IfcWorkTime::IfcWorkTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcRecurrencePattern* v4_RecurrencePattern, boost::optional< std::string > v5_StartDate, boost::optional< std::string > v6_FinishDate) : IfcSchedulingTime(IfcEntityInstanceData(in_memory_attribute_storage(6))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DataOrigin) {set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)*v2_DataOrigin))); } if (v3_UserDefinedDataOrigin) {set_attribute_value(2, (*v3_UserDefinedDataOrigin)); }set_attribute_value(3, v4_RecurrencePattern ? v4_RecurrencePattern->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v5_StartDate) {set_attribute_value(4, (*v5_StartDate)); } if (v6_FinishDate) {set_attribute_value(5, (*v6_FinishDate)); }; populate_derived(); } +// Ifc4x3_add2::IfcWorkTime::IfcWorkTime(const std::weak_ptr& e) : IfcSchedulingTime(e) { } +// Ifc4x3_add2::IfcWorkTime::IfcWorkTime(std::optional< std::string > v1_Name, std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, std::optional< std::string > v3_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcRecurrencePattern v4_RecurrencePattern, std::optional< std::string > v5_StartDate, std::optional< std::string > v6_FinishDate) : IfcSchedulingTime(const std::weak_ptr&(in_memory_attribute_storage(6))) { if (v1_Name) {set_attribute_value(0, (*v1_Name)); } if (v2_DataOrigin) {set_attribute_value(1, (EnumerationReference(&::Ifc4x3_add2::IfcDataOriginEnum::Class(),(size_t)*v2_DataOrigin))); } if (v3_UserDefinedDataOrigin) {set_attribute_value(2, (*v3_UserDefinedDataOrigin)); } if (v4_RecurrencePattern) {set_attribute_value(3, (*v4_RecurrencePattern)); } if (v5_StartDate) {set_attribute_value(4, (*v5_StartDate)); } if (v6_FinishDate) {set_attribute_value(5, (*v6_FinishDate)); }; populate_derived(); } // Function implementations for IfcZShapeProfileDef double Ifc4x3_add2::IfcZShapeProfileDef::Depth() const { double v = get_attribute_value(3); return v; } -void Ifc4x3_add2::IfcZShapeProfileDef::setDepth(double v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } +void Ifc4x3_add2::IfcZShapeProfileDef::setDepth(const double& v) { set_attribute_value(3, v);if constexpr (false)unset_attribute_value(3); } double Ifc4x3_add2::IfcZShapeProfileDef::FlangeWidth() const { double v = get_attribute_value(4); return v; } -void Ifc4x3_add2::IfcZShapeProfileDef::setFlangeWidth(double v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } +void Ifc4x3_add2::IfcZShapeProfileDef::setFlangeWidth(const double& v) { set_attribute_value(4, v);if constexpr (false)unset_attribute_value(4); } double Ifc4x3_add2::IfcZShapeProfileDef::WebThickness() const { double v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcZShapeProfileDef::setWebThickness(double v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } +void Ifc4x3_add2::IfcZShapeProfileDef::setWebThickness(const double& v) { set_attribute_value(5, v);if constexpr (false)unset_attribute_value(5); } double Ifc4x3_add2::IfcZShapeProfileDef::FlangeThickness() const { double v = get_attribute_value(6); return v; } -void Ifc4x3_add2::IfcZShapeProfileDef::setFlangeThickness(double v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } -boost::optional< double > Ifc4x3_add2::IfcZShapeProfileDef::FilletRadius() const { if(get_attribute_value(7).isNull()) { return boost::none; } double v = get_attribute_value(7); return v; } -void Ifc4x3_add2::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } -boost::optional< double > Ifc4x3_add2::IfcZShapeProfileDef::EdgeRadius() const { if(get_attribute_value(8).isNull()) { return boost::none; } double v = get_attribute_value(8); return v; } -void Ifc4x3_add2::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } +void Ifc4x3_add2::IfcZShapeProfileDef::setFlangeThickness(const double& v) { set_attribute_value(6, v);if constexpr (false)unset_attribute_value(6); } +std::optional< double > Ifc4x3_add2::IfcZShapeProfileDef::FilletRadius() const { if(get_attribute_value(7).isNull()) { return std::nullopt; } double v = get_attribute_value(7); return v; } +void Ifc4x3_add2::IfcZShapeProfileDef::setFilletRadius(const std::optional< double >& v) { if (v) {set_attribute_value(7, *v);} else {unset_attribute_value(7);} } +std::optional< double > Ifc4x3_add2::IfcZShapeProfileDef::EdgeRadius() const { if(get_attribute_value(8).isNull()) { return std::nullopt; } double v = get_attribute_value(8); return v; } +void Ifc4x3_add2::IfcZShapeProfileDef::setEdgeRadius(const std::optional< double >& v) { if (v) {set_attribute_value(8, *v);} else {unset_attribute_value(8);} } -const IfcParse::entity& Ifc4x3_add2::IfcZShapeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1311]); } +// const IfcParse::entity& Ifc4x3_add2::IfcZShapeProfileDef::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1311]); } const IfcParse::entity& Ifc4x3_add2::IfcZShapeProfileDef::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1311]); } -Ifc4x3_add2::IfcZShapeProfileDef::IfcZShapeProfileDef(IfcEntityInstanceData&& e) : IfcParameterizedProfileDef(std::move(e)) { } -Ifc4x3_add2::IfcZShapeProfileDef::IfcZShapeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_EdgeRadius) : IfcParameterizedProfileDef(IfcEntityInstanceData(in_memory_attribute_storage(9))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); }set_attribute_value(2, v3_Position ? v3_Position->as() : (IfcUtil::IfcBaseClass*) nullptr);set_attribute_value(3, (v4_Depth));set_attribute_value(4, (v5_FlangeWidth));set_attribute_value(5, (v6_WebThickness));set_attribute_value(6, (v7_FlangeThickness)); if (v8_FilletRadius) {set_attribute_value(7, (*v8_FilletRadius)); } if (v9_EdgeRadius) {set_attribute_value(8, (*v9_EdgeRadius)); }; populate_derived(); } +// Ifc4x3_add2::IfcZShapeProfileDef::IfcZShapeProfileDef(const std::weak_ptr& e) : IfcParameterizedProfileDef(e) { } +// Ifc4x3_add2::IfcZShapeProfileDef::IfcZShapeProfileDef(::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, std::optional< double > v8_FilletRadius, std::optional< double > v9_EdgeRadius) : IfcParameterizedProfileDef(const std::weak_ptr&(in_memory_attribute_storage(9))) { set_attribute_value(0, (EnumerationReference(&::Ifc4x3_add2::IfcProfileTypeEnum::Class(),(size_t)v1_ProfileType))); if (v2_ProfileName) {set_attribute_value(1, (*v2_ProfileName)); } if (v3_Position) {set_attribute_value(2, (*v3_Position)); }set_attribute_value(3, (v4_Depth));set_attribute_value(4, (v5_FlangeWidth));set_attribute_value(5, (v6_WebThickness));set_attribute_value(6, (v7_FlangeThickness)); if (v8_FilletRadius) {set_attribute_value(7, (*v8_FilletRadius)); } if (v9_EdgeRadius) {set_attribute_value(8, (*v9_EdgeRadius)); }; populate_derived(); } // Function implementations for IfcZone -boost::optional< std::string > Ifc4x3_add2::IfcZone::LongName() const { if(get_attribute_value(5).isNull()) { return boost::none; } std::string v = get_attribute_value(5); return v; } -void Ifc4x3_add2::IfcZone::setLongName(boost::optional< std::string > v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } +std::optional< std::string > Ifc4x3_add2::IfcZone::LongName() const { if(get_attribute_value(5).isNull()) { return std::nullopt; } std::string v = get_attribute_value(5); return v; } +void Ifc4x3_add2::IfcZone::setLongName(const std::optional< std::string >& v) { if (v) {set_attribute_value(5, *v);} else {unset_attribute_value(5);} } -const IfcParse::entity& Ifc4x3_add2::IfcZone::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1310]); } +// const IfcParse::entity& Ifc4x3_add2::IfcZone::declaration() const { return *((IfcParse::entity*)IFC4X3_ADD2_types[1310]); } const IfcParse::entity& Ifc4x3_add2::IfcZone::Class() { return *((IfcParse::entity*)IFC4X3_ADD2_types[1310]); } -Ifc4x3_add2::IfcZone::IfcZone(IfcEntityInstanceData&& e) : IfcSystem(std::move(e)) { } -Ifc4x3_add2::IfcZone::IfcZone(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName) : IfcSystem(IfcEntityInstanceData(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId));set_attribute_value(1, v2_OwnerHistory ? v2_OwnerHistory->as() : (IfcUtil::IfcBaseClass*) nullptr); if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_LongName) {set_attribute_value(5, (*v6_LongName)); }; populate_derived(); } +// Ifc4x3_add2::IfcZone::IfcZone(const std::weak_ptr& e) : IfcSystem(e) { } +// Ifc4x3_add2::IfcZone::IfcZone(std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_LongName) : IfcSystem(const std::weak_ptr&(in_memory_attribute_storage(6))) { set_attribute_value(0, (v1_GlobalId)); if (v2_OwnerHistory) {set_attribute_value(1, (*v2_OwnerHistory)); } if (v3_Name) {set_attribute_value(2, (*v3_Name)); } if (v4_Description) {set_attribute_value(3, (*v4_Description)); } if (v5_ObjectType) {set_attribute_value(4, (*v5_ObjectType)); } if (v6_LongName) {set_attribute_value(5, (*v6_LongName)); }; populate_derived(); } diff --git a/src/ifcparse/Ifc4x3_add2.h b/src/ifcparse/Ifc4x3_add2.h index 5a9dd3c5de..5edfc10af8 100644 --- a/src/ifcparse/Ifc4x3_add2.h +++ b/src/ifcparse/Ifc4x3_add2.h @@ -29,17 +29,20 @@ #include #include - -#include +#include #include "../ifcparse/ifc_parse_api.h" -#include "../ifcparse/aggregate_of_instance.h" -#include "../ifcparse/IfcBaseClass.h" +#include "../ifcparse/express.h" #include "../ifcparse/IfcSchema.h" #include "../ifcparse/IfcException.h" #include "../ifcparse/Argument.h" +namespace IfcParse { +class IfcFile; +class IfcSpfHeader; +} // namespace IfcParse + struct Ifc4x3_add2 { IFC_PARSE_API static const IfcParse::schema_definition& get_schema(); @@ -49,7 +52,7 @@ IFC_PARSE_API static void clear_schema(); static const char* const Identifier; // Forward definitions -class IfcActionRequest; class IfcActor; class IfcActorRole; class IfcActuator; class IfcActuatorType; class IfcAddress; class IfcAdvancedBrep; class IfcAdvancedBrepWithVoids; class IfcAdvancedFace; class IfcAirTerminal; class IfcAirTerminalBox; class IfcAirTerminalBoxType; class IfcAirTerminalType; class IfcAirToAirHeatRecovery; class IfcAirToAirHeatRecoveryType; class IfcAlarm; class IfcAlarmType; class IfcAlignment; class IfcAlignmentCant; class IfcAlignmentCantSegment; class IfcAlignmentHorizontal; class IfcAlignmentHorizontalSegment; class IfcAlignmentParameterSegment; class IfcAlignmentSegment; class IfcAlignmentVertical; class IfcAlignmentVerticalSegment; class IfcAnnotation; class IfcAnnotationFillArea; class IfcApplication; class IfcAppliedValue; class IfcApproval; class IfcApprovalRelationship; class IfcArbitraryClosedProfileDef; class IfcArbitraryOpenProfileDef; class IfcArbitraryProfileDefWithVoids; class IfcAsset; class IfcAsymmetricIShapeProfileDef; class IfcAudioVisualAppliance; class IfcAudioVisualApplianceType; class IfcAxis1Placement; class IfcAxis2Placement2D; class IfcAxis2Placement3D; class IfcAxis2PlacementLinear; class IfcBSplineCurve; class IfcBSplineCurveWithKnots; class IfcBSplineSurface; class IfcBSplineSurfaceWithKnots; class IfcBeam; class IfcBeamType; class IfcBearing; class IfcBearingType; class IfcBlobTexture; class IfcBlock; class IfcBoiler; class IfcBoilerType; class IfcBooleanClippingResult; class IfcBooleanResult; class IfcBorehole; class IfcBoundaryCondition; class IfcBoundaryCurve; class IfcBoundaryEdgeCondition; class IfcBoundaryFaceCondition; class IfcBoundaryNodeCondition; class IfcBoundaryNodeConditionWarping; class IfcBoundedCurve; class IfcBoundedSurface; class IfcBoundingBox; class IfcBoxedHalfSpace; class IfcBridge; class IfcBridgePart; class IfcBuilding; class IfcBuildingElementPart; class IfcBuildingElementPartType; class IfcBuildingElementProxy; class IfcBuildingElementProxyType; class IfcBuildingStorey; class IfcBuildingSystem; class IfcBuiltElement; class IfcBuiltElementType; class IfcBuiltSystem; class IfcBurner; class IfcBurnerType; class IfcCShapeProfileDef; class IfcCableCarrierFitting; class IfcCableCarrierFittingType; class IfcCableCarrierSegment; class IfcCableCarrierSegmentType; class IfcCableFitting; class IfcCableFittingType; class IfcCableSegment; class IfcCableSegmentType; class IfcCaissonFoundation; class IfcCaissonFoundationType; class IfcCartesianPoint; class IfcCartesianPointList; class IfcCartesianPointList2D; class IfcCartesianPointList3D; class IfcCartesianTransformationOperator; class IfcCartesianTransformationOperator2D; class IfcCartesianTransformationOperator2DnonUniform; class IfcCartesianTransformationOperator3D; class IfcCartesianTransformationOperator3DnonUniform; class IfcCenterLineProfileDef; class IfcChiller; class IfcChillerType; class IfcChimney; class IfcChimneyType; class IfcCircle; class IfcCircleHollowProfileDef; class IfcCircleProfileDef; class IfcCivilElement; class IfcCivilElementType; class IfcClassification; class IfcClassificationReference; class IfcClosedShell; class IfcClothoid; class IfcCoil; class IfcCoilType; class IfcColourRgb; class IfcColourRgbList; class IfcColourSpecification; class IfcColumn; class IfcColumnType; class IfcCommunicationsAppliance; class IfcCommunicationsApplianceType; class IfcComplexProperty; class IfcComplexPropertyTemplate; class IfcCompositeCurve; class IfcCompositeCurveOnSurface; class IfcCompositeCurveSegment; class IfcCompositeProfileDef; class IfcCompressor; class IfcCompressorType; class IfcCondenser; class IfcCondenserType; class IfcConic; class IfcConnectedFaceSet; class IfcConnectionCurveGeometry; class IfcConnectionGeometry; class IfcConnectionPointEccentricity; class IfcConnectionPointGeometry; class IfcConnectionSurfaceGeometry; class IfcConnectionVolumeGeometry; class IfcConstraint; class IfcConstructionEquipmentResource; class IfcConstructionEquipmentResourceType; class IfcConstructionMaterialResource; class IfcConstructionMaterialResourceType; class IfcConstructionProductResource; class IfcConstructionProductResourceType; class IfcConstructionResource; class IfcConstructionResourceType; class IfcContext; class IfcContextDependentUnit; class IfcControl; class IfcController; class IfcControllerType; class IfcConversionBasedUnit; class IfcConversionBasedUnitWithOffset; class IfcConveyorSegment; class IfcConveyorSegmentType; class IfcCooledBeam; class IfcCooledBeamType; class IfcCoolingTower; class IfcCoolingTowerType; class IfcCoordinateOperation; class IfcCoordinateReferenceSystem; class IfcCosineSpiral; class IfcCostItem; class IfcCostSchedule; class IfcCostValue; class IfcCourse; class IfcCourseType; class IfcCovering; class IfcCoveringType; class IfcCrewResource; class IfcCrewResourceType; class IfcCsgPrimitive3D; class IfcCsgSolid; class IfcCurrencyRelationship; class IfcCurtainWall; class IfcCurtainWallType; class IfcCurve; class IfcCurveBoundedPlane; class IfcCurveBoundedSurface; class IfcCurveSegment; class IfcCurveStyle; class IfcCurveStyleFont; class IfcCurveStyleFontAndScaling; class IfcCurveStyleFontPattern; class IfcCylindricalSurface; class IfcDamper; class IfcDamperType; class IfcDeepFoundation; class IfcDeepFoundationType; class IfcDerivedProfileDef; class IfcDerivedUnit; class IfcDerivedUnitElement; class IfcDimensionalExponents; class IfcDirection; class IfcDirectrixCurveSweptAreaSolid; class IfcDirectrixDerivedReferenceSweptAreaSolid; class IfcDiscreteAccessory; class IfcDiscreteAccessoryType; class IfcDistributionBoard; class IfcDistributionBoardType; class IfcDistributionChamberElement; class IfcDistributionChamberElementType; class IfcDistributionCircuit; class IfcDistributionControlElement; class IfcDistributionControlElementType; class IfcDistributionElement; class IfcDistributionElementType; class IfcDistributionFlowElement; class IfcDistributionFlowElementType; class IfcDistributionPort; class IfcDistributionSystem; class IfcDocumentInformation; class IfcDocumentInformationRelationship; class IfcDocumentReference; class IfcDoor; class IfcDoorLiningProperties; class IfcDoorPanelProperties; class IfcDoorType; class IfcDraughtingPreDefinedColour; class IfcDraughtingPreDefinedCurveFont; class IfcDuctFitting; class IfcDuctFittingType; class IfcDuctSegment; class IfcDuctSegmentType; class IfcDuctSilencer; class IfcDuctSilencerType; class IfcEarthworksCut; class IfcEarthworksElement; class IfcEarthworksFill; class IfcEdge; class IfcEdgeCurve; class IfcEdgeLoop; class IfcElectricAppliance; class IfcElectricApplianceType; class IfcElectricDistributionBoard; class IfcElectricDistributionBoardType; class IfcElectricFlowStorageDevice; class IfcElectricFlowStorageDeviceType; class IfcElectricFlowTreatmentDevice; class IfcElectricFlowTreatmentDeviceType; class IfcElectricGenerator; class IfcElectricGeneratorType; class IfcElectricMotor; class IfcElectricMotorType; class IfcElectricTimeControl; class IfcElectricTimeControlType; class IfcElement; class IfcElementAssembly; class IfcElementAssemblyType; class IfcElementComponent; class IfcElementComponentType; class IfcElementQuantity; class IfcElementType; class IfcElementarySurface; class IfcEllipse; class IfcEllipseProfileDef; class IfcEnergyConversionDevice; class IfcEnergyConversionDeviceType; class IfcEngine; class IfcEngineType; class IfcEvaporativeCooler; class IfcEvaporativeCoolerType; class IfcEvaporator; class IfcEvaporatorType; class IfcEvent; class IfcEventTime; class IfcEventType; class IfcExtendedProperties; class IfcExternalInformation; class IfcExternalReference; class IfcExternalReferenceRelationship; class IfcExternalSpatialElement; class IfcExternalSpatialStructureElement; class IfcExternallyDefinedHatchStyle; class IfcExternallyDefinedSurfaceStyle; class IfcExternallyDefinedTextFont; class IfcExtrudedAreaSolid; class IfcExtrudedAreaSolidTapered; class IfcFace; class IfcFaceBasedSurfaceModel; class IfcFaceBound; class IfcFaceOuterBound; class IfcFaceSurface; class IfcFacetedBrep; class IfcFacetedBrepWithVoids; class IfcFacility; class IfcFacilityPart; class IfcFacilityPartCommon; class IfcFailureConnectionCondition; class IfcFan; class IfcFanType; class IfcFastener; class IfcFastenerType; class IfcFeatureElement; class IfcFeatureElementAddition; class IfcFeatureElementSubtraction; class IfcFillAreaStyle; class IfcFillAreaStyleHatching; class IfcFillAreaStyleTiles; class IfcFilter; class IfcFilterType; class IfcFireSuppressionTerminal; class IfcFireSuppressionTerminalType; class IfcFixedReferenceSweptAreaSolid; class IfcFlowController; class IfcFlowControllerType; class IfcFlowFitting; class IfcFlowFittingType; class IfcFlowInstrument; class IfcFlowInstrumentType; class IfcFlowMeter; class IfcFlowMeterType; class IfcFlowMovingDevice; class IfcFlowMovingDeviceType; class IfcFlowSegment; class IfcFlowSegmentType; class IfcFlowStorageDevice; class IfcFlowStorageDeviceType; class IfcFlowTerminal; class IfcFlowTerminalType; class IfcFlowTreatmentDevice; class IfcFlowTreatmentDeviceType; class IfcFooting; class IfcFootingType; class IfcFurnishingElement; class IfcFurnishingElementType; class IfcFurniture; class IfcFurnitureType; class IfcGeographicCRS; class IfcGeographicElement; class IfcGeographicElementType; class IfcGeometricCurveSet; class IfcGeometricRepresentationContext; class IfcGeometricRepresentationItem; class IfcGeometricRepresentationSubContext; class IfcGeometricSet; class IfcGeomodel; class IfcGeoslice; class IfcGeotechnicalAssembly; class IfcGeotechnicalElement; class IfcGeotechnicalStratum; class IfcGradientCurve; class IfcGrid; class IfcGridAxis; class IfcGridPlacement; class IfcGroup; class IfcHalfSpaceSolid; class IfcHeatExchanger; class IfcHeatExchangerType; class IfcHumidifier; class IfcHumidifierType; class IfcIShapeProfileDef; class IfcImageTexture; class IfcImpactProtectionDevice; class IfcImpactProtectionDeviceType; class IfcIndexedColourMap; class IfcIndexedPolyCurve; class IfcIndexedPolygonalFace; class IfcIndexedPolygonalFaceWithVoids; class IfcIndexedPolygonalTextureMap; class IfcIndexedTextureMap; class IfcIndexedTriangleTextureMap; class IfcInterceptor; class IfcInterceptorType; class IfcIntersectionCurve; class IfcInventory; class IfcIrregularTimeSeries; class IfcIrregularTimeSeriesValue; class IfcJunctionBox; class IfcJunctionBoxType; class IfcKerb; class IfcKerbType; class IfcLShapeProfileDef; class IfcLaborResource; class IfcLaborResourceType; class IfcLagTime; class IfcLamp; class IfcLampType; class IfcLibraryInformation; class IfcLibraryReference; class IfcLightDistributionData; class IfcLightFixture; class IfcLightFixtureType; class IfcLightIntensityDistribution; class IfcLightSource; class IfcLightSourceAmbient; class IfcLightSourceDirectional; class IfcLightSourceGoniometric; class IfcLightSourcePositional; class IfcLightSourceSpot; class IfcLine; class IfcLinearElement; class IfcLinearPlacement; class IfcLinearPositioningElement; class IfcLiquidTerminal; class IfcLiquidTerminalType; class IfcLocalPlacement; class IfcLoop; class IfcManifoldSolidBrep; class IfcMapConversion; class IfcMapConversionScaled; class IfcMappedItem; class IfcMarineFacility; class IfcMarinePart; class IfcMaterial; class IfcMaterialClassificationRelationship; class IfcMaterialConstituent; class IfcMaterialConstituentSet; class IfcMaterialDefinition; class IfcMaterialDefinitionRepresentation; class IfcMaterialLayer; class IfcMaterialLayerSet; class IfcMaterialLayerSetUsage; class IfcMaterialLayerWithOffsets; class IfcMaterialList; class IfcMaterialProfile; class IfcMaterialProfileSet; class IfcMaterialProfileSetUsage; class IfcMaterialProfileSetUsageTapering; class IfcMaterialProfileWithOffsets; class IfcMaterialProperties; class IfcMaterialRelationship; class IfcMaterialUsageDefinition; class IfcMeasureWithUnit; class IfcMechanicalFastener; class IfcMechanicalFastenerType; class IfcMedicalDevice; class IfcMedicalDeviceType; class IfcMember; class IfcMemberType; class IfcMetric; class IfcMirroredProfileDef; class IfcMobileTelecommunicationsAppliance; class IfcMobileTelecommunicationsApplianceType; class IfcMonetaryUnit; class IfcMooringDevice; class IfcMooringDeviceType; class IfcMotorConnection; class IfcMotorConnectionType; class IfcNamedUnit; class IfcNavigationElement; class IfcNavigationElementType; class IfcObject; class IfcObjectDefinition; class IfcObjectPlacement; class IfcObjective; class IfcOccupant; class IfcOffsetCurve; class IfcOffsetCurve2D; class IfcOffsetCurve3D; class IfcOffsetCurveByDistances; class IfcOpenCrossProfileDef; class IfcOpenShell; class IfcOpeningElement; class IfcOrganization; class IfcOrganizationRelationship; class IfcOrientedEdge; class IfcOuterBoundaryCurve; class IfcOutlet; class IfcOutletType; class IfcOwnerHistory; class IfcParameterizedProfileDef; class IfcPath; class IfcPavement; class IfcPavementType; class IfcPcurve; class IfcPerformanceHistory; class IfcPermeableCoveringProperties; class IfcPermit; class IfcPerson; class IfcPersonAndOrganization; class IfcPhysicalComplexQuantity; class IfcPhysicalQuantity; class IfcPhysicalSimpleQuantity; class IfcPile; class IfcPileType; class IfcPipeFitting; class IfcPipeFittingType; class IfcPipeSegment; class IfcPipeSegmentType; class IfcPixelTexture; class IfcPlacement; class IfcPlanarBox; class IfcPlanarExtent; class IfcPlane; class IfcPlate; class IfcPlateType; class IfcPoint; class IfcPointByDistanceExpression; class IfcPointOnCurve; class IfcPointOnSurface; class IfcPolyLoop; class IfcPolygonalBoundedHalfSpace; class IfcPolygonalFaceSet; class IfcPolyline; class IfcPolynomialCurve; class IfcPort; class IfcPositioningElement; class IfcPostalAddress; class IfcPreDefinedColour; class IfcPreDefinedCurveFont; class IfcPreDefinedItem; class IfcPreDefinedProperties; class IfcPreDefinedPropertySet; class IfcPreDefinedTextFont; class IfcPresentationItem; class IfcPresentationLayerAssignment; class IfcPresentationLayerWithStyle; class IfcPresentationStyle; class IfcProcedure; class IfcProcedureType; class IfcProcess; class IfcProduct; class IfcProductDefinitionShape; class IfcProductRepresentation; class IfcProfileDef; class IfcProfileProperties; class IfcProject; class IfcProjectLibrary; class IfcProjectOrder; class IfcProjectedCRS; class IfcProjectionElement; class IfcProperty; class IfcPropertyAbstraction; class IfcPropertyBoundedValue; class IfcPropertyDefinition; class IfcPropertyDependencyRelationship; class IfcPropertyEnumeratedValue; class IfcPropertyEnumeration; class IfcPropertyListValue; class IfcPropertyReferenceValue; class IfcPropertySet; class IfcPropertySetDefinition; class IfcPropertySetTemplate; class IfcPropertySingleValue; class IfcPropertyTableValue; class IfcPropertyTemplate; class IfcPropertyTemplateDefinition; class IfcProtectiveDevice; class IfcProtectiveDeviceTrippingUnit; class IfcProtectiveDeviceTrippingUnitType; class IfcProtectiveDeviceType; class IfcPump; class IfcPumpType; class IfcQuantityArea; class IfcQuantityCount; class IfcQuantityLength; class IfcQuantityNumber; class IfcQuantitySet; class IfcQuantityTime; class IfcQuantityVolume; class IfcQuantityWeight; class IfcRail; class IfcRailType; class IfcRailing; class IfcRailingType; class IfcRailway; class IfcRailwayPart; class IfcRamp; class IfcRampFlight; class IfcRampFlightType; class IfcRampType; class IfcRationalBSplineCurveWithKnots; class IfcRationalBSplineSurfaceWithKnots; class IfcRectangleHollowProfileDef; class IfcRectangleProfileDef; class IfcRectangularPyramid; class IfcRectangularTrimmedSurface; class IfcRecurrencePattern; class IfcReference; class IfcReferent; class IfcRegularTimeSeries; class IfcReinforcedSoil; class IfcReinforcementBarProperties; class IfcReinforcementDefinitionProperties; class IfcReinforcingBar; class IfcReinforcingBarType; class IfcReinforcingElement; class IfcReinforcingElementType; class IfcReinforcingMesh; class IfcReinforcingMeshType; class IfcRelAdheresToElement; class IfcRelAggregates; class IfcRelAssigns; class IfcRelAssignsToActor; class IfcRelAssignsToControl; class IfcRelAssignsToGroup; class IfcRelAssignsToGroupByFactor; class IfcRelAssignsToProcess; class IfcRelAssignsToProduct; class IfcRelAssignsToResource; class IfcRelAssociates; class IfcRelAssociatesApproval; class IfcRelAssociatesClassification; class IfcRelAssociatesConstraint; class IfcRelAssociatesDocument; class IfcRelAssociatesLibrary; class IfcRelAssociatesMaterial; class IfcRelAssociatesProfileDef; class IfcRelConnects; class IfcRelConnectsElements; class IfcRelConnectsPathElements; class IfcRelConnectsPortToElement; class IfcRelConnectsPorts; class IfcRelConnectsStructuralActivity; class IfcRelConnectsStructuralMember; class IfcRelConnectsWithEccentricity; class IfcRelConnectsWithRealizingElements; class IfcRelContainedInSpatialStructure; class IfcRelCoversBldgElements; class IfcRelCoversSpaces; class IfcRelDeclares; class IfcRelDecomposes; class IfcRelDefines; class IfcRelDefinesByObject; class IfcRelDefinesByProperties; class IfcRelDefinesByTemplate; class IfcRelDefinesByType; class IfcRelFillsElement; class IfcRelFlowControlElements; class IfcRelInterferesElements; class IfcRelNests; class IfcRelPositions; class IfcRelProjectsElement; class IfcRelReferencedInSpatialStructure; class IfcRelSequence; class IfcRelServicesBuildings; class IfcRelSpaceBoundary; class IfcRelSpaceBoundary1stLevel; class IfcRelSpaceBoundary2ndLevel; class IfcRelVoidsElement; class IfcRelationship; class IfcReparametrisedCompositeCurveSegment; class IfcRepresentation; class IfcRepresentationContext; class IfcRepresentationItem; class IfcRepresentationMap; class IfcResource; class IfcResourceApprovalRelationship; class IfcResourceConstraintRelationship; class IfcResourceLevelRelationship; class IfcResourceTime; class IfcRevolvedAreaSolid; class IfcRevolvedAreaSolidTapered; class IfcRightCircularCone; class IfcRightCircularCylinder; class IfcRigidOperation; class IfcRoad; class IfcRoadPart; class IfcRoof; class IfcRoofType; class IfcRoot; class IfcRoundedRectangleProfileDef; class IfcSIUnit; class IfcSanitaryTerminal; class IfcSanitaryTerminalType; class IfcSchedulingTime; class IfcSeamCurve; class IfcSecondOrderPolynomialSpiral; class IfcSectionProperties; class IfcSectionReinforcementProperties; class IfcSectionedSolid; class IfcSectionedSolidHorizontal; class IfcSectionedSpine; class IfcSectionedSurface; class IfcSegment; class IfcSegmentedReferenceCurve; class IfcSensor; class IfcSensorType; class IfcSeventhOrderPolynomialSpiral; class IfcShadingDevice; class IfcShadingDeviceType; class IfcShapeAspect; class IfcShapeModel; class IfcShapeRepresentation; class IfcShellBasedSurfaceModel; class IfcSign; class IfcSignType; class IfcSignal; class IfcSignalType; class IfcSimpleProperty; class IfcSimplePropertyTemplate; class IfcSineSpiral; class IfcSite; class IfcSlab; class IfcSlabType; class IfcSlippageConnectionCondition; class IfcSolarDevice; class IfcSolarDeviceType; class IfcSolidModel; class IfcSpace; class IfcSpaceHeater; class IfcSpaceHeaterType; class IfcSpaceType; class IfcSpatialElement; class IfcSpatialElementType; class IfcSpatialStructureElement; class IfcSpatialStructureElementType; class IfcSpatialZone; class IfcSpatialZoneType; class IfcSphere; class IfcSphericalSurface; class IfcSpiral; class IfcStackTerminal; class IfcStackTerminalType; class IfcStair; class IfcStairFlight; class IfcStairFlightType; class IfcStairType; class IfcStructuralAction; class IfcStructuralActivity; class IfcStructuralAnalysisModel; class IfcStructuralConnection; class IfcStructuralConnectionCondition; class IfcStructuralCurveAction; class IfcStructuralCurveConnection; class IfcStructuralCurveMember; class IfcStructuralCurveMemberVarying; class IfcStructuralCurveReaction; class IfcStructuralItem; class IfcStructuralLinearAction; class IfcStructuralLoad; class IfcStructuralLoadCase; class IfcStructuralLoadConfiguration; class IfcStructuralLoadGroup; class IfcStructuralLoadLinearForce; class IfcStructuralLoadOrResult; class IfcStructuralLoadPlanarForce; class IfcStructuralLoadSingleDisplacement; class IfcStructuralLoadSingleDisplacementDistortion; class IfcStructuralLoadSingleForce; class IfcStructuralLoadSingleForceWarping; class IfcStructuralLoadStatic; class IfcStructuralLoadTemperature; class IfcStructuralMember; class IfcStructuralPlanarAction; class IfcStructuralPointAction; class IfcStructuralPointConnection; class IfcStructuralPointReaction; class IfcStructuralReaction; class IfcStructuralResultGroup; class IfcStructuralSurfaceAction; class IfcStructuralSurfaceConnection; class IfcStructuralSurfaceMember; class IfcStructuralSurfaceMemberVarying; class IfcStructuralSurfaceReaction; class IfcStyleModel; class IfcStyledItem; class IfcStyledRepresentation; class IfcSubContractResource; class IfcSubContractResourceType; class IfcSubedge; class IfcSurface; class IfcSurfaceCurve; class IfcSurfaceCurveSweptAreaSolid; class IfcSurfaceFeature; class IfcSurfaceOfLinearExtrusion; class IfcSurfaceOfRevolution; class IfcSurfaceReinforcementArea; class IfcSurfaceStyle; class IfcSurfaceStyleLighting; class IfcSurfaceStyleRefraction; class IfcSurfaceStyleRendering; class IfcSurfaceStyleShading; class IfcSurfaceStyleWithTextures; class IfcSurfaceTexture; class IfcSweptAreaSolid; class IfcSweptDiskSolid; class IfcSweptDiskSolidPolygonal; class IfcSweptSurface; class IfcSwitchingDevice; class IfcSwitchingDeviceType; class IfcSystem; class IfcSystemFurnitureElement; class IfcSystemFurnitureElementType; class IfcTShapeProfileDef; class IfcTable; class IfcTableColumn; class IfcTableRow; class IfcTank; class IfcTankType; class IfcTask; class IfcTaskTime; class IfcTaskTimeRecurring; class IfcTaskType; class IfcTelecomAddress; class IfcTendon; class IfcTendonAnchor; class IfcTendonAnchorType; class IfcTendonConduit; class IfcTendonConduitType; class IfcTendonType; class IfcTessellatedFaceSet; class IfcTessellatedItem; class IfcTextLiteral; class IfcTextLiteralWithExtent; class IfcTextStyle; class IfcTextStyleFontModel; class IfcTextStyleForDefinedFont; class IfcTextStyleTextModel; class IfcTextureCoordinate; class IfcTextureCoordinateGenerator; class IfcTextureCoordinateIndices; class IfcTextureCoordinateIndicesWithVoids; class IfcTextureMap; class IfcTextureVertex; class IfcTextureVertexList; class IfcThirdOrderPolynomialSpiral; class IfcTimePeriod; class IfcTimeSeries; class IfcTimeSeriesValue; class IfcTopologicalRepresentationItem; class IfcTopologyRepresentation; class IfcToroidalSurface; class IfcTrackElement; class IfcTrackElementType; class IfcTransformer; class IfcTransformerType; class IfcTransportElement; class IfcTransportElementType; class IfcTransportationDevice; class IfcTransportationDeviceType; class IfcTrapeziumProfileDef; class IfcTriangulatedFaceSet; class IfcTriangulatedIrregularNetwork; class IfcTrimmedCurve; class IfcTubeBundle; class IfcTubeBundleType; class IfcTypeObject; class IfcTypeProcess; class IfcTypeProduct; class IfcTypeResource; class IfcUShapeProfileDef; class IfcUnitAssignment; class IfcUnitaryControlElement; class IfcUnitaryControlElementType; class IfcUnitaryEquipment; class IfcUnitaryEquipmentType; class IfcValve; class IfcValveType; class IfcVector; class IfcVehicle; class IfcVehicleType; class IfcVertex; class IfcVertexLoop; class IfcVertexPoint; class IfcVibrationDamper; class IfcVibrationDamperType; class IfcVibrationIsolator; class IfcVibrationIsolatorType; class IfcVirtualElement; class IfcVirtualGridIntersection; class IfcVoidingFeature; class IfcWall; class IfcWallStandardCase; class IfcWallType; class IfcWasteTerminal; class IfcWasteTerminalType; class IfcWellKnownText; class IfcWindow; class IfcWindowLiningProperties; class IfcWindowPanelProperties; class IfcWindowType; class IfcWorkCalendar; class IfcWorkControl; class IfcWorkPlan; class IfcWorkSchedule; class IfcWorkTime; class IfcZShapeProfileDef; class IfcZone; class IfcAbsorbedDoseMeasure; class IfcAccelerationMeasure; class IfcAmountOfSubstanceMeasure; class IfcAngularVelocityMeasure; class IfcArcIndex; class IfcAreaDensityMeasure; class IfcAreaMeasure; class IfcBinary; class IfcBoolean; class IfcBoxAlignment; class IfcCardinalPointReference; class IfcComplexNumber; class IfcCompoundPlaneAngleMeasure; class IfcContextDependentMeasure; class IfcCountMeasure; class IfcCurvatureMeasure; class IfcDate; class IfcDateTime; class IfcDayInMonthNumber; class IfcDayInWeekNumber; class IfcDescriptiveMeasure; class IfcDimensionCount; class IfcDoseEquivalentMeasure; class IfcDuration; 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 IfcIdentifier; class IfcIlluminanceMeasure; class IfcInductanceMeasure; class IfcInteger; class IfcIntegerCountRateMeasure; class IfcIonConcentrationMeasure; class IfcIsothermalMoistureCapacityMeasure; class IfcKinematicViscosityMeasure; class IfcLabel; class IfcLanguageId; class IfcLengthMeasure; class IfcLineIndex; 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 IfcModulusOfElasticityMeasure; class IfcModulusOfLinearSubgradeReactionMeasure; class IfcModulusOfRotationalSubgradeReactionMeasure; class IfcModulusOfSubgradeReactionMeasure; class IfcMoistureDiffusivityMeasure; class IfcMolecularWeightMeasure; class IfcMomentOfInertiaMeasure; class IfcMonetaryMeasure; class IfcMonthInYearNumber; class IfcNonNegativeLengthMeasure; class IfcNormalisedRatioMeasure; class IfcNumericMeasure; class IfcPHMeasure; class IfcParameterValue; class IfcPlanarForceMeasure; class IfcPlaneAngleMeasure; class IfcPositiveInteger; class IfcPositiveLengthMeasure; class IfcPositivePlaneAngleMeasure; class IfcPositiveRatioMeasure; class IfcPowerMeasure; class IfcPresentableText; class IfcPressureMeasure; class IfcPropertySetDefinitionSet; class IfcRadioActivityMeasure; class IfcRatioMeasure; class IfcReal; class IfcRotationalFrequencyMeasure; class IfcRotationalMassMeasure; class IfcRotationalStiffnessMeasure; class IfcSectionModulusMeasure; class IfcSectionalAreaIntegralMeasure; class IfcShearModulusMeasure; class IfcSolidAngleMeasure; class IfcSoundPowerLevelMeasure; class IfcSoundPowerMeasure; class IfcSoundPressureLevelMeasure; class IfcSoundPressureMeasure; class IfcSpecificHeatCapacityMeasure; class IfcSpecularExponent; class IfcSpecularRoughness; class IfcStrippedOptional; class IfcTemperatureGradientMeasure; class IfcTemperatureRateOfChangeMeasure; class IfcText; class IfcTextAlignment; class IfcTextDecoration; class IfcTextFontName; class IfcTextTransformation; class IfcThermalAdmittanceMeasure; class IfcThermalConductivityMeasure; class IfcThermalExpansionCoefficientMeasure; class IfcThermalResistanceMeasure; class IfcThermalTransmittanceMeasure; class IfcThermodynamicTemperatureMeasure; class IfcTime; class IfcTimeMeasure; class IfcTimeStamp; class IfcTorqueMeasure; class IfcURIReference; class IfcVaporPermeabilityMeasure; class IfcVolumeMeasure; class IfcVolumetricFlowRateMeasure; class IfcWarpingConstantMeasure; class IfcWarpingMomentMeasure; class IfcWellKnownTextLiteral; +class IfcActionRequest; class IfcActor; class IfcActorRole; class IfcActuator; class IfcActuatorType; class IfcAddress; class IfcAdvancedBrep; class IfcAdvancedBrepWithVoids; class IfcAdvancedFace; class IfcAirTerminal; class IfcAirTerminalBox; class IfcAirTerminalBoxType; class IfcAirTerminalType; class IfcAirToAirHeatRecovery; class IfcAirToAirHeatRecoveryType; class IfcAlarm; class IfcAlarmType; class IfcAlignment; class IfcAlignmentCant; class IfcAlignmentCantSegment; class IfcAlignmentHorizontal; class IfcAlignmentHorizontalSegment; class IfcAlignmentParameterSegment; class IfcAlignmentSegment; class IfcAlignmentVertical; class IfcAlignmentVerticalSegment; class IfcAnnotation; class IfcAnnotationFillArea; class IfcApplication; class IfcAppliedValue; class IfcApproval; class IfcApprovalRelationship; class IfcArbitraryClosedProfileDef; class IfcArbitraryOpenProfileDef; class IfcArbitraryProfileDefWithVoids; class IfcAsset; class IfcAsymmetricIShapeProfileDef; class IfcAudioVisualAppliance; class IfcAudioVisualApplianceType; class IfcAxis1Placement; class IfcAxis2Placement2D; class IfcAxis2Placement3D; class IfcAxis2PlacementLinear; class IfcBSplineCurve; class IfcBSplineCurveWithKnots; class IfcBSplineSurface; class IfcBSplineSurfaceWithKnots; class IfcBeam; class IfcBeamType; class IfcBearing; class IfcBearingType; class IfcBlobTexture; class IfcBlock; class IfcBoiler; class IfcBoilerType; class IfcBooleanClippingResult; class IfcBooleanResult; class IfcBorehole; class IfcBoundaryCondition; class IfcBoundaryCurve; class IfcBoundaryEdgeCondition; class IfcBoundaryFaceCondition; class IfcBoundaryNodeCondition; class IfcBoundaryNodeConditionWarping; class IfcBoundedCurve; class IfcBoundedSurface; class IfcBoundingBox; class IfcBoxedHalfSpace; class IfcBridge; class IfcBridgePart; class IfcBuilding; class IfcBuildingElementPart; class IfcBuildingElementPartType; class IfcBuildingElementProxy; class IfcBuildingElementProxyType; class IfcBuildingStorey; class IfcBuildingSystem; class IfcBuiltElement; class IfcBuiltElementType; class IfcBuiltSystem; class IfcBurner; class IfcBurnerType; class IfcCShapeProfileDef; class IfcCableCarrierFitting; class IfcCableCarrierFittingType; class IfcCableCarrierSegment; class IfcCableCarrierSegmentType; class IfcCableFitting; class IfcCableFittingType; class IfcCableSegment; class IfcCableSegmentType; class IfcCaissonFoundation; class IfcCaissonFoundationType; class IfcCartesianPoint; class IfcCartesianPointList; class IfcCartesianPointList2D; class IfcCartesianPointList3D; class IfcCartesianTransformationOperator; class IfcCartesianTransformationOperator2D; class IfcCartesianTransformationOperator2DnonUniform; class IfcCartesianTransformationOperator3D; class IfcCartesianTransformationOperator3DnonUniform; class IfcCenterLineProfileDef; class IfcChiller; class IfcChillerType; class IfcChimney; class IfcChimneyType; class IfcCircle; class IfcCircleHollowProfileDef; class IfcCircleProfileDef; class IfcCivilElement; class IfcCivilElementType; class IfcClassification; class IfcClassificationReference; class IfcClosedShell; class IfcClothoid; class IfcCoil; class IfcCoilType; class IfcColourRgb; class IfcColourRgbList; class IfcColourSpecification; class IfcColumn; class IfcColumnType; class IfcCommunicationsAppliance; class IfcCommunicationsApplianceType; class IfcComplexProperty; class IfcComplexPropertyTemplate; class IfcCompositeCurve; class IfcCompositeCurveOnSurface; class IfcCompositeCurveSegment; class IfcCompositeProfileDef; class IfcCompressor; class IfcCompressorType; class IfcCondenser; class IfcCondenserType; class IfcConic; class IfcConnectedFaceSet; class IfcConnectionCurveGeometry; class IfcConnectionGeometry; class IfcConnectionPointEccentricity; class IfcConnectionPointGeometry; class IfcConnectionSurfaceGeometry; class IfcConnectionVolumeGeometry; class IfcConstraint; class IfcConstructionEquipmentResource; class IfcConstructionEquipmentResourceType; class IfcConstructionMaterialResource; class IfcConstructionMaterialResourceType; class IfcConstructionProductResource; class IfcConstructionProductResourceType; class IfcConstructionResource; class IfcConstructionResourceType; class IfcContext; class IfcContextDependentUnit; class IfcControl; class IfcController; class IfcControllerType; class IfcConversionBasedUnit; class IfcConversionBasedUnitWithOffset; class IfcConveyorSegment; class IfcConveyorSegmentType; class IfcCooledBeam; class IfcCooledBeamType; class IfcCoolingTower; class IfcCoolingTowerType; class IfcCoordinateOperation; class IfcCoordinateReferenceSystem; class IfcCosineSpiral; class IfcCostItem; class IfcCostSchedule; class IfcCostValue; class IfcCourse; class IfcCourseType; class IfcCovering; class IfcCoveringType; class IfcCrewResource; class IfcCrewResourceType; class IfcCsgPrimitive3D; class IfcCsgSolid; class IfcCurrencyRelationship; class IfcCurtainWall; class IfcCurtainWallType; class IfcCurve; class IfcCurveBoundedPlane; class IfcCurveBoundedSurface; class IfcCurveSegment; class IfcCurveStyle; class IfcCurveStyleFont; class IfcCurveStyleFontAndScaling; class IfcCurveStyleFontPattern; class IfcCylindricalSurface; class IfcDamper; class IfcDamperType; class IfcDeepFoundation; class IfcDeepFoundationType; class IfcDerivedProfileDef; class IfcDerivedUnit; class IfcDerivedUnitElement; class IfcDimensionalExponents; class IfcDirection; class IfcDirectrixCurveSweptAreaSolid; class IfcDirectrixDerivedReferenceSweptAreaSolid; class IfcDiscreteAccessory; class IfcDiscreteAccessoryType; class IfcDistributionBoard; class IfcDistributionBoardType; class IfcDistributionChamberElement; class IfcDistributionChamberElementType; class IfcDistributionCircuit; class IfcDistributionControlElement; class IfcDistributionControlElementType; class IfcDistributionElement; class IfcDistributionElementType; class IfcDistributionFlowElement; class IfcDistributionFlowElementType; class IfcDistributionPort; class IfcDistributionSystem; class IfcDocumentInformation; class IfcDocumentInformationRelationship; class IfcDocumentReference; class IfcDoor; class IfcDoorLiningProperties; class IfcDoorPanelProperties; class IfcDoorType; class IfcDraughtingPreDefinedColour; class IfcDraughtingPreDefinedCurveFont; class IfcDuctFitting; class IfcDuctFittingType; class IfcDuctSegment; class IfcDuctSegmentType; class IfcDuctSilencer; class IfcDuctSilencerType; class IfcEarthworksCut; class IfcEarthworksElement; class IfcEarthworksFill; class IfcEdge; class IfcEdgeCurve; class IfcEdgeLoop; class IfcElectricAppliance; class IfcElectricApplianceType; class IfcElectricDistributionBoard; class IfcElectricDistributionBoardType; class IfcElectricFlowStorageDevice; class IfcElectricFlowStorageDeviceType; class IfcElectricFlowTreatmentDevice; class IfcElectricFlowTreatmentDeviceType; class IfcElectricGenerator; class IfcElectricGeneratorType; class IfcElectricMotor; class IfcElectricMotorType; class IfcElectricTimeControl; class IfcElectricTimeControlType; class IfcElement; class IfcElementAssembly; class IfcElementAssemblyType; class IfcElementComponent; class IfcElementComponentType; class IfcElementQuantity; class IfcElementType; class IfcElementarySurface; class IfcEllipse; class IfcEllipseProfileDef; class IfcEnergyConversionDevice; class IfcEnergyConversionDeviceType; class IfcEngine; class IfcEngineType; class IfcEvaporativeCooler; class IfcEvaporativeCoolerType; class IfcEvaporator; class IfcEvaporatorType; class IfcEvent; class IfcEventTime; class IfcEventType; class IfcExtendedProperties; class IfcExternalInformation; class IfcExternalReference; class IfcExternalReferenceRelationship; class IfcExternalSpatialElement; class IfcExternalSpatialStructureElement; class IfcExternallyDefinedHatchStyle; class IfcExternallyDefinedSurfaceStyle; class IfcExternallyDefinedTextFont; class IfcExtrudedAreaSolid; class IfcExtrudedAreaSolidTapered; class IfcFace; class IfcFaceBasedSurfaceModel; class IfcFaceBound; class IfcFaceOuterBound; class IfcFaceSurface; class IfcFacetedBrep; class IfcFacetedBrepWithVoids; class IfcFacility; class IfcFacilityPart; class IfcFacilityPartCommon; class IfcFailureConnectionCondition; class IfcFan; class IfcFanType; class IfcFastener; class IfcFastenerType; class IfcFeatureElement; class IfcFeatureElementAddition; class IfcFeatureElementSubtraction; class IfcFillAreaStyle; class IfcFillAreaStyleHatching; class IfcFillAreaStyleTiles; class IfcFilter; class IfcFilterType; class IfcFireSuppressionTerminal; class IfcFireSuppressionTerminalType; class IfcFixedReferenceSweptAreaSolid; class IfcFlowController; class IfcFlowControllerType; class IfcFlowFitting; class IfcFlowFittingType; class IfcFlowInstrument; class IfcFlowInstrumentType; class IfcFlowMeter; class IfcFlowMeterType; class IfcFlowMovingDevice; class IfcFlowMovingDeviceType; class IfcFlowSegment; class IfcFlowSegmentType; class IfcFlowStorageDevice; class IfcFlowStorageDeviceType; class IfcFlowTerminal; class IfcFlowTerminalType; class IfcFlowTreatmentDevice; class IfcFlowTreatmentDeviceType; class IfcFooting; class IfcFootingType; class IfcFurnishingElement; class IfcFurnishingElementType; class IfcFurniture; class IfcFurnitureType; class IfcGeographicCRS; class IfcGeographicElement; class IfcGeographicElementType; class IfcGeometricCurveSet; class IfcGeometricRepresentationContext; class IfcGeometricRepresentationItem; class IfcGeometricRepresentationSubContext; class IfcGeometricSet; class IfcGeomodel; class IfcGeoslice; class IfcGeotechnicalAssembly; class IfcGeotechnicalElement; class IfcGeotechnicalStratum; class IfcGradientCurve; class IfcGrid; class IfcGridAxis; class IfcGridPlacement; class IfcGroup; class IfcHalfSpaceSolid; class IfcHeatExchanger; class IfcHeatExchangerType; class IfcHumidifier; class IfcHumidifierType; class IfcIShapeProfileDef; class IfcImageTexture; class IfcImpactProtectionDevice; class IfcImpactProtectionDeviceType; class IfcIndexedColourMap; class IfcIndexedPolyCurve; class IfcIndexedPolygonalFace; class IfcIndexedPolygonalFaceWithVoids; class IfcIndexedPolygonalTextureMap; class IfcIndexedTextureMap; class IfcIndexedTriangleTextureMap; class IfcInterceptor; class IfcInterceptorType; class IfcIntersectionCurve; class IfcInventory; class IfcIrregularTimeSeries; class IfcIrregularTimeSeriesValue; class IfcJunctionBox; class IfcJunctionBoxType; class IfcKerb; class IfcKerbType; class IfcLShapeProfileDef; class IfcLaborResource; class IfcLaborResourceType; class IfcLagTime; class IfcLamp; class IfcLampType; class IfcLibraryInformation; class IfcLibraryReference; class IfcLightDistributionData; class IfcLightFixture; class IfcLightFixtureType; class IfcLightIntensityDistribution; class IfcLightSource; class IfcLightSourceAmbient; class IfcLightSourceDirectional; class IfcLightSourceGoniometric; class IfcLightSourcePositional; class IfcLightSourceSpot; class IfcLine; class IfcLinearElement; class IfcLinearPlacement; class IfcLinearPositioningElement; class IfcLiquidTerminal; class IfcLiquidTerminalType; class IfcLocalPlacement; class IfcLoop; class IfcManifoldSolidBrep; class IfcMapConversion; class IfcMapConversionScaled; class IfcMappedItem; class IfcMarineFacility; class IfcMarinePart; class IfcMaterial; class IfcMaterialClassificationRelationship; class IfcMaterialConstituent; class IfcMaterialConstituentSet; class IfcMaterialDefinition; class IfcMaterialDefinitionRepresentation; class IfcMaterialLayer; class IfcMaterialLayerSet; class IfcMaterialLayerSetUsage; class IfcMaterialLayerWithOffsets; class IfcMaterialList; class IfcMaterialProfile; class IfcMaterialProfileSet; class IfcMaterialProfileSetUsage; class IfcMaterialProfileSetUsageTapering; class IfcMaterialProfileWithOffsets; class IfcMaterialProperties; class IfcMaterialRelationship; class IfcMaterialUsageDefinition; class IfcMeasureWithUnit; class IfcMechanicalFastener; class IfcMechanicalFastenerType; class IfcMedicalDevice; class IfcMedicalDeviceType; class IfcMember; class IfcMemberType; class IfcMetric; class IfcMirroredProfileDef; class IfcMobileTelecommunicationsAppliance; class IfcMobileTelecommunicationsApplianceType; class IfcMonetaryUnit; class IfcMooringDevice; class IfcMooringDeviceType; class IfcMotorConnection; class IfcMotorConnectionType; class IfcNamedUnit; class IfcNavigationElement; class IfcNavigationElementType; class IfcObject; class IfcObjectDefinition; class IfcObjectPlacement; class IfcObjective; class IfcOccupant; class IfcOffsetCurve; class IfcOffsetCurve2D; class IfcOffsetCurve3D; class IfcOffsetCurveByDistances; class IfcOpenCrossProfileDef; class IfcOpenShell; class IfcOpeningElement; class IfcOrganization; class IfcOrganizationRelationship; class IfcOrientedEdge; class IfcOuterBoundaryCurve; class IfcOutlet; class IfcOutletType; class IfcOwnerHistory; class IfcParameterizedProfileDef; class IfcPath; class IfcPavement; class IfcPavementType; class IfcPcurve; class IfcPerformanceHistory; class IfcPermeableCoveringProperties; class IfcPermit; class IfcPerson; class IfcPersonAndOrganization; class IfcPhysicalComplexQuantity; class IfcPhysicalQuantity; class IfcPhysicalSimpleQuantity; class IfcPile; class IfcPileType; class IfcPipeFitting; class IfcPipeFittingType; class IfcPipeSegment; class IfcPipeSegmentType; class IfcPixelTexture; class IfcPlacement; class IfcPlanarBox; class IfcPlanarExtent; class IfcPlane; class IfcPlate; class IfcPlateType; class IfcPoint; class IfcPointByDistanceExpression; class IfcPointOnCurve; class IfcPointOnSurface; class IfcPolyLoop; class IfcPolygonalBoundedHalfSpace; class IfcPolygonalFaceSet; class IfcPolyline; class IfcPolynomialCurve; class IfcPort; class IfcPositioningElement; class IfcPostalAddress; class IfcPreDefinedColour; class IfcPreDefinedCurveFont; class IfcPreDefinedItem; class IfcPreDefinedProperties; class IfcPreDefinedPropertySet; class IfcPreDefinedTextFont; class IfcPresentationItem; class IfcPresentationLayerAssignment; class IfcPresentationLayerWithStyle; class IfcPresentationStyle; class IfcProcedure; class IfcProcedureType; class IfcProcess; class IfcProduct; class IfcProductDefinitionShape; class IfcProductRepresentation; class IfcProfileDef; class IfcProfileProperties; class IfcProject; class IfcProjectLibrary; class IfcProjectOrder; class IfcProjectedCRS; class IfcProjectionElement; class IfcProperty; class IfcPropertyAbstraction; class IfcPropertyBoundedValue; class IfcPropertyDefinition; class IfcPropertyDependencyRelationship; class IfcPropertyEnumeratedValue; class IfcPropertyEnumeration; class IfcPropertyListValue; class IfcPropertyReferenceValue; class IfcPropertySet; class IfcPropertySetDefinition; class IfcPropertySetTemplate; class IfcPropertySingleValue; class IfcPropertyTableValue; class IfcPropertyTemplate; class IfcPropertyTemplateDefinition; class IfcProtectiveDevice; class IfcProtectiveDeviceTrippingUnit; class IfcProtectiveDeviceTrippingUnitType; class IfcProtectiveDeviceType; class IfcPump; class IfcPumpType; class IfcQuantityArea; class IfcQuantityCount; class IfcQuantityLength; class IfcQuantityNumber; class IfcQuantitySet; class IfcQuantityTime; class IfcQuantityVolume; class IfcQuantityWeight; class IfcRail; class IfcRailType; class IfcRailing; class IfcRailingType; class IfcRailway; class IfcRailwayPart; class IfcRamp; class IfcRampFlight; class IfcRampFlightType; class IfcRampType; class IfcRationalBSplineCurveWithKnots; class IfcRationalBSplineSurfaceWithKnots; class IfcRectangleHollowProfileDef; class IfcRectangleProfileDef; class IfcRectangularPyramid; class IfcRectangularTrimmedSurface; class IfcRecurrencePattern; class IfcReference; class IfcReferent; class IfcRegularTimeSeries; class IfcReinforcedSoil; class IfcReinforcementBarProperties; class IfcReinforcementDefinitionProperties; class IfcReinforcingBar; class IfcReinforcingBarType; class IfcReinforcingElement; class IfcReinforcingElementType; class IfcReinforcingMesh; class IfcReinforcingMeshType; class IfcRelAdheresToElement; class IfcRelAggregates; class IfcRelAssigns; class IfcRelAssignsToActor; class IfcRelAssignsToControl; class IfcRelAssignsToGroup; class IfcRelAssignsToGroupByFactor; class IfcRelAssignsToProcess; class IfcRelAssignsToProduct; class IfcRelAssignsToResource; class IfcRelAssociates; class IfcRelAssociatesApproval; class IfcRelAssociatesClassification; class IfcRelAssociatesConstraint; class IfcRelAssociatesDocument; class IfcRelAssociatesLibrary; class IfcRelAssociatesMaterial; class IfcRelAssociatesProfileDef; class IfcRelConnects; class IfcRelConnectsElements; class IfcRelConnectsPathElements; class IfcRelConnectsPortToElement; class IfcRelConnectsPorts; class IfcRelConnectsStructuralActivity; class IfcRelConnectsStructuralMember; class IfcRelConnectsWithEccentricity; class IfcRelConnectsWithRealizingElements; class IfcRelContainedInSpatialStructure; class IfcRelCoversBldgElements; class IfcRelCoversSpaces; class IfcRelDeclares; class IfcRelDecomposes; class IfcRelDefines; class IfcRelDefinesByObject; class IfcRelDefinesByProperties; class IfcRelDefinesByTemplate; class IfcRelDefinesByType; class IfcRelFillsElement; class IfcRelFlowControlElements; class IfcRelInterferesElements; class IfcRelNests; class IfcRelPositions; class IfcRelProjectsElement; class IfcRelReferencedInSpatialStructure; class IfcRelSequence; class IfcRelServicesBuildings; class IfcRelSpaceBoundary; class IfcRelSpaceBoundary1stLevel; class IfcRelSpaceBoundary2ndLevel; class IfcRelVoidsElement; class IfcRelationship; class IfcReparametrisedCompositeCurveSegment; class IfcRepresentation; class IfcRepresentationContext; class IfcRepresentationItem; class IfcRepresentationMap; class IfcResource; class IfcResourceApprovalRelationship; class IfcResourceConstraintRelationship; class IfcResourceLevelRelationship; class IfcResourceTime; class IfcRevolvedAreaSolid; class IfcRevolvedAreaSolidTapered; class IfcRightCircularCone; class IfcRightCircularCylinder; class IfcRigidOperation; class IfcRoad; class IfcRoadPart; class IfcRoof; class IfcRoofType; class IfcRoot; class IfcRoundedRectangleProfileDef; class IfcSIUnit; class IfcSanitaryTerminal; class IfcSanitaryTerminalType; class IfcSchedulingTime; class IfcSeamCurve; class IfcSecondOrderPolynomialSpiral; class IfcSectionProperties; class IfcSectionReinforcementProperties; class IfcSectionedSolid; class IfcSectionedSolidHorizontal; class IfcSectionedSpine; class IfcSectionedSurface; class IfcSegment; class IfcSegmentedReferenceCurve; class IfcSensor; class IfcSensorType; class IfcSeventhOrderPolynomialSpiral; class IfcShadingDevice; class IfcShadingDeviceType; class IfcShapeAspect; class IfcShapeModel; class IfcShapeRepresentation; class IfcShellBasedSurfaceModel; class IfcSign; class IfcSignType; class IfcSignal; class IfcSignalType; class IfcSimpleProperty; class IfcSimplePropertyTemplate; class IfcSineSpiral; class IfcSite; class IfcSlab; class IfcSlabType; class IfcSlippageConnectionCondition; class IfcSolarDevice; class IfcSolarDeviceType; class IfcSolidModel; class IfcSpace; class IfcSpaceHeater; class IfcSpaceHeaterType; class IfcSpaceType; class IfcSpatialElement; class IfcSpatialElementType; class IfcSpatialStructureElement; class IfcSpatialStructureElementType; class IfcSpatialZone; class IfcSpatialZoneType; class IfcSphere; class IfcSphericalSurface; class IfcSpiral; class IfcStackTerminal; class IfcStackTerminalType; class IfcStair; class IfcStairFlight; class IfcStairFlightType; class IfcStairType; class IfcStructuralAction; class IfcStructuralActivity; class IfcStructuralAnalysisModel; class IfcStructuralConnection; class IfcStructuralConnectionCondition; class IfcStructuralCurveAction; class IfcStructuralCurveConnection; class IfcStructuralCurveMember; class IfcStructuralCurveMemberVarying; class IfcStructuralCurveReaction; class IfcStructuralItem; class IfcStructuralLinearAction; class IfcStructuralLoad; class IfcStructuralLoadCase; class IfcStructuralLoadConfiguration; class IfcStructuralLoadGroup; class IfcStructuralLoadLinearForce; class IfcStructuralLoadOrResult; class IfcStructuralLoadPlanarForce; class IfcStructuralLoadSingleDisplacement; class IfcStructuralLoadSingleDisplacementDistortion; class IfcStructuralLoadSingleForce; class IfcStructuralLoadSingleForceWarping; class IfcStructuralLoadStatic; class IfcStructuralLoadTemperature; class IfcStructuralMember; class IfcStructuralPlanarAction; class IfcStructuralPointAction; class IfcStructuralPointConnection; class IfcStructuralPointReaction; class IfcStructuralReaction; class IfcStructuralResultGroup; class IfcStructuralSurfaceAction; class IfcStructuralSurfaceConnection; class IfcStructuralSurfaceMember; class IfcStructuralSurfaceMemberVarying; class IfcStructuralSurfaceReaction; class IfcStyleModel; class IfcStyledItem; class IfcStyledRepresentation; class IfcSubContractResource; class IfcSubContractResourceType; class IfcSubedge; class IfcSurface; class IfcSurfaceCurve; class IfcSurfaceCurveSweptAreaSolid; class IfcSurfaceFeature; class IfcSurfaceOfLinearExtrusion; class IfcSurfaceOfRevolution; class IfcSurfaceReinforcementArea; class IfcSurfaceStyle; class IfcSurfaceStyleLighting; class IfcSurfaceStyleRefraction; class IfcSurfaceStyleRendering; class IfcSurfaceStyleShading; class IfcSurfaceStyleWithTextures; class IfcSurfaceTexture; class IfcSweptAreaSolid; class IfcSweptDiskSolid; class IfcSweptDiskSolidPolygonal; class IfcSweptSurface; class IfcSwitchingDevice; class IfcSwitchingDeviceType; class IfcSystem; class IfcSystemFurnitureElement; class IfcSystemFurnitureElementType; class IfcTShapeProfileDef; class IfcTable; class IfcTableColumn; class IfcTableRow; class IfcTank; class IfcTankType; class IfcTask; class IfcTaskTime; class IfcTaskTimeRecurring; class IfcTaskType; class IfcTelecomAddress; class IfcTendon; class IfcTendonAnchor; class IfcTendonAnchorType; class IfcTendonConduit; class IfcTendonConduitType; class IfcTendonType; class IfcTessellatedFaceSet; class IfcTessellatedItem; class IfcTextLiteral; class IfcTextLiteralWithExtent; class IfcTextStyle; class IfcTextStyleFontModel; class IfcTextStyleForDefinedFont; class IfcTextStyleTextModel; class IfcTextureCoordinate; class IfcTextureCoordinateGenerator; class IfcTextureCoordinateIndices; class IfcTextureCoordinateIndicesWithVoids; class IfcTextureMap; class IfcTextureVertex; class IfcTextureVertexList; class IfcThirdOrderPolynomialSpiral; class IfcTimePeriod; class IfcTimeSeries; class IfcTimeSeriesValue; class IfcTopologicalRepresentationItem; class IfcTopologyRepresentation; class IfcToroidalSurface; class IfcTrackElement; class IfcTrackElementType; class IfcTransformer; class IfcTransformerType; class IfcTransportElement; class IfcTransportElementType; class IfcTransportationDevice; class IfcTransportationDeviceType; class IfcTrapeziumProfileDef; class IfcTriangulatedFaceSet; class IfcTriangulatedIrregularNetwork; class IfcTrimmedCurve; class IfcTubeBundle; class IfcTubeBundleType; class IfcTypeObject; class IfcTypeProcess; class IfcTypeProduct; class IfcTypeResource; class IfcUShapeProfileDef; class IfcUnitAssignment; class IfcUnitaryControlElement; class IfcUnitaryControlElementType; class IfcUnitaryEquipment; class IfcUnitaryEquipmentType; class IfcValve; class IfcValveType; class IfcVector; class IfcVehicle; class IfcVehicleType; class IfcVertex; class IfcVertexLoop; class IfcVertexPoint; class IfcVibrationDamper; class IfcVibrationDamperType; class IfcVibrationIsolator; class IfcVibrationIsolatorType; class IfcVirtualElement; class IfcVirtualGridIntersection; class IfcVoidingFeature; class IfcWall; class IfcWallStandardCase; class IfcWallType; class IfcWasteTerminal; class IfcWasteTerminalType; class IfcWellKnownText; class IfcWindow; class IfcWindowLiningProperties; class IfcWindowPanelProperties; class IfcWindowType; class IfcWorkCalendar; class IfcWorkControl; class IfcWorkPlan; class IfcWorkSchedule; class IfcWorkTime; class IfcZShapeProfileDef; class IfcZone; class IfcAbsorbedDoseMeasure; class IfcAccelerationMeasure; class IfcAmountOfSubstanceMeasure; class IfcAngularVelocityMeasure; class IfcArcIndex; class IfcAreaDensityMeasure; class IfcAreaMeasure; class IfcBinary; class IfcBoolean; class IfcBoxAlignment; class IfcCardinalPointReference; class IfcComplexNumber; class IfcCompoundPlaneAngleMeasure; class IfcContextDependentMeasure; class IfcCountMeasure; class IfcCurvatureMeasure; class IfcDate; class IfcDateTime; class IfcDayInMonthNumber; class IfcDayInWeekNumber; class IfcDescriptiveMeasure; class IfcDimensionCount; class IfcDoseEquivalentMeasure; class IfcDuration; 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 IfcIdentifier; class IfcIlluminanceMeasure; class IfcInductanceMeasure; class IfcInteger; class IfcIntegerCountRateMeasure; class IfcIonConcentrationMeasure; class IfcIsothermalMoistureCapacityMeasure; class IfcKinematicViscosityMeasure; class IfcLabel; class IfcLanguageId; class IfcLengthMeasure; class IfcLineIndex; 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 IfcModulusOfElasticityMeasure; class IfcModulusOfLinearSubgradeReactionMeasure; class IfcModulusOfRotationalSubgradeReactionMeasure; class IfcModulusOfSubgradeReactionMeasure; class IfcMoistureDiffusivityMeasure; class IfcMolecularWeightMeasure; class IfcMomentOfInertiaMeasure; class IfcMonetaryMeasure; class IfcMonthInYearNumber; class IfcNonNegativeLengthMeasure; class IfcNormalisedRatioMeasure; class IfcNumericMeasure; class IfcPHMeasure; class IfcParameterValue; class IfcPlanarForceMeasure; class IfcPlaneAngleMeasure; class IfcPositiveInteger; class IfcPositiveLengthMeasure; class IfcPositivePlaneAngleMeasure; class IfcPositiveRatioMeasure; class IfcPowerMeasure; class IfcPresentableText; class IfcPressureMeasure; class IfcPropertySetDefinitionSet; class IfcRadioActivityMeasure; class IfcRatioMeasure; class IfcReal; class IfcRotationalFrequencyMeasure; class IfcRotationalMassMeasure; class IfcRotationalStiffnessMeasure; class IfcSectionModulusMeasure; class IfcSectionalAreaIntegralMeasure; class IfcShearModulusMeasure; class IfcSolidAngleMeasure; class IfcSoundPowerLevelMeasure; class IfcSoundPowerMeasure; class IfcSoundPressureLevelMeasure; class IfcSoundPressureMeasure; class IfcSpecificHeatCapacityMeasure; class IfcSpecularExponent; class IfcSpecularRoughness; class IfcStrippedOptional; class IfcTemperatureGradientMeasure; class IfcTemperatureRateOfChangeMeasure; class IfcText; class IfcTextAlignment; class IfcTextDecoration; class IfcTextFontName; class IfcTextTransformation; class IfcThermalAdmittanceMeasure; class IfcThermalConductivityMeasure; class IfcThermalExpansionCoefficientMeasure; class IfcThermalResistanceMeasure; class IfcThermalTransmittanceMeasure; class IfcThermodynamicTemperatureMeasure; class IfcTime; class IfcTimeMeasure; class IfcTimeStamp; class IfcTorqueMeasure; class IfcURIReference; class IfcVaporPermeabilityMeasure; class IfcVolumeMeasure; class IfcVolumetricFlowRateMeasure; class IfcWarpingConstantMeasure; class IfcWarpingMomentMeasure; class IfcWellKnownTextLiteral; class IfcActorSelect; class IfcAppliedValueSelect; class IfcAxis2Placement; class IfcBendingParameterSelect; class IfcBooleanOperand; class IfcClassificationReferenceSelect; class IfcClassificationSelect; class IfcColour; class IfcColourOrFactor; class IfcCoordinateReferenceSystemSelect; class IfcCsgSelect; class IfcCurveFontOrScaledCurveFontSelect; class IfcCurveMeasureSelect; class IfcCurveOnSurface; class IfcCurveOrEdgeCurve; class IfcCurveStyleFontSelect; class IfcDefinitionSelect; class IfcDerivedMeasureValue; class IfcDocumentSelect; class IfcFillStyleSelect; class IfcGeometricSetSelect; class IfcGridPlacementDirectionSelect; class IfcHatchLineDistanceSelect; class IfcInterferenceSelect; class IfcLayeredItem; class IfcLibrarySelect; class IfcLightDistributionDataSourceSelect; class IfcMaterialSelect; class IfcMeasureValue; class IfcMetricValueSelect; class IfcModulusOfRotationalSubgradeReactionSelect; class IfcModulusOfSubgradeReactionSelect; class IfcModulusOfTranslationalSubgradeReactionSelect; class IfcObjectReferenceSelect; class IfcPointOrVertexPoint; class IfcProcessSelect; class IfcProductRepresentationSelect; class IfcProductSelect; class IfcPropertySetDefinitionSelect; class IfcResourceObjectSelect; class IfcResourceSelect; class IfcRotationalStiffnessSelect; class IfcSegmentIndexSelect; class IfcShell; class IfcSimpleValue; class IfcSizeSelect; class IfcSolidOrShell; class IfcSpaceBoundarySelect; class IfcSpatialReferenceSelect; class IfcSpecularHighlightSelect; class IfcStructuralActivityAssignmentSelect; class IfcSurfaceOrFaceSurface; class IfcSurfaceStyleElementSelect; class IfcTextFontSelect; class IfcTimeOrRatioSelect; class IfcTranslationalStiffnessSelect; class IfcTrimmingSelect; class IfcUnit; class IfcValue; class IfcVectorOrDirection; class IfcWarpingStiffnessSelect; /// The actor select type allows a person, or an organization, or a person associated with an organization to be referenced. /// @@ -62,10 +65,27 @@ class IfcActionRequest; class IfcActor; class IfcActorRole; class IfcActuator; c /// IfcOrganization An organization. /// IfcPerson A person. /// IfcPersonAndOrganization A person related to an organization. -class IFC_PARSE_API IfcActorSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcActorSelect : public express::Select { public: + IfcActorSelect() {} + explicit IfcActorSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcActorSelect > list; + template, int> = 0> + IfcOrganization as() const { return express::Base::as(); } + + template, int> = 0> + IfcPerson as() const { return express::Base::as(); } + + template, int> = 0> + IfcPersonAndOrganization as() const { return express::Base::as(); } + + IfcActorSelect(const IfcOrganization& c) : express::Select(c) {}; + + IfcActorSelect(const IfcPerson& c) : express::Select(c) {}; + + IfcActorSelect(const IfcPersonAndOrganization& c) : express::Select(c) {}; + }; /// IfcAppliedValueSelect defines the selection of whether a value (expressed as a ratio) or an amount should be used as the value for an IfcAppliedValue. /// @@ -81,28 +101,629 @@ public: /// Selecting IfcMeasureWithUnit allows the specification of both the actual figure for the value together with the currency in which the value is represented. /// Selecting IfcMonetaryMeasure allows the specification only of the value, the currency being as set by the global context /// Selecting IfcRatioMeasure assumes that the amount is a percentage or other REAL number. Note that if the amount is normally specified as -20%, then this figure will need to be converted to a multiplier of 0.8 -class IFC_PARSE_API IfcAppliedValueSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcAppliedValueSelect : public express::Select { public: + IfcAppliedValueSelect() {} + explicit IfcAppliedValueSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcAppliedValueSelect > list; + template, int> = 0> + IfcMeasureWithUnit as() const { return express::Base::as(); } + + template, int> = 0> + IfcReference as() const { return express::Base::as(); } + + template, int> = 0> + IfcValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcDerivedMeasureValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcAbsorbedDoseMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAccelerationMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAngularVelocityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAreaDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcCompoundPlaneAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcCurvatureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcDoseEquivalentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcDynamicViscosityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricCapacitanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricChargeMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricConductanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricResistanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricVoltageMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcEnergyMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcForceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcFrequencyMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcHeatFluxDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcHeatingValueMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIlluminanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcInductanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIntegerCountRateMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIonConcentrationMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIsothermalMoistureCapacityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcKinematicViscosityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearForceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearMomentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearStiffnessMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearVelocityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLuminousFluxMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLuminousIntensityDistributionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMagneticFluxDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMagneticFluxMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassFlowRateMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassPerLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfElasticityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfLinearSubgradeReactionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfRotationalSubgradeReactionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfSubgradeReactionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMoistureDiffusivityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMolecularWeightMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMomentOfInertiaMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMonetaryMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPHMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPlanarForceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPowerMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPressureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRadioActivityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRotationalFrequencyMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRotationalMassMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRotationalStiffnessMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSectionModulusMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSectionalAreaIntegralMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcShearModulusMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPowerLevelMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPowerMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPressureLevelMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPressureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSpecificHeatCapacityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTemperatureGradientMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTemperatureRateOfChangeMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalAdmittanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalConductivityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalExpansionCoefficientMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalResistanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalTransmittanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTorqueMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcVaporPermeabilityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcVolumetricFlowRateMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcWarpingConstantMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcWarpingMomentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMeasureValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcAmountOfSubstanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAreaMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcComplexNumber as() const { return express::Base::as(); } + + template, int> = 0> + IfcContextDependentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcCountMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcDescriptiveMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricCurrentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLuminousIntensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcNonNegativeLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcNormalisedRatioMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcNumericMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcParameterValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcPlaneAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositiveLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositivePlaneAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositiveRatioMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRatioMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSolidAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermodynamicTemperatureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTimeMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcVolumeMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSimpleValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcBinary as() const { return express::Base::as(); } + + template, int> = 0> + IfcBoolean as() const { return express::Base::as(); } + + template, int> = 0> + IfcDate as() const { return express::Base::as(); } + + template, int> = 0> + IfcDateTime as() const { return express::Base::as(); } + + template, int> = 0> + IfcDuration as() const { return express::Base::as(); } + + template, int> = 0> + IfcIdentifier as() const { return express::Base::as(); } + + template, int> = 0> + IfcInteger as() const { return express::Base::as(); } + + template, int> = 0> + IfcLabel as() const { return express::Base::as(); } + + template, int> = 0> + IfcLogical as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositiveInteger as() const { return express::Base::as(); } + + template, int> = 0> + IfcReal as() const { return express::Base::as(); } + + template, int> = 0> + IfcText as() const { return express::Base::as(); } + + template, int> = 0> + IfcTime as() const { return express::Base::as(); } + + template, int> = 0> + IfcTimeStamp as() const { return express::Base::as(); } + + template, int> = 0> + IfcURIReference as() const { return express::Base::as(); } + + IfcAppliedValueSelect(const IfcMeasureWithUnit& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcReference& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcValue& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcDerivedMeasureValue& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcAbsorbedDoseMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcAccelerationMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcAngularVelocityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcAreaDensityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcCompoundPlaneAngleMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcCurvatureMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcDoseEquivalentMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcDynamicViscosityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcElectricCapacitanceMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcElectricChargeMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcElectricConductanceMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcElectricResistanceMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcElectricVoltageMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcEnergyMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcForceMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcFrequencyMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcHeatFluxDensityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcHeatingValueMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcIlluminanceMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcInductanceMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcIntegerCountRateMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcIonConcentrationMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcIsothermalMoistureCapacityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcKinematicViscosityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcLinearForceMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcLinearMomentMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcLinearStiffnessMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcLinearVelocityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcLuminousFluxMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcLuminousIntensityDistributionMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcMagneticFluxDensityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcMagneticFluxMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcMassDensityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcMassFlowRateMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcMassPerLengthMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcModulusOfElasticityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcModulusOfLinearSubgradeReactionMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcModulusOfRotationalSubgradeReactionMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcModulusOfSubgradeReactionMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcMoistureDiffusivityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcMolecularWeightMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcMomentOfInertiaMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcMonetaryMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcPHMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcPlanarForceMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcPowerMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcPressureMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcRadioActivityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcRotationalFrequencyMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcRotationalMassMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcRotationalStiffnessMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcSectionModulusMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcSectionalAreaIntegralMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcShearModulusMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcSoundPowerLevelMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcSoundPowerMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcSoundPressureLevelMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcSoundPressureMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcSpecificHeatCapacityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcTemperatureGradientMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcTemperatureRateOfChangeMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcThermalAdmittanceMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcThermalConductivityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcThermalExpansionCoefficientMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcThermalResistanceMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcThermalTransmittanceMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcTorqueMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcVaporPermeabilityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcVolumetricFlowRateMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcWarpingConstantMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcWarpingMomentMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcMeasureValue& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcAmountOfSubstanceMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcAreaMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcComplexNumber& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcContextDependentMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcCountMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcDescriptiveMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcElectricCurrentMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcLengthMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcLuminousIntensityMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcMassMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcNonNegativeLengthMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcNormalisedRatioMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcNumericMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcParameterValue& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcPlaneAngleMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcPositiveLengthMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcPositivePlaneAngleMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcPositiveRatioMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcRatioMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcSolidAngleMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcThermodynamicTemperatureMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcTimeMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcVolumeMeasure& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcSimpleValue& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcBinary& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcBoolean& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcDate& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcDateTime& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcDuration& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcIdentifier& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcInteger& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcLabel& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcLogical& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcPositiveInteger& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcReal& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcText& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcTime& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcTimeStamp& c) : express::Select(c) {}; + + IfcAppliedValueSelect(const IfcURIReference& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-42:1992: This select type collects together both versions of the placement as used in two dimensional or in three dimensional Cartesian space. This enables entities requiring this information to reference them without specifying the space dimensionality. /// /// NOTE: Corresponding STEP type: axis2_placement, please refer to ISO/IS 10303-42:1994, p. 19 for the final definition of the formal standard. /// /// HISTORY: New type in IFC Release 1.5 -class IFC_PARSE_API IfcAxis2Placement : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcAxis2Placement : public express::Select { public: + IfcAxis2Placement() {} + explicit IfcAxis2Placement(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcAxis2Placement > list; + template, int> = 0> + IfcAxis2Placement2D as() const { return express::Base::as(); } + + template, int> = 0> + IfcAxis2Placement3D as() const { return express::Base::as(); } + + IfcAxis2Placement(const IfcAxis2Placement2D& c) : express::Select(c) {}; + + IfcAxis2Placement(const IfcAxis2Placement3D& c) : express::Select(c) {}; + }; /// Definition from IAI: A select type for selecting between simple measure types for reinforcement bending parameters. /// /// HISTORY New type in IFC Release 2x4 -class IFC_PARSE_API IfcBendingParameterSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcBendingParameterSelect : public express::Select { public: + IfcBendingParameterSelect() {} + explicit IfcBendingParameterSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcBendingParameterSelect > list; + template, int> = 0> + IfcLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPlaneAngleMeasure as() const { return express::Base::as(); } + + IfcBendingParameterSelect(const IfcLengthMeasure& c) : express::Select(c) {}; + + IfcBendingParameterSelect(const IfcPlaneAngleMeasure& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-42:1992: This select type identifies /// all those types of entities which may participate in a Boolean operation to @@ -120,10 +741,37 @@ public: /// (IfcSolidModel) are defined for being valid Boolean operands. /// /// HISTORY: New Type in IFC Release 1.5.1 -class IFC_PARSE_API IfcBooleanOperand : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcBooleanOperand : public express::Select { public: + IfcBooleanOperand() {} + explicit IfcBooleanOperand(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcBooleanOperand > list; + template, int> = 0> + IfcBooleanResult as() const { return express::Base::as(); } + + template, int> = 0> + IfcCsgPrimitive3D as() const { return express::Base::as(); } + + template, int> = 0> + IfcHalfSpaceSolid as() const { return express::Base::as(); } + + template, int> = 0> + IfcSolidModel as() const { return express::Base::as(); } + + template, int> = 0> + IfcTessellatedFaceSet as() const { return express::Base::as(); } + + IfcBooleanOperand(const IfcBooleanResult& c) : express::Select(c) {}; + + IfcBooleanOperand(const IfcCsgPrimitive3D& c) : express::Select(c) {}; + + IfcBooleanOperand(const IfcHalfSpaceSolid& c) : express::Select(c) {}; + + IfcBooleanOperand(const IfcSolidModel& c) : express::Select(c) {}; + + IfcBooleanOperand(const IfcTessellatedFaceSet& c) : express::Select(c) {}; + }; /// IfcClassificationReferenceSelect enables selection of whether a classification reference is a subset of another classification reference or is a top level entry of a classification source. /// @@ -133,10 +781,22 @@ public: /// /// IfcClassification (for classification information) /// IfcClassificationReference (for reference into a classification source) -class IFC_PARSE_API IfcClassificationReferenceSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcClassificationReferenceSelect : public express::Select { public: + IfcClassificationReferenceSelect() {} + explicit IfcClassificationReferenceSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcClassificationReferenceSelect > list; + template, int> = 0> + IfcClassification as() const { return express::Base::as(); } + + template, int> = 0> + IfcClassificationReference as() const { return express::Base::as(); } + + IfcClassificationReferenceSelect(const IfcClassification& c) : express::Select(c) {}; + + IfcClassificationReferenceSelect(const IfcClassificationReference& c) : express::Select(c) {}; + }; /// IfcClassificationSelect enables selection of whether a classification reference is to be referenced from an external source, or whether a classification is referenced as such. /// @@ -151,36 +811,84 @@ public: /// /// IfcClassification (for referencing a classification system) /// IfcClassificationReference (for referencing a classification item (or facet) inside a classification system) -class IFC_PARSE_API IfcClassificationSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcClassificationSelect : public express::Select { public: + IfcClassificationSelect() {} + explicit IfcClassificationSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcClassificationSelect > list; + template, int> = 0> + IfcClassification as() const { return express::Base::as(); } + + template, int> = 0> + IfcClassificationReference as() const { return express::Base::as(); } + + IfcClassificationSelect(const IfcClassification& c) : express::Select(c) {}; + + IfcClassificationSelect(const IfcClassificationReference& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-46:1992: The colour entity defines a basic appearance of elements which shall be visualized in a picture. /// /// NOTE  Corresponding STEP name: colour. It has been made into a SELECT type in IFC to avoid multiple inheritance for pre defined colour. Please refer to ISO/IS 10303-46:1994, p. 138 for the final definition of the formal standard. /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcColour : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcColour : public express::Select { public: + IfcColour() {} + explicit IfcColour(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcColour > list; + template, int> = 0> + IfcColourSpecification as() const { return express::Base::as(); } + + template, int> = 0> + IfcPreDefinedColour as() const { return express::Base::as(); } + + IfcColour(const IfcColourSpecification& c) : express::Select(c) {}; + + IfcColour(const IfcPreDefinedColour& c) : express::Select(c) {}; + }; /// The IfcColourOrFactor enables the selection of either a RGB colour value or a scalar factor value for the use as values of the reflectance components. /// /// HISTORY: New type in IFC2x2. -class IFC_PARSE_API IfcColourOrFactor : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcColourOrFactor : public express::Select { public: + IfcColourOrFactor() {} + explicit IfcColourOrFactor(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcColourOrFactor > list; + template, int> = 0> + IfcColourRgb as() const { return express::Base::as(); } + + template, int> = 0> + IfcNormalisedRatioMeasure as() const { return express::Base::as(); } + + IfcColourOrFactor(const IfcColourRgb& c) : express::Select(c) {}; + + IfcColourOrFactor(const IfcNormalisedRatioMeasure& c) : express::Select(c) {}; + }; /// IfcCoordinateReferenceSystemSelect is a select between either the local engineering coordinate system, represented by the IfcGeometricRepresentationContext, or another coordinate reference system, represented by IfcCoordinateReferenceSystem, to be the source of a coordinate operation. /// /// HISTORY  New select type in IFC2x4. -class IFC_PARSE_API IfcCoordinateReferenceSystemSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcCoordinateReferenceSystemSelect : public express::Select { public: + IfcCoordinateReferenceSystemSelect() {} + explicit IfcCoordinateReferenceSystemSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcCoordinateReferenceSystemSelect > list; + template, int> = 0> + IfcCoordinateReferenceSystem as() const { return express::Base::as(); } + + template, int> = 0> + IfcGeometricRepresentationContext as() const { return express::Base::as(); } + + IfcCoordinateReferenceSystemSelect(const IfcCoordinateReferenceSystem& c) : express::Select(c) {}; + + IfcCoordinateReferenceSystemSelect(const IfcGeometricRepresentationContext& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-42:1992: This type identifies the types of entity which may be selected as the root of a CSG tree including a single CSG primitive as a special case. /// Definition from IAI: The IfcBooleanResult, and subtypes of IfcCsgPrimitive3D are defined as potential root tree expression (at IfcCsgSolid). A subtype of IfcCsgPrimitive3D marks the special case of a CSG solid solely expressed by a single primitive. @@ -188,32 +896,95 @@ public: /// NOTE Corresponding ISO 10303-42 type: csg_select, please refer to ISO/IS 10303-42:1994, p.168 for the final definition of the formal standard. /// /// HISTORY New Type in IFC Release 1.5.1. -class IFC_PARSE_API IfcCsgSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcCsgSelect : public express::Select { public: + IfcCsgSelect() {} + explicit IfcCsgSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcCsgSelect > list; + template, int> = 0> + IfcBooleanResult as() const { return express::Base::as(); } + + template, int> = 0> + IfcCsgPrimitive3D as() const { return express::Base::as(); } + + IfcCsgSelect(const IfcBooleanResult& c) : express::Select(c) {}; + + IfcCsgSelect(const IfcCsgPrimitive3D& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-46:1992: The curve font or scaled curve font select is a selection of either a curve font style select (being either a predefined curve font or an explicitly defined curve font) or a curve style font and scaling. /// /// NOTE Corresponding ISO 10303 name: curve_font_or_scaled_curve_font_select. Please refer to ISO/IS 10303-46:1994 for the final definition of the formal standard. /// /// HISTORY New entity in IFC2x2. -class IFC_PARSE_API IfcCurveFontOrScaledCurveFontSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcCurveFontOrScaledCurveFontSelect : public express::Select { public: + IfcCurveFontOrScaledCurveFontSelect() {} + explicit IfcCurveFontOrScaledCurveFontSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcCurveFontOrScaledCurveFontSelect > list; + template, int> = 0> + IfcCurveStyleFontAndScaling as() const { return express::Base::as(); } + + template, int> = 0> + IfcCurveStyleFontSelect as() const { return express::Base::as(); } + + template, int> = 0> + IfcCurveStyleFont as() const { return express::Base::as(); } + + template, int> = 0> + IfcPreDefinedCurveFont as() const { return express::Base::as(); } + + IfcCurveFontOrScaledCurveFontSelect(const IfcCurveStyleFontAndScaling& c) : express::Select(c) {}; + + IfcCurveFontOrScaledCurveFontSelect(const IfcCurveStyleFontSelect& c) : express::Select(c) {}; + + IfcCurveFontOrScaledCurveFontSelect(const IfcCurveStyleFont& c) : express::Select(c) {}; + + IfcCurveFontOrScaledCurveFontSelect(const IfcPreDefinedCurveFont& c) : express::Select(c) {}; + }; -class IFC_PARSE_API IfcCurveMeasureSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcCurveMeasureSelect : public express::Select { public: + IfcCurveMeasureSelect() {} + explicit IfcCurveMeasureSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcCurveMeasureSelect > list; + template, int> = 0> + IfcLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcParameterValue as() const { return express::Base::as(); } + + IfcCurveMeasureSelect(const IfcLengthMeasure& c) : express::Select(c) {}; + + IfcCurveMeasureSelect(const IfcParameterValue& c) : express::Select(c) {}; + }; -class IFC_PARSE_API IfcCurveOnSurface : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcCurveOnSurface : public express::Select { public: + IfcCurveOnSurface() {} + explicit IfcCurveOnSurface(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcCurveOnSurface > list; + template, int> = 0> + IfcCompositeCurveOnSurface as() const { return express::Base::as(); } + + template, int> = 0> + IfcPcurve as() const { return express::Base::as(); } + + template, int> = 0> + IfcSurfaceCurve as() const { return express::Base::as(); } + + IfcCurveOnSurface(const IfcCompositeCurveOnSurface& c) : express::Select(c) {}; + + IfcCurveOnSurface(const IfcPcurve& c) : express::Select(c) {}; + + IfcCurveOnSurface(const IfcSurfaceCurve& c) : express::Select(c) {}; + }; /// IfcCurveOrEdgeCurve provides the option to either select a geometric curve (IfcCurve /// and subtypes) within a geometric model, or a curve with associated geometry and coordinates (IfcEdgeCurve) within a topological model. @@ -223,20 +994,44 @@ public: /// IfcEdgeCurve /// /// HISTORY  New select type in IFC2x Edition 3. -class IFC_PARSE_API IfcCurveOrEdgeCurve : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcCurveOrEdgeCurve : public express::Select { public: + IfcCurveOrEdgeCurve() {} + explicit IfcCurveOrEdgeCurve(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcCurveOrEdgeCurve > list; + template, int> = 0> + IfcBoundedCurve as() const { return express::Base::as(); } + + template, int> = 0> + IfcEdgeCurve as() const { return express::Base::as(); } + + IfcCurveOrEdgeCurve(const IfcBoundedCurve& c) : express::Select(c) {}; + + IfcCurveOrEdgeCurve(const IfcEdgeCurve& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-46:1992: The curve style font select is a selection of a curve style font or a predefined curve style font. /// /// NOTE Corresponding ISO 10303 name: curve_style_font_select. Please refer to ISO/IS 10303-46:1994 for the final definition of the formal standard. /// /// HISTORY New entity in IFC2x2. -class IFC_PARSE_API IfcCurveStyleFontSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcCurveStyleFontSelect : public express::Select { public: + IfcCurveStyleFontSelect() {} + explicit IfcCurveStyleFontSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcCurveStyleFontSelect > list; + template, int> = 0> + IfcCurveStyleFont as() const { return express::Base::as(); } + + template, int> = 0> + IfcPreDefinedCurveFont as() const { return express::Base::as(); } + + IfcCurveStyleFontSelect(const IfcCurveStyleFont& c) : express::Select(c) {}; + + IfcCurveStyleFontSelect(const IfcPreDefinedCurveFont& c) : express::Select(c) {}; + }; /// IfcDefinitionSelectprovides the option to either select an object or type object IfcObjectDefinition, or a property set template or property set, IfcPropertyDefinition. /// SELECT @@ -245,10 +1040,22 @@ public: /// IfcPropertyDefinition /// /// HISTORY New select type in IFC2x4. -class IFC_PARSE_API IfcDefinitionSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcDefinitionSelect : public express::Select { public: + IfcDefinitionSelect() {} + explicit IfcDefinitionSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcDefinitionSelect > list; + template, int> = 0> + IfcObjectDefinition as() const { return express::Base::as(); } + + template, int> = 0> + IfcPropertyDefinition as() const { return express::Base::as(); } + + IfcDefinitionSelect(const IfcObjectDefinition& c) : express::Select(c) {}; + + IfcDefinitionSelect(const IfcPropertyDefinition& c) : express::Select(c) {}; + }; /// IfcDerivedMeasureValue is a select type for selecting between derived measure types. /// @@ -324,10 +1131,367 @@ public: /// HISTORY New type in IFC Release 2x. /// /// IFC2x4 change: added IfcTemperatureRateOfChangeMeasure. -class IFC_PARSE_API IfcDerivedMeasureValue : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcDerivedMeasureValue : public express::Select { public: + IfcDerivedMeasureValue() {} + explicit IfcDerivedMeasureValue(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcDerivedMeasureValue > list; + template, int> = 0> + IfcAbsorbedDoseMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAccelerationMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAngularVelocityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAreaDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcCompoundPlaneAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcCurvatureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcDoseEquivalentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcDynamicViscosityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricCapacitanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricChargeMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricConductanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricResistanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricVoltageMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcEnergyMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcForceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcFrequencyMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcHeatFluxDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcHeatingValueMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIlluminanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcInductanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIntegerCountRateMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIonConcentrationMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIsothermalMoistureCapacityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcKinematicViscosityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearForceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearMomentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearStiffnessMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearVelocityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLuminousFluxMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLuminousIntensityDistributionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMagneticFluxDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMagneticFluxMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassFlowRateMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassPerLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfElasticityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfLinearSubgradeReactionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfRotationalSubgradeReactionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfSubgradeReactionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMoistureDiffusivityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMolecularWeightMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMomentOfInertiaMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMonetaryMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPHMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPlanarForceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPowerMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPressureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRadioActivityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRotationalFrequencyMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRotationalMassMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRotationalStiffnessMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSectionModulusMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSectionalAreaIntegralMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcShearModulusMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPowerLevelMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPowerMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPressureLevelMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPressureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSpecificHeatCapacityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTemperatureGradientMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTemperatureRateOfChangeMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalAdmittanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalConductivityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalExpansionCoefficientMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalResistanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalTransmittanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTorqueMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcVaporPermeabilityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcVolumetricFlowRateMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcWarpingConstantMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcWarpingMomentMeasure as() const { return express::Base::as(); } + + IfcDerivedMeasureValue(const IfcAbsorbedDoseMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcAccelerationMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcAngularVelocityMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcAreaDensityMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcCompoundPlaneAngleMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcCurvatureMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcDoseEquivalentMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcDynamicViscosityMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcElectricCapacitanceMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcElectricChargeMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcElectricConductanceMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcElectricResistanceMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcElectricVoltageMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcEnergyMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcForceMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcFrequencyMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcHeatFluxDensityMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcHeatingValueMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcIlluminanceMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcInductanceMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcIntegerCountRateMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcIonConcentrationMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcIsothermalMoistureCapacityMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcKinematicViscosityMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcLinearForceMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcLinearMomentMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcLinearStiffnessMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcLinearVelocityMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcLuminousFluxMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcLuminousIntensityDistributionMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcMagneticFluxDensityMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcMagneticFluxMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcMassDensityMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcMassFlowRateMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcMassPerLengthMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcModulusOfElasticityMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcModulusOfLinearSubgradeReactionMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcModulusOfRotationalSubgradeReactionMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcModulusOfSubgradeReactionMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcMoistureDiffusivityMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcMolecularWeightMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcMomentOfInertiaMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcMonetaryMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcPHMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcPlanarForceMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcPowerMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcPressureMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcRadioActivityMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcRotationalFrequencyMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcRotationalMassMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcRotationalStiffnessMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcSectionModulusMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcSectionalAreaIntegralMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcShearModulusMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcSoundPowerLevelMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcSoundPowerMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcSoundPressureLevelMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcSoundPressureMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcSpecificHeatCapacityMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcTemperatureGradientMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcTemperatureRateOfChangeMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcThermalAdmittanceMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcThermalConductivityMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcThermalExpansionCoefficientMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcThermalResistanceMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcThermalTransmittanceMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcTorqueMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcVaporPermeabilityMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcVolumetricFlowRateMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcWarpingConstantMeasure& c) : express::Select(c) {}; + + IfcDerivedMeasureValue(const IfcWarpingMomentMeasure& c) : express::Select(c) {}; + }; /// IfcDocumentSelect enables selection of whether document information is to be contained within an IFC model or is to be referenced from an external source. /// @@ -337,10 +1501,22 @@ public: /// /// IfcDocumentInformation (for "metadata" of an external document) /// IfcDocumentReference (for reference within a document) -class IFC_PARSE_API IfcDocumentSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcDocumentSelect : public express::Select { public: + IfcDocumentSelect() {} + explicit IfcDocumentSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcDocumentSelect > list; + template, int> = 0> + IfcDocumentInformation as() const { return express::Base::as(); } + + template, int> = 0> + IfcDocumentReference as() const { return express::Base::as(); } + + IfcDocumentSelect(const IfcDocumentInformation& c) : express::Select(c) {}; + + IfcDocumentSelect(const IfcDocumentReference& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-46:1992: The fill style select is a selection between different fill area styles. /// @@ -348,20 +1524,69 @@ public: /// the final definition of the formal standard. /// /// HISTORY New type in IFC2x2. -class IFC_PARSE_API IfcFillStyleSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcFillStyleSelect : public express::Select { public: + IfcFillStyleSelect() {} + explicit IfcFillStyleSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcFillStyleSelect > list; + template, int> = 0> + IfcColour as() const { return express::Base::as(); } + + template, int> = 0> + IfcColourSpecification as() const { return express::Base::as(); } + + template, int> = 0> + IfcPreDefinedColour as() const { return express::Base::as(); } + + template, int> = 0> + IfcExternallyDefinedHatchStyle as() const { return express::Base::as(); } + + template, int> = 0> + IfcFillAreaStyleHatching as() const { return express::Base::as(); } + + template, int> = 0> + IfcFillAreaStyleTiles as() const { return express::Base::as(); } + + IfcFillStyleSelect(const IfcColour& c) : express::Select(c) {}; + + IfcFillStyleSelect(const IfcColourSpecification& c) : express::Select(c) {}; + + IfcFillStyleSelect(const IfcPreDefinedColour& c) : express::Select(c) {}; + + IfcFillStyleSelect(const IfcExternallyDefinedHatchStyle& c) : express::Select(c) {}; + + IfcFillStyleSelect(const IfcFillAreaStyleHatching& c) : express::Select(c) {}; + + IfcFillStyleSelect(const IfcFillAreaStyleTiles& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-42:1992: This select type identifies the types of entities which can occur in a geometric set. /// /// NOTE: Corresponding ISO 10303 type: geometric_set_select. Please refer to ISO/IS 10303-42:1994, p. 169 for the final definition of the formal standard. /// /// HISTORY: New type in IFC Release 2x. -class IFC_PARSE_API IfcGeometricSetSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcGeometricSetSelect : public express::Select { public: + IfcGeometricSetSelect() {} + explicit IfcGeometricSetSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcGeometricSetSelect > list; + template, int> = 0> + IfcCurve as() const { return express::Base::as(); } + + template, int> = 0> + IfcPoint as() const { return express::Base::as(); } + + template, int> = 0> + IfcSurface as() const { return express::Base::as(); } + + IfcGeometricSetSelect(const IfcCurve& c) : express::Select(c) {}; + + IfcGeometricSetSelect(const IfcPoint& c) : express::Select(c) {}; + + IfcGeometricSetSelect(const IfcSurface& c) : express::Select(c) {}; + }; /// IfcGridPlacementDirectionSelect enables the choice of defining a grid placement be either an explicit direction, or by referencing a second grid intersection to provide the direction. /// @@ -371,24 +1596,60 @@ public: /// IfcVirtualGridIntersection /// /// HISTORY New select type in IFC2x4. -class IFC_PARSE_API IfcGridPlacementDirectionSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcGridPlacementDirectionSelect : public express::Select { public: + IfcGridPlacementDirectionSelect() {} + explicit IfcGridPlacementDirectionSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcGridPlacementDirectionSelect > list; + template, int> = 0> + IfcDirection as() const { return express::Base::as(); } + + template, int> = 0> + IfcVirtualGridIntersection as() const { return express::Base::as(); } + + IfcGridPlacementDirectionSelect(const IfcDirection& c) : express::Select(c) {}; + + IfcGridPlacementDirectionSelect(const IfcVirtualGridIntersection& c) : express::Select(c) {}; + }; /// The IfcHatchLineDistanceSelect is a selection between different ways to determine the distance and potentially start point of hatch lines, either by an offset distance length measure or by a vector. /// /// HISTORY  New type in IFC2x3. -class IFC_PARSE_API IfcHatchLineDistanceSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcHatchLineDistanceSelect : public express::Select { public: + IfcHatchLineDistanceSelect() {} + explicit IfcHatchLineDistanceSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcHatchLineDistanceSelect > list; + template, int> = 0> + IfcPositiveLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcVector as() const { return express::Base::as(); } + + IfcHatchLineDistanceSelect(const IfcPositiveLengthMeasure& c) : express::Select(c) {}; + + IfcHatchLineDistanceSelect(const IfcVector& c) : express::Select(c) {}; + }; -class IFC_PARSE_API IfcInterferenceSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcInterferenceSelect : public express::Select { public: + IfcInterferenceSelect() {} + explicit IfcInterferenceSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcInterferenceSelect > list; + template, int> = 0> + IfcElement as() const { return express::Base::as(); } + + template, int> = 0> + IfcSpatialElement as() const { return express::Base::as(); } + + IfcInterferenceSelect(const IfcElement& c) : express::Select(c) {}; + + IfcInterferenceSelect(const IfcSpatialElement& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-46:1992: The layered things type selects those things, which can be grouped in layers. /// @@ -397,10 +1658,22 @@ public: /// NOTE: Corresponding ISO 10303 name: layered_item. It was called layered_things in the ISO/CD version and had been renamed to layered_item in the ISO/IS final version. Please refer to ISO/IS 10303-46:1994, p. 13 for the final definition of the formal standard. /// /// HISTORY: New type in IFC2x2. -class IFC_PARSE_API IfcLayeredItem : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcLayeredItem : public express::Select { public: + IfcLayeredItem() {} + explicit IfcLayeredItem(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcLayeredItem > list; + template, int> = 0> + IfcRepresentation as() const { return express::Base::as(); } + + template, int> = 0> + IfcRepresentationItem as() const { return express::Base::as(); } + + IfcLayeredItem(const IfcRepresentation& c) : express::Select(c) {}; + + IfcLayeredItem(const IfcRepresentationItem& c) : express::Select(c) {}; + }; /// IfcLibrarySelect enables selection of whether library information is to be contained within an IFC model or is to be referenced from an external source. /// @@ -412,10 +1685,22 @@ public: /// IfcLibraryReference (for reference into a library of information by location) /// /// Generally, it is expected that selection will be IfcLibraryReference and only rarely IfcLibraryInformation. IfcLibraryInformation should only be selected in circumstances where there could be a need to indicate the libraries that will be used without making individual references. This may occur for higher level objects such as a project or building. -class IFC_PARSE_API IfcLibrarySelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcLibrarySelect : public express::Select { public: + IfcLibrarySelect() {} + explicit IfcLibrarySelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcLibrarySelect > list; + template, int> = 0> + IfcLibraryInformation as() const { return express::Base::as(); } + + template, int> = 0> + IfcLibraryReference as() const { return express::Base::as(); } + + IfcLibrarySelect(const IfcLibraryInformation& c) : express::Select(c) {}; + + IfcLibrarySelect(const IfcLibraryReference& c) : express::Select(c) {}; + }; /// A goniometric light gets its intensity distribution function (how much light goes in any one direction) from one of two sources: (i) an industry-standard file, (ii) from distribution data passed directly via the IfcLightIntensityDistribution. /// @@ -439,10 +1724,22 @@ public: /// directions covers all cases. /// /// HISTORY New type in IFC2x2. -class IFC_PARSE_API IfcLightDistributionDataSourceSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcLightDistributionDataSourceSelect : public express::Select { public: + IfcLightDistributionDataSourceSelect() {} + explicit IfcLightDistributionDataSourceSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcLightDistributionDataSourceSelect > list; + template, int> = 0> + IfcExternalReference as() const { return express::Base::as(); } + + template, int> = 0> + IfcLightIntensityDistribution as() const { return express::Base::as(); } + + IfcLightDistributionDataSourceSelect(const IfcExternalReference& c) : express::Select(c) {}; + + IfcLightDistributionDataSourceSelect(const IfcLightIntensityDistribution& c) : express::Select(c) {}; + }; /// IfcMaterialSelect provides selection of either a material /// definition or a material usage definition that can be assigned to @@ -470,10 +1767,27 @@ public: /// /// IFC2x4 CHANGE The select now includes two new abstract entities IfcMaterialDefinition /// and IfcMaterialUsageDefinition with upward compatibility. The use of IfcMaterialList is deprecated from IFC2x4 onwards. -class IFC_PARSE_API IfcMaterialSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcMaterialSelect : public express::Select { public: + IfcMaterialSelect() {} + explicit IfcMaterialSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcMaterialSelect > list; + template, int> = 0> + IfcMaterialDefinition as() const { return express::Base::as(); } + + template, int> = 0> + IfcMaterialList as() const { return express::Base::as(); } + + template, int> = 0> + IfcMaterialUsageDefinition as() const { return express::Base::as(); } + + IfcMaterialSelect(const IfcMaterialDefinition& c) : express::Select(c) {}; + + IfcMaterialSelect(const IfcMaterialList& c) : express::Select(c) {}; + + IfcMaterialSelect(const IfcMaterialUsageDefinition& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-41:1992: A measure value is a value as defined in ISO 31-0 (clause 2). /// @@ -484,10 +1798,127 @@ public: /// HISTORY New type in IFC Release 1.5.1. /// /// IFC 2x4 change: added IfcNonNegativeLengthMeasure -class IFC_PARSE_API IfcMeasureValue : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcMeasureValue : public express::Select { public: + IfcMeasureValue() {} + explicit IfcMeasureValue(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcMeasureValue > list; + template, int> = 0> + IfcAmountOfSubstanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAreaMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcComplexNumber as() const { return express::Base::as(); } + + template, int> = 0> + IfcContextDependentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcCountMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcDescriptiveMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricCurrentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLuminousIntensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcNonNegativeLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcNormalisedRatioMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcNumericMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcParameterValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcPlaneAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositiveLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositivePlaneAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositiveRatioMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRatioMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSolidAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermodynamicTemperatureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTimeMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcVolumeMeasure as() const { return express::Base::as(); } + + IfcMeasureValue(const IfcAmountOfSubstanceMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcAreaMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcComplexNumber& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcContextDependentMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcCountMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcDescriptiveMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcElectricCurrentMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcLengthMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcLuminousIntensityMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcMassMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcNonNegativeLengthMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcNormalisedRatioMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcNumericMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcParameterValue& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcPlaneAngleMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcPositiveLengthMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcPositivePlaneAngleMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcPositiveRatioMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcRatioMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcSolidAngleMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcThermodynamicTemperatureMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcTimeMeasure& c) : express::Select(c) {}; + + IfcMeasureValue(const IfcVolumeMeasure& c) : express::Select(c) {}; + }; /// IfcMetricValueSelect is a select type that enables selection of the data type for the value component of an IfcMetric. /// @@ -501,42 +1932,717 @@ public: /// IfcTable /// IfcText /// IfcTimeSeries -class IFC_PARSE_API IfcMetricValueSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcMetricValueSelect : public express::Select { public: + IfcMetricValueSelect() {} + explicit IfcMetricValueSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcMetricValueSelect > list; + template, int> = 0> + IfcAppliedValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcMeasureWithUnit as() const { return express::Base::as(); } + + template, int> = 0> + IfcReference as() const { return express::Base::as(); } + + template, int> = 0> + IfcTable as() const { return express::Base::as(); } + + template, int> = 0> + IfcTimeSeries as() const { return express::Base::as(); } + + template, int> = 0> + IfcValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcDerivedMeasureValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcAbsorbedDoseMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAccelerationMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAngularVelocityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAreaDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcCompoundPlaneAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcCurvatureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcDoseEquivalentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcDynamicViscosityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricCapacitanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricChargeMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricConductanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricResistanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricVoltageMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcEnergyMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcForceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcFrequencyMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcHeatFluxDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcHeatingValueMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIlluminanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcInductanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIntegerCountRateMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIonConcentrationMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIsothermalMoistureCapacityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcKinematicViscosityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearForceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearMomentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearStiffnessMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearVelocityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLuminousFluxMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLuminousIntensityDistributionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMagneticFluxDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMagneticFluxMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassFlowRateMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassPerLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfElasticityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfLinearSubgradeReactionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfRotationalSubgradeReactionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfSubgradeReactionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMoistureDiffusivityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMolecularWeightMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMomentOfInertiaMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMonetaryMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPHMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPlanarForceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPowerMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPressureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRadioActivityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRotationalFrequencyMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRotationalMassMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRotationalStiffnessMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSectionModulusMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSectionalAreaIntegralMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcShearModulusMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPowerLevelMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPowerMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPressureLevelMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPressureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSpecificHeatCapacityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTemperatureGradientMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTemperatureRateOfChangeMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalAdmittanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalConductivityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalExpansionCoefficientMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalResistanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalTransmittanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTorqueMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcVaporPermeabilityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcVolumetricFlowRateMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcWarpingConstantMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcWarpingMomentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMeasureValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcAmountOfSubstanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAreaMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcComplexNumber as() const { return express::Base::as(); } + + template, int> = 0> + IfcContextDependentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcCountMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcDescriptiveMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricCurrentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLuminousIntensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcNonNegativeLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcNormalisedRatioMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcNumericMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcParameterValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcPlaneAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositiveLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositivePlaneAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositiveRatioMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRatioMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSolidAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermodynamicTemperatureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTimeMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcVolumeMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSimpleValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcBinary as() const { return express::Base::as(); } + + template, int> = 0> + IfcBoolean as() const { return express::Base::as(); } + + template, int> = 0> + IfcDate as() const { return express::Base::as(); } + + template, int> = 0> + IfcDateTime as() const { return express::Base::as(); } + + template, int> = 0> + IfcDuration as() const { return express::Base::as(); } + + template, int> = 0> + IfcIdentifier as() const { return express::Base::as(); } + + template, int> = 0> + IfcInteger as() const { return express::Base::as(); } + + template, int> = 0> + IfcLabel as() const { return express::Base::as(); } + + template, int> = 0> + IfcLogical as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositiveInteger as() const { return express::Base::as(); } + + template, int> = 0> + IfcReal as() const { return express::Base::as(); } + + template, int> = 0> + IfcText as() const { return express::Base::as(); } + + template, int> = 0> + IfcTime as() const { return express::Base::as(); } + + template, int> = 0> + IfcTimeStamp as() const { return express::Base::as(); } + + template, int> = 0> + IfcURIReference as() const { return express::Base::as(); } + + IfcMetricValueSelect(const IfcAppliedValue& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcMeasureWithUnit& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcReference& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcTable& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcTimeSeries& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcValue& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcDerivedMeasureValue& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcAbsorbedDoseMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcAccelerationMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcAngularVelocityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcAreaDensityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcCompoundPlaneAngleMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcCurvatureMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcDoseEquivalentMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcDynamicViscosityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcElectricCapacitanceMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcElectricChargeMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcElectricConductanceMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcElectricResistanceMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcElectricVoltageMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcEnergyMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcForceMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcFrequencyMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcHeatFluxDensityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcHeatingValueMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcIlluminanceMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcInductanceMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcIntegerCountRateMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcIonConcentrationMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcIsothermalMoistureCapacityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcKinematicViscosityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcLinearForceMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcLinearMomentMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcLinearStiffnessMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcLinearVelocityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcLuminousFluxMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcLuminousIntensityDistributionMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcMagneticFluxDensityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcMagneticFluxMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcMassDensityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcMassFlowRateMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcMassPerLengthMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcModulusOfElasticityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcModulusOfLinearSubgradeReactionMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcModulusOfRotationalSubgradeReactionMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcModulusOfSubgradeReactionMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcMoistureDiffusivityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcMolecularWeightMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcMomentOfInertiaMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcMonetaryMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcPHMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcPlanarForceMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcPowerMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcPressureMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcRadioActivityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcRotationalFrequencyMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcRotationalMassMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcRotationalStiffnessMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcSectionModulusMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcSectionalAreaIntegralMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcShearModulusMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcSoundPowerLevelMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcSoundPowerMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcSoundPressureLevelMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcSoundPressureMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcSpecificHeatCapacityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcTemperatureGradientMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcTemperatureRateOfChangeMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcThermalAdmittanceMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcThermalConductivityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcThermalExpansionCoefficientMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcThermalResistanceMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcThermalTransmittanceMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcTorqueMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcVaporPermeabilityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcVolumetricFlowRateMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcWarpingConstantMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcWarpingMomentMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcMeasureValue& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcAmountOfSubstanceMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcAreaMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcComplexNumber& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcContextDependentMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcCountMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcDescriptiveMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcElectricCurrentMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcLengthMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcLuminousIntensityMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcMassMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcNonNegativeLengthMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcNormalisedRatioMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcNumericMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcParameterValue& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcPlaneAngleMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcPositiveLengthMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcPositivePlaneAngleMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcPositiveRatioMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcRatioMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcSolidAngleMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcThermodynamicTemperatureMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcTimeMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcVolumeMeasure& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcSimpleValue& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcBinary& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcBoolean& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcDate& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcDateTime& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcDuration& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcIdentifier& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcInteger& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcLabel& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcLogical& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcPositiveInteger& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcReal& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcText& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcTime& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcTimeStamp& c) : express::Select(c) {}; + + IfcMetricValueSelect(const IfcURIReference& c) : express::Select(c) {}; + }; /// Definition from IAI: A measure for modulus of rotational subgrade reaction which expresses the rotational bedding of a structural curve item per length. TRUE denotes infinite stiffness (rigidity). FALSE denotes no stiffness (a release). A numeric value denotes finite linear-elastic stiffness. /// /// HISTORY: New type in IFC 2x4. -class IFC_PARSE_API IfcModulusOfRotationalSubgradeReactionSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcModulusOfRotationalSubgradeReactionSelect : public express::Select { public: + IfcModulusOfRotationalSubgradeReactionSelect() {} + explicit IfcModulusOfRotationalSubgradeReactionSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcModulusOfRotationalSubgradeReactionSelect > list; + template, int> = 0> + IfcBoolean as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfRotationalSubgradeReactionMeasure as() const { return express::Base::as(); } + + IfcModulusOfRotationalSubgradeReactionSelect(const IfcBoolean& c) : express::Select(c) {}; + + IfcModulusOfRotationalSubgradeReactionSelect(const IfcModulusOfRotationalSubgradeReactionMeasure& c) : express::Select(c) {}; + }; /// Definition from IAI: Bedding measure which expresses the bedding of a structural face item per area. TRUE denotes infinite stiffness (rigidity). FALSE denotes no stiffness (a release). A numeric value denotes finite linear-elastic stiffness. /// /// HISTORY: New type in IFC 2x4. -class IFC_PARSE_API IfcModulusOfSubgradeReactionSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcModulusOfSubgradeReactionSelect : public express::Select { public: + IfcModulusOfSubgradeReactionSelect() {} + explicit IfcModulusOfSubgradeReactionSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcModulusOfSubgradeReactionSelect > list; + template, int> = 0> + IfcBoolean as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfSubgradeReactionMeasure as() const { return express::Base::as(); } + + IfcModulusOfSubgradeReactionSelect(const IfcBoolean& c) : express::Select(c) {}; + + IfcModulusOfSubgradeReactionSelect(const IfcModulusOfSubgradeReactionMeasure& c) : express::Select(c) {}; + }; /// Definition from IAI: A measure for modulus of translational subgrade reaction which expresses the translational bedding of a structural curve item per length. TRUE denotes infinite stiffness (rigidity). FALSE denotes no stiffness (a release). A numeric value denotes finite linear-elastic stiffness. /// /// HISTORY: New type in IFC 2x4. -class IFC_PARSE_API IfcModulusOfTranslationalSubgradeReactionSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcModulusOfTranslationalSubgradeReactionSelect : public express::Select { public: + IfcModulusOfTranslationalSubgradeReactionSelect() {} + explicit IfcModulusOfTranslationalSubgradeReactionSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcModulusOfTranslationalSubgradeReactionSelect > list; + template, int> = 0> + IfcBoolean as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfLinearSubgradeReactionMeasure as() const { return express::Base::as(); } + + IfcModulusOfTranslationalSubgradeReactionSelect(const IfcBoolean& c) : express::Select(c) {}; + + IfcModulusOfTranslationalSubgradeReactionSelect(const IfcModulusOfLinearSubgradeReactionMeasure& c) : express::Select(c) {}; + }; /// IfcObjectReferenceSelect is a select type, that holds a list of resource level entities that can be used as properties within a property set. /// /// HISTORY  New select type in IFC Release 2.0. -class IFC_PARSE_API IfcObjectReferenceSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcObjectReferenceSelect : public express::Select { public: + IfcObjectReferenceSelect() {} + explicit IfcObjectReferenceSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcObjectReferenceSelect > list; + template, int> = 0> + IfcAddress as() const { return express::Base::as(); } + + template, int> = 0> + IfcAppliedValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcExternalReference as() const { return express::Base::as(); } + + template, int> = 0> + IfcMaterialDefinition as() const { return express::Base::as(); } + + template, int> = 0> + IfcOrganization as() const { return express::Base::as(); } + + template, int> = 0> + IfcPerson as() const { return express::Base::as(); } + + template, int> = 0> + IfcPersonAndOrganization as() const { return express::Base::as(); } + + template, int> = 0> + IfcTable as() const { return express::Base::as(); } + + template, int> = 0> + IfcTimeSeries as() const { return express::Base::as(); } + + IfcObjectReferenceSelect(const IfcAddress& c) : express::Select(c) {}; + + IfcObjectReferenceSelect(const IfcAppliedValue& c) : express::Select(c) {}; + + IfcObjectReferenceSelect(const IfcExternalReference& c) : express::Select(c) {}; + + IfcObjectReferenceSelect(const IfcMaterialDefinition& c) : express::Select(c) {}; + + IfcObjectReferenceSelect(const IfcOrganization& c) : express::Select(c) {}; + + IfcObjectReferenceSelect(const IfcPerson& c) : express::Select(c) {}; + + IfcObjectReferenceSelect(const IfcPersonAndOrganization& c) : express::Select(c) {}; + + IfcObjectReferenceSelect(const IfcTable& c) : express::Select(c) {}; + + IfcObjectReferenceSelect(const IfcTimeSeries& c) : express::Select(c) {}; + }; /// IfcPointOrVertexPoint provides the option to either select a geometric point (IfcPoint and subtypes) within a geometric model, or a vertex with associated point coordinates (IfcVertexPoint) within a topological model. /// SELECT @@ -545,10 +2651,22 @@ public: /// IfcVertexPoint /// /// HISTORY  New select type in IFC2x Edition 3. -class IFC_PARSE_API IfcPointOrVertexPoint : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcPointOrVertexPoint : public express::Select { public: + IfcPointOrVertexPoint() {} + explicit IfcPointOrVertexPoint(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcPointOrVertexPoint > list; + template, int> = 0> + IfcPoint as() const { return express::Base::as(); } + + template, int> = 0> + IfcVertexPoint as() const { return express::Base::as(); } + + IfcPointOrVertexPoint(const IfcPoint& c) : express::Select(c) {}; + + IfcPointOrVertexPoint(const IfcVertexPoint& c) : express::Select(c) {}; + }; /// IfcProcessSelectprovides the option to either /// select a process or activity occurrence, IfcProcess, @@ -560,16 +2678,40 @@ public: /// IfcTypeProcess /// /// HISTORY New select type in IFC2x4. -class IFC_PARSE_API IfcProcessSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcProcessSelect : public express::Select { public: + IfcProcessSelect() {} + explicit IfcProcessSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcProcessSelect > list; + template, int> = 0> + IfcProcess as() const { return express::Base::as(); } + + template, int> = 0> + IfcTypeProcess as() const { return express::Base::as(); } + + IfcProcessSelect(const IfcProcess& c) : express::Select(c) {}; + + IfcProcessSelect(const IfcTypeProcess& c) : express::Select(c) {}; + }; -class IFC_PARSE_API IfcProductRepresentationSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcProductRepresentationSelect : public express::Select { public: + IfcProductRepresentationSelect() {} + explicit IfcProductRepresentationSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcProductRepresentationSelect > list; + template, int> = 0> + IfcProductDefinitionShape as() const { return express::Base::as(); } + + template, int> = 0> + IfcRepresentationMap as() const { return express::Base::as(); } + + IfcProductRepresentationSelect(const IfcProductDefinitionShape& c) : express::Select(c) {}; + + IfcProductRepresentationSelect(const IfcRepresentationMap& c) : express::Select(c) {}; + }; /// IfcProductSelectprovides the option to either select a /// product occurrence, IfcProduct, or a product type, @@ -580,24 +2722,135 @@ public: /// IfcTypeProduct /// /// HISTORY New select type in IFC2x4. -class IFC_PARSE_API IfcProductSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcProductSelect : public express::Select { public: + IfcProductSelect() {} + explicit IfcProductSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcProductSelect > list; + template, int> = 0> + IfcProduct as() const { return express::Base::as(); } + + template, int> = 0> + IfcTypeProduct as() const { return express::Base::as(); } + + IfcProductSelect(const IfcProduct& c) : express::Select(c) {}; + + IfcProductSelect(const IfcTypeProduct& c) : express::Select(c) {}; + }; -class IFC_PARSE_API IfcPropertySetDefinitionSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcPropertySetDefinitionSelect : public express::Select { public: + IfcPropertySetDefinitionSelect() {} + explicit IfcPropertySetDefinitionSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcPropertySetDefinitionSelect > list; + template, int> = 0> + IfcPropertySetDefinition as() const { return express::Base::as(); } + + template, int> = 0> + IfcPropertySetDefinitionSet as() const { return express::Base::as(); } + + IfcPropertySetDefinitionSelect(const IfcPropertySetDefinition& c) : express::Select(c) {}; + + IfcPropertySetDefinitionSelect(const IfcPropertySetDefinitionSet& c) : express::Select(c) {}; + }; /// IfcResourceObjectSelect enables selection of resource level objects that are to be related to an resource level relationship object. The use of IfcResourceObjectSelect includes the ability to assign an external reference entity (library, classification, or documentation reference) to entities within the resource level. /// /// HISTORY  New Select type in IFC2x4. -class IFC_PARSE_API IfcResourceObjectSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcResourceObjectSelect : public express::Select { public: + IfcResourceObjectSelect() {} + explicit IfcResourceObjectSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcResourceObjectSelect > list; + template, int> = 0> + IfcActorRole as() const { return express::Base::as(); } + + template, int> = 0> + IfcAppliedValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcApproval as() const { return express::Base::as(); } + + template, int> = 0> + IfcConstraint as() const { return express::Base::as(); } + + template, int> = 0> + IfcContextDependentUnit as() const { return express::Base::as(); } + + template, int> = 0> + IfcConversionBasedUnit as() const { return express::Base::as(); } + + template, int> = 0> + IfcExternalInformation as() const { return express::Base::as(); } + + template, int> = 0> + IfcExternalReference as() const { return express::Base::as(); } + + template, int> = 0> + IfcMaterialDefinition as() const { return express::Base::as(); } + + template, int> = 0> + IfcOrganization as() const { return express::Base::as(); } + + template, int> = 0> + IfcPerson as() const { return express::Base::as(); } + + template, int> = 0> + IfcPersonAndOrganization as() const { return express::Base::as(); } + + template, int> = 0> + IfcPhysicalQuantity as() const { return express::Base::as(); } + + template, int> = 0> + IfcProfileDef as() const { return express::Base::as(); } + + template, int> = 0> + IfcPropertyAbstraction as() const { return express::Base::as(); } + + template, int> = 0> + IfcShapeAspect as() const { return express::Base::as(); } + + template, int> = 0> + IfcTimeSeries as() const { return express::Base::as(); } + + IfcResourceObjectSelect(const IfcActorRole& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcAppliedValue& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcApproval& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcConstraint& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcContextDependentUnit& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcConversionBasedUnit& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcExternalInformation& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcExternalReference& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcMaterialDefinition& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcOrganization& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcPerson& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcPersonAndOrganization& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcPhysicalQuantity& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcProfileDef& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcPropertyAbstraction& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcShapeAspect& c) : express::Select(c) {}; + + IfcResourceObjectSelect(const IfcTimeSeries& c) : express::Select(c) {}; + }; /// IfcResourceSelectprovides the option to either select a /// resource occurrence, IfcResource, or a resource type, @@ -608,24 +2861,60 @@ public: /// IfcTypeResource /// /// HISTORY New select type in IFC2x4. -class IFC_PARSE_API IfcResourceSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcResourceSelect : public express::Select { public: + IfcResourceSelect() {} + explicit IfcResourceSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcResourceSelect > list; + template, int> = 0> + IfcResource as() const { return express::Base::as(); } + + template, int> = 0> + IfcTypeResource as() const { return express::Base::as(); } + + IfcResourceSelect(const IfcResource& c) : express::Select(c) {}; + + IfcResourceSelect(const IfcTypeResource& c) : express::Select(c) {}; + }; /// Definition from IAI: A measure of rotational stiffness. TRUE denotes infinite stiffness (rigidity). FALSE denotes no stiffness (a release). A numeric value denotes finite linear-elastic stiffness. /// /// HISTORY: New type in IFC 2x4. -class IFC_PARSE_API IfcRotationalStiffnessSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcRotationalStiffnessSelect : public express::Select { public: + IfcRotationalStiffnessSelect() {} + explicit IfcRotationalStiffnessSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcRotationalStiffnessSelect > list; + template, int> = 0> + IfcBoolean as() const { return express::Base::as(); } + + template, int> = 0> + IfcRotationalStiffnessMeasure as() const { return express::Base::as(); } + + IfcRotationalStiffnessSelect(const IfcBoolean& c) : express::Select(c) {}; + + IfcRotationalStiffnessSelect(const IfcRotationalStiffnessMeasure& c) : express::Select(c) {}; + }; -class IFC_PARSE_API IfcSegmentIndexSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcSegmentIndexSelect : public express::Select { public: + IfcSegmentIndexSelect() {} + explicit IfcSegmentIndexSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcSegmentIndexSelect > list; + template, int> = 0> + IfcArcIndex as() const { return express::Base::as(); } + + template, int> = 0> + IfcLineIndex as() const { return express::Base::as(); } + + IfcSegmentIndexSelect(const IfcArcIndex& c) : express::Select(c) {}; + + IfcSegmentIndexSelect(const IfcLineIndex& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-42:1992 This type collects together, for reference when constructing more complex models, the subtypes which have the characteristics of a shell. A shell is a connected object of fixed dimensionality d = 0; 1; or 2, typically used to bound a region. The domain of a shell, if present, includes its bounds and 0 £ X < ¥. /// @@ -638,10 +2927,22 @@ public: /// NOTE  Corresponding ISO 10303 type: shell. Please refer to ISO/IS 10303-42:1994, p. 127 for the final definition of the formal standard. Only the select items closed_shell (IfcClosedShell) and open_shell (IfcOpenShell) have been incorporated in the current IFC release. /// /// HISTORY  New type in IFC2x. -class IFC_PARSE_API IfcShell : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcShell : public express::Select { public: + IfcShell() {} + explicit IfcShell(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcShell > list; + template, int> = 0> + IfcClosedShell as() const { return express::Base::as(); } + + template, int> = 0> + IfcOpenShell as() const { return express::Base::as(); } + + IfcShell(const IfcClosedShell& c) : express::Select(c) {}; + + IfcShell(const IfcOpenShell& c) : express::Select(c) {}; + }; /// IfcSimpleValue is a select type for selecting between simple value types. /// @@ -662,10 +2963,87 @@ public: /// HISTORY New type in IFC Release 2x. /// /// IFC2x4 CHANGE Items IfcDateTime, IfcDate, IfcTime, IfcDuration added. -class IFC_PARSE_API IfcSimpleValue : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcSimpleValue : public express::Select { public: + IfcSimpleValue() {} + explicit IfcSimpleValue(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcSimpleValue > list; + template, int> = 0> + IfcBinary as() const { return express::Base::as(); } + + template, int> = 0> + IfcBoolean as() const { return express::Base::as(); } + + template, int> = 0> + IfcDate as() const { return express::Base::as(); } + + template, int> = 0> + IfcDateTime as() const { return express::Base::as(); } + + template, int> = 0> + IfcDuration as() const { return express::Base::as(); } + + template, int> = 0> + IfcIdentifier as() const { return express::Base::as(); } + + template, int> = 0> + IfcInteger as() const { return express::Base::as(); } + + template, int> = 0> + IfcLabel as() const { return express::Base::as(); } + + template, int> = 0> + IfcLogical as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositiveInteger as() const { return express::Base::as(); } + + template, int> = 0> + IfcReal as() const { return express::Base::as(); } + + template, int> = 0> + IfcText as() const { return express::Base::as(); } + + template, int> = 0> + IfcTime as() const { return express::Base::as(); } + + template, int> = 0> + IfcTimeStamp as() const { return express::Base::as(); } + + template, int> = 0> + IfcURIReference as() const { return express::Base::as(); } + + IfcSimpleValue(const IfcBinary& c) : express::Select(c) {}; + + IfcSimpleValue(const IfcBoolean& c) : express::Select(c) {}; + + IfcSimpleValue(const IfcDate& c) : express::Select(c) {}; + + IfcSimpleValue(const IfcDateTime& c) : express::Select(c) {}; + + IfcSimpleValue(const IfcDuration& c) : express::Select(c) {}; + + IfcSimpleValue(const IfcIdentifier& c) : express::Select(c) {}; + + IfcSimpleValue(const IfcInteger& c) : express::Select(c) {}; + + IfcSimpleValue(const IfcLabel& c) : express::Select(c) {}; + + IfcSimpleValue(const IfcLogical& c) : express::Select(c) {}; + + IfcSimpleValue(const IfcPositiveInteger& c) : express::Select(c) {}; + + IfcSimpleValue(const IfcReal& c) : express::Select(c) {}; + + IfcSimpleValue(const IfcText& c) : express::Select(c) {}; + + IfcSimpleValue(const IfcTime& c) : express::Select(c) {}; + + IfcSimpleValue(const IfcTimeStamp& c) : express::Select(c) {}; + + IfcSimpleValue(const IfcURIReference& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-46:1992: The size select is a selection of a specific positive length measure. /// @@ -679,10 +3057,42 @@ public: /// HISTORY  New type in IFC2x2. /// /// IFC2x3 CHANGE  The SELECT item IfcMeasureWithUnit has been removed from the IfcSizeSelect, the IfcRatioMeasure and IfcDescriptiveMeasure has been added. -class IFC_PARSE_API IfcSizeSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcSizeSelect : public express::Select { public: + IfcSizeSelect() {} + explicit IfcSizeSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcSizeSelect > list; + template, int> = 0> + IfcDescriptiveMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcNormalisedRatioMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositiveLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositiveRatioMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRatioMeasure as() const { return express::Base::as(); } + + IfcSizeSelect(const IfcDescriptiveMeasure& c) : express::Select(c) {}; + + IfcSizeSelect(const IfcLengthMeasure& c) : express::Select(c) {}; + + IfcSizeSelect(const IfcNormalisedRatioMeasure& c) : express::Select(c) {}; + + IfcSizeSelect(const IfcPositiveLengthMeasure& c) : express::Select(c) {}; + + IfcSizeSelect(const IfcPositiveRatioMeasure& c) : express::Select(c) {}; + + IfcSizeSelect(const IfcRatioMeasure& c) : express::Select(c) {}; + }; /// The IfcSolidOrShell provides the option to either select a geometric volume (IfcSolidModel and subtypes) within a geometric model, or a shell (IfcClosedShell) within a topological model. /// SELECT @@ -691,10 +3101,22 @@ public: /// IfcClosedShell /// /// HISTORY New select type in IFC2x4. -class IFC_PARSE_API IfcSolidOrShell : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcSolidOrShell : public express::Select { public: + IfcSolidOrShell() {} + explicit IfcSolidOrShell(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcSolidOrShell > list; + template, int> = 0> + IfcClosedShell as() const { return express::Base::as(); } + + template, int> = 0> + IfcSolidModel as() const { return express::Base::as(); } + + IfcSolidOrShell(const IfcClosedShell& c) : express::Select(c) {}; + + IfcSolidOrShell(const IfcSolidModel& c) : express::Select(c) {}; + }; /// Definition from IAI: The /// IfcSpaceBoundarySelectselects either an internal space @@ -708,16 +3130,40 @@ public: /// /// HISTORY New select type /// in IFC2x4. -class IFC_PARSE_API IfcSpaceBoundarySelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcSpaceBoundarySelect : public express::Select { public: + IfcSpaceBoundarySelect() {} + explicit IfcSpaceBoundarySelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcSpaceBoundarySelect > list; + template, int> = 0> + IfcExternalSpatialElement as() const { return express::Base::as(); } + + template, int> = 0> + IfcSpace as() const { return express::Base::as(); } + + IfcSpaceBoundarySelect(const IfcExternalSpatialElement& c) : express::Select(c) {}; + + IfcSpaceBoundarySelect(const IfcSpace& c) : express::Select(c) {}; + }; -class IFC_PARSE_API IfcSpatialReferenceSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcSpatialReferenceSelect : public express::Select { public: + IfcSpatialReferenceSelect() {} + explicit IfcSpatialReferenceSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcSpatialReferenceSelect > list; + template, int> = 0> + IfcGroup as() const { return express::Base::as(); } + + template, int> = 0> + IfcProduct as() const { return express::Base::as(); } + + IfcSpatialReferenceSelect(const IfcGroup& c) : express::Select(c) {}; + + IfcSpatialReferenceSelect(const IfcProduct& c) : express::Select(c) {}; + }; /// The IfcSpecularHighlightSelect defines the selectable types of value for specular highlight sharpness. /// @@ -729,10 +3175,22 @@ public: /// For each surface side style only one of the two methods is needed for calculating the specular part of the equation. /// /// HISTORY: New type in IFC2x2. -class IFC_PARSE_API IfcSpecularHighlightSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcSpecularHighlightSelect : public express::Select { public: + IfcSpecularHighlightSelect() {} + explicit IfcSpecularHighlightSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcSpecularHighlightSelect > list; + template, int> = 0> + IfcSpecularExponent as() const { return express::Base::as(); } + + template, int> = 0> + IfcSpecularRoughness as() const { return express::Base::as(); } + + IfcSpecularHighlightSelect(const IfcSpecularExponent& c) : express::Select(c) {}; + + IfcSpecularHighlightSelect(const IfcSpecularRoughness& c) : express::Select(c) {}; + }; /// Definition from IAI: This type definition shall be used to /// distinguish between a reference to an instance either of @@ -743,10 +3201,22 @@ public: /// /// HISTORY: New type in Release IFC2x /// Edition 2. -class IFC_PARSE_API IfcStructuralActivityAssignmentSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcStructuralActivityAssignmentSelect : public express::Select { public: + IfcStructuralActivityAssignmentSelect() {} + explicit IfcStructuralActivityAssignmentSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcStructuralActivityAssignmentSelect > list; + template, int> = 0> + IfcElement as() const { return express::Base::as(); } + + template, int> = 0> + IfcStructuralItem as() const { return express::Base::as(); } + + IfcStructuralActivityAssignmentSelect(const IfcElement& c) : express::Select(c) {}; + + IfcStructuralActivityAssignmentSelect(const IfcStructuralItem& c) : express::Select(c) {}; + }; /// IfcSurfaceOrFaceSurface provides the option to either select a geometric surface (IfcSurface /// and subtypes) within a geometric model, or a face with associated surface geometry and coordinates (IfcFaceSurface) within a topological model. @@ -757,10 +3227,27 @@ public: /// IfcFaceBasedSurfaceModel (a connected face set, representing a faceted surface as an approximation of a non planar, non rectangular bounded surface) /// /// HISTORY  New select type in IFC2x3. -class IFC_PARSE_API IfcSurfaceOrFaceSurface : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcSurfaceOrFaceSurface : public express::Select { public: + IfcSurfaceOrFaceSurface() {} + explicit IfcSurfaceOrFaceSurface(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcSurfaceOrFaceSurface > list; + template, int> = 0> + IfcFaceBasedSurfaceModel as() const { return express::Base::as(); } + + template, int> = 0> + IfcFaceSurface as() const { return express::Base::as(); } + + template, int> = 0> + IfcSurface as() const { return express::Base::as(); } + + IfcSurfaceOrFaceSurface(const IfcFaceBasedSurfaceModel& c) : express::Select(c) {}; + + IfcSurfaceOrFaceSurface(const IfcFaceSurface& c) : express::Select(c) {}; + + IfcSurfaceOrFaceSurface(const IfcSurface& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-46:1992: The surface style element select is a selection of the different surface styles to use in the presentation of the side of a surface. /// @@ -771,10 +3258,37 @@ public: /// NOTE: Corresponding ISO 10303 type: surface_style_element_select. Please refer to ISO/IS 10303-46:1994, p. 85 for the final definition of the formal standard. /// /// HISTORY: New Select type in IFC2x2. -class IFC_PARSE_API IfcSurfaceStyleElementSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcSurfaceStyleElementSelect : public express::Select { public: + IfcSurfaceStyleElementSelect() {} + explicit IfcSurfaceStyleElementSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcSurfaceStyleElementSelect > list; + template, int> = 0> + IfcExternallyDefinedSurfaceStyle as() const { return express::Base::as(); } + + template, int> = 0> + IfcSurfaceStyleLighting as() const { return express::Base::as(); } + + template, int> = 0> + IfcSurfaceStyleRefraction as() const { return express::Base::as(); } + + template, int> = 0> + IfcSurfaceStyleShading as() const { return express::Base::as(); } + + template, int> = 0> + IfcSurfaceStyleWithTextures as() const { return express::Base::as(); } + + IfcSurfaceStyleElementSelect(const IfcExternallyDefinedSurfaceStyle& c) : express::Select(c) {}; + + IfcSurfaceStyleElementSelect(const IfcSurfaceStyleLighting& c) : express::Select(c) {}; + + IfcSurfaceStyleElementSelect(const IfcSurfaceStyleRefraction& c) : express::Select(c) {}; + + IfcSurfaceStyleElementSelect(const IfcSurfaceStyleShading& c) : express::Select(c) {}; + + IfcSurfaceStyleElementSelect(const IfcSurfaceStyleWithTextures& c) : express::Select(c) {}; + }; /// IfcTextFontSelect allows for either a predefined text font, a text font model or an externally defined text font to be used to describe the font of a text literal. The definition of the text font model is based on W3C TR Cascading Style Sheet Version 1, whereas the definition of predefined text font is based on ISO 10303. /// @@ -783,35 +3297,83 @@ public: /// HISTORY  New type in IFC2x2. /// /// IFC2x3 CHANGE  The select type has been renamed from IfcFontSelect. -class IFC_PARSE_API IfcTextFontSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcTextFontSelect : public express::Select { public: + IfcTextFontSelect() {} + explicit IfcTextFontSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcTextFontSelect > list; + template, int> = 0> + IfcExternallyDefinedTextFont as() const { return express::Base::as(); } + + template, int> = 0> + IfcPreDefinedTextFont as() const { return express::Base::as(); } + + IfcTextFontSelect(const IfcExternallyDefinedTextFont& c) : express::Select(c) {}; + + IfcTextFontSelect(const IfcPreDefinedTextFont& c) : express::Select(c) {}; + }; /// IfcTimeOrRatioSelect allows a value to be selected as being either a ratio or a time measure. /// HISTORY New SELECT in IFC2x4 -class IFC_PARSE_API IfcTimeOrRatioSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcTimeOrRatioSelect : public express::Select { public: + IfcTimeOrRatioSelect() {} + explicit IfcTimeOrRatioSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcTimeOrRatioSelect > list; + template, int> = 0> + IfcDuration as() const { return express::Base::as(); } + + template, int> = 0> + IfcRatioMeasure as() const { return express::Base::as(); } + + IfcTimeOrRatioSelect(const IfcDuration& c) : express::Select(c) {}; + + IfcTimeOrRatioSelect(const IfcRatioMeasure& c) : express::Select(c) {}; + }; /// Definition from IAI: A measure of linear stiffness. TRUE denotes infinite stiffness (rigidity). FALSE denotes no stiffness (a release). A numeric value denotes finite linear-elastic stiffness. /// /// HISTORY: New type in IFC 2x4. -class IFC_PARSE_API IfcTranslationalStiffnessSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcTranslationalStiffnessSelect : public express::Select { public: + IfcTranslationalStiffnessSelect() {} + explicit IfcTranslationalStiffnessSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcTranslationalStiffnessSelect > list; + template, int> = 0> + IfcBoolean as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearStiffnessMeasure as() const { return express::Base::as(); } + + IfcTranslationalStiffnessSelect(const IfcBoolean& c) : express::Select(c) {}; + + IfcTranslationalStiffnessSelect(const IfcLinearStiffnessMeasure& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-42:1992: This select type identifies the two possible ways of trimming a parametric curve; by a Cartesian point on the curve, or by a REAL number defining a parameter value within the parametric range of the curve. /// /// NOTE Corresponding ISO 10303 type: trimming_select, please refer to ISO/IS 10303-42:1994, p. 20 for the final definition of the formal standard. /// /// HISTORY New Type in IFC Release 1.0 -class IFC_PARSE_API IfcTrimmingSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcTrimmingSelect : public express::Select { public: + IfcTrimmingSelect() {} + explicit IfcTrimmingSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcTrimmingSelect > list; + template, int> = 0> + IfcCartesianPoint as() const { return express::Base::as(); } + + template, int> = 0> + IfcParameterValue as() const { return express::Base::as(); } + + IfcTrimmingSelect(const IfcCartesianPoint& c) : express::Select(c) {}; + + IfcTrimmingSelect(const IfcParameterValue& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-41:1992: A unit is a physical quantity, with a value of one, which is used as a standard in terms of which other quantities are expressed. /// @@ -826,10 +3388,27 @@ public: /// IfcMonetaryUnit: A unit for defining currencies. /// /// HISTORY: New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcUnit : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcUnit : public express::Select { public: + IfcUnit() {} + explicit IfcUnit(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcUnit > list; + template, int> = 0> + IfcDerivedUnit as() const { return express::Base::as(); } + + template, int> = 0> + IfcMonetaryUnit as() const { return express::Base::as(); } + + template, int> = 0> + IfcNamedUnit as() const { return express::Base::as(); } + + IfcUnit(const IfcDerivedUnit& c) : express::Select(c) {}; + + IfcUnit(const IfcMonetaryUnit& c) : express::Select(c) {}; + + IfcUnit(const IfcNamedUnit& c) : express::Select(c) {}; + }; /// IfcValue is a select type for selecting between more specialised select types IfcSimpleValue, /// IfcMeasureValue and IfcDerivedMeasureValue. @@ -841,10 +3420,572 @@ public: /// IfcDerivedMeasureValue A select type for derived measure types. /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcValue : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcValue : public express::Select { public: + IfcValue() {} + explicit IfcValue(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcValue > list; + template, int> = 0> + IfcDerivedMeasureValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcAbsorbedDoseMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAccelerationMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAngularVelocityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAreaDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcCompoundPlaneAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcCurvatureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcDoseEquivalentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcDynamicViscosityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricCapacitanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricChargeMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricConductanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricResistanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricVoltageMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcEnergyMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcForceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcFrequencyMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcHeatFluxDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcHeatingValueMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIlluminanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcInductanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIntegerCountRateMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIonConcentrationMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcIsothermalMoistureCapacityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcKinematicViscosityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearForceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearMomentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearStiffnessMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLinearVelocityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLuminousFluxMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLuminousIntensityDistributionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMagneticFluxDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMagneticFluxMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassDensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassFlowRateMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassPerLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfElasticityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfLinearSubgradeReactionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfRotationalSubgradeReactionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcModulusOfSubgradeReactionMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMoistureDiffusivityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMolecularWeightMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMomentOfInertiaMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMonetaryMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPHMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPlanarForceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPowerMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPressureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRadioActivityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRotationalFrequencyMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRotationalMassMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRotationalStiffnessMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSectionModulusMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSectionalAreaIntegralMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcShearModulusMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPowerLevelMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPowerMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPressureLevelMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSoundPressureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSpecificHeatCapacityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTemperatureGradientMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTemperatureRateOfChangeMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalAdmittanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalConductivityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalExpansionCoefficientMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalResistanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermalTransmittanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTorqueMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcVaporPermeabilityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcVolumetricFlowRateMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcWarpingConstantMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcWarpingMomentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMeasureValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcAmountOfSubstanceMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcAreaMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcComplexNumber as() const { return express::Base::as(); } + + template, int> = 0> + IfcContextDependentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcCountMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcDescriptiveMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcElectricCurrentMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcLuminousIntensityMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcMassMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcNonNegativeLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcNormalisedRatioMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcNumericMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcParameterValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcPlaneAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositiveLengthMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositivePlaneAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositiveRatioMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcRatioMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSolidAngleMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcThermodynamicTemperatureMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcTimeMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcVolumeMeasure as() const { return express::Base::as(); } + + template, int> = 0> + IfcSimpleValue as() const { return express::Base::as(); } + + template, int> = 0> + IfcBinary as() const { return express::Base::as(); } + + template, int> = 0> + IfcBoolean as() const { return express::Base::as(); } + + template, int> = 0> + IfcDate as() const { return express::Base::as(); } + + template, int> = 0> + IfcDateTime as() const { return express::Base::as(); } + + template, int> = 0> + IfcDuration as() const { return express::Base::as(); } + + template, int> = 0> + IfcIdentifier as() const { return express::Base::as(); } + + template, int> = 0> + IfcInteger as() const { return express::Base::as(); } + + template, int> = 0> + IfcLabel as() const { return express::Base::as(); } + + template, int> = 0> + IfcLogical as() const { return express::Base::as(); } + + template, int> = 0> + IfcPositiveInteger as() const { return express::Base::as(); } + + template, int> = 0> + IfcReal as() const { return express::Base::as(); } + + template, int> = 0> + IfcText as() const { return express::Base::as(); } + + template, int> = 0> + IfcTime as() const { return express::Base::as(); } + + template, int> = 0> + IfcTimeStamp as() const { return express::Base::as(); } + + template, int> = 0> + IfcURIReference as() const { return express::Base::as(); } + + IfcValue(const IfcDerivedMeasureValue& c) : express::Select(c) {}; + + IfcValue(const IfcAbsorbedDoseMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcAccelerationMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcAngularVelocityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcAreaDensityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcCompoundPlaneAngleMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcCurvatureMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcDoseEquivalentMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcDynamicViscosityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcElectricCapacitanceMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcElectricChargeMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcElectricConductanceMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcElectricResistanceMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcElectricVoltageMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcEnergyMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcForceMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcFrequencyMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcHeatFluxDensityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcHeatingValueMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcIlluminanceMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcInductanceMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcIntegerCountRateMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcIonConcentrationMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcIsothermalMoistureCapacityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcKinematicViscosityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcLinearForceMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcLinearMomentMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcLinearStiffnessMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcLinearVelocityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcLuminousFluxMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcLuminousIntensityDistributionMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcMagneticFluxDensityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcMagneticFluxMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcMassDensityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcMassFlowRateMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcMassPerLengthMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcModulusOfElasticityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcModulusOfLinearSubgradeReactionMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcModulusOfRotationalSubgradeReactionMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcModulusOfSubgradeReactionMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcMoistureDiffusivityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcMolecularWeightMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcMomentOfInertiaMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcMonetaryMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcPHMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcPlanarForceMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcPowerMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcPressureMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcRadioActivityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcRotationalFrequencyMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcRotationalMassMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcRotationalStiffnessMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcSectionModulusMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcSectionalAreaIntegralMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcShearModulusMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcSoundPowerLevelMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcSoundPowerMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcSoundPressureLevelMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcSoundPressureMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcSpecificHeatCapacityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcTemperatureGradientMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcTemperatureRateOfChangeMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcThermalAdmittanceMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcThermalConductivityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcThermalExpansionCoefficientMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcThermalResistanceMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcThermalTransmittanceMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcTorqueMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcVaporPermeabilityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcVolumetricFlowRateMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcWarpingConstantMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcWarpingMomentMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcMeasureValue& c) : express::Select(c) {}; + + IfcValue(const IfcAmountOfSubstanceMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcAreaMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcComplexNumber& c) : express::Select(c) {}; + + IfcValue(const IfcContextDependentMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcCountMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcDescriptiveMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcElectricCurrentMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcLengthMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcLuminousIntensityMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcMassMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcNonNegativeLengthMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcNormalisedRatioMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcNumericMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcParameterValue& c) : express::Select(c) {}; + + IfcValue(const IfcPlaneAngleMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcPositiveLengthMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcPositivePlaneAngleMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcPositiveRatioMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcRatioMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcSolidAngleMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcThermodynamicTemperatureMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcTimeMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcVolumeMeasure& c) : express::Select(c) {}; + + IfcValue(const IfcSimpleValue& c) : express::Select(c) {}; + + IfcValue(const IfcBinary& c) : express::Select(c) {}; + + IfcValue(const IfcBoolean& c) : express::Select(c) {}; + + IfcValue(const IfcDate& c) : express::Select(c) {}; + + IfcValue(const IfcDateTime& c) : express::Select(c) {}; + + IfcValue(const IfcDuration& c) : express::Select(c) {}; + + IfcValue(const IfcIdentifier& c) : express::Select(c) {}; + + IfcValue(const IfcInteger& c) : express::Select(c) {}; + + IfcValue(const IfcLabel& c) : express::Select(c) {}; + + IfcValue(const IfcLogical& c) : express::Select(c) {}; + + IfcValue(const IfcPositiveInteger& c) : express::Select(c) {}; + + IfcValue(const IfcReal& c) : express::Select(c) {}; + + IfcValue(const IfcText& c) : express::Select(c) {}; + + IfcValue(const IfcTime& c) : express::Select(c) {}; + + IfcValue(const IfcTimeStamp& c) : express::Select(c) {}; + + IfcValue(const IfcURIReference& c) : express::Select(c) {}; + }; /// Definition from ISO/CD 10303-42:1992: This type is used to /// identify the types of entity which can participate in vector computations. @@ -854,20 +3995,43 @@ public: /// definition of the formal standard. /// HISTORY New Type in IFC Release /// 1.5 -class IFC_PARSE_API IfcVectorOrDirection : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcVectorOrDirection : public express::Select { public: + IfcVectorOrDirection() {} + explicit IfcVectorOrDirection(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcVectorOrDirection > list; + template, int> = 0> + IfcDirection as() const { return express::Base::as(); } + + template, int> = 0> + IfcVector as() const { return express::Base::as(); } + + IfcVectorOrDirection(const IfcDirection& c) : express::Select(c) {}; + + IfcVectorOrDirection(const IfcVector& c) : express::Select(c) {}; + }; /// Definition from IAI: A measure of warping stiffness. TRUE denotes infinite stiffness (rigidity). FALSE denotes no stiffness (a release). A numeric value denotes finite linear-elastic stiffness. /// /// HISTORY: New type in IFC 2x4. -class IFC_PARSE_API IfcWarpingStiffnessSelect : public virtual IfcUtil::IfcBaseInterface { +class IFC_PARSE_API IfcWarpingStiffnessSelect : public express::Select { public: + IfcWarpingStiffnessSelect() {} + explicit IfcWarpingStiffnessSelect(const express::Base& c) : express::Select(c) {} + static const IfcParse::select_type& Class(); - typedef aggregate_of< IfcWarpingStiffnessSelect > list; + template, int> = 0> + IfcBoolean as() const { return express::Base::as(); } + + template, int> = 0> + IfcWarpingMomentMeasure as() const { return express::Base::as(); } + + IfcWarpingStiffnessSelect(const IfcBoolean& c) : express::Select(c) {}; + + IfcWarpingStiffnessSelect(const IfcWarpingMomentMeasure& c) : express::Select(c) {}; + }; -class IFC_PARSE_API IfcActionRequestTypeEnum : public IfcUtil::IfcBaseType { /// IfcActionRequestTypeEnum defines the types of sources through which a request can be made. /// HISTORY: New Enumeration in IFC2x4. /// Enumeration: @@ -879,37 +4043,41 @@ class IFC_PARSE_API IfcActionRequestTypeEnum : public IfcUtil::IfcBaseType { /// VERBAL: Request was made verbally in person. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcActionRequestTypeEnum : public express::DeclaredType { public: + IfcActionRequestTypeEnum() {} + explicit IfcActionRequestTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcActionRequestType_EMAIL, IfcActionRequestType_FAX, IfcActionRequestType_PHONE, IfcActionRequestType_POST, IfcActionRequestType_VERBAL, IfcActionRequestType_USERDEFINED, IfcActionRequestType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcActionRequestTypeEnum (IfcEntityInstanceData&& e); - IfcActionRequestTypeEnum (Value v); - IfcActionRequestTypeEnum (const std::string& v); + // IfcActionRequestTypeEnum (Value v); + // IfcActionRequestTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcActionSourceTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI:This enumeration type contains possible /// action sources. /// /// HISTORY: New type in Release IFC2x /// Edition 2. +class IFC_PARSE_API IfcActionSourceTypeEnum : public express::DeclaredType { public: + IfcActionSourceTypeEnum() {} + explicit IfcActionSourceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcActionSourceType_BRAKES, IfcActionSourceType_BUOYANCY, IfcActionSourceType_COMPLETION_G1, IfcActionSourceType_CREEP, IfcActionSourceType_CURRENT, IfcActionSourceType_DEAD_LOAD_G, IfcActionSourceType_EARTHQUAKE_E, IfcActionSourceType_ERECTION, IfcActionSourceType_FIRE, IfcActionSourceType_ICE, IfcActionSourceType_IMPACT, IfcActionSourceType_IMPULSE, IfcActionSourceType_LACK_OF_FIT, IfcActionSourceType_LIVE_LOAD_Q, IfcActionSourceType_PRESTRESSING_P, IfcActionSourceType_PROPPING, IfcActionSourceType_RAIN, IfcActionSourceType_SETTLEMENT_U, IfcActionSourceType_SHRINKAGE, IfcActionSourceType_SNOW_S, IfcActionSourceType_SYSTEM_IMPERFECTION, IfcActionSourceType_TEMPERATURE_T, IfcActionSourceType_TRANSPORT, IfcActionSourceType_WAVE, IfcActionSourceType_WIND_W, IfcActionSourceType_USERDEFINED, IfcActionSourceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcActionSourceTypeEnum (IfcEntityInstanceData&& e); - IfcActionSourceTypeEnum (Value v); - IfcActionSourceTypeEnum (const std::string& v); + // IfcActionSourceTypeEnum (Value v); + // IfcActionSourceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcActionTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration type is used to distinguish /// between possible action types at a high level. It can be used for an automated /// definition of load combinations and for dimensioning. The contained items and @@ -917,19 +4085,21 @@ class IFC_PARSE_API IfcActionTypeEnum : public IfcUtil::IfcBaseType { /// /// HISTORY: New type in Release IFC2x /// Edition 2. +class IFC_PARSE_API IfcActionTypeEnum : public express::DeclaredType { public: + IfcActionTypeEnum() {} + explicit IfcActionTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcActionType_EXTRAORDINARY_A, IfcActionType_PERMANENT_G, IfcActionType_VARIABLE_Q, IfcActionType_USERDEFINED, IfcActionType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcActionTypeEnum (IfcEntityInstanceData&& e); - IfcActionTypeEnum (Value v); - IfcActionTypeEnum (const std::string& v); + // IfcActionTypeEnum (Value v); + // IfcActionTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcActuatorTypeEnum : public IfcUtil::IfcBaseType { /// The IfcActuatorTypeEnum defines the range of different types of actuator that can be specified. /// /// HISTORY: New type in IFC @@ -946,19 +4116,21 @@ class IFC_PARSE_API IfcActuatorTypeEnum : public IfcUtil::IfcBaseType { /// /// See property set of actuator common attributes for specification of /// properties for hand operated actuators. +class IFC_PARSE_API IfcActuatorTypeEnum : public express::DeclaredType { public: + IfcActuatorTypeEnum() {} + explicit IfcActuatorTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcActuatorType_ELECTRICACTUATOR, IfcActuatorType_HANDOPERATEDACTUATOR, IfcActuatorType_HYDRAULICACTUATOR, IfcActuatorType_PNEUMATICACTUATOR, IfcActuatorType_THERMOSTATICACTUATOR, IfcActuatorType_USERDEFINED, IfcActuatorType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcActuatorTypeEnum (IfcEntityInstanceData&& e); - IfcActuatorTypeEnum (Value v); - IfcActuatorTypeEnum (const std::string& v); + // IfcActuatorTypeEnum (Value v); + // IfcActuatorTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcAddressTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: Identifies the logical location of the address. /// /// HISTORY New type in IFC Release 2x. @@ -970,19 +4142,21 @@ class IFC_PARSE_API IfcAddressTypeEnum : public IfcUtil::IfcBaseType { /// HOME A home address. /// DISTRIBUTIONPOINT A postal distribution point address. /// USERDEFINED A user defined address type to be provided. +class IFC_PARSE_API IfcAddressTypeEnum : public express::DeclaredType { public: + IfcAddressTypeEnum() {} + explicit IfcAddressTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcAddressType_DISTRIBUTIONPOINT, IfcAddressType_HOME, IfcAddressType_OFFICE, IfcAddressType_SITE, IfcAddressType_USERDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcAddressTypeEnum (IfcEntityInstanceData&& e); - IfcAddressTypeEnum (Value v); - IfcAddressTypeEnum (const std::string& v); + // IfcAddressTypeEnum (Value v); + // IfcAddressTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcAirTerminalBoxTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration identifies different types of air terminal boxes. /// /// Valid enumerations are: @@ -994,19 +4168,21 @@ class IFC_PARSE_API IfcAirTerminalBoxTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined terminal box. /// /// HISTORY: New enumeration in IFC R2.0 +class IFC_PARSE_API IfcAirTerminalBoxTypeEnum : public express::DeclaredType { public: + IfcAirTerminalBoxTypeEnum() {} + explicit IfcAirTerminalBoxTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcAirTerminalBoxType_CONSTANTFLOW, IfcAirTerminalBoxType_VARIABLEFLOWPRESSUREDEPENDANT, IfcAirTerminalBoxType_VARIABLEFLOWPRESSUREINDEPENDANT, IfcAirTerminalBoxType_USERDEFINED, IfcAirTerminalBoxType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcAirTerminalBoxTypeEnum (IfcEntityInstanceData&& e); - IfcAirTerminalBoxTypeEnum (Value v); - IfcAirTerminalBoxTypeEnum (const std::string& v); + // IfcAirTerminalBoxTypeEnum (Value v); + // IfcAirTerminalBoxTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcAirTerminalTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the functional types of air terminals. /// The IfcAirTerminalTypeEnum contains the following: /// @@ -1020,19 +4196,21 @@ class IFC_PARSE_API IfcAirTerminalTypeEnum : public IfcUtil::IfcBaseType { /// NOTE: Architectural louvres within doors or windows are defined by IfcPermeableCoveringProperties. /// /// HISTORY: New enumeration in IFC R2x2. Modified in IFC R2x4 to add LOUVRE and remove EYEBALL, IRIS, LINEARGRILLE, LINEARDIFFUSER +class IFC_PARSE_API IfcAirTerminalTypeEnum : public express::DeclaredType { public: + IfcAirTerminalTypeEnum() {} + explicit IfcAirTerminalTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcAirTerminalType_DIFFUSER, IfcAirTerminalType_GRILLE, IfcAirTerminalType_LOUVRE, IfcAirTerminalType_REGISTER, IfcAirTerminalType_USERDEFINED, IfcAirTerminalType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcAirTerminalTypeEnum (IfcEntityInstanceData&& e); - IfcAirTerminalTypeEnum (Value v); - IfcAirTerminalTypeEnum (const std::string& v); + // IfcAirTerminalTypeEnum (Value v); + // IfcAirTerminalTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcAirToAirHeatRecoveryTypeEnum : public IfcUtil::IfcBaseType { /// Defines general types of pumps. /// The IfcPumpTypeEnum contains the following: /// @@ -1049,19 +4227,21 @@ class IFC_PARSE_API IfcAirToAirHeatRecoveryTypeEnum : public IfcUtil::IfcBaseTyp /// NOTDEFINED: Undefined air to air heat recovery type. /// /// HISTORY: New enumeration in IFC R2x. +class IFC_PARSE_API IfcAirToAirHeatRecoveryTypeEnum : public express::DeclaredType { public: + IfcAirToAirHeatRecoveryTypeEnum() {} + explicit IfcAirToAirHeatRecoveryTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcAirToAirHeatRecoveryType_FIXEDPLATECOUNTERFLOWEXCHANGER, IfcAirToAirHeatRecoveryType_FIXEDPLATECROSSFLOWEXCHANGER, IfcAirToAirHeatRecoveryType_FIXEDPLATEPARALLELFLOWEXCHANGER, IfcAirToAirHeatRecoveryType_HEATPIPE, IfcAirToAirHeatRecoveryType_ROTARYWHEEL, IfcAirToAirHeatRecoveryType_RUNAROUNDCOILLOOP, IfcAirToAirHeatRecoveryType_THERMOSIPHONCOILTYPEHEATEXCHANGERS, IfcAirToAirHeatRecoveryType_THERMOSIPHONSEALEDTUBEHEATEXCHANGERS, IfcAirToAirHeatRecoveryType_TWINTOWERENTHALPYRECOVERYLOOPS, IfcAirToAirHeatRecoveryType_USERDEFINED, IfcAirToAirHeatRecoveryType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcAirToAirHeatRecoveryTypeEnum (IfcEntityInstanceData&& e); - IfcAirToAirHeatRecoveryTypeEnum (Value v); - IfcAirToAirHeatRecoveryTypeEnum (const std::string& v); + // IfcAirToAirHeatRecoveryTypeEnum (Value v); + // IfcAirToAirHeatRecoveryTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcAlarmTypeEnum : public IfcUtil::IfcBaseType { /// The IfcAlarmTypeEnum defines the range of different types of alarm that can be specified. /// /// HISTORY: New type in IFC 2x2 @@ -1076,94 +4256,106 @@ class IFC_PARSE_API IfcAlarmTypeEnum : public IfcUtil::IfcBaseType { /// WHISTLE: An audible alarm. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcAlarmTypeEnum : public express::DeclaredType { public: + IfcAlarmTypeEnum() {} + explicit IfcAlarmTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcAlarmType_BELL, IfcAlarmType_BREAKGLASSBUTTON, IfcAlarmType_LIGHT, IfcAlarmType_MANUALPULLBOX, IfcAlarmType_RAILWAYCROCODILE, IfcAlarmType_RAILWAYDETONATOR, IfcAlarmType_SIREN, IfcAlarmType_WHISTLE, IfcAlarmType_USERDEFINED, IfcAlarmType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcAlarmTypeEnum (IfcEntityInstanceData&& e); - IfcAlarmTypeEnum (Value v); - IfcAlarmTypeEnum (const std::string& v); + // IfcAlarmTypeEnum (Value v); + // IfcAlarmTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcAlignmentCantSegmentTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcAlignmentCantSegmentTypeEnum : public express::DeclaredType { public: + IfcAlignmentCantSegmentTypeEnum() {} + explicit IfcAlignmentCantSegmentTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcAlignmentCantSegmentType_BLOSSCURVE, IfcAlignmentCantSegmentType_CONSTANTCANT, IfcAlignmentCantSegmentType_COSINECURVE, IfcAlignmentCantSegmentType_HELMERTCURVE, IfcAlignmentCantSegmentType_LINEARTRANSITION, IfcAlignmentCantSegmentType_SINECURVE, IfcAlignmentCantSegmentType_VIENNESEBEND} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcAlignmentCantSegmentTypeEnum (IfcEntityInstanceData&& e); - IfcAlignmentCantSegmentTypeEnum (Value v); - IfcAlignmentCantSegmentTypeEnum (const std::string& v); + // IfcAlignmentCantSegmentTypeEnum (Value v); + // IfcAlignmentCantSegmentTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcAlignmentHorizontalSegmentTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcAlignmentHorizontalSegmentTypeEnum : public express::DeclaredType { public: + IfcAlignmentHorizontalSegmentTypeEnum() {} + explicit IfcAlignmentHorizontalSegmentTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcAlignmentHorizontalSegmentType_BLOSSCURVE, IfcAlignmentHorizontalSegmentType_CIRCULARARC, IfcAlignmentHorizontalSegmentType_CLOTHOID, IfcAlignmentHorizontalSegmentType_COSINECURVE, IfcAlignmentHorizontalSegmentType_CUBIC, IfcAlignmentHorizontalSegmentType_HELMERTCURVE, IfcAlignmentHorizontalSegmentType_LINE, IfcAlignmentHorizontalSegmentType_SINECURVE, IfcAlignmentHorizontalSegmentType_VIENNESEBEND} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcAlignmentHorizontalSegmentTypeEnum (IfcEntityInstanceData&& e); - IfcAlignmentHorizontalSegmentTypeEnum (Value v); - IfcAlignmentHorizontalSegmentTypeEnum (const std::string& v); + // IfcAlignmentHorizontalSegmentTypeEnum (Value v); + // IfcAlignmentHorizontalSegmentTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcAlignmentTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcAlignmentTypeEnum : public express::DeclaredType { public: + IfcAlignmentTypeEnum() {} + explicit IfcAlignmentTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcAlignmentType_USERDEFINED, IfcAlignmentType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcAlignmentTypeEnum (IfcEntityInstanceData&& e); - IfcAlignmentTypeEnum (Value v); - IfcAlignmentTypeEnum (const std::string& v); + // IfcAlignmentTypeEnum (Value v); + // IfcAlignmentTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcAlignmentVerticalSegmentTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcAlignmentVerticalSegmentTypeEnum : public express::DeclaredType { public: + IfcAlignmentVerticalSegmentTypeEnum() {} + explicit IfcAlignmentVerticalSegmentTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcAlignmentVerticalSegmentType_CIRCULARARC, IfcAlignmentVerticalSegmentType_CLOTHOID, IfcAlignmentVerticalSegmentType_CONSTANTGRADIENT, IfcAlignmentVerticalSegmentType_PARABOLICARC} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcAlignmentVerticalSegmentTypeEnum (IfcEntityInstanceData&& e); - IfcAlignmentVerticalSegmentTypeEnum (Value v); - IfcAlignmentVerticalSegmentTypeEnum (const std::string& v); + // IfcAlignmentVerticalSegmentTypeEnum (Value v); + // IfcAlignmentVerticalSegmentTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcAnalysisModelTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This type definition is used to distinguish /// between different types of structural analysis models. The analysis models are /// differentiated by their dimensionality. /// /// HISTORY: New type in Release IFC2x /// Edition 2. +class IFC_PARSE_API IfcAnalysisModelTypeEnum : public express::DeclaredType { public: + IfcAnalysisModelTypeEnum() {} + explicit IfcAnalysisModelTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcAnalysisModelType_IN_PLANE_LOADING_2D, IfcAnalysisModelType_LOADING_3D, IfcAnalysisModelType_OUT_PLANE_LOADING_2D, IfcAnalysisModelType_USERDEFINED, IfcAnalysisModelType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcAnalysisModelTypeEnum (IfcEntityInstanceData&& e); - IfcAnalysisModelTypeEnum (Value v); - IfcAnalysisModelTypeEnum (const std::string& v); + // IfcAnalysisModelTypeEnum (Value v); + // IfcAnalysisModelTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcAnalysisTheoryTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This type definition is used to distinguish /// between different types of structural analysis methods, i.e. first order /// theory, second order theory (small deformations), third order theory (large @@ -1171,33 +4363,37 @@ class IFC_PARSE_API IfcAnalysisTheoryTypeEnum : public IfcUtil::IfcBaseType { /// /// HISTORY: New type in Release IFC2x /// Edition 2. +class IFC_PARSE_API IfcAnalysisTheoryTypeEnum : public express::DeclaredType { public: + IfcAnalysisTheoryTypeEnum() {} + explicit IfcAnalysisTheoryTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcAnalysisTheoryType_FIRST_ORDER_THEORY, IfcAnalysisTheoryType_FULL_NONLINEAR_THEORY, IfcAnalysisTheoryType_SECOND_ORDER_THEORY, IfcAnalysisTheoryType_THIRD_ORDER_THEORY, IfcAnalysisTheoryType_USERDEFINED, IfcAnalysisTheoryType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcAnalysisTheoryTypeEnum (IfcEntityInstanceData&& e); - IfcAnalysisTheoryTypeEnum (Value v); - IfcAnalysisTheoryTypeEnum (const std::string& v); + // IfcAnalysisTheoryTypeEnum (Value v); + // IfcAnalysisTheoryTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcAnnotationTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcAnnotationTypeEnum : public express::DeclaredType { public: + IfcAnnotationTypeEnum() {} + explicit IfcAnnotationTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcAnnotationType_CONTOURLINE, IfcAnnotationType_DIMENSION, IfcAnnotationType_ISOBAR, IfcAnnotationType_ISOLUX, IfcAnnotationType_ISOTHERM, IfcAnnotationType_LEADER, IfcAnnotationType_SURVEY, IfcAnnotationType_SYMBOL, IfcAnnotationType_TEXT, IfcAnnotationType_USERDEFINED, IfcAnnotationType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcAnnotationTypeEnum (IfcEntityInstanceData&& e); - IfcAnnotationTypeEnum (Value v); - IfcAnnotationTypeEnum (const std::string& v); + // IfcAnnotationTypeEnum (Value v); + // IfcAnnotationTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcArithmeticOperatorEnum : public IfcUtil::IfcBaseType { /// IfcArithmeticOperatorEnum specifies the form of arithmetical operation implied by the relationship. /// Enumeration /// @@ -1210,19 +4406,21 @@ class IFC_PARSE_API IfcArithmeticOperatorEnum : public IfcUtil::IfcBaseType { /// /// Use definitions /// There can be only one arithmetic operator for each applied value relationship. This is to enforce arithmetic consistency. Given this consistency, the cardinality of the IfcAppliedValueRelationship.Components attribute is a set of one to many applied values that are components of an applied value. +class IFC_PARSE_API IfcArithmeticOperatorEnum : public express::DeclaredType { public: + IfcArithmeticOperatorEnum() {} + explicit IfcArithmeticOperatorEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcArithmeticOperator_ADD, IfcArithmeticOperator_DIVIDE, IfcArithmeticOperator_MODULO, IfcArithmeticOperator_MULTIPLY, IfcArithmeticOperator_SUBTRACT} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcArithmeticOperatorEnum (IfcEntityInstanceData&& e); - IfcArithmeticOperatorEnum (Value v); - IfcArithmeticOperatorEnum (const std::string& v); + // IfcArithmeticOperatorEnum (Value v); + // IfcArithmeticOperatorEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcAssemblyPlaceEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: Enumeration defining where the /// assembly is intended to take place, either in a factory or /// on the building site. @@ -1235,19 +4433,21 @@ class IFC_PARSE_API IfcAssemblyPlaceEnum : public IfcUtil::IfcBaseType { /// SITE - this assembly is assembled at site /// /// FACTORY - this assembly is assembled in a factory +class IFC_PARSE_API IfcAssemblyPlaceEnum : public express::DeclaredType { public: + IfcAssemblyPlaceEnum() {} + explicit IfcAssemblyPlaceEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcAssemblyPlace_FACTORY, IfcAssemblyPlace_SITE, IfcAssemblyPlace_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcAssemblyPlaceEnum (IfcEntityInstanceData&& e); - IfcAssemblyPlaceEnum (Value v); - IfcAssemblyPlaceEnum (const std::string& v); + // IfcAssemblyPlaceEnum (Value v); + // IfcAssemblyPlaceEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcAudioVisualApplianceTypeEnum : public IfcUtil::IfcBaseType { /// Defines the range of different types of audio-video devices that can be specified. /// HISTORY: New enumeration in IFC2x4 /// @@ -1262,19 +4462,21 @@ class IFC_PARSE_API IfcAudioVisualApplianceTypeEnum : public IfcUtil::IfcBaseTyp /// SWITCHER: A device that receives audio and/or video signals, switches sources, and transmits signals to downstream devices. /// TELEPHONE: A telecommunications device that is used to transmit and receive sound, and optionally video. /// TUNER: An electronic receiver that detects, demodulates, and amplifies transmitted signals. +class IFC_PARSE_API IfcAudioVisualApplianceTypeEnum : public express::DeclaredType { public: + IfcAudioVisualApplianceTypeEnum() {} + explicit IfcAudioVisualApplianceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcAudioVisualApplianceType_AMPLIFIER, IfcAudioVisualApplianceType_CAMERA, IfcAudioVisualApplianceType_COMMUNICATIONTERMINAL, IfcAudioVisualApplianceType_DISPLAY, IfcAudioVisualApplianceType_MICROPHONE, IfcAudioVisualApplianceType_PLAYER, IfcAudioVisualApplianceType_PROJECTOR, IfcAudioVisualApplianceType_RECEIVER, IfcAudioVisualApplianceType_RECORDINGEQUIPMENT, IfcAudioVisualApplianceType_SPEAKER, IfcAudioVisualApplianceType_SWITCHER, IfcAudioVisualApplianceType_TELEPHONE, IfcAudioVisualApplianceType_TUNER, IfcAudioVisualApplianceType_USERDEFINED, IfcAudioVisualApplianceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcAudioVisualApplianceTypeEnum (IfcEntityInstanceData&& e); - IfcAudioVisualApplianceTypeEnum (Value v); - IfcAudioVisualApplianceTypeEnum (const std::string& v); + // IfcAudioVisualApplianceTypeEnum (Value v); + // IfcAudioVisualApplianceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcBSplineCurveForm : public IfcUtil::IfcBaseType { /// Definition from ISO/CD 10303-42:1992: This type is used to indicate that the B-spline curve represents a part of a curve of some specific form. /// /// Enumeration @@ -1289,33 +4491,37 @@ class IFC_PARSE_API IfcBSplineCurveForm : public IfcUtil::IfcBaseType { /// NOTE Corresponding ISO 10303 type: b_spline_curve_form. Please refer to ISO/IS 10303-42:1994, p. 15 for the final definition of the formal standard. /// /// HISTORY New type in Release IFC2x2. +class IFC_PARSE_API IfcBSplineCurveForm : public express::DeclaredType { public: + IfcBSplineCurveForm() {} + explicit IfcBSplineCurveForm (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcBSplineCurveForm_CIRCULAR_ARC, IfcBSplineCurveForm_ELLIPTIC_ARC, IfcBSplineCurveForm_HYPERBOLIC_ARC, IfcBSplineCurveForm_PARABOLIC_ARC, IfcBSplineCurveForm_POLYLINE_FORM, IfcBSplineCurveForm_UNSPECIFIED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcBSplineCurveForm (IfcEntityInstanceData&& e); - IfcBSplineCurveForm (Value v); - IfcBSplineCurveForm (const std::string& v); + // IfcBSplineCurveForm (Value v); + // IfcBSplineCurveForm (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcBSplineSurfaceForm : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcBSplineSurfaceForm : public express::DeclaredType { public: + IfcBSplineSurfaceForm() {} + explicit IfcBSplineSurfaceForm (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcBSplineSurfaceForm_CONICAL_SURF, IfcBSplineSurfaceForm_CYLINDRICAL_SURF, IfcBSplineSurfaceForm_GENERALISED_CONE, IfcBSplineSurfaceForm_PLANE_SURF, IfcBSplineSurfaceForm_QUADRIC_SURF, IfcBSplineSurfaceForm_RULED_SURF, IfcBSplineSurfaceForm_SPHERICAL_SURF, IfcBSplineSurfaceForm_SURF_OF_LINEAR_EXTRUSION, IfcBSplineSurfaceForm_SURF_OF_REVOLUTION, IfcBSplineSurfaceForm_TOROIDAL_SURF, IfcBSplineSurfaceForm_UNSPECIFIED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcBSplineSurfaceForm (IfcEntityInstanceData&& e); - IfcBSplineSurfaceForm (Value v); - IfcBSplineSurfaceForm (const std::string& v); + // IfcBSplineSurfaceForm (Value v); + // IfcBSplineSurfaceForm (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcBeamTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the /// different types of linear elements an IfcBeamType object /// can fulfill: @@ -1355,33 +4561,37 @@ class IFC_PARSE_API IfcBeamTypeEnum : public IfcUtil::IfcBaseType { /// IFC2x4 CHANGE The enumerators /// HOLLOWCORE and SPANDREL have been /// added. +class IFC_PARSE_API IfcBeamTypeEnum : public express::DeclaredType { public: + IfcBeamTypeEnum() {} + explicit IfcBeamTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcBeamType_BEAM, IfcBeamType_CORNICE, IfcBeamType_DIAPHRAGM, IfcBeamType_EDGEBEAM, IfcBeamType_GIRDER_SEGMENT, IfcBeamType_HATSTONE, IfcBeamType_HOLLOWCORE, IfcBeamType_JOIST, IfcBeamType_LINTEL, IfcBeamType_PIERCAP, IfcBeamType_SPANDREL, IfcBeamType_T_BEAM, IfcBeamType_USERDEFINED, IfcBeamType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcBeamTypeEnum (IfcEntityInstanceData&& e); - IfcBeamTypeEnum (Value v); - IfcBeamTypeEnum (const std::string& v); + // IfcBeamTypeEnum (Value v); + // IfcBeamTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcBearingTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcBearingTypeEnum : public express::DeclaredType { public: + IfcBearingTypeEnum() {} + explicit IfcBearingTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcBearingType_CYLINDRICAL, IfcBearingType_DISK, IfcBearingType_ELASTOMERIC, IfcBearingType_GUIDE, IfcBearingType_POT, IfcBearingType_ROCKER, IfcBearingType_ROLLER, IfcBearingType_SPHERICAL, IfcBearingType_USERDEFINED, IfcBearingType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcBearingTypeEnum (IfcEntityInstanceData&& e); - IfcBearingTypeEnum (Value v); - IfcBearingTypeEnum (const std::string& v); + // IfcBearingTypeEnum (Value v); + // IfcBearingTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcBenchmarkEnum : public IfcUtil::IfcBaseType { /// IfcBenchmarkEnum is an enumeration used to identify the logical comparators that can be applied in conjunction with constraint values. /// /// HISTORY: New type in IFC Release 2.0 @@ -1422,19 +4632,21 @@ class IFC_PARSE_API IfcBenchmarkEnum : public IfcUtil::IfcBaseType { /// /// NOTINCLUDEDIN /// Identifies that a value (individual item) must not be included (i.e. must be excluded) in the aggregation (set, list or table) set by the constraint. +class IFC_PARSE_API IfcBenchmarkEnum : public express::DeclaredType { public: + IfcBenchmarkEnum() {} + explicit IfcBenchmarkEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcBenchmark_EQUALTO, IfcBenchmark_GREATERTHAN, IfcBenchmark_GREATERTHANOREQUALTO, IfcBenchmark_INCLUDEDIN, IfcBenchmark_INCLUDES, IfcBenchmark_LESSTHAN, IfcBenchmark_LESSTHANOREQUALTO, IfcBenchmark_NOTEQUALTO, IfcBenchmark_NOTINCLUDEDIN, IfcBenchmark_NOTINCLUDES} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcBenchmarkEnum (IfcEntityInstanceData&& e); - IfcBenchmarkEnum (Value v); - IfcBenchmarkEnum (const std::string& v); + // IfcBenchmarkEnum (Value v); + // IfcBenchmarkEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcBoilerTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the typical types of boilers. /// The IfcBoilerTypeEnum contains the following: /// @@ -1444,19 +4656,21 @@ class IFC_PARSE_API IfcBoilerTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined Boiler type. /// /// HISTORY: New enumeration in IFC R2x. +class IFC_PARSE_API IfcBoilerTypeEnum : public express::DeclaredType { public: + IfcBoilerTypeEnum() {} + explicit IfcBoilerTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcBoilerType_STEAM, IfcBoilerType_WATER, IfcBoilerType_USERDEFINED, IfcBoilerType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcBoilerTypeEnum (IfcEntityInstanceData&& e); - IfcBoilerTypeEnum (Value v); - IfcBoilerTypeEnum (const std::string& v); + // IfcBoilerTypeEnum (Value v); + // IfcBoilerTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcBooleanOperator : public IfcUtil::IfcBaseType { /// Definition from ISO/CD 10303-42:1992: This type defines the three Boolean operators used in the definition of CSG solids. /// /// UNION: The operation of constructing the regularized set theoretic union of the volumes defined by two solids. @@ -1466,47 +4680,53 @@ class IFC_PARSE_API IfcBooleanOperator : public IfcUtil::IfcBaseType { /// NOTE Corresponding STEP type: boolean_operator, please refer to ISO/IS 10303-42:1994, p.167 for the final definition of the formal standard. /// /// HISTORY New Type in IFC Release 1.5.1. +class IFC_PARSE_API IfcBooleanOperator : public express::DeclaredType { public: + IfcBooleanOperator() {} + explicit IfcBooleanOperator (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcBooleanOperator_DIFFERENCE, IfcBooleanOperator_INTERSECTION, IfcBooleanOperator_UNION} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcBooleanOperator (IfcEntityInstanceData&& e); - IfcBooleanOperator (Value v); - IfcBooleanOperator (const std::string& v); + // IfcBooleanOperator (Value v); + // IfcBooleanOperator (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcBridgePartTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcBridgePartTypeEnum : public express::DeclaredType { public: + IfcBridgePartTypeEnum() {} + explicit IfcBridgePartTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcBridgePartType_ABUTMENT, IfcBridgePartType_DECK, IfcBridgePartType_DECK_SEGMENT, IfcBridgePartType_FOUNDATION, IfcBridgePartType_PIER, IfcBridgePartType_PIER_SEGMENT, IfcBridgePartType_PYLON, IfcBridgePartType_SUBSTRUCTURE, IfcBridgePartType_SUPERSTRUCTURE, IfcBridgePartType_SURFACESTRUCTURE, IfcBridgePartType_USERDEFINED, IfcBridgePartType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcBridgePartTypeEnum (IfcEntityInstanceData&& e); - IfcBridgePartTypeEnum (Value v); - IfcBridgePartTypeEnum (const std::string& v); + // IfcBridgePartTypeEnum (Value v); + // IfcBridgePartTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcBridgeTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcBridgeTypeEnum : public express::DeclaredType { public: + IfcBridgeTypeEnum() {} + explicit IfcBridgeTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcBridgeType_ARCHED, IfcBridgeType_CABLE_STAYED, IfcBridgeType_CANTILEVER, IfcBridgeType_CULVERT, IfcBridgeType_FRAMEWORK, IfcBridgeType_GIRDER, IfcBridgeType_SUSPENSION, IfcBridgeType_TRUSS, IfcBridgeType_USERDEFINED, IfcBridgeType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcBridgeTypeEnum (IfcEntityInstanceData&& e); - IfcBridgeTypeEnum (Value v); - IfcBridgeTypeEnum (const std::string& v); + // IfcBridgeTypeEnum (Value v); + // IfcBridgeTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcBuildingElementPartTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the different types of building element parts: /// /// INSULATION: The part provides thermal insulation, for example as insulation layer between wall panels in sandwich walls or as infill in stud walls. @@ -1515,19 +4735,21 @@ class IFC_PARSE_API IfcBuildingElementPartTypeEnum : public IfcUtil::IfcBaseType /// NOTDEFINED: Undefined accessory /// /// HISTORY New Enumeration in IFC 2x4. +class IFC_PARSE_API IfcBuildingElementPartTypeEnum : public express::DeclaredType { public: + IfcBuildingElementPartTypeEnum() {} + explicit IfcBuildingElementPartTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcBuildingElementPartType_APRON, IfcBuildingElementPartType_ARMOURUNIT, IfcBuildingElementPartType_INSULATION, IfcBuildingElementPartType_PRECASTPANEL, IfcBuildingElementPartType_SAFETYCAGE, IfcBuildingElementPartType_USERDEFINED, IfcBuildingElementPartType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcBuildingElementPartTypeEnum (IfcEntityInstanceData&& e); - IfcBuildingElementPartTypeEnum (Value v); - IfcBuildingElementPartTypeEnum (const std::string& v); + // IfcBuildingElementPartTypeEnum (Value v); + // IfcBuildingElementPartTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcBuildingElementProxyTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the /// available generic types for IfcBuildingElementProxyType. /// @@ -1539,19 +4761,21 @@ class IFC_PARSE_API IfcBuildingElementProxyTypeEnum : public IfcUtil::IfcBaseTyp /// USERDEFINED /// /// NOTDEFINED +class IFC_PARSE_API IfcBuildingElementProxyTypeEnum : public express::DeclaredType { public: + IfcBuildingElementProxyTypeEnum() {} + explicit IfcBuildingElementProxyTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcBuildingElementProxyType_COMPLEX, IfcBuildingElementProxyType_ELEMENT, IfcBuildingElementProxyType_PARTIAL, IfcBuildingElementProxyType_PROVISIONFORSPACE, IfcBuildingElementProxyType_PROVISIONFORVOID, IfcBuildingElementProxyType_USERDEFINED, IfcBuildingElementProxyType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcBuildingElementProxyTypeEnum (IfcEntityInstanceData&& e); - IfcBuildingElementProxyTypeEnum (Value v); - IfcBuildingElementProxyTypeEnum (const std::string& v); + // IfcBuildingElementProxyTypeEnum (Value v); + // IfcBuildingElementProxyTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcBuildingSystemTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration identifies /// different types of distribution systems. /// HISTORY New enumeration @@ -1566,33 +4790,37 @@ class IFC_PARSE_API IfcBuildingSystemTypeEnum : public IfcUtil::IfcBaseType { /// natural sun light, /// TRANSPORT: System of all transport elements in a /// building that enables the transport of people or goods. +class IFC_PARSE_API IfcBuildingSystemTypeEnum : public express::DeclaredType { public: + IfcBuildingSystemTypeEnum() {} + explicit IfcBuildingSystemTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcBuildingSystemType_FENESTRATION, IfcBuildingSystemType_FOUNDATION, IfcBuildingSystemType_LOADBEARING, IfcBuildingSystemType_OUTERSHELL, IfcBuildingSystemType_SHADING, IfcBuildingSystemType_TRANSPORT, IfcBuildingSystemType_USERDEFINED, IfcBuildingSystemType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcBuildingSystemTypeEnum (IfcEntityInstanceData&& e); - IfcBuildingSystemTypeEnum (Value v); - IfcBuildingSystemTypeEnum (const std::string& v); + // IfcBuildingSystemTypeEnum (Value v); + // IfcBuildingSystemTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcBuiltSystemTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcBuiltSystemTypeEnum : public express::DeclaredType { public: + IfcBuiltSystemTypeEnum() {} + explicit IfcBuiltSystemTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcBuiltSystemType_EROSIONPREVENTION, IfcBuiltSystemType_FENESTRATION, IfcBuiltSystemType_FOUNDATION, IfcBuiltSystemType_LOADBEARING, IfcBuiltSystemType_MOORING, IfcBuiltSystemType_OUTERSHELL, IfcBuiltSystemType_PRESTRESSING, IfcBuiltSystemType_RAILWAYLINE, IfcBuiltSystemType_RAILWAYTRACK, IfcBuiltSystemType_REINFORCING, IfcBuiltSystemType_SHADING, IfcBuiltSystemType_TRACKCIRCUIT, IfcBuiltSystemType_TRANSPORT, IfcBuiltSystemType_USERDEFINED, IfcBuiltSystemType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcBuiltSystemTypeEnum (IfcEntityInstanceData&& e); - IfcBuiltSystemTypeEnum (Value v); - IfcBuiltSystemTypeEnum (const std::string& v); + // IfcBuiltSystemTypeEnum (Value v); + // IfcBuiltSystemTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcBurnerTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the functional type of burner. /// The IfcBurnerTypeEnum contains the following: /// @@ -1600,19 +4828,21 @@ class IFC_PARSE_API IfcBurnerTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined burner type. /// /// HISTORY: New enumeration in IFC R2x4. +class IFC_PARSE_API IfcBurnerTypeEnum : public express::DeclaredType { public: + IfcBurnerTypeEnum() {} + explicit IfcBurnerTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcBurnerType_USERDEFINED, IfcBurnerType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcBurnerTypeEnum (IfcEntityInstanceData&& e); - IfcBurnerTypeEnum (Value v); - IfcBurnerTypeEnum (const std::string& v); + // IfcBurnerTypeEnum (Value v); + // IfcBurnerTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCableCarrierFittingTypeEnum : public IfcUtil::IfcBaseType { /// The IfcCableCarrierFittingTypeEnum defines the range of different types of cable carrier fitting that can be specified. /// HISTORY: New type in IFC 2x2 /// Enumeration @@ -1623,19 +4853,21 @@ class IFC_PARSE_API IfcCableCarrierFittingTypeEnum : public IfcUtil::IfcBaseType /// TEE: A fitting at which a branch is taken from the main route of the cable carrier. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcCableCarrierFittingTypeEnum : public express::DeclaredType { public: + IfcCableCarrierFittingTypeEnum() {} + explicit IfcCableCarrierFittingTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCableCarrierFittingType_BEND, IfcCableCarrierFittingType_CONNECTOR, IfcCableCarrierFittingType_CROSS, IfcCableCarrierFittingType_JUNCTION, IfcCableCarrierFittingType_REDUCER, IfcCableCarrierFittingType_TEE, IfcCableCarrierFittingType_TRANSITION, IfcCableCarrierFittingType_USERDEFINED, IfcCableCarrierFittingType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCableCarrierFittingTypeEnum (IfcEntityInstanceData&& e); - IfcCableCarrierFittingTypeEnum (Value v); - IfcCableCarrierFittingTypeEnum (const std::string& v); + // IfcCableCarrierFittingTypeEnum (Value v); + // IfcCableCarrierFittingTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCableCarrierSegmentTypeEnum : public IfcUtil::IfcBaseType { /// The IfcCableCarrierSegmentTypeEnum defines the range of different types of cable carrier segment that can be specified. /// HISTORY: New type in IFC 2x2 /// Enumeration @@ -1646,19 +4878,21 @@ class IFC_PARSE_API IfcCableCarrierSegmentTypeEnum : public IfcUtil::IfcBaseType /// CONDUITSEGMENT: An enclosed tubular carrier segment through which cables are pulled. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcCableCarrierSegmentTypeEnum : public express::DeclaredType { public: + IfcCableCarrierSegmentTypeEnum() {} + explicit IfcCableCarrierSegmentTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCableCarrierSegmentType_CABLEBRACKET, IfcCableCarrierSegmentType_CABLELADDERSEGMENT, IfcCableCarrierSegmentType_CABLETRAYSEGMENT, IfcCableCarrierSegmentType_CABLETRUNKINGSEGMENT, IfcCableCarrierSegmentType_CATENARYWIRE, IfcCableCarrierSegmentType_CONDUITSEGMENT, IfcCableCarrierSegmentType_DROPPER, IfcCableCarrierSegmentType_USERDEFINED, IfcCableCarrierSegmentType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCableCarrierSegmentTypeEnum (IfcEntityInstanceData&& e); - IfcCableCarrierSegmentTypeEnum (Value v); - IfcCableCarrierSegmentTypeEnum (const std::string& v); + // IfcCableCarrierSegmentTypeEnum (Value v); + // IfcCableCarrierSegmentTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCableFittingTypeEnum : public IfcUtil::IfcBaseType { /// The IfcCableFittingTypeEnum defines the range of different types of cable fitting that can be specified. /// HISTORY: New type in IFC 2x4 /// Enumeration @@ -1670,19 +4904,21 @@ class IFC_PARSE_API IfcCableFittingTypeEnum : public IfcUtil::IfcBaseType { /// TRANSITION: A fitting that joins two cable segments of different connector types. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcCableFittingTypeEnum : public express::DeclaredType { public: + IfcCableFittingTypeEnum() {} + explicit IfcCableFittingTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCableFittingType_CONNECTOR, IfcCableFittingType_ENTRY, IfcCableFittingType_EXIT, IfcCableFittingType_FANOUT, IfcCableFittingType_JUNCTION, IfcCableFittingType_TRANSITION, IfcCableFittingType_USERDEFINED, IfcCableFittingType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCableFittingTypeEnum (IfcEntityInstanceData&& e); - IfcCableFittingTypeEnum (Value v); - IfcCableFittingTypeEnum (const std::string& v); + // IfcCableFittingTypeEnum (Value v); + // IfcCableFittingTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCableSegmentTypeEnum : public IfcUtil::IfcBaseType { /// The IfcCableSegmentTypeEnum defines the range of different types of cable segment that can be specified. /// /// HISTORY: New type in IFC @@ -1695,33 +4931,37 @@ class IFC_PARSE_API IfcCableSegmentTypeEnum : public IfcUtil::IfcBaseType { /// CORESEGMENT: A self contained element of a cable that comprises one or more conductors and sheathing.The core of one lead is normally single wired or multiwired which are intertwined. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcCableSegmentTypeEnum : public express::DeclaredType { public: + IfcCableSegmentTypeEnum() {} + explicit IfcCableSegmentTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCableSegmentType_BUSBARSEGMENT, IfcCableSegmentType_CABLESEGMENT, IfcCableSegmentType_CONDUCTORSEGMENT, IfcCableSegmentType_CONTACTWIRESEGMENT, IfcCableSegmentType_CORESEGMENT, IfcCableSegmentType_FIBERSEGMENT, IfcCableSegmentType_FIBERTUBE, IfcCableSegmentType_OPTICALCABLESEGMENT, IfcCableSegmentType_STITCHWIRE, IfcCableSegmentType_WIREPAIRSEGMENT, IfcCableSegmentType_USERDEFINED, IfcCableSegmentType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCableSegmentTypeEnum (IfcEntityInstanceData&& e); - IfcCableSegmentTypeEnum (Value v); - IfcCableSegmentTypeEnum (const std::string& v); + // IfcCableSegmentTypeEnum (Value v); + // IfcCableSegmentTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCaissonFoundationTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcCaissonFoundationTypeEnum : public express::DeclaredType { public: + IfcCaissonFoundationTypeEnum() {} + explicit IfcCaissonFoundationTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCaissonFoundationType_CAISSON, IfcCaissonFoundationType_WELL, IfcCaissonFoundationType_USERDEFINED, IfcCaissonFoundationType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCaissonFoundationTypeEnum (IfcEntityInstanceData&& e); - IfcCaissonFoundationTypeEnum (Value v); - IfcCaissonFoundationTypeEnum (const std::string& v); + // IfcCaissonFoundationTypeEnum (Value v); + // IfcCaissonFoundationTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcChangeActionEnum : public IfcUtil::IfcBaseType { /// IfcChangeActionEnum identifies the type of change that might have occurred to the object during the last session (for example, added, modified, deleted). This information is required in a partial model exchange scenario so that an application or model server will know how an object might have been affected by the previous application. Valid enumerations are: /// /// NOCHANGE: Object has not been modified. @@ -1733,19 +4973,21 @@ class IFC_PARSE_API IfcChangeActionEnum : public IfcUtil::IfcBaseType { /// Consider Application A will create an IFC dataset that it wants to publish to others for modification and have the ability to subsequently merge these changes back into the original model. Before publication, it may want to set the IfcChangeActionEnum to NOCHANGE to establish a baseline so that other application changes can be easily identified. Application B then receives this IFC dataset and adds a new object and sets IfcChangeActionEnum to ADDED with Application B defined as the OwningApplication. Application B then modifies an existing object and (re)defines the LastModifiedDate to the time of the modification, LastModifyingUser to the IfcPersonAndOrganization making the change, and sets the LastModifyingApplication to Application B. When Application A receives this modified dataset, it can determine which objects have been added and modified by Application B and either merge or reject these changes as necessary. Consequently, the intent is that an application only modifies the value of IfcChangeActionEnum when it does something to the object, with the further intent that a model server is responsible for clearing the IfcChangeActionEnum back to NOCHANGE when it is ready to be republished. /// /// HISTORY: New enumeration in IFC R2.0. Modified in IFC2x4. +class IFC_PARSE_API IfcChangeActionEnum : public express::DeclaredType { public: + IfcChangeActionEnum() {} + explicit IfcChangeActionEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcChangeAction_ADDED, IfcChangeAction_DELETED, IfcChangeAction_MODIFIED, IfcChangeAction_NOCHANGE, IfcChangeAction_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcChangeActionEnum (IfcEntityInstanceData&& e); - IfcChangeActionEnum (Value v); - IfcChangeActionEnum (const std::string& v); + // IfcChangeActionEnum (Value v); + // IfcChangeActionEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcChillerTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the typical types of Chillers classified by their method of heat rejection. /// The IfcChillerTypeEnum contains the following: /// @@ -1756,19 +4998,21 @@ class IFC_PARSE_API IfcChillerTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined chiller type. /// /// HISTORY: New enumeration in IFC R2x. +class IFC_PARSE_API IfcChillerTypeEnum : public express::DeclaredType { public: + IfcChillerTypeEnum() {} + explicit IfcChillerTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcChillerType_AIRCOOLED, IfcChillerType_HEATRECOVERY, IfcChillerType_WATERCOOLED, IfcChillerType_USERDEFINED, IfcChillerType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcChillerTypeEnum (IfcEntityInstanceData&& e); - IfcChillerTypeEnum (Value v); - IfcChillerTypeEnum (const std::string& v); + // IfcChillerTypeEnum (Value v); + // IfcChillerTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcChimneyTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: Enumeration defining the valid /// types of chimneys that can be predefined using the /// enumeration values. @@ -1779,19 +5023,21 @@ class IFC_PARSE_API IfcChimneyTypeEnum : public IfcUtil::IfcBaseType { /// NOTE Currently there are no specific enumerators /// defined, the IfcChimneyTypeEnum has been added /// for future extensions. +class IFC_PARSE_API IfcChimneyTypeEnum : public express::DeclaredType { public: + IfcChimneyTypeEnum() {} + explicit IfcChimneyTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcChimneyType_USERDEFINED, IfcChimneyType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcChimneyTypeEnum (IfcEntityInstanceData&& e); - IfcChimneyTypeEnum (Value v); - IfcChimneyTypeEnum (const std::string& v); + // IfcChimneyTypeEnum (Value v); + // IfcChimneyTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCoilTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the typical types of coils. /// /// The IfcCoilTypeEnum contains the following: @@ -1814,19 +5060,21 @@ class IFC_PARSE_API IfcCoilTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined coil type. /// /// HISTORY: New enumeration in IFC R2x. +class IFC_PARSE_API IfcCoilTypeEnum : public express::DeclaredType { public: + IfcCoilTypeEnum() {} + explicit IfcCoilTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCoilType_DXCOOLINGCOIL, IfcCoilType_ELECTRICHEATINGCOIL, IfcCoilType_GASHEATINGCOIL, IfcCoilType_HYDRONICCOIL, IfcCoilType_STEAMHEATINGCOIL, IfcCoilType_WATERCOOLINGCOIL, IfcCoilType_WATERHEATINGCOIL, IfcCoilType_USERDEFINED, IfcCoilType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCoilTypeEnum (IfcEntityInstanceData&& e); - IfcCoilTypeEnum (Value v); - IfcCoilTypeEnum (const std::string& v); + // IfcCoilTypeEnum (Value v); + // IfcCoilTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcColumnTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the /// different types of linear elements an IfcColumnType object /// can fulfill: @@ -1841,19 +5089,21 @@ class IFC_PARSE_API IfcColumnTypeEnum : public IfcUtil::IfcBaseType { /// future releases of IFC. /// HISTORY New Enumeration /// in Release IFC2x Edition 2. +class IFC_PARSE_API IfcColumnTypeEnum : public express::DeclaredType { public: + IfcColumnTypeEnum() {} + explicit IfcColumnTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcColumnType_COLUMN, IfcColumnType_PIERSTEM, IfcColumnType_PIERSTEM_SEGMENT, IfcColumnType_PILASTER, IfcColumnType_STANDCOLUMN, IfcColumnType_USERDEFINED, IfcColumnType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcColumnTypeEnum (IfcEntityInstanceData&& e); - IfcColumnTypeEnum (Value v); - IfcColumnTypeEnum (const std::string& v); + // IfcColumnTypeEnum (Value v); + // IfcColumnTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCommunicationsApplianceTypeEnum : public IfcUtil::IfcBaseType { /// Defines the range of different types of communications appliance that can be specified. /// /// HISTORY: New enumeration in IFC2x4 @@ -1870,19 +5120,21 @@ class IFC_PARSE_API IfcCommunicationsApplianceTypeEnum : public IfcUtil::IfcBase /// REPEATER: A repeater is an electronic device that receives a signal and retransmits it at a higher level and/or higher power, or onto the other side of an obstruction, so that the signal can cover longer distances without degradation. /// ROUTER: A router is a networking device whose software and hardware are usually tailored to the tasks of routing and forwarding information. For example, on the Internet, information is directed to various paths by routers. /// SCANNER: A machine that has the primary function of scanning the content of printed matter and converting it to digital format that can be stored in a computer. +class IFC_PARSE_API IfcCommunicationsApplianceTypeEnum : public express::DeclaredType { public: + IfcCommunicationsApplianceTypeEnum() {} + explicit IfcCommunicationsApplianceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCommunicationsApplianceType_ANTENNA, IfcCommunicationsApplianceType_AUTOMATON, IfcCommunicationsApplianceType_COMPUTER, IfcCommunicationsApplianceType_FAX, IfcCommunicationsApplianceType_GATEWAY, IfcCommunicationsApplianceType_INTELLIGENTPERIPHERAL, IfcCommunicationsApplianceType_IPNETWORKEQUIPMENT, IfcCommunicationsApplianceType_LINESIDEELECTRONICUNIT, IfcCommunicationsApplianceType_MODEM, IfcCommunicationsApplianceType_NETWORKAPPLIANCE, IfcCommunicationsApplianceType_NETWORKBRIDGE, IfcCommunicationsApplianceType_NETWORKHUB, IfcCommunicationsApplianceType_OPTICALLINETERMINAL, IfcCommunicationsApplianceType_OPTICALNETWORKUNIT, IfcCommunicationsApplianceType_PRINTER, IfcCommunicationsApplianceType_RADIOBLOCKCENTER, IfcCommunicationsApplianceType_REPEATER, IfcCommunicationsApplianceType_ROUTER, IfcCommunicationsApplianceType_SCANNER, IfcCommunicationsApplianceType_TELECOMMAND, IfcCommunicationsApplianceType_TELEPHONYEXCHANGE, IfcCommunicationsApplianceType_TRANSITIONCOMPONENT, IfcCommunicationsApplianceType_TRANSPONDER, IfcCommunicationsApplianceType_TRANSPORTEQUIPMENT, IfcCommunicationsApplianceType_USERDEFINED, IfcCommunicationsApplianceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCommunicationsApplianceTypeEnum (IfcEntityInstanceData&& e); - IfcCommunicationsApplianceTypeEnum (Value v); - IfcCommunicationsApplianceTypeEnum (const std::string& v); + // IfcCommunicationsApplianceTypeEnum (Value v); + // IfcCommunicationsApplianceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcComplexPropertyTemplateTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration defines the subtype of instances of IfcComplexProperty or IfcPhysicalComplexQuantity that may be created and defined by an IfcComplexPropertyTemplate. /// /// HISTORY New enumeration in IFC2x4. @@ -1891,19 +5143,21 @@ class IFC_PARSE_API IfcComplexPropertyTemplateTypeEnum : public IfcUtil::IfcBase /// /// P_COMPLEX: the properties defined by this IfcComplexPropertyTemplate are of type IfcComplexProperty. /// Q_COMPLEX: the properties defined by this IfcComplexPropertyTemplate are of type IfcPhysicalComplexQuantity. +class IFC_PARSE_API IfcComplexPropertyTemplateTypeEnum : public express::DeclaredType { public: + IfcComplexPropertyTemplateTypeEnum() {} + explicit IfcComplexPropertyTemplateTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcComplexPropertyTemplateType_P_COMPLEX, IfcComplexPropertyTemplateType_Q_COMPLEX} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcComplexPropertyTemplateTypeEnum (IfcEntityInstanceData&& e); - IfcComplexPropertyTemplateTypeEnum (Value v); - IfcComplexPropertyTemplateTypeEnum (const std::string& v); + // IfcComplexPropertyTemplateTypeEnum (Value v); + // IfcComplexPropertyTemplateTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCompressorTypeEnum : public IfcUtil::IfcBaseType { /// Types of compressors. /// The IfcCompressorTypeEnum contains the following: /// @@ -1926,19 +5180,21 @@ class IFC_PARSE_API IfcCompressorTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined compressor type. /// /// HISTORY: New enumeration in IFC R2x. +class IFC_PARSE_API IfcCompressorTypeEnum : public express::DeclaredType { public: + IfcCompressorTypeEnum() {} + explicit IfcCompressorTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCompressorType_BOOSTER, IfcCompressorType_DYNAMIC, IfcCompressorType_HERMETIC, IfcCompressorType_OPENTYPE, IfcCompressorType_RECIPROCATING, IfcCompressorType_ROLLINGPISTON, IfcCompressorType_ROTARY, IfcCompressorType_ROTARYVANE, IfcCompressorType_SCROLL, IfcCompressorType_SEMIHERMETIC, IfcCompressorType_SINGLESCREW, IfcCompressorType_SINGLESTAGE, IfcCompressorType_TROCHOIDAL, IfcCompressorType_TWINSCREW, IfcCompressorType_WELDEDSHELLHERMETIC, IfcCompressorType_USERDEFINED, IfcCompressorType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCompressorTypeEnum (IfcEntityInstanceData&& e); - IfcCompressorTypeEnum (Value v); - IfcCompressorTypeEnum (const std::string& v); + // IfcCompressorTypeEnum (Value v); + // IfcCompressorTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCondenserTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the typical types of condensers. Air is used as the cooling medium for AIRCOOLED; water is used as the cooling medium for all other types. The IfcCondenserTypeEnum contains the following: /// /// AIRCOOLED: A condenser in which heat is transferred to an air-stream. @@ -1952,19 +5208,21 @@ class IFC_PARSE_API IfcCondenserTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined condenser type. /// /// HISTORY: New enumeration in IFC 2x2. WATERCOOLED added in IFC 2x4. +class IFC_PARSE_API IfcCondenserTypeEnum : public express::DeclaredType { public: + IfcCondenserTypeEnum() {} + explicit IfcCondenserTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCondenserType_AIRCOOLED, IfcCondenserType_EVAPORATIVECOOLED, IfcCondenserType_WATERCOOLED, IfcCondenserType_WATERCOOLEDBRAZEDPLATE, IfcCondenserType_WATERCOOLEDSHELLCOIL, IfcCondenserType_WATERCOOLEDSHELLTUBE, IfcCondenserType_WATERCOOLEDTUBEINTUBE, IfcCondenserType_USERDEFINED, IfcCondenserType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCondenserTypeEnum (IfcEntityInstanceData&& e); - IfcCondenserTypeEnum (Value v); - IfcCondenserTypeEnum (const std::string& v); + // IfcCondenserTypeEnum (Value v); + // IfcCondenserTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcConnectionTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration defines the different ways how path based elements (such as IfcWallStandardCase) can connect, as shown in Figure 65. /// /// HISTORY New type in IFC Release 2.0 @@ -1985,19 +5243,21 @@ class IFC_PARSE_API IfcConnectionTypeEnum : public IfcUtil::IfcBaseType { /// RelatedConnectionType: AtStart /// /// Figure 65 — Connection types& data) : express::DeclaredType(data) {} + typedef enum {IfcConnectionType_ATEND, IfcConnectionType_ATPATH, IfcConnectionType_ATSTART, IfcConnectionType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcConnectionTypeEnum (IfcEntityInstanceData&& e); - IfcConnectionTypeEnum (Value v); - IfcConnectionTypeEnum (const std::string& v); + // IfcConnectionTypeEnum (Value v); + // IfcConnectionTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcConstraintEnum : public IfcUtil::IfcBaseType { /// IfcConstraintEnum is an enumeration used to qualify a constraint. /// /// HISTORY: New type in IFC Release 2.0 @@ -2015,19 +5275,21 @@ class IFC_PARSE_API IfcConstraintEnum : public IfcUtil::IfcBaseType { /// /// ADVISORY /// Qualifies a constraint such that it is advised that it is followed within or at the values set. +class IFC_PARSE_API IfcConstraintEnum : public express::DeclaredType { public: + IfcConstraintEnum() {} + explicit IfcConstraintEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcConstraint_ADVISORY, IfcConstraint_HARD, IfcConstraint_SOFT, IfcConstraint_USERDEFINED, IfcConstraint_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcConstraintEnum (IfcEntityInstanceData&& e); - IfcConstraintEnum (Value v); - IfcConstraintEnum (const std::string& v); + // IfcConstraintEnum (Value v); + // IfcConstraintEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcConstructionEquipmentResourceTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration is used to identify the primary purpose of a construction equipment resource. It is limited to the most common equipment used in construction. The IfcConstructionEquipmentResourceTypeEnum contains the following: /// /// DEMOLISHING: Removal or destruction of building elements. @@ -2042,19 +5304,21 @@ class IFC_PARSE_API IfcConstructionEquipmentResourceTypeEnum : public IfcUtil::I /// NOTDEFINED: Undefined resource. /// /// HISTORY: New enumeration in IFC2x4 +class IFC_PARSE_API IfcConstructionEquipmentResourceTypeEnum : public express::DeclaredType { public: + IfcConstructionEquipmentResourceTypeEnum() {} + explicit IfcConstructionEquipmentResourceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcConstructionEquipmentResourceType_DEMOLISHING, IfcConstructionEquipmentResourceType_EARTHMOVING, IfcConstructionEquipmentResourceType_ERECTING, IfcConstructionEquipmentResourceType_HEATING, IfcConstructionEquipmentResourceType_LIGHTING, IfcConstructionEquipmentResourceType_PAVING, IfcConstructionEquipmentResourceType_PUMPING, IfcConstructionEquipmentResourceType_TRANSPORTING, IfcConstructionEquipmentResourceType_USERDEFINED, IfcConstructionEquipmentResourceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcConstructionEquipmentResourceTypeEnum (IfcEntityInstanceData&& e); - IfcConstructionEquipmentResourceTypeEnum (Value v); - IfcConstructionEquipmentResourceTypeEnum (const std::string& v); + // IfcConstructionEquipmentResourceTypeEnum (Value v); + // IfcConstructionEquipmentResourceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcConstructionMaterialResourceTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration is used to identify the primary purpose of a construction material resource. It is limited to the most common raw materials used in construction and excludes materials commonly sold as finished products. The IfcConstructionMaterialResourceTypeEnum contains the following: /// /// AGGREGATES: Construction aggregate including sand, gravel, and crushed stone. @@ -2070,19 +5334,21 @@ class IFC_PARSE_API IfcConstructionMaterialResourceTypeEnum : public IfcUtil::If /// NOTDEFINED: Undefined resource. /// /// HISTORY: New enumeration in IFC2x4 +class IFC_PARSE_API IfcConstructionMaterialResourceTypeEnum : public express::DeclaredType { public: + IfcConstructionMaterialResourceTypeEnum() {} + explicit IfcConstructionMaterialResourceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcConstructionMaterialResourceType_AGGREGATES, IfcConstructionMaterialResourceType_CONCRETE, IfcConstructionMaterialResourceType_DRYWALL, IfcConstructionMaterialResourceType_FUEL, IfcConstructionMaterialResourceType_GYPSUM, IfcConstructionMaterialResourceType_MASONRY, IfcConstructionMaterialResourceType_METAL, IfcConstructionMaterialResourceType_PLASTIC, IfcConstructionMaterialResourceType_WOOD, IfcConstructionMaterialResourceType_USERDEFINED, IfcConstructionMaterialResourceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcConstructionMaterialResourceTypeEnum (IfcEntityInstanceData&& e); - IfcConstructionMaterialResourceTypeEnum (Value v); - IfcConstructionMaterialResourceTypeEnum (const std::string& v); + // IfcConstructionMaterialResourceTypeEnum (Value v); + // IfcConstructionMaterialResourceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcConstructionProductResourceTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration is used to identify the primary purpose of a construction product resource. It describes use of products created for construction, and excludes products of the finished building model. The IfcConstructionProductsResourceTypeEnum contains the following: /// /// ASSEMBLY: Construction of assemblies for use as input to the building model or other assemblies. @@ -2091,19 +5357,21 @@ class IFC_PARSE_API IfcConstructionProductResourceTypeEnum : public IfcUtil::Ifc /// NOTDEFINED: Undefined resource. /// /// HISTORY: New enumeration in IFC2x4 +class IFC_PARSE_API IfcConstructionProductResourceTypeEnum : public express::DeclaredType { public: + IfcConstructionProductResourceTypeEnum() {} + explicit IfcConstructionProductResourceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcConstructionProductResourceType_ASSEMBLY, IfcConstructionProductResourceType_FORMWORK, IfcConstructionProductResourceType_USERDEFINED, IfcConstructionProductResourceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcConstructionProductResourceTypeEnum (IfcEntityInstanceData&& e); - IfcConstructionProductResourceTypeEnum (Value v); - IfcConstructionProductResourceTypeEnum (const std::string& v); + // IfcConstructionProductResourceTypeEnum (Value v); + // IfcConstructionProductResourceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcControllerTypeEnum : public IfcUtil::IfcBaseType { /// The IfcControllerTypeEnum defines the range of different types of controller that can be specified. /// /// HISTORY: New type in IFC R2.0 @@ -2118,33 +5386,37 @@ class IFC_PARSE_API IfcControllerTypeEnum : public IfcUtil::IfcBaseType { /// TWOPOSITION: Output can be either on or off /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcControllerTypeEnum : public express::DeclaredType { public: + IfcControllerTypeEnum() {} + explicit IfcControllerTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcControllerType_FLOATING, IfcControllerType_MULTIPOSITION, IfcControllerType_PROGRAMMABLE, IfcControllerType_PROPORTIONAL, IfcControllerType_TWOPOSITION, IfcControllerType_USERDEFINED, IfcControllerType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcControllerTypeEnum (IfcEntityInstanceData&& e); - IfcControllerTypeEnum (Value v); - IfcControllerTypeEnum (const std::string& v); + // IfcControllerTypeEnum (Value v); + // IfcControllerTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcConveyorSegmentTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcConveyorSegmentTypeEnum : public express::DeclaredType { public: + IfcConveyorSegmentTypeEnum() {} + explicit IfcConveyorSegmentTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcConveyorSegmentType_BELTCONVEYOR, IfcConveyorSegmentType_BUCKETCONVEYOR, IfcConveyorSegmentType_CHUTECONVEYOR, IfcConveyorSegmentType_SCREWCONVEYOR, IfcConveyorSegmentType_USERDEFINED, IfcConveyorSegmentType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcConveyorSegmentTypeEnum (IfcEntityInstanceData&& e); - IfcConveyorSegmentTypeEnum (Value v); - IfcConveyorSegmentTypeEnum (const std::string& v); + // IfcConveyorSegmentTypeEnum (Value v); + // IfcConveyorSegmentTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCooledBeamTypeEnum : public IfcUtil::IfcBaseType { /// There are two general types of cooled or chilled beams: passive and active. /// /// An active Cooled Beam uses a fan or other auxilliary device to aid in air recirculation, while a passive @@ -2164,19 +5436,21 @@ class IFC_PARSE_API IfcCooledBeamTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined cooled beam type. /// /// HISTORY: New enumeration in IFC 2x2. +class IFC_PARSE_API IfcCooledBeamTypeEnum : public express::DeclaredType { public: + IfcCooledBeamTypeEnum() {} + explicit IfcCooledBeamTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCooledBeamType_ACTIVE, IfcCooledBeamType_PASSIVE, IfcCooledBeamType_USERDEFINED, IfcCooledBeamType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCooledBeamTypeEnum (IfcEntityInstanceData&& e); - IfcCooledBeamTypeEnum (Value v); - IfcCooledBeamTypeEnum (const std::string& v); + // IfcCooledBeamTypeEnum (Value v); + // IfcCooledBeamTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCoolingTowerTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the typical types of cooling towers. /// The IfcCoolingTowerTypeEnum contains the following: /// @@ -2189,38 +5463,42 @@ class IFC_PARSE_API IfcCoolingTowerTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined cooling tower type. /// /// HISTORY: New enumeration in IFC R2x. +class IFC_PARSE_API IfcCoolingTowerTypeEnum : public express::DeclaredType { public: + IfcCoolingTowerTypeEnum() {} + explicit IfcCoolingTowerTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCoolingTowerType_MECHANICALFORCEDDRAFT, IfcCoolingTowerType_MECHANICALINDUCEDDRAFT, IfcCoolingTowerType_NATURALDRAFT, IfcCoolingTowerType_USERDEFINED, IfcCoolingTowerType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCoolingTowerTypeEnum (IfcEntityInstanceData&& e); - IfcCoolingTowerTypeEnum (Value v); - IfcCoolingTowerTypeEnum (const std::string& v); + // IfcCoolingTowerTypeEnum (Value v); + // IfcCoolingTowerTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCostItemTypeEnum : public IfcUtil::IfcBaseType { /// An IfcCostItemTypeEnum is a list of the available types of cost items. /// HISTORY: New type in IFC2x4 /// Enumeration /// /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcCostItemTypeEnum : public express::DeclaredType { public: + IfcCostItemTypeEnum() {} + explicit IfcCostItemTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCostItemType_USERDEFINED, IfcCostItemType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCostItemTypeEnum (IfcEntityInstanceData&& e); - IfcCostItemTypeEnum (Value v); - IfcCostItemTypeEnum (const std::string& v); + // IfcCostItemTypeEnum (Value v); + // IfcCostItemTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCostScheduleTypeEnum : public IfcUtil::IfcBaseType { /// An IfcCostScheduleTypeEnum is a list of the available types of cost schedule from which that required may be selected. /// HISTORY: New type in IFC 2x2 /// Enumeration @@ -2234,33 +5512,37 @@ class IFC_PARSE_API IfcCostScheduleTypeEnum : public IfcUtil::IfcBaseType { /// SCHEDULEOFRATES: A listing of each type of goods forming construction or installation works with the cost of purchase, construction/installation, overheads and profit assigned so that additional items of that type can be costed. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcCostScheduleTypeEnum : public express::DeclaredType { public: + IfcCostScheduleTypeEnum() {} + explicit IfcCostScheduleTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCostScheduleType_BUDGET, IfcCostScheduleType_COSTPLAN, IfcCostScheduleType_ESTIMATE, IfcCostScheduleType_PRICEDBILLOFQUANTITIES, IfcCostScheduleType_SCHEDULEOFRATES, IfcCostScheduleType_TENDER, IfcCostScheduleType_UNPRICEDBILLOFQUANTITIES, IfcCostScheduleType_USERDEFINED, IfcCostScheduleType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCostScheduleTypeEnum (IfcEntityInstanceData&& e); - IfcCostScheduleTypeEnum (Value v); - IfcCostScheduleTypeEnum (const std::string& v); + // IfcCostScheduleTypeEnum (Value v); + // IfcCostScheduleTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCourseTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcCourseTypeEnum : public express::DeclaredType { public: + IfcCourseTypeEnum() {} + explicit IfcCourseTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCourseType_ARMOUR, IfcCourseType_BALLASTBED, IfcCourseType_CORE, IfcCourseType_FILTER, IfcCourseType_PAVEMENT, IfcCourseType_PROTECTION, IfcCourseType_USERDEFINED, IfcCourseType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCourseTypeEnum (IfcEntityInstanceData&& e); - IfcCourseTypeEnum (Value v); - IfcCourseTypeEnum (const std::string& v); + // IfcCourseTypeEnum (Value v); + // IfcCourseTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCoveringTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the range /// of different types of covering that can further specify an /// IfcCovering or an IfcCoveringType. @@ -2304,19 +5586,21 @@ class IFC_PARSE_API IfcCoveringTypeEnum : public IfcUtil::IfcBaseType { /// covering /// NOTDEFINED: undefined type of /// covering +class IFC_PARSE_API IfcCoveringTypeEnum : public express::DeclaredType { public: + IfcCoveringTypeEnum() {} + explicit IfcCoveringTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCoveringType_CEILING, IfcCoveringType_CLADDING, IfcCoveringType_COPING, IfcCoveringType_FLOORING, IfcCoveringType_INSULATION, IfcCoveringType_MEMBRANE, IfcCoveringType_MOLDING, IfcCoveringType_ROOFING, IfcCoveringType_SKIRTINGBOARD, IfcCoveringType_SLEEVING, IfcCoveringType_TOPPING, IfcCoveringType_WRAPPING, IfcCoveringType_USERDEFINED, IfcCoveringType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCoveringTypeEnum (IfcEntityInstanceData&& e); - IfcCoveringTypeEnum (Value v); - IfcCoveringTypeEnum (const std::string& v); + // IfcCoveringTypeEnum (Value v); + // IfcCoveringTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCrewResourceTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration is used to identify the primary purpose of a crew resource. The IfcCrewResourceTypeEnum contains the following: /// /// OFFICE: A composition of resources performing administration work in an office. @@ -2325,19 +5609,21 @@ class IFC_PARSE_API IfcCrewResourceTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined resource. /// /// HISTORY: New enumeration in IFC2x4 +class IFC_PARSE_API IfcCrewResourceTypeEnum : public express::DeclaredType { public: + IfcCrewResourceTypeEnum() {} + explicit IfcCrewResourceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCrewResourceType_OFFICE, IfcCrewResourceType_SITE, IfcCrewResourceType_USERDEFINED, IfcCrewResourceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCrewResourceTypeEnum (IfcEntityInstanceData&& e); - IfcCrewResourceTypeEnum (Value v); - IfcCrewResourceTypeEnum (const std::string& v); + // IfcCrewResourceTypeEnum (Value v); + // IfcCrewResourceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCurtainWallTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: Enumeration defining /// the valid types of curtain wall that can be predefined using the /// enumeration values. @@ -2347,19 +5633,21 @@ class IFC_PARSE_API IfcCurtainWallTypeEnum : public IfcUtil::IfcBaseType { /// are no specific enumerators defined, the IfcCurtainWallTypeEnum /// has /// been added for future extensions. +class IFC_PARSE_API IfcCurtainWallTypeEnum : public express::DeclaredType { public: + IfcCurtainWallTypeEnum() {} + explicit IfcCurtainWallTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCurtainWallType_USERDEFINED, IfcCurtainWallType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCurtainWallTypeEnum (IfcEntityInstanceData&& e); - IfcCurtainWallTypeEnum (Value v); - IfcCurtainWallTypeEnum (const std::string& v); + // IfcCurtainWallTypeEnum (Value v); + // IfcCurtainWallTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcCurveInterpolationEnum : public IfcUtil::IfcBaseType { /// IfcCurveInterpolationEnum specifies the possible methods /// for the interpolation of property values given as a curve. /// @@ -2377,19 +5665,21 @@ class IFC_PARSE_API IfcCurveInterpolationEnum : public IfcUtil::IfcBaseType { /// logarithm (base 10) of the values. /// NOTDEFINED: No interpolation information is /// provided +class IFC_PARSE_API IfcCurveInterpolationEnum : public express::DeclaredType { public: + IfcCurveInterpolationEnum() {} + explicit IfcCurveInterpolationEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcCurveInterpolation_LINEAR, IfcCurveInterpolation_LOG_LINEAR, IfcCurveInterpolation_LOG_LOG, IfcCurveInterpolation_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcCurveInterpolationEnum (IfcEntityInstanceData&& e); - IfcCurveInterpolationEnum (Value v); - IfcCurveInterpolationEnum (const std::string& v); + // IfcCurveInterpolationEnum (Value v); + // IfcCurveInterpolationEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDamperTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration defines the various types of damper: /// /// BALANCINGDAMPER: Damper used for purposes of manually balancing pressure differences. Commonly operated by mechanical adjustment. @@ -2407,19 +5697,21 @@ class IFC_PARSE_API IfcDamperTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined damper. /// /// HISTORY: New enumeration in IFC R2.0 +class IFC_PARSE_API IfcDamperTypeEnum : public express::DeclaredType { public: + IfcDamperTypeEnum() {} + explicit IfcDamperTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDamperType_BACKDRAFTDAMPER, IfcDamperType_BALANCINGDAMPER, IfcDamperType_BLASTDAMPER, IfcDamperType_CONTROLDAMPER, IfcDamperType_FIREDAMPER, IfcDamperType_FIRESMOKEDAMPER, IfcDamperType_FUMEHOODEXHAUST, IfcDamperType_GRAVITYDAMPER, IfcDamperType_GRAVITYRELIEFDAMPER, IfcDamperType_RELIEFDAMPER, IfcDamperType_SMOKEDAMPER, IfcDamperType_USERDEFINED, IfcDamperType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDamperTypeEnum (IfcEntityInstanceData&& e); - IfcDamperTypeEnum (Value v); - IfcDamperTypeEnum (const std::string& v); + // IfcDamperTypeEnum (Value v); + // IfcDamperTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDataOriginEnum : public IfcUtil::IfcBaseType { /// IfcDataOriginEnum identifies the origin of time data: /// /// MEASURED: The origin of the time data is a measurement device. @@ -2428,19 +5720,21 @@ class IFC_PARSE_API IfcDataOriginEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: The origin of the time data is undefined. /// /// HISTORY: New enumeration in IFC 2x2. +class IFC_PARSE_API IfcDataOriginEnum : public express::DeclaredType { public: + IfcDataOriginEnum() {} + explicit IfcDataOriginEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDataOrigin_MEASURED, IfcDataOrigin_PREDICTED, IfcDataOrigin_SIMULATED, IfcDataOrigin_USERDEFINED, IfcDataOrigin_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDataOriginEnum (IfcEntityInstanceData&& e); - IfcDataOriginEnum (Value v); - IfcDataOriginEnum (const std::string& v); + // IfcDataOriginEnum (Value v); + // IfcDataOriginEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDerivedUnitEnum : public IfcUtil::IfcBaseType { /// IfcDerivedUnitEnum is an enumeration type for allowed types of derived units. /// ENUMERATION /// @@ -2498,19 +5792,21 @@ class IFC_PARSE_API IfcDerivedUnitEnum : public IfcUtil::IfcBaseType { /// HISTORY: New type in IFC Release 2.0. /// /// IFC 2x4 change: added TEMPERATURERATEOFCHANGE. +class IFC_PARSE_API IfcDerivedUnitEnum : public express::DeclaredType { public: + IfcDerivedUnitEnum() {} + explicit IfcDerivedUnitEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDerivedUnit_ACCELERATIONUNIT, IfcDerivedUnit_ANGULARVELOCITYUNIT, IfcDerivedUnit_AREADENSITYUNIT, IfcDerivedUnit_COMPOUNDPLANEANGLEUNIT, IfcDerivedUnit_CURVATUREUNIT, IfcDerivedUnit_DYNAMICVISCOSITYUNIT, IfcDerivedUnit_HEATFLUXDENSITYUNIT, IfcDerivedUnit_HEATINGVALUEUNIT, IfcDerivedUnit_INTEGERCOUNTRATEUNIT, IfcDerivedUnit_IONCONCENTRATIONUNIT, IfcDerivedUnit_ISOTHERMALMOISTURECAPACITYUNIT, IfcDerivedUnit_KINEMATICVISCOSITYUNIT, IfcDerivedUnit_LINEARFORCEUNIT, IfcDerivedUnit_LINEARMOMENTUNIT, IfcDerivedUnit_LINEARSTIFFNESSUNIT, IfcDerivedUnit_LINEARVELOCITYUNIT, IfcDerivedUnit_LUMINOUSINTENSITYDISTRIBUTIONUNIT, IfcDerivedUnit_MASSDENSITYUNIT, IfcDerivedUnit_MASSFLOWRATEUNIT, IfcDerivedUnit_MASSPERLENGTHUNIT, IfcDerivedUnit_MODULUSOFELASTICITYUNIT, IfcDerivedUnit_MODULUSOFLINEARSUBGRADEREACTIONUNIT, IfcDerivedUnit_MODULUSOFROTATIONALSUBGRADEREACTIONUNIT, IfcDerivedUnit_MODULUSOFSUBGRADEREACTIONUNIT, IfcDerivedUnit_MOISTUREDIFFUSIVITYUNIT, IfcDerivedUnit_MOLECULARWEIGHTUNIT, IfcDerivedUnit_MOMENTOFINERTIAUNIT, IfcDerivedUnit_PHUNIT, IfcDerivedUnit_PLANARFORCEUNIT, IfcDerivedUnit_ROTATIONALFREQUENCYUNIT, IfcDerivedUnit_ROTATIONALMASSUNIT, IfcDerivedUnit_ROTATIONALSTIFFNESSUNIT, IfcDerivedUnit_SECTIONAREAINTEGRALUNIT, IfcDerivedUnit_SECTIONMODULUSUNIT, IfcDerivedUnit_SHEARMODULUSUNIT, IfcDerivedUnit_SOUNDPOWERLEVELUNIT, IfcDerivedUnit_SOUNDPOWERUNIT, IfcDerivedUnit_SOUNDPRESSURELEVELUNIT, IfcDerivedUnit_SOUNDPRESSUREUNIT, IfcDerivedUnit_SPECIFICHEATCAPACITYUNIT, IfcDerivedUnit_TEMPERATUREGRADIENTUNIT, IfcDerivedUnit_TEMPERATURERATEOFCHANGEUNIT, IfcDerivedUnit_THERMALADMITTANCEUNIT, IfcDerivedUnit_THERMALCONDUCTANCEUNIT, IfcDerivedUnit_THERMALEXPANSIONCOEFFICIENTUNIT, IfcDerivedUnit_THERMALRESISTANCEUNIT, IfcDerivedUnit_THERMALTRANSMITTANCEUNIT, IfcDerivedUnit_TORQUEUNIT, IfcDerivedUnit_VAPORPERMEABILITYUNIT, IfcDerivedUnit_VOLUMETRICFLOWRATEUNIT, IfcDerivedUnit_WARPINGCONSTANTUNIT, IfcDerivedUnit_WARPINGMOMENTUNIT, IfcDerivedUnit_USERDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDerivedUnitEnum (IfcEntityInstanceData&& e); - IfcDerivedUnitEnum (Value v); - IfcDerivedUnitEnum (const std::string& v); + // IfcDerivedUnitEnum (Value v); + // IfcDerivedUnitEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDirectionSenseEnum : public IfcUtil::IfcBaseType { /// IfcDirectionSenseEnum is an enumeration denoting whether sense of direction is positive or negative along the given axis. /// /// ENUMERATION @@ -2519,19 +5815,21 @@ class IFC_PARSE_API IfcDirectionSenseEnum : public IfcUtil::IfcBaseType { /// NEGATIVE: Direction defined to be negative. /// /// HISTORY New Type in IFC2x. +class IFC_PARSE_API IfcDirectionSenseEnum : public express::DeclaredType { public: + IfcDirectionSenseEnum() {} + explicit IfcDirectionSenseEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDirectionSense_NEGATIVE, IfcDirectionSense_POSITIVE} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDirectionSenseEnum (IfcEntityInstanceData&& e); - IfcDirectionSenseEnum (Value v); - IfcDirectionSenseEnum (const std::string& v); + // IfcDirectionSenseEnum (Value v); + // IfcDirectionSenseEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDiscreteAccessoryTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the different types of discrete accessories: /// /// ANCHORPLATE: An accessory consisting of a steel plate, shear stud connectors or welded-on rebar which is embedded into the surface of a concrete element so that other elements can be welded or bolted onto it later. @@ -2541,33 +5839,37 @@ class IFC_PARSE_API IfcDiscreteAccessoryTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined accessory /// /// HISTORY New Enumeration in IFC 2x4. +class IFC_PARSE_API IfcDiscreteAccessoryTypeEnum : public express::DeclaredType { public: + IfcDiscreteAccessoryTypeEnum() {} + explicit IfcDiscreteAccessoryTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDiscreteAccessoryType_ANCHORPLATE, IfcDiscreteAccessoryType_BIRDPROTECTION, IfcDiscreteAccessoryType_BRACKET, IfcDiscreteAccessoryType_CABLEARRANGER, IfcDiscreteAccessoryType_ELASTIC_CUSHION, IfcDiscreteAccessoryType_EXPANSION_JOINT_DEVICE, IfcDiscreteAccessoryType_FILLER, IfcDiscreteAccessoryType_FLASHING, IfcDiscreteAccessoryType_INSULATOR, IfcDiscreteAccessoryType_LOCK, IfcDiscreteAccessoryType_PANEL_STRENGTHENING, IfcDiscreteAccessoryType_POINTMACHINEMOUNTINGDEVICE, IfcDiscreteAccessoryType_POINT_MACHINE_LOCKING_DEVICE, IfcDiscreteAccessoryType_RAILBRACE, IfcDiscreteAccessoryType_RAILPAD, IfcDiscreteAccessoryType_RAIL_LUBRICATION, IfcDiscreteAccessoryType_RAIL_MECHANICAL_EQUIPMENT, IfcDiscreteAccessoryType_SHOE, IfcDiscreteAccessoryType_SLIDINGCHAIR, IfcDiscreteAccessoryType_SOUNDABSORPTION, IfcDiscreteAccessoryType_TENSIONINGEQUIPMENT, IfcDiscreteAccessoryType_USERDEFINED, IfcDiscreteAccessoryType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDiscreteAccessoryTypeEnum (IfcEntityInstanceData&& e); - IfcDiscreteAccessoryTypeEnum (Value v); - IfcDiscreteAccessoryTypeEnum (const std::string& v); + // IfcDiscreteAccessoryTypeEnum (Value v); + // IfcDiscreteAccessoryTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDistributionBoardTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcDistributionBoardTypeEnum : public express::DeclaredType { public: + IfcDistributionBoardTypeEnum() {} + explicit IfcDistributionBoardTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDistributionBoardType_CONSUMERUNIT, IfcDistributionBoardType_DISPATCHINGBOARD, IfcDistributionBoardType_DISTRIBUTIONBOARD, IfcDistributionBoardType_DISTRIBUTIONFRAME, IfcDistributionBoardType_MOTORCONTROLCENTRE, IfcDistributionBoardType_SWITCHBOARD, IfcDistributionBoardType_USERDEFINED, IfcDistributionBoardType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDistributionBoardTypeEnum (IfcEntityInstanceData&& e); - IfcDistributionBoardTypeEnum (Value v); - IfcDistributionBoardTypeEnum (const std::string& v); + // IfcDistributionBoardTypeEnum (Value v); + // IfcDistributionBoardTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDistributionChamberElementTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration identifies different types of distribution chambers. /// /// Valid enumerations are: @@ -2584,33 +5886,37 @@ class IFC_PARSE_API IfcDistributionChamberElementTypeEnum : public IfcUtil::IfcB /// NOTDEFINED: Undefined chamber type. /// /// HISTORY: New enumeration in IFC R2x2 +class IFC_PARSE_API IfcDistributionChamberElementTypeEnum : public express::DeclaredType { public: + IfcDistributionChamberElementTypeEnum() {} + explicit IfcDistributionChamberElementTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDistributionChamberElementType_FORMEDDUCT, IfcDistributionChamberElementType_INSPECTIONCHAMBER, IfcDistributionChamberElementType_INSPECTIONPIT, IfcDistributionChamberElementType_MANHOLE, IfcDistributionChamberElementType_METERCHAMBER, IfcDistributionChamberElementType_SUMP, IfcDistributionChamberElementType_TRENCH, IfcDistributionChamberElementType_VALVECHAMBER, IfcDistributionChamberElementType_USERDEFINED, IfcDistributionChamberElementType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDistributionChamberElementTypeEnum (IfcEntityInstanceData&& e); - IfcDistributionChamberElementTypeEnum (Value v); - IfcDistributionChamberElementTypeEnum (const std::string& v); + // IfcDistributionChamberElementTypeEnum (Value v); + // IfcDistributionChamberElementTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDistributionPortTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcDistributionPortTypeEnum : public express::DeclaredType { public: + IfcDistributionPortTypeEnum() {} + explicit IfcDistributionPortTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDistributionPortType_CABLE, IfcDistributionPortType_CABLECARRIER, IfcDistributionPortType_DUCT, IfcDistributionPortType_PIPE, IfcDistributionPortType_WIRELESS, IfcDistributionPortType_USERDEFINED, IfcDistributionPortType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDistributionPortTypeEnum (IfcEntityInstanceData&& e); - IfcDistributionPortTypeEnum (Value v); - IfcDistributionPortTypeEnum (const std::string& v); + // IfcDistributionPortTypeEnum (Value v); + // IfcDistributionPortTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDistributionSystemEnum : public IfcUtil::IfcBaseType { /// This enumeration identifies different types of distribution systems. /// /// HISTORY: New enumeration in IFC R2x4 @@ -2658,19 +5964,21 @@ class IFC_PARSE_API IfcDistributionSystemEnum : public IfcUtil::IfcBaseType { /// SIGNAL: A raw analog signal, such as modulated data or measurements from sensors. /// TELEPHONE: A transport or network dedicated to telephone system usage. /// TV: A transport of multiple media sources (e.g. analog cable, satellite, over-the-air). +class IFC_PARSE_API IfcDistributionSystemEnum : public express::DeclaredType { public: + IfcDistributionSystemEnum() {} + explicit IfcDistributionSystemEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDistributionSystem_AIRCONDITIONING, IfcDistributionSystem_AUDIOVISUAL, IfcDistributionSystem_CATENARY_SYSTEM, IfcDistributionSystem_CHEMICAL, IfcDistributionSystem_CHILLEDWATER, IfcDistributionSystem_COMMUNICATION, IfcDistributionSystem_COMPRESSEDAIR, IfcDistributionSystem_CONDENSERWATER, IfcDistributionSystem_CONTROL, IfcDistributionSystem_CONVEYING, IfcDistributionSystem_DATA, IfcDistributionSystem_DISPOSAL, IfcDistributionSystem_DOMESTICCOLDWATER, IfcDistributionSystem_DOMESTICHOTWATER, IfcDistributionSystem_DRAINAGE, IfcDistributionSystem_EARTHING, IfcDistributionSystem_ELECTRICAL, IfcDistributionSystem_ELECTROACOUSTIC, IfcDistributionSystem_EXHAUST, IfcDistributionSystem_FIREPROTECTION, IfcDistributionSystem_FIXEDTRANSMISSIONNETWORK, IfcDistributionSystem_FUEL, IfcDistributionSystem_GAS, IfcDistributionSystem_HAZARDOUS, IfcDistributionSystem_HEATING, IfcDistributionSystem_LIGHTING, IfcDistributionSystem_LIGHTNINGPROTECTION, IfcDistributionSystem_MOBILENETWORK, IfcDistributionSystem_MONITORINGSYSTEM, IfcDistributionSystem_MUNICIPALSOLIDWASTE, IfcDistributionSystem_OIL, IfcDistributionSystem_OPERATIONAL, IfcDistributionSystem_OPERATIONALTELEPHONYSYSTEM, IfcDistributionSystem_OVERHEAD_CONTACTLINE_SYSTEM, IfcDistributionSystem_POWERGENERATION, IfcDistributionSystem_RAINWATER, IfcDistributionSystem_REFRIGERATION, IfcDistributionSystem_RETURN_CIRCUIT, IfcDistributionSystem_SECURITY, IfcDistributionSystem_SEWAGE, IfcDistributionSystem_SIGNAL, IfcDistributionSystem_STORMWATER, IfcDistributionSystem_TELEPHONE, IfcDistributionSystem_TV, IfcDistributionSystem_VACUUM, IfcDistributionSystem_VENT, IfcDistributionSystem_VENTILATION, IfcDistributionSystem_WASTEWATER, IfcDistributionSystem_WATERSUPPLY, IfcDistributionSystem_USERDEFINED, IfcDistributionSystem_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDistributionSystemEnum (IfcEntityInstanceData&& e); - IfcDistributionSystemEnum (Value v); - IfcDistributionSystemEnum (const std::string& v); + // IfcDistributionSystemEnum (Value v); + // IfcDistributionSystemEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDocumentConfidentialityEnum : public IfcUtil::IfcBaseType { /// IfcDocumentConfidentialityEnum enables selection of the level of confidentiality of document information from a list of choices. /// /// HISTORY: New enumeration in IFC 2x @@ -2683,35 +5991,39 @@ class IFC_PARSE_API IfcDocumentConfidentialityEnum : public IfcUtil::IfcBaseType /// PERSONAL: Document is personal to the author. /// USERDEFINED /// NOTDEFINED +class IFC_PARSE_API IfcDocumentConfidentialityEnum : public express::DeclaredType { public: + IfcDocumentConfidentialityEnum() {} + explicit IfcDocumentConfidentialityEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDocumentConfidentiality_CONFIDENTIAL, IfcDocumentConfidentiality_PERSONAL, IfcDocumentConfidentiality_PUBLIC, IfcDocumentConfidentiality_RESTRICTED, IfcDocumentConfidentiality_USERDEFINED, IfcDocumentConfidentiality_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDocumentConfidentialityEnum (IfcEntityInstanceData&& e); - IfcDocumentConfidentialityEnum (Value v); - IfcDocumentConfidentialityEnum (const std::string& v); + // IfcDocumentConfidentialityEnum (Value v); + // IfcDocumentConfidentialityEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDocumentStatusEnum : public IfcUtil::IfcBaseType { /// IfcDocumentStatusEnum enables selection of the status of document information from a list of choices. /// /// HISTORY: New enumeration in IFC Release 2x. +class IFC_PARSE_API IfcDocumentStatusEnum : public express::DeclaredType { public: + IfcDocumentStatusEnum() {} + explicit IfcDocumentStatusEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDocumentStatus_DRAFT, IfcDocumentStatus_FINAL, IfcDocumentStatus_FINALDRAFT, IfcDocumentStatus_REVISION, IfcDocumentStatus_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDocumentStatusEnum (IfcEntityInstanceData&& e); - IfcDocumentStatusEnum (Value v); - IfcDocumentStatusEnum (const std::string& v); + // IfcDocumentStatusEnum (Value v); + // IfcDocumentStatusEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDoorPanelOperationEnum : public IfcUtil::IfcBaseType { /// This enumeration defines the basic ways how individual door panels operate as shown in Figure 164. /// HISTORY New Enumeration in IFC Release 2.0. /// IFC2x4 CHANGE Enumerator FIXEDPANELadded. @@ -2745,19 +6057,21 @@ class IFC_PARSE_API IfcDoorPanelOperationEnum : public IfcUtil::IfcBaseType { /// Figure 165 — Door panel operations /// /// NOTE Figures (symbolic representation) depend on the national building code. These figures are only shown as illustrations +class IFC_PARSE_API IfcDoorPanelOperationEnum : public express::DeclaredType { public: + IfcDoorPanelOperationEnum() {} + explicit IfcDoorPanelOperationEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDoorPanelOperation_DOUBLE_ACTING, IfcDoorPanelOperation_FIXEDPANEL, IfcDoorPanelOperation_FOLDING, IfcDoorPanelOperation_REVOLVING, IfcDoorPanelOperation_ROLLINGUP, IfcDoorPanelOperation_SLIDING, IfcDoorPanelOperation_SWINGING, IfcDoorPanelOperation_USERDEFINED, IfcDoorPanelOperation_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDoorPanelOperationEnum (IfcEntityInstanceData&& e); - IfcDoorPanelOperationEnum (Value v); - IfcDoorPanelOperationEnum (const std::string& v); + // IfcDoorPanelOperationEnum (Value v); + // IfcDoorPanelOperationEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDoorPanelPositionEnum : public IfcUtil::IfcBaseType { /// Definition: This enumeration defines the basic ways to describe the location of a door panel within a door lining. /// /// HISTORY New Enumeration in IFC Release 2.x @@ -2765,19 +6079,21 @@ class IFC_PARSE_API IfcDoorPanelPositionEnum : public IfcUtil::IfcBaseType { /// Figure 166 shows the designation of a door panel with PanelPosition = LEFT and a door panel with PanelPosition = RIGHT within a door style with OperationType = DOUBLE_DOOR_SINGLE_SWING. The position is given as shown in the XZ plane of the local placement, looking into the direction of the positive Y axis. /// /// Figure 166 — Door panel positions +class IFC_PARSE_API IfcDoorPanelPositionEnum : public express::DeclaredType { public: + IfcDoorPanelPositionEnum() {} + explicit IfcDoorPanelPositionEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDoorPanelPosition_LEFT, IfcDoorPanelPosition_MIDDLE, IfcDoorPanelPosition_RIGHT, IfcDoorPanelPosition_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDoorPanelPositionEnum (IfcEntityInstanceData&& e); - IfcDoorPanelPositionEnum (Value v); - IfcDoorPanelPositionEnum (const std::string& v); + // IfcDoorPanelPositionEnum (Value v); + // IfcDoorPanelPositionEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDoorTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the /// different predefined types of an IfcDoorType object can /// fulfill: @@ -2794,19 +6110,21 @@ class IFC_PARSE_API IfcDoorTypeEnum : public IfcUtil::IfcBaseType { /// /// HISTORY New Enumeration /// in IFC2x4. +class IFC_PARSE_API IfcDoorTypeEnum : public express::DeclaredType { public: + IfcDoorTypeEnum() {} + explicit IfcDoorTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDoorType_BOOM_BARRIER, IfcDoorType_DOOR, IfcDoorType_GATE, IfcDoorType_TRAPDOOR, IfcDoorType_TURNSTILE, IfcDoorType_USERDEFINED, IfcDoorType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDoorTypeEnum (IfcEntityInstanceData&& e); - IfcDoorTypeEnum (Value v); - IfcDoorTypeEnum (const std::string& v); + // IfcDoorTypeEnum (Value v); + // IfcDoorTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDoorTypeOperationEnum : public IfcUtil::IfcBaseType { /// This enumeration defines the basic ways to describe how doors operate, as shown in Figure 66. It combines the partitioning of the door into a single or multiple door panels and the operation types of that panels. /// /// In the most common case of swinging doors the IfcDoorTypeOperationEnum defined the hinge side (left hing or right hung) and the opening direction (opening to the left, opening to the right). Whether the door opens inwards or outwards is determined by the local coordinate system of the IfcDoor, or IfcDoorStandardCase. @@ -2987,19 +6305,21 @@ class IFC_PARSE_API IfcDoorTypeOperationEnum : public IfcUtil::IfcBaseType { /// The location of the panel relative to the wall thickness is /// defined by theObjectPlacement at IfcDoor, and the /// IfcDoorLiningProperties.LiningOffset parameter. +class IFC_PARSE_API IfcDoorTypeOperationEnum : public express::DeclaredType { public: + IfcDoorTypeOperationEnum() {} + explicit IfcDoorTypeOperationEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDoorTypeOperation_DOUBLE_DOOR_DOUBLE_SWING, IfcDoorTypeOperation_DOUBLE_DOOR_FOLDING, IfcDoorTypeOperation_DOUBLE_DOOR_LIFTING_VERTICAL, IfcDoorTypeOperation_DOUBLE_DOOR_SINGLE_SWING, IfcDoorTypeOperation_DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT, IfcDoorTypeOperation_DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT, IfcDoorTypeOperation_DOUBLE_DOOR_SLIDING, IfcDoorTypeOperation_DOUBLE_SWING_LEFT, IfcDoorTypeOperation_DOUBLE_SWING_RIGHT, IfcDoorTypeOperation_FOLDING_TO_LEFT, IfcDoorTypeOperation_FOLDING_TO_RIGHT, IfcDoorTypeOperation_LIFTING_HORIZONTAL, IfcDoorTypeOperation_LIFTING_VERTICAL_LEFT, IfcDoorTypeOperation_LIFTING_VERTICAL_RIGHT, IfcDoorTypeOperation_REVOLVING, IfcDoorTypeOperation_REVOLVING_VERTICAL, IfcDoorTypeOperation_ROLLINGUP, IfcDoorTypeOperation_SINGLE_SWING_LEFT, IfcDoorTypeOperation_SINGLE_SWING_RIGHT, IfcDoorTypeOperation_SLIDING_TO_LEFT, IfcDoorTypeOperation_SLIDING_TO_RIGHT, IfcDoorTypeOperation_SWING_FIXED_LEFT, IfcDoorTypeOperation_SWING_FIXED_RIGHT, IfcDoorTypeOperation_USERDEFINED, IfcDoorTypeOperation_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDoorTypeOperationEnum (IfcEntityInstanceData&& e); - IfcDoorTypeOperationEnum (Value v); - IfcDoorTypeOperationEnum (const std::string& v); + // IfcDoorTypeOperationEnum (Value v); + // IfcDoorTypeOperationEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDuctFittingTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration is used to identify the primary purpose of a duct fitting. This is a very basic categorization mechanism /// to generically identify the duct fitting type. Subcategories /// of duct fittings are not enumerated. @@ -3033,19 +6353,21 @@ class IFC_PARSE_API IfcDuctFittingTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined fitting. /// /// HISTORY: New enumeration in IFC 2x2 +class IFC_PARSE_API IfcDuctFittingTypeEnum : public express::DeclaredType { public: + IfcDuctFittingTypeEnum() {} + explicit IfcDuctFittingTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDuctFittingType_BEND, IfcDuctFittingType_CONNECTOR, IfcDuctFittingType_ENTRY, IfcDuctFittingType_EXIT, IfcDuctFittingType_JUNCTION, IfcDuctFittingType_OBSTRUCTION, IfcDuctFittingType_TRANSITION, IfcDuctFittingType_USERDEFINED, IfcDuctFittingType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDuctFittingTypeEnum (IfcEntityInstanceData&& e); - IfcDuctFittingTypeEnum (Value v); - IfcDuctFittingTypeEnum (const std::string& v); + // IfcDuctFittingTypeEnum (Value v); + // IfcDuctFittingTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDuctSegmentTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration is used to identify the primary purpose of a /// duct segment. This is a very basic categorization mechanism /// to generically identify the duct segment type. Subcategories @@ -3061,19 +6383,21 @@ class IFC_PARSE_API IfcDuctSegmentTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined segment. /// /// HISTORY: New enumeration in IFC 2x2 +class IFC_PARSE_API IfcDuctSegmentTypeEnum : public express::DeclaredType { public: + IfcDuctSegmentTypeEnum() {} + explicit IfcDuctSegmentTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDuctSegmentType_FLEXIBLESEGMENT, IfcDuctSegmentType_RIGIDSEGMENT, IfcDuctSegmentType_USERDEFINED, IfcDuctSegmentType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDuctSegmentTypeEnum (IfcEntityInstanceData&& e); - IfcDuctSegmentTypeEnum (Value v); - IfcDuctSegmentTypeEnum (const std::string& v); + // IfcDuctSegmentTypeEnum (Value v); + // IfcDuctSegmentTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcDuctSilencerTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the typical types of duct silencers. /// The IfcDuctSilencerTypeEnum contains the following: /// @@ -3084,47 +6408,53 @@ class IFC_PARSE_API IfcDuctSilencerTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined duct silencer type. /// /// HISTORY: New enumeration in IFC 2x2. +class IFC_PARSE_API IfcDuctSilencerTypeEnum : public express::DeclaredType { public: + IfcDuctSilencerTypeEnum() {} + explicit IfcDuctSilencerTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcDuctSilencerType_FLATOVAL, IfcDuctSilencerType_RECTANGULAR, IfcDuctSilencerType_ROUND, IfcDuctSilencerType_USERDEFINED, IfcDuctSilencerType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcDuctSilencerTypeEnum (IfcEntityInstanceData&& e); - IfcDuctSilencerTypeEnum (Value v); - IfcDuctSilencerTypeEnum (const std::string& v); + // IfcDuctSilencerTypeEnum (Value v); + // IfcDuctSilencerTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcEarthworksCutTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcEarthworksCutTypeEnum : public express::DeclaredType { public: + IfcEarthworksCutTypeEnum() {} + explicit IfcEarthworksCutTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcEarthworksCutType_BASE_EXCAVATION, IfcEarthworksCutType_CUT, IfcEarthworksCutType_DREDGING, IfcEarthworksCutType_EXCAVATION, IfcEarthworksCutType_OVEREXCAVATION, IfcEarthworksCutType_PAVEMENTMILLING, IfcEarthworksCutType_STEPEXCAVATION, IfcEarthworksCutType_TOPSOILREMOVAL, IfcEarthworksCutType_TRENCH, IfcEarthworksCutType_USERDEFINED, IfcEarthworksCutType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcEarthworksCutTypeEnum (IfcEntityInstanceData&& e); - IfcEarthworksCutTypeEnum (Value v); - IfcEarthworksCutTypeEnum (const std::string& v); + // IfcEarthworksCutTypeEnum (Value v); + // IfcEarthworksCutTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcEarthworksFillTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcEarthworksFillTypeEnum : public express::DeclaredType { public: + IfcEarthworksFillTypeEnum() {} + explicit IfcEarthworksFillTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcEarthworksFillType_BACKFILL, IfcEarthworksFillType_COUNTERWEIGHT, IfcEarthworksFillType_EMBANKMENT, IfcEarthworksFillType_SLOPEFILL, IfcEarthworksFillType_SUBGRADE, IfcEarthworksFillType_SUBGRADEBED, IfcEarthworksFillType_TRANSITIONSECTION, IfcEarthworksFillType_USERDEFINED, IfcEarthworksFillType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcEarthworksFillTypeEnum (IfcEntityInstanceData&& e); - IfcEarthworksFillTypeEnum (Value v); - IfcEarthworksFillTypeEnum (const std::string& v); + // IfcEarthworksFillTypeEnum (Value v); + // IfcEarthworksFillTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcElectricApplianceTypeEnum : public IfcUtil::IfcBaseType { /// The IfcElectricApplianceTypeEnum defines the range of different types of electrical appliance that can be specified. /// /// HISTORY: New type in IFC R2.0. @@ -3154,19 +6484,21 @@ class IFC_PARSE_API IfcElectricApplianceTypeEnum : public IfcUtil::IfcBaseType { /// WASHINGMACHINE: An appliance that has the primary function of washing clothes. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcElectricApplianceTypeEnum : public express::DeclaredType { public: + IfcElectricApplianceTypeEnum() {} + explicit IfcElectricApplianceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcElectricApplianceType_DISHWASHER, IfcElectricApplianceType_ELECTRICCOOKER, IfcElectricApplianceType_FREESTANDINGELECTRICHEATER, IfcElectricApplianceType_FREESTANDINGFAN, IfcElectricApplianceType_FREESTANDINGWATERCOOLER, IfcElectricApplianceType_FREESTANDINGWATERHEATER, IfcElectricApplianceType_FREEZER, IfcElectricApplianceType_FRIDGE_FREEZER, IfcElectricApplianceType_HANDDRYER, IfcElectricApplianceType_KITCHENMACHINE, IfcElectricApplianceType_MICROWAVE, IfcElectricApplianceType_PHOTOCOPIER, IfcElectricApplianceType_REFRIGERATOR, IfcElectricApplianceType_TUMBLEDRYER, IfcElectricApplianceType_VENDINGMACHINE, IfcElectricApplianceType_WASHINGMACHINE, IfcElectricApplianceType_USERDEFINED, IfcElectricApplianceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcElectricApplianceTypeEnum (IfcEntityInstanceData&& e); - IfcElectricApplianceTypeEnum (Value v); - IfcElectricApplianceTypeEnum (const std::string& v); + // IfcElectricApplianceTypeEnum (Value v); + // IfcElectricApplianceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcElectricDistributionBoardTypeEnum : public IfcUtil::IfcBaseType { /// The IfcElectricDistributionBoardTypeEnum defines the range of different types and/or functions of electric distribution board possible. /// HISTORY: New type in IFC 2x4. Replaces IfcElectricDistributionPointTypeEnum /// Enumeration @@ -3177,19 +6509,21 @@ class IFC_PARSE_API IfcElectricDistributionBoardTypeEnum : public IfcUtil::IfcBa /// SWITCHBOARD: A distribution point at which switching devices are located. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcElectricDistributionBoardTypeEnum : public express::DeclaredType { public: + IfcElectricDistributionBoardTypeEnum() {} + explicit IfcElectricDistributionBoardTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcElectricDistributionBoardType_CONSUMERUNIT, IfcElectricDistributionBoardType_DISTRIBUTIONBOARD, IfcElectricDistributionBoardType_MOTORCONTROLCENTRE, IfcElectricDistributionBoardType_SWITCHBOARD, IfcElectricDistributionBoardType_USERDEFINED, IfcElectricDistributionBoardType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcElectricDistributionBoardTypeEnum (IfcEntityInstanceData&& e); - IfcElectricDistributionBoardTypeEnum (Value v); - IfcElectricDistributionBoardTypeEnum (const std::string& v); + // IfcElectricDistributionBoardTypeEnum (Value v); + // IfcElectricDistributionBoardTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcElectricFlowStorageDeviceTypeEnum : public IfcUtil::IfcBaseType { /// The IfcElectricFlowStorageDeviceTypeEnum defines the range of different types of electrical flow storage device available. /// HISTORY: New type in IFC 2x2 /// Enumeration @@ -3200,33 +6534,37 @@ class IFC_PARSE_API IfcElectricFlowStorageDeviceTypeEnum : public IfcUtil::IfcBa /// UPS: A device that provides a time limited alternative source of power supply in the event of failure of the main supply. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcElectricFlowStorageDeviceTypeEnum : public express::DeclaredType { public: + IfcElectricFlowStorageDeviceTypeEnum() {} + explicit IfcElectricFlowStorageDeviceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcElectricFlowStorageDeviceType_BATTERY, IfcElectricFlowStorageDeviceType_CAPACITOR, IfcElectricFlowStorageDeviceType_CAPACITORBANK, IfcElectricFlowStorageDeviceType_COMPENSATOR, IfcElectricFlowStorageDeviceType_HARMONICFILTER, IfcElectricFlowStorageDeviceType_INDUCTOR, IfcElectricFlowStorageDeviceType_INDUCTORBANK, IfcElectricFlowStorageDeviceType_RECHARGER, IfcElectricFlowStorageDeviceType_UPS, IfcElectricFlowStorageDeviceType_USERDEFINED, IfcElectricFlowStorageDeviceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcElectricFlowStorageDeviceTypeEnum (IfcEntityInstanceData&& e); - IfcElectricFlowStorageDeviceTypeEnum (Value v); - IfcElectricFlowStorageDeviceTypeEnum (const std::string& v); + // IfcElectricFlowStorageDeviceTypeEnum (Value v); + // IfcElectricFlowStorageDeviceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcElectricFlowTreatmentDeviceTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcElectricFlowTreatmentDeviceTypeEnum : public express::DeclaredType { public: + IfcElectricFlowTreatmentDeviceTypeEnum() {} + explicit IfcElectricFlowTreatmentDeviceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcElectricFlowTreatmentDeviceType_ELECTRONICFILTER, IfcElectricFlowTreatmentDeviceType_USERDEFINED, IfcElectricFlowTreatmentDeviceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcElectricFlowTreatmentDeviceTypeEnum (IfcEntityInstanceData&& e); - IfcElectricFlowTreatmentDeviceTypeEnum (Value v); - IfcElectricFlowTreatmentDeviceTypeEnum (const std::string& v); + // IfcElectricFlowTreatmentDeviceTypeEnum (Value v); + // IfcElectricFlowTreatmentDeviceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcElectricGeneratorTypeEnum : public IfcUtil::IfcBaseType { /// The IfcElectricGeneratorTypeEnum defines the range of types of electric generators available. /// HISTORY: New type in IFC 2x2. Values added in IFC 2x4. /// @@ -3237,19 +6575,21 @@ class IFC_PARSE_API IfcElectricGeneratorTypeEnum : public IfcUtil::IfcBaseType { /// STANDALONE: Electrical generator which does not include its source of kinetic energy, that is, a motor, engine, or turbine is modeled by a separate object. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcElectricGeneratorTypeEnum : public express::DeclaredType { public: + IfcElectricGeneratorTypeEnum() {} + explicit IfcElectricGeneratorTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcElectricGeneratorType_CHP, IfcElectricGeneratorType_ENGINEGENERATOR, IfcElectricGeneratorType_STANDALONE, IfcElectricGeneratorType_USERDEFINED, IfcElectricGeneratorType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcElectricGeneratorTypeEnum (IfcEntityInstanceData&& e); - IfcElectricGeneratorTypeEnum (Value v); - IfcElectricGeneratorTypeEnum (const std::string& v); + // IfcElectricGeneratorTypeEnum (Value v); + // IfcElectricGeneratorTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcElectricMotorTypeEnum : public IfcUtil::IfcBaseType { /// The IfcElectricMotorTypeEnum defines the range of different types of electric motor that can be specified. /// HISTORY: New type in IFC 2x2 /// Enumeration @@ -3261,19 +6601,21 @@ class IFC_PARSE_API IfcElectricMotorTypeEnum : public IfcUtil::IfcBaseType { /// SYNCHRONOUS: A motor that operates at a constant speed up to full load. The rotor speed is equal to the speed of the rotating magnetic field of the stator; there is no slip. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcElectricMotorTypeEnum : public express::DeclaredType { public: + IfcElectricMotorTypeEnum() {} + explicit IfcElectricMotorTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcElectricMotorType_DC, IfcElectricMotorType_INDUCTION, IfcElectricMotorType_POLYPHASE, IfcElectricMotorType_RELUCTANCESYNCHRONOUS, IfcElectricMotorType_SYNCHRONOUS, IfcElectricMotorType_USERDEFINED, IfcElectricMotorType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcElectricMotorTypeEnum (IfcEntityInstanceData&& e); - IfcElectricMotorTypeEnum (Value v); - IfcElectricMotorTypeEnum (const std::string& v); + // IfcElectricMotorTypeEnum (Value v); + // IfcElectricMotorTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcElectricTimeControlTypeEnum : public IfcUtil::IfcBaseType { /// The IfcElectricTimeControlTypeEnum defines the range of types of electrical time control available. /// HISTORY: New type in IFC 2x2 /// Enumeration @@ -3283,19 +6625,21 @@ class IFC_PARSE_API IfcElectricTimeControlTypeEnum : public IfcUtil::IfcBaseType /// RELAY: Electromagnetically operated contactor for making or breaking a control circuit. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcElectricTimeControlTypeEnum : public express::DeclaredType { public: + IfcElectricTimeControlTypeEnum() {} + explicit IfcElectricTimeControlTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcElectricTimeControlType_RELAY, IfcElectricTimeControlType_TIMECLOCK, IfcElectricTimeControlType_TIMEDELAY, IfcElectricTimeControlType_USERDEFINED, IfcElectricTimeControlType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcElectricTimeControlTypeEnum (IfcEntityInstanceData&& e); - IfcElectricTimeControlTypeEnum (Value v); - IfcElectricTimeControlTypeEnum (const std::string& v); + // IfcElectricTimeControlTypeEnum (Value v); + // IfcElectricTimeControlTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcElementAssemblyTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: An enumeration defining the /// basic configuration types for element assemblies. /// @@ -3315,19 +6659,21 @@ class IFC_PARSE_API IfcElementAssemblyTypeEnum : public IfcUtil::IfcBaseType { /// TRUSS: A structure built up of members with (quasi) pinned joints /// USERDEFINED: User-defined element assembly /// NOTDEFINED: Undefined element assembly +class IFC_PARSE_API IfcElementAssemblyTypeEnum : public express::DeclaredType { public: + IfcElementAssemblyTypeEnum() {} + explicit IfcElementAssemblyTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcElementAssemblyType_ABUTMENT, IfcElementAssemblyType_ACCESSORY_ASSEMBLY, IfcElementAssemblyType_ARCH, IfcElementAssemblyType_BEAM_GRID, IfcElementAssemblyType_BRACED_FRAME, IfcElementAssemblyType_CROSS_BRACING, IfcElementAssemblyType_DECK, IfcElementAssemblyType_DILATATIONPANEL, IfcElementAssemblyType_ENTRANCEWORKS, IfcElementAssemblyType_GIRDER, IfcElementAssemblyType_GRID, IfcElementAssemblyType_MAST, IfcElementAssemblyType_PIER, IfcElementAssemblyType_PYLON, IfcElementAssemblyType_RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY, IfcElementAssemblyType_REINFORCEMENT_UNIT, IfcElementAssemblyType_RIGID_FRAME, IfcElementAssemblyType_SHELTER, IfcElementAssemblyType_SIGNALASSEMBLY, IfcElementAssemblyType_SLAB_FIELD, IfcElementAssemblyType_SUMPBUSTER, IfcElementAssemblyType_SUPPORTINGASSEMBLY, IfcElementAssemblyType_SUSPENSIONASSEMBLY, IfcElementAssemblyType_TRACKPANEL, IfcElementAssemblyType_TRACTION_SWITCHING_ASSEMBLY, IfcElementAssemblyType_TRAFFIC_CALMING_DEVICE, IfcElementAssemblyType_TRUSS, IfcElementAssemblyType_TURNOUTPANEL, IfcElementAssemblyType_USERDEFINED, IfcElementAssemblyType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcElementAssemblyTypeEnum (IfcEntityInstanceData&& e); - IfcElementAssemblyTypeEnum (Value v); - IfcElementAssemblyTypeEnum (const std::string& v); + // IfcElementAssemblyTypeEnum (Value v); + // IfcElementAssemblyTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcElementCompositionEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: Enumeration that provides an /// indication, whether the spatial structure element or proxy /// represents a: @@ -3340,19 +6686,21 @@ class IFC_PARSE_API IfcElementCompositionEnum : public IfcUtil::IfcBaseType { /// /// HISTORY New enumeration in /// IFC Release 2.x +class IFC_PARSE_API IfcElementCompositionEnum : public express::DeclaredType { public: + IfcElementCompositionEnum() {} + explicit IfcElementCompositionEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcElementComposition_COMPLEX, IfcElementComposition_ELEMENT, IfcElementComposition_PARTIAL} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcElementCompositionEnum (IfcEntityInstanceData&& e); - IfcElementCompositionEnum (Value v); - IfcElementCompositionEnum (const std::string& v); + // IfcElementCompositionEnum (Value v); + // IfcElementCompositionEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcEngineTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the typical types of engines. The IfcEngineTypeEnum contains the following: /// /// EXTERNALCOMBUSTION: Combustion is external. @@ -3361,19 +6709,21 @@ class IFC_PARSE_API IfcEngineTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined engine type. /// /// HISTORY: New enumeration in IFC 2x4. +class IFC_PARSE_API IfcEngineTypeEnum : public express::DeclaredType { public: + IfcEngineTypeEnum() {} + explicit IfcEngineTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcEngineType_EXTERNALCOMBUSTION, IfcEngineType_INTERNALCOMBUSTION, IfcEngineType_USERDEFINED, IfcEngineType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcEngineTypeEnum (IfcEntityInstanceData&& e); - IfcEngineTypeEnum (Value v); - IfcEngineTypeEnum (const std::string& v); + // IfcEngineTypeEnum (Value v); + // IfcEngineTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcEvaporativeCoolerTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the typical types of evaporative coolers. /// The IfcEvaporativeCoolerTypeEnum contains the following: /// @@ -3390,19 +6740,21 @@ class IFC_PARSE_API IfcEvaporativeCoolerTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined evaporative cooler type. /// /// HISTORY: New enumeration in IFC 2x2. +class IFC_PARSE_API IfcEvaporativeCoolerTypeEnum : public express::DeclaredType { public: + IfcEvaporativeCoolerTypeEnum() {} + explicit IfcEvaporativeCoolerTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcEvaporativeCoolerType_DIRECTEVAPORATIVEAIRWASHER, IfcEvaporativeCoolerType_DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER, IfcEvaporativeCoolerType_DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER, IfcEvaporativeCoolerType_DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER, IfcEvaporativeCoolerType_DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER, IfcEvaporativeCoolerType_INDIRECTDIRECTCOMBINATION, IfcEvaporativeCoolerType_INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER, IfcEvaporativeCoolerType_INDIRECTEVAPORATIVEPACKAGEAIRCOOLER, IfcEvaporativeCoolerType_INDIRECTEVAPORATIVEWETCOIL, IfcEvaporativeCoolerType_USERDEFINED, IfcEvaporativeCoolerType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcEvaporativeCoolerTypeEnum (IfcEntityInstanceData&& e); - IfcEvaporativeCoolerTypeEnum (Value v); - IfcEvaporativeCoolerTypeEnum (const std::string& v); + // IfcEvaporativeCoolerTypeEnum (Value v); + // IfcEvaporativeCoolerTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcEvaporatorTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the typical types of evaporators. /// The IfcEvaporatorTypeEnum contains the following: /// @@ -3416,19 +6768,21 @@ class IFC_PARSE_API IfcEvaporatorTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined evaporator type. /// /// HISTORY: New enumeration in IFC 2x2. +class IFC_PARSE_API IfcEvaporatorTypeEnum : public express::DeclaredType { public: + IfcEvaporatorTypeEnum() {} + explicit IfcEvaporatorTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcEvaporatorType_DIRECTEXPANSION, IfcEvaporatorType_DIRECTEXPANSIONBRAZEDPLATE, IfcEvaporatorType_DIRECTEXPANSIONSHELLANDTUBE, IfcEvaporatorType_DIRECTEXPANSIONTUBEINTUBE, IfcEvaporatorType_FLOODEDSHELLANDTUBE, IfcEvaporatorType_SHELLANDCOIL, IfcEvaporatorType_USERDEFINED, IfcEvaporatorType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcEvaporatorTypeEnum (IfcEntityInstanceData&& e); - IfcEvaporatorTypeEnum (Value v); - IfcEvaporatorTypeEnum (const std::string& v); + // IfcEvaporatorTypeEnum (Value v); + // IfcEvaporatorTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcEventTriggerTypeEnum : public IfcUtil::IfcBaseType { /// The IfcEventTriggerTypeEnum defines the range of different types of event trigger that can be specified. /// /// HISTORY: New type in IFC2x4 @@ -3441,19 +6795,21 @@ class IFC_PARSE_API IfcEventTriggerTypeEnum : public IfcUtil::IfcBaseType { /// EVENTCOMPLEX: An event trigger that is a complex combination of things /// USERDEFINED /// NOTDEFINED +class IFC_PARSE_API IfcEventTriggerTypeEnum : public express::DeclaredType { public: + IfcEventTriggerTypeEnum() {} + explicit IfcEventTriggerTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcEventTriggerType_EVENTCOMPLEX, IfcEventTriggerType_EVENTMESSAGE, IfcEventTriggerType_EVENTRULE, IfcEventTriggerType_EVENTTIME, IfcEventTriggerType_USERDEFINED, IfcEventTriggerType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcEventTriggerTypeEnum (IfcEntityInstanceData&& e); - IfcEventTriggerTypeEnum (Value v); - IfcEventTriggerTypeEnum (const std::string& v); + // IfcEventTriggerTypeEnum (Value v); + // IfcEventTriggerTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcEventTypeEnum : public IfcUtil::IfcBaseType { /// The IfcEventTypeEnum defines the range of different types of event that can be specified. /// /// HISTORY  New type in IFC2x4 @@ -3465,19 +6821,21 @@ class IFC_PARSE_API IfcEventTypeEnum : public IfcUtil::IfcBaseType { /// INTERMEDIATEEVENT: An event that occurs at an intermediate stage of a process /// USERDEFINED /// NOTDEFINED +class IFC_PARSE_API IfcEventTypeEnum : public express::DeclaredType { public: + IfcEventTypeEnum() {} + explicit IfcEventTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcEventType_ENDEVENT, IfcEventType_INTERMEDIATEEVENT, IfcEventType_STARTEVENT, IfcEventType_USERDEFINED, IfcEventType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcEventTypeEnum (IfcEntityInstanceData&& e); - IfcEventTypeEnum (Value v); - IfcEventTypeEnum (const std::string& v); + // IfcEventTypeEnum (Value v); + // IfcEventTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcExternalSpatialElementTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the /// different types of external spatial elements. /// Enumeration: @@ -3494,47 +6852,53 @@ class IFC_PARSE_API IfcExternalSpatialElementTypeEnum : public IfcUtil::IfcBaseT /// /// HISTORY New enumeration /// in IFC2x4. +class IFC_PARSE_API IfcExternalSpatialElementTypeEnum : public express::DeclaredType { public: + IfcExternalSpatialElementTypeEnum() {} + explicit IfcExternalSpatialElementTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcExternalSpatialElementType_EXTERNAL, IfcExternalSpatialElementType_EXTERNAL_EARTH, IfcExternalSpatialElementType_EXTERNAL_FIRE, IfcExternalSpatialElementType_EXTERNAL_WATER, IfcExternalSpatialElementType_USERDEFINED, IfcExternalSpatialElementType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcExternalSpatialElementTypeEnum (IfcEntityInstanceData&& e); - IfcExternalSpatialElementTypeEnum (Value v); - IfcExternalSpatialElementTypeEnum (const std::string& v); + // IfcExternalSpatialElementTypeEnum (Value v); + // IfcExternalSpatialElementTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcFacilityPartCommonTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcFacilityPartCommonTypeEnum : public express::DeclaredType { public: + IfcFacilityPartCommonTypeEnum() {} + explicit IfcFacilityPartCommonTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcFacilityPartCommonType_ABOVEGROUND, IfcFacilityPartCommonType_BELOWGROUND, IfcFacilityPartCommonType_JUNCTION, IfcFacilityPartCommonType_LEVELCROSSING, IfcFacilityPartCommonType_SEGMENT, IfcFacilityPartCommonType_SUBSTRUCTURE, IfcFacilityPartCommonType_SUPERSTRUCTURE, IfcFacilityPartCommonType_TERMINAL, IfcFacilityPartCommonType_USERDEFINED, IfcFacilityPartCommonType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcFacilityPartCommonTypeEnum (IfcEntityInstanceData&& e); - IfcFacilityPartCommonTypeEnum (Value v); - IfcFacilityPartCommonTypeEnum (const std::string& v); + // IfcFacilityPartCommonTypeEnum (Value v); + // IfcFacilityPartCommonTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcFacilityUsageEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcFacilityUsageEnum : public express::DeclaredType { public: + IfcFacilityUsageEnum() {} + explicit IfcFacilityUsageEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcFacilityUsage_LATERAL, IfcFacilityUsage_LONGITUDINAL, IfcFacilityUsage_REGION, IfcFacilityUsage_VERTICAL, IfcFacilityUsage_USERDEFINED, IfcFacilityUsage_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcFacilityUsageEnum (IfcEntityInstanceData&& e); - IfcFacilityUsageEnum (Value v); - IfcFacilityUsageEnum (const std::string& v); + // IfcFacilityUsageEnum (Value v); + // IfcFacilityUsageEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcFanTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the typical types of fans. /// The IfcFanTypeEnum contains the following: /// @@ -3549,19 +6913,21 @@ class IFC_PARSE_API IfcFanTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined fan type. /// /// HISTORY: New enumeration in IFC 2x2. +class IFC_PARSE_API IfcFanTypeEnum : public express::DeclaredType { public: + IfcFanTypeEnum() {} + explicit IfcFanTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcFanType_CENTRIFUGALAIRFOIL, IfcFanType_CENTRIFUGALBACKWARDINCLINEDCURVED, IfcFanType_CENTRIFUGALFORWARDCURVED, IfcFanType_CENTRIFUGALRADIAL, IfcFanType_PROPELLORAXIAL, IfcFanType_TUBEAXIAL, IfcFanType_VANEAXIAL, IfcFanType_USERDEFINED, IfcFanType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcFanTypeEnum (IfcEntityInstanceData&& e); - IfcFanTypeEnum (Value v); - IfcFanTypeEnum (const std::string& v); + // IfcFanTypeEnum (Value v); + // IfcFanTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcFastenerTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the different types of fasteners, except for mechanical fasteners: /// /// GLUE: A fastening connection where glue is used to join together elements. @@ -3571,19 +6937,21 @@ class IFC_PARSE_API IfcFastenerTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined fastener /// /// HISTORY New Enumeration in IFC 2x4. +class IFC_PARSE_API IfcFastenerTypeEnum : public express::DeclaredType { public: + IfcFastenerTypeEnum() {} + explicit IfcFastenerTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcFastenerType_GLUE, IfcFastenerType_MORTAR, IfcFastenerType_WELD, IfcFastenerType_USERDEFINED, IfcFastenerType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcFastenerTypeEnum (IfcEntityInstanceData&& e); - IfcFastenerTypeEnum (Value v); - IfcFastenerTypeEnum (const std::string& v); + // IfcFastenerTypeEnum (Value v); + // IfcFastenerTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcFilterTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration defines the various types of filter typically used /// within building services distribution systems: /// @@ -3597,19 +6965,21 @@ class IFC_PARSE_API IfcFilterTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined filter type. /// /// HISTORY: New enumeration in IFC R2x. COMPRESSEDAIRFILTER added in IFC2x4. +class IFC_PARSE_API IfcFilterTypeEnum : public express::DeclaredType { public: + IfcFilterTypeEnum() {} + explicit IfcFilterTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcFilterType_AIRPARTICLEFILTER, IfcFilterType_COMPRESSEDAIRFILTER, IfcFilterType_ODORFILTER, IfcFilterType_OILFILTER, IfcFilterType_STRAINER, IfcFilterType_WATERFILTER, IfcFilterType_USERDEFINED, IfcFilterType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcFilterTypeEnum (IfcEntityInstanceData&& e); - IfcFilterTypeEnum (Value v); - IfcFilterTypeEnum (const std::string& v); + // IfcFilterTypeEnum (Value v); + // IfcFilterTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcFireSuppressionTerminalTypeEnum : public IfcUtil::IfcBaseType { /// The IfcFireSuppressionTerminalTypeEnum defines the range of different types of fire suppression terminal that can be specified. /// /// HISTORY: New type in IFC 2x2 @@ -3623,19 +6993,21 @@ class IFC_PARSE_API IfcFireSuppressionTerminalTypeEnum : public IfcUtil::IfcBase /// SPRINKLERDEFLECTOR: Device attached to a sprinkler to deflect the water flow into a spread pattern to cover the required area. /// USERDEFINED: User-defined type. /// NOTDEFINED: Underined type. +class IFC_PARSE_API IfcFireSuppressionTerminalTypeEnum : public express::DeclaredType { public: + IfcFireSuppressionTerminalTypeEnum() {} + explicit IfcFireSuppressionTerminalTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcFireSuppressionTerminalType_BREECHINGINLET, IfcFireSuppressionTerminalType_FIREHYDRANT, IfcFireSuppressionTerminalType_FIREMONITOR, IfcFireSuppressionTerminalType_HOSEREEL, IfcFireSuppressionTerminalType_SPRINKLER, IfcFireSuppressionTerminalType_SPRINKLERDEFLECTOR, IfcFireSuppressionTerminalType_USERDEFINED, IfcFireSuppressionTerminalType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcFireSuppressionTerminalTypeEnum (IfcEntityInstanceData&& e); - IfcFireSuppressionTerminalTypeEnum (Value v); - IfcFireSuppressionTerminalTypeEnum (const std::string& v); + // IfcFireSuppressionTerminalTypeEnum (Value v); + // IfcFireSuppressionTerminalTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcFlowDirectionEnum : public IfcUtil::IfcBaseType { /// This enumeration defines the flow direction at a port as either a SOURCE, SINK, or SOURCEANDSINK. For solids, liquids, or gas, the direction is the physical flow direction. For electric power (circuits containing hot, neutral, ground), the direction is from the origination of power (from a distribution board to protective devices to switches to fixtures). For communication signals, the direction originates from where the signal is shaped, such as a sensor. For communicaton networks, the direction originates from the up-level network host, such as a router (having SOURCE ports) hosting multiple computers (having SINK ports). /// /// SOURCE: A flow source, where a substance flows out of the connection. @@ -3644,19 +7016,21 @@ class IFC_PARSE_API IfcFlowDirectionEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined flow direction. /// /// HISTORY: New enumeration in IFC R2.0 +class IFC_PARSE_API IfcFlowDirectionEnum : public express::DeclaredType { public: + IfcFlowDirectionEnum() {} + explicit IfcFlowDirectionEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcFlowDirection_SINK, IfcFlowDirection_SOURCE, IfcFlowDirection_SOURCEANDSINK, IfcFlowDirection_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcFlowDirectionEnum (IfcEntityInstanceData&& e); - IfcFlowDirectionEnum (Value v); - IfcFlowDirectionEnum (const std::string& v); + // IfcFlowDirectionEnum (Value v); + // IfcFlowDirectionEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcFlowInstrumentTypeEnum : public IfcUtil::IfcBaseType { /// The IfcFlowInstrumentTypeEnum defines the range of different types of flow instrument that can be specified. /// /// HISTORY: New type in IFC @@ -3673,19 +7047,21 @@ class IFC_PARSE_API IfcFlowInstrumentTypeEnum : public IfcUtil::IfcBaseType { /// VOLTMETER_RMS: A device that reads and displays the RMS (mean) voltage in an electrical circuit. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcFlowInstrumentTypeEnum : public express::DeclaredType { public: + IfcFlowInstrumentTypeEnum() {} + explicit IfcFlowInstrumentTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcFlowInstrumentType_AMMETER, IfcFlowInstrumentType_COMBINED, IfcFlowInstrumentType_FREQUENCYMETER, IfcFlowInstrumentType_PHASEANGLEMETER, IfcFlowInstrumentType_POWERFACTORMETER, IfcFlowInstrumentType_PRESSUREGAUGE, IfcFlowInstrumentType_THERMOMETER, IfcFlowInstrumentType_VOLTMETER, IfcFlowInstrumentType_VOLTMETER_PEAK, IfcFlowInstrumentType_VOLTMETER_RMS, IfcFlowInstrumentType_USERDEFINED, IfcFlowInstrumentType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcFlowInstrumentTypeEnum (IfcEntityInstanceData&& e); - IfcFlowInstrumentTypeEnum (Value v); - IfcFlowInstrumentTypeEnum (const std::string& v); + // IfcFlowInstrumentTypeEnum (Value v); + // IfcFlowInstrumentTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcFlowMeterTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration defines various types of flow meter: /// /// ENERGYMETER: An electric meter or energy meter is a device that measures the amount of electrical energy supplied to or produced by a residence, business or machine. @@ -3701,19 +7077,21 @@ class IFC_PARSE_API IfcFlowMeterTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined meter type /// /// HISTORY: New enumeration in IFC 2x2 +class IFC_PARSE_API IfcFlowMeterTypeEnum : public express::DeclaredType { public: + IfcFlowMeterTypeEnum() {} + explicit IfcFlowMeterTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcFlowMeterType_ENERGYMETER, IfcFlowMeterType_GASMETER, IfcFlowMeterType_OILMETER, IfcFlowMeterType_WATERMETER, IfcFlowMeterType_USERDEFINED, IfcFlowMeterType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcFlowMeterTypeEnum (IfcEntityInstanceData&& e); - IfcFlowMeterTypeEnum (Value v); - IfcFlowMeterTypeEnum (const std::string& v); + // IfcFlowMeterTypeEnum (Value v); + // IfcFlowMeterTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcFootingTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: Enumeration defining the generic footing type. /// /// HISTORY New type in IFC Release 2x2 @@ -3728,19 +7106,21 @@ class IFC_PARSE_API IfcFootingTypeEnum : public IfcUtil::IfcBaseType { /// STRIP_FOOTING A linear element that transfers loads into the ground from either a continuous element, such as a wall, or from a series of elements, such as columns. /// USERDEFINED Special types of footings which meet specific local requirements. /// NOTDEFINED The type of footing is not defined. +class IFC_PARSE_API IfcFootingTypeEnum : public express::DeclaredType { public: + IfcFootingTypeEnum() {} + explicit IfcFootingTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcFootingType_CAISSON_FOUNDATION, IfcFootingType_FOOTING_BEAM, IfcFootingType_PAD_FOOTING, IfcFootingType_PILE_CAP, IfcFootingType_STRIP_FOOTING, IfcFootingType_USERDEFINED, IfcFootingType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcFootingTypeEnum (IfcEntityInstanceData&& e); - IfcFootingTypeEnum (Value v); - IfcFootingTypeEnum (const std::string& v); + // IfcFootingTypeEnum (Value v); + // IfcFootingTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcFurnitureTypeEnum : public IfcUtil::IfcBaseType { /// IfcFurnitureTypeEnum defines the types of furniture from which the type required can be selected. /// HISTORY: New Enumeration in IFC 2x4. /// Enumeration: @@ -3754,33 +7134,37 @@ class IFC_PARSE_API IfcFurnitureTypeEnum : public IfcUtil::IfcBaseType { /// SOFA: Furniture for seating multiple people. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcFurnitureTypeEnum : public express::DeclaredType { public: + IfcFurnitureTypeEnum() {} + explicit IfcFurnitureTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcFurnitureType_BED, IfcFurnitureType_CHAIR, IfcFurnitureType_DESK, IfcFurnitureType_FILECABINET, IfcFurnitureType_SHELF, IfcFurnitureType_SOFA, IfcFurnitureType_TABLE, IfcFurnitureType_TECHNICALCABINET, IfcFurnitureType_USERDEFINED, IfcFurnitureType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcFurnitureTypeEnum (IfcEntityInstanceData&& e); - IfcFurnitureTypeEnum (Value v); - IfcFurnitureTypeEnum (const std::string& v); + // IfcFurnitureTypeEnum (Value v); + // IfcFurnitureTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcGeographicElementTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcGeographicElementTypeEnum : public express::DeclaredType { public: + IfcGeographicElementTypeEnum() {} + explicit IfcGeographicElementTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcGeographicElementType_SOIL_BORING_POINT, IfcGeographicElementType_TERRAIN, IfcGeographicElementType_VEGETATION, IfcGeographicElementType_USERDEFINED, IfcGeographicElementType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcGeographicElementTypeEnum (IfcEntityInstanceData&& e); - IfcGeographicElementTypeEnum (Value v); - IfcGeographicElementTypeEnum (const std::string& v); + // IfcGeographicElementTypeEnum (Value v); + // IfcGeographicElementTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcGeometricProjectionEnum : public IfcUtil::IfcBaseType { /// IfcGeometricProjectionEnum defines the various representation types that can be semantically distinguished. Often different levels of detail of the shape representation are controlled by the representation type. /// /// GRAPH_VIEW: @@ -3822,66 +7206,74 @@ class IFC_PARSE_API IfcGeometricProjectionEnum : public IfcUtil::IfcBaseType { /// No specification given. /// /// HISTORY: New Type in Release IFC2x2. +class IFC_PARSE_API IfcGeometricProjectionEnum : public express::DeclaredType { public: + IfcGeometricProjectionEnum() {} + explicit IfcGeometricProjectionEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcGeometricProjection_ELEVATION_VIEW, IfcGeometricProjection_GRAPH_VIEW, IfcGeometricProjection_MODEL_VIEW, IfcGeometricProjection_PLAN_VIEW, IfcGeometricProjection_REFLECTED_PLAN_VIEW, IfcGeometricProjection_SECTION_VIEW, IfcGeometricProjection_SKETCH_VIEW, IfcGeometricProjection_USERDEFINED, IfcGeometricProjection_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcGeometricProjectionEnum (IfcEntityInstanceData&& e); - IfcGeometricProjectionEnum (Value v); - IfcGeometricProjectionEnum (const std::string& v); + // IfcGeometricProjectionEnum (Value v); + // IfcGeometricProjectionEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcGeotechnicalStratumTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcGeotechnicalStratumTypeEnum : public express::DeclaredType { public: + IfcGeotechnicalStratumTypeEnum() {} + explicit IfcGeotechnicalStratumTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcGeotechnicalStratumType_SOLID, IfcGeotechnicalStratumType_VOID, IfcGeotechnicalStratumType_WATER, IfcGeotechnicalStratumType_USERDEFINED, IfcGeotechnicalStratumType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcGeotechnicalStratumTypeEnum (IfcEntityInstanceData&& e); - IfcGeotechnicalStratumTypeEnum (Value v); - IfcGeotechnicalStratumTypeEnum (const std::string& v); + // IfcGeotechnicalStratumTypeEnum (Value v); + // IfcGeotechnicalStratumTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcGlobalOrLocalEnum : public IfcUtil::IfcBaseType { /// This enumeration type defines if the local object coordinate system or the global world coordinate system for the project is used to describe the measure values of entities which have a reference to this type. /// /// NOTE  The world coordinate system is given by the IfcGeometricRepresentationContext.WorldCoordinateSystem /// and is unique within the project. The local (or object) coordinate system is given by IfcProduct.ObjectPlacement and is used by all IfcRepresentation's within the IfcProduct.Representation. /// /// HISTORY: New type in IFC2x2. +class IFC_PARSE_API IfcGlobalOrLocalEnum : public express::DeclaredType { public: + IfcGlobalOrLocalEnum() {} + explicit IfcGlobalOrLocalEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcGlobalOrLocal_GLOBAL_COORDS, IfcGlobalOrLocal_LOCAL_COORDS} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcGlobalOrLocalEnum (IfcEntityInstanceData&& e); - IfcGlobalOrLocalEnum (Value v); - IfcGlobalOrLocalEnum (const std::string& v); + // IfcGlobalOrLocalEnum (Value v); + // IfcGlobalOrLocalEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcGridTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcGridTypeEnum : public express::DeclaredType { public: + IfcGridTypeEnum() {} + explicit IfcGridTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcGridType_IRREGULAR, IfcGridType_RADIAL, IfcGridType_RECTANGULAR, IfcGridType_TRIANGULAR, IfcGridType_USERDEFINED, IfcGridType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcGridTypeEnum (IfcEntityInstanceData&& e); - IfcGridTypeEnum (Value v); - IfcGridTypeEnum (const std::string& v); + // IfcGridTypeEnum (Value v); + // IfcGridTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcHeatExchangerTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the typical types of heat exchangers. /// The IfcHeatExchangerTypeEnum contains the following: /// @@ -3891,19 +7283,21 @@ class IFC_PARSE_API IfcHeatExchangerTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined heat exchanger type. /// /// HISTORY: New enumeration in IFC R2x. +class IFC_PARSE_API IfcHeatExchangerTypeEnum : public express::DeclaredType { public: + IfcHeatExchangerTypeEnum() {} + explicit IfcHeatExchangerTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcHeatExchangerType_PLATE, IfcHeatExchangerType_SHELLANDTUBE, IfcHeatExchangerType_TURNOUTHEATING, IfcHeatExchangerType_USERDEFINED, IfcHeatExchangerType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcHeatExchangerTypeEnum (IfcEntityInstanceData&& e); - IfcHeatExchangerTypeEnum (Value v); - IfcHeatExchangerTypeEnum (const std::string& v); + // IfcHeatExchangerTypeEnum (Value v); + // IfcHeatExchangerTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcHumidifierTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the typical types of humidifiers. /// The IfcHumidifierTypeEnum contains the following: /// @@ -3924,33 +7318,37 @@ class IFC_PARSE_API IfcHumidifierTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined humidifier type. /// /// HISTORY: New enumeration in IFC 2x2. +class IFC_PARSE_API IfcHumidifierTypeEnum : public express::DeclaredType { public: + IfcHumidifierTypeEnum() {} + explicit IfcHumidifierTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcHumidifierType_ADIABATICAIRWASHER, IfcHumidifierType_ADIABATICATOMIZING, IfcHumidifierType_ADIABATICCOMPRESSEDAIRNOZZLE, IfcHumidifierType_ADIABATICPAN, IfcHumidifierType_ADIABATICRIGIDMEDIA, IfcHumidifierType_ADIABATICULTRASONIC, IfcHumidifierType_ADIABATICWETTEDELEMENT, IfcHumidifierType_ASSISTEDBUTANE, IfcHumidifierType_ASSISTEDELECTRIC, IfcHumidifierType_ASSISTEDNATURALGAS, IfcHumidifierType_ASSISTEDPROPANE, IfcHumidifierType_ASSISTEDSTEAM, IfcHumidifierType_STEAMINJECTION, IfcHumidifierType_USERDEFINED, IfcHumidifierType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcHumidifierTypeEnum (IfcEntityInstanceData&& e); - IfcHumidifierTypeEnum (Value v); - IfcHumidifierTypeEnum (const std::string& v); + // IfcHumidifierTypeEnum (Value v); + // IfcHumidifierTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcImpactProtectionDeviceTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcImpactProtectionDeviceTypeEnum : public express::DeclaredType { public: + IfcImpactProtectionDeviceTypeEnum() {} + explicit IfcImpactProtectionDeviceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcImpactProtectionDeviceType_BUMPER, IfcImpactProtectionDeviceType_CRASHCUSHION, IfcImpactProtectionDeviceType_DAMPINGSYSTEM, IfcImpactProtectionDeviceType_FENDER, IfcImpactProtectionDeviceType_USERDEFINED, IfcImpactProtectionDeviceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcImpactProtectionDeviceTypeEnum (IfcEntityInstanceData&& e); - IfcImpactProtectionDeviceTypeEnum (Value v); - IfcImpactProtectionDeviceTypeEnum (const std::string& v); + // IfcImpactProtectionDeviceTypeEnum (Value v); + // IfcImpactProtectionDeviceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcInterceptorTypeEnum : public IfcUtil::IfcBaseType { /// The IfcInterceptorTypeEnum defines the range of different types of interceptor that can be specified. /// HISTORY: New type in IFC 2x4 /// Enumeration @@ -3961,19 +7359,21 @@ class IFC_PARSE_API IfcInterceptorTypeEnum : public IfcUtil::IfcBaseType { /// PETROL: Two or more chambers with inlet and outlet pipes arranged to allow petrol/gasoline collected on the surface of water drained into them to evaporate through ventilating pipes. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcInterceptorTypeEnum : public express::DeclaredType { public: + IfcInterceptorTypeEnum() {} + explicit IfcInterceptorTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcInterceptorType_CYCLONIC, IfcInterceptorType_GREASE, IfcInterceptorType_OIL, IfcInterceptorType_PETROL, IfcInterceptorType_USERDEFINED, IfcInterceptorType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcInterceptorTypeEnum (IfcEntityInstanceData&& e); - IfcInterceptorTypeEnum (Value v); - IfcInterceptorTypeEnum (const std::string& v); + // IfcInterceptorTypeEnum (Value v); + // IfcInterceptorTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcInternalOrExternalEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the /// different types of space boundaries in terms of either being /// inside the building or outside the building. @@ -4029,19 +7429,21 @@ class IFC_PARSE_API IfcInternalOrExternalEnum : public IfcUtil::IfcBaseType { /// applicable to IfcSpace. The following enumerators are /// added: EXTERNAL_EARTH, EXTERNAL_WATER, /// EXTERNAL_FIRE. +class IFC_PARSE_API IfcInternalOrExternalEnum : public express::DeclaredType { public: + IfcInternalOrExternalEnum() {} + explicit IfcInternalOrExternalEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcInternalOrExternal_EXTERNAL, IfcInternalOrExternal_EXTERNAL_EARTH, IfcInternalOrExternal_EXTERNAL_FIRE, IfcInternalOrExternal_EXTERNAL_WATER, IfcInternalOrExternal_INTERNAL, IfcInternalOrExternal_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcInternalOrExternalEnum (IfcEntityInstanceData&& e); - IfcInternalOrExternalEnum (Value v); - IfcInternalOrExternalEnum (const std::string& v); + // IfcInternalOrExternalEnum (Value v); + // IfcInternalOrExternalEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcInventoryTypeEnum : public IfcUtil::IfcBaseType { /// IfcInventoryTypeEnum defines the types of inventory that can be defined. /// HISTORY: New Enumeration in IFC Release 2.0 /// Enumeration: @@ -4051,19 +7453,21 @@ class IFC_PARSE_API IfcInventoryTypeEnum : public IfcUtil::IfcBaseType { /// FURNITUREINVENTORY: A collection of furniture instances of type IfcFurnishingElement /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcInventoryTypeEnum : public express::DeclaredType { public: + IfcInventoryTypeEnum() {} + explicit IfcInventoryTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcInventoryType_ASSETINVENTORY, IfcInventoryType_FURNITUREINVENTORY, IfcInventoryType_SPACEINVENTORY, IfcInventoryType_USERDEFINED, IfcInventoryType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcInventoryTypeEnum (IfcEntityInstanceData&& e); - IfcInventoryTypeEnum (Value v); - IfcInventoryTypeEnum (const std::string& v); + // IfcInventoryTypeEnum (Value v); + // IfcInventoryTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcJunctionBoxTypeEnum : public IfcUtil::IfcBaseType { /// The IfcJunctionBoxTypeEnum defines the range of types of junction boxes available. /// HISTORY: New type in IFC 2x2. Values added in IFC 2x4. /// @@ -4071,47 +7475,53 @@ class IFC_PARSE_API IfcJunctionBoxTypeEnum : public IfcUtil::IfcBaseType { /// DATA: Contains cables, outlets, and/or switches for communications use. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcJunctionBoxTypeEnum : public express::DeclaredType { public: + IfcJunctionBoxTypeEnum() {} + explicit IfcJunctionBoxTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcJunctionBoxType_DATA, IfcJunctionBoxType_POWER, IfcJunctionBoxType_USERDEFINED, IfcJunctionBoxType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcJunctionBoxTypeEnum (IfcEntityInstanceData&& e); - IfcJunctionBoxTypeEnum (Value v); - IfcJunctionBoxTypeEnum (const std::string& v); + // IfcJunctionBoxTypeEnum (Value v); + // IfcJunctionBoxTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcKerbTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcKerbTypeEnum : public express::DeclaredType { public: + IfcKerbTypeEnum() {} + explicit IfcKerbTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcKerbType_USERDEFINED, IfcKerbType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcKerbTypeEnum (IfcEntityInstanceData&& e); - IfcKerbTypeEnum (Value v); - IfcKerbTypeEnum (const std::string& v); + // IfcKerbTypeEnum (Value v); + // IfcKerbTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcKnotType : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcKnotType : public express::DeclaredType { public: + IfcKnotType() {} + explicit IfcKnotType (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcKnotType_PIECEWISE_BEZIER_KNOTS, IfcKnotType_QUASI_UNIFORM_KNOTS, IfcKnotType_UNIFORM_KNOTS, IfcKnotType_UNSPECIFIED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcKnotType (IfcEntityInstanceData&& e); - IfcKnotType (Value v); - IfcKnotType (const std::string& v); + // IfcKnotType (Value v); + // IfcKnotType (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcLaborResourceTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration is used to identify the primary purpose of a labor resource, and is limited to high-level categories based upon common skillsets. The IfcLaborResourceTypeEnum contains the following: /// /// ADMINISTRATION: Coordination of work. @@ -4136,19 +7546,21 @@ class IFC_PARSE_API IfcLaborResourceTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined resource. /// /// HISTORY: New enumeration in IFC2x4 +class IFC_PARSE_API IfcLaborResourceTypeEnum : public express::DeclaredType { public: + IfcLaborResourceTypeEnum() {} + explicit IfcLaborResourceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcLaborResourceType_ADMINISTRATION, IfcLaborResourceType_CARPENTRY, IfcLaborResourceType_CLEANING, IfcLaborResourceType_CONCRETE, IfcLaborResourceType_DRYWALL, IfcLaborResourceType_ELECTRIC, IfcLaborResourceType_FINISHING, IfcLaborResourceType_FLOORING, IfcLaborResourceType_GENERAL, IfcLaborResourceType_HVAC, IfcLaborResourceType_LANDSCAPING, IfcLaborResourceType_MASONRY, IfcLaborResourceType_PAINTING, IfcLaborResourceType_PAVING, IfcLaborResourceType_PLUMBING, IfcLaborResourceType_ROOFING, IfcLaborResourceType_SITEGRADING, IfcLaborResourceType_STEELWORK, IfcLaborResourceType_SURVEYING, IfcLaborResourceType_USERDEFINED, IfcLaborResourceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcLaborResourceTypeEnum (IfcEntityInstanceData&& e); - IfcLaborResourceTypeEnum (Value v); - IfcLaborResourceTypeEnum (const std::string& v); + // IfcLaborResourceTypeEnum (Value v); + // IfcLaborResourceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcLampTypeEnum : public IfcUtil::IfcBaseType { /// The IfcLampTypeEnum defines the range of different types of lamp available. /// /// HISTORY: New type in IFC 2x2 Addendum @@ -4166,19 +7578,21 @@ class IFC_PARSE_API IfcLampTypeEnum : public IfcUtil::IfcBaseType { /// TUNGSTENFILAMENT: A lamp that emits light by passing an electrical current through a tungsten wire filament in a near vacuum. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcLampTypeEnum : public express::DeclaredType { public: + IfcLampTypeEnum() {} + explicit IfcLampTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcLampType_COMPACTFLUORESCENT, IfcLampType_FLUORESCENT, IfcLampType_HALOGEN, IfcLampType_HIGHPRESSUREMERCURY, IfcLampType_HIGHPRESSURESODIUM, IfcLampType_LED, IfcLampType_METALHALIDE, IfcLampType_OLED, IfcLampType_TUNGSTENFILAMENT, IfcLampType_USERDEFINED, IfcLampType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcLampTypeEnum (IfcEntityInstanceData&& e); - IfcLampTypeEnum (Value v); - IfcLampTypeEnum (const std::string& v); + // IfcLampTypeEnum (Value v); + // IfcLampTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcLayerSetDirectionEnum : public IfcUtil::IfcBaseType { /// IfcLayerSetDirectionEnum provides identification of the axis of element geometry, denoting the layer set thickness direction, or direction of layer offsets. /// /// ENUMERATION @@ -4188,19 +7602,21 @@ class IFC_PARSE_API IfcLayerSetDirectionEnum : public IfcUtil::IfcBaseType { /// AXIS3: Usually z-axis. /// /// HISTORY: New Type in IFC2x. +class IFC_PARSE_API IfcLayerSetDirectionEnum : public express::DeclaredType { public: + IfcLayerSetDirectionEnum() {} + explicit IfcLayerSetDirectionEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcLayerSetDirection_AXIS1, IfcLayerSetDirection_AXIS2, IfcLayerSetDirection_AXIS3} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcLayerSetDirectionEnum (IfcEntityInstanceData&& e); - IfcLayerSetDirectionEnum (Value v); - IfcLayerSetDirectionEnum (const std::string& v); + // IfcLayerSetDirectionEnum (Value v); + // IfcLayerSetDirectionEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcLightDistributionCurveEnum : public IfcUtil::IfcBaseType { /// There are three kinds of light distribution curves, according to Standard CEN TC 169, prEN 13032-1, CIE 121: /// /// TYPE_A: Type A is basically not used. For completeness the Type A Photometry equals the Type B rotated 90° around the Z-Axis counter clockwise. @@ -4215,19 +7631,21 @@ class IFC_PARSE_API IfcLightDistributionCurveEnum : public IfcUtil::IfcBaseType /// Figure 302 — Light distribution curves /// /// HISTORY  This is a new enumeration in IFC2x2. +class IFC_PARSE_API IfcLightDistributionCurveEnum : public express::DeclaredType { public: + IfcLightDistributionCurveEnum() {} + explicit IfcLightDistributionCurveEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcLightDistributionCurve_TYPE_A, IfcLightDistributionCurve_TYPE_B, IfcLightDistributionCurve_TYPE_C, IfcLightDistributionCurve_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcLightDistributionCurveEnum (IfcEntityInstanceData&& e); - IfcLightDistributionCurveEnum (Value v); - IfcLightDistributionCurveEnum (const std::string& v); + // IfcLightDistributionCurveEnum (Value v); + // IfcLightDistributionCurveEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcLightEmissionSourceEnum : public IfcUtil::IfcBaseType { /// IfcLightEmissionSourceEnum defines the range of different types of light emitter available. /// /// HISTORY: New type in IFC2x2. @@ -4245,19 +7663,21 @@ class IFC_PARSE_API IfcLightEmissionSourceEnum : public IfcUtil::IfcBaseType { /// METALHALIDE /// TUNGSTENFILAMENT /// NOTDEFINED +class IFC_PARSE_API IfcLightEmissionSourceEnum : public express::DeclaredType { public: + IfcLightEmissionSourceEnum() {} + explicit IfcLightEmissionSourceEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + 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; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcLightEmissionSourceEnum (IfcEntityInstanceData&& e); - IfcLightEmissionSourceEnum (Value v); - IfcLightEmissionSourceEnum (const std::string& v); + // IfcLightEmissionSourceEnum (Value v); + // IfcLightEmissionSourceEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcLightFixtureTypeEnum : public IfcUtil::IfcBaseType { /// The IfcLightFixtureTypeEnum defines the range of different types of light fixture available. /// /// HISTORY: New type in IFC 2x Edition 2IFC 2x4: SECURITYLIGHTING added @@ -4269,33 +7689,37 @@ class IFC_PARSE_API IfcLightFixtureTypeEnum : public IfcUtil::IfcBaseType { /// SECURITYLIGHTING: A light fixture having specific purpose of directing occupants in an emergency, such as an illuminated exit sign or emergency flood light. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcLightFixtureTypeEnum : public express::DeclaredType { public: + IfcLightFixtureTypeEnum() {} + explicit IfcLightFixtureTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcLightFixtureType_DIRECTIONSOURCE, IfcLightFixtureType_POINTSOURCE, IfcLightFixtureType_SECURITYLIGHTING, IfcLightFixtureType_USERDEFINED, IfcLightFixtureType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcLightFixtureTypeEnum (IfcEntityInstanceData&& e); - IfcLightFixtureTypeEnum (Value v); - IfcLightFixtureTypeEnum (const std::string& v); + // IfcLightFixtureTypeEnum (Value v); + // IfcLightFixtureTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcLiquidTerminalTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcLiquidTerminalTypeEnum : public express::DeclaredType { public: + IfcLiquidTerminalTypeEnum() {} + explicit IfcLiquidTerminalTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcLiquidTerminalType_HOSEREEL, IfcLiquidTerminalType_LOADINGARM, IfcLiquidTerminalType_USERDEFINED, IfcLiquidTerminalType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcLiquidTerminalTypeEnum (IfcEntityInstanceData&& e); - IfcLiquidTerminalTypeEnum (Value v); - IfcLiquidTerminalTypeEnum (const std::string& v); + // IfcLiquidTerminalTypeEnum (Value v); + // IfcLiquidTerminalTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcLoadGroupTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This type definition is used to distinguish between different levels /// of load grouping. It allows to differentiate between load groups, load cases, and load combinations. /// Normally, these enumeration types shall be used in the following context: @@ -4317,19 +7741,21 @@ class IFC_PARSE_API IfcLoadGroupTypeEnum : public IfcUtil::IfcBaseType { /// HISTORY: New type in IFC 2x2. /// /// IFC 2x4 change: Obsolete item LOAD_COMBINATION_GROUP removed. Load cases are directly assigned to load combinations with different factors for each load case—load combination pair by means of IfcRelAssignsToGroupByFactor. +class IFC_PARSE_API IfcLoadGroupTypeEnum : public express::DeclaredType { public: + IfcLoadGroupTypeEnum() {} + explicit IfcLoadGroupTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcLoadGroupType_LOAD_CASE, IfcLoadGroupType_LOAD_COMBINATION, IfcLoadGroupType_LOAD_GROUP, IfcLoadGroupType_USERDEFINED, IfcLoadGroupType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcLoadGroupTypeEnum (IfcEntityInstanceData&& e); - IfcLoadGroupTypeEnum (Value v); - IfcLoadGroupTypeEnum (const std::string& v); + // IfcLoadGroupTypeEnum (Value v); + // IfcLoadGroupTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcLogicalOperatorEnum : public IfcUtil::IfcBaseType { /// Definition: IfcLogicalOperatorEnum is an enumeration that defines the logical operators that may be applied for the satisfaction of one or more operands (IfcConstraint) at a time. /// /// HISTORY  New type in IFC Release 2.0. Renamed from IfcConstraintAggregatorEnum in IFC 2x2 @@ -4574,47 +8000,53 @@ class IFC_PARSE_API IfcLogicalOperatorEnum : public IfcUtil::IfcBaseType { /// F /// F /// F +class IFC_PARSE_API IfcLogicalOperatorEnum : public express::DeclaredType { public: + IfcLogicalOperatorEnum() {} + explicit IfcLogicalOperatorEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcLogicalOperator_LOGICALAND, IfcLogicalOperator_LOGICALNOTAND, IfcLogicalOperator_LOGICALNOTOR, IfcLogicalOperator_LOGICALOR, IfcLogicalOperator_LOGICALXOR} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcLogicalOperatorEnum (IfcEntityInstanceData&& e); - IfcLogicalOperatorEnum (Value v); - IfcLogicalOperatorEnum (const std::string& v); + // IfcLogicalOperatorEnum (Value v); + // IfcLogicalOperatorEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcMarineFacilityTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcMarineFacilityTypeEnum : public express::DeclaredType { public: + IfcMarineFacilityTypeEnum() {} + explicit IfcMarineFacilityTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcMarineFacilityType_BARRIERBEACH, IfcMarineFacilityType_BREAKWATER, IfcMarineFacilityType_CANAL, IfcMarineFacilityType_DRYDOCK, IfcMarineFacilityType_FLOATINGDOCK, IfcMarineFacilityType_HYDROLIFT, IfcMarineFacilityType_JETTY, IfcMarineFacilityType_LAUNCHRECOVERY, IfcMarineFacilityType_MARINEDEFENCE, IfcMarineFacilityType_NAVIGATIONALCHANNEL, IfcMarineFacilityType_PORT, IfcMarineFacilityType_QUAY, IfcMarineFacilityType_REVETMENT, IfcMarineFacilityType_SHIPLIFT, IfcMarineFacilityType_SHIPLOCK, IfcMarineFacilityType_SHIPYARD, IfcMarineFacilityType_SLIPWAY, IfcMarineFacilityType_WATERWAY, IfcMarineFacilityType_WATERWAYSHIPLIFT, IfcMarineFacilityType_USERDEFINED, IfcMarineFacilityType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcMarineFacilityTypeEnum (IfcEntityInstanceData&& e); - IfcMarineFacilityTypeEnum (Value v); - IfcMarineFacilityTypeEnum (const std::string& v); + // IfcMarineFacilityTypeEnum (Value v); + // IfcMarineFacilityTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcMarinePartTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcMarinePartTypeEnum : public express::DeclaredType { public: + IfcMarinePartTypeEnum() {} + explicit IfcMarinePartTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcMarinePartType_ABOVEWATERLINE, IfcMarinePartType_ANCHORAGE, IfcMarinePartType_APPROACHCHANNEL, IfcMarinePartType_BELOWWATERLINE, IfcMarinePartType_BERTHINGSTRUCTURE, IfcMarinePartType_CHAMBER, IfcMarinePartType_CILL_LEVEL, IfcMarinePartType_COPELEVEL, IfcMarinePartType_CORE, IfcMarinePartType_CREST, IfcMarinePartType_GATEHEAD, IfcMarinePartType_GUDINGSTRUCTURE, IfcMarinePartType_HIGHWATERLINE, IfcMarinePartType_LANDFIELD, IfcMarinePartType_LEEWARDSIDE, IfcMarinePartType_LOWWATERLINE, IfcMarinePartType_MANUFACTURING, IfcMarinePartType_NAVIGATIONALAREA, IfcMarinePartType_PROTECTION, IfcMarinePartType_SHIPTRANSFER, IfcMarinePartType_STORAGEAREA, IfcMarinePartType_VEHICLESERVICING, IfcMarinePartType_WATERFIELD, IfcMarinePartType_WEATHERSIDE, IfcMarinePartType_USERDEFINED, IfcMarinePartType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcMarinePartTypeEnum (IfcEntityInstanceData&& e); - IfcMarinePartTypeEnum (Value v); - IfcMarinePartTypeEnum (const std::string& v); + // IfcMarinePartTypeEnum (Value v); + // IfcMarinePartTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcMechanicalFastenerTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the /// different types of mechanical fasteners: /// @@ -4632,19 +8064,21 @@ class IFC_PARSE_API IfcMechanicalFastenerTypeEnum : public IfcUtil::IfcBaseType /// NOTDEFINED: Undefined mechanical fastener /// /// HISTORY New Enumeration in IFC 2x4. +class IFC_PARSE_API IfcMechanicalFastenerTypeEnum : public express::DeclaredType { public: + IfcMechanicalFastenerTypeEnum() {} + explicit IfcMechanicalFastenerTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcMechanicalFastenerType_ANCHORBOLT, IfcMechanicalFastenerType_BOLT, IfcMechanicalFastenerType_CHAIN, IfcMechanicalFastenerType_COUPLER, IfcMechanicalFastenerType_DOWEL, IfcMechanicalFastenerType_NAIL, IfcMechanicalFastenerType_NAILPLATE, IfcMechanicalFastenerType_RAILFASTENING, IfcMechanicalFastenerType_RAILJOINT, IfcMechanicalFastenerType_RIVET, IfcMechanicalFastenerType_ROPE, IfcMechanicalFastenerType_SCREW, IfcMechanicalFastenerType_SHEARCONNECTOR, IfcMechanicalFastenerType_STAPLE, IfcMechanicalFastenerType_STUDSHEARCONNECTOR, IfcMechanicalFastenerType_USERDEFINED, IfcMechanicalFastenerType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcMechanicalFastenerTypeEnum (IfcEntityInstanceData&& e); - IfcMechanicalFastenerTypeEnum (Value v); - IfcMechanicalFastenerTypeEnum (const std::string& v); + // IfcMechanicalFastenerTypeEnum (Value v); + // IfcMechanicalFastenerTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcMedicalDeviceTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the functional type of medical device. /// /// The IfcMedicalDeviceTypeEnum contains the following: @@ -4658,19 +8092,21 @@ class IFC_PARSE_API IfcMedicalDeviceTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined medical device type. /// /// HISTORY: New enumeration in IFC 2x4. +class IFC_PARSE_API IfcMedicalDeviceTypeEnum : public express::DeclaredType { public: + IfcMedicalDeviceTypeEnum() {} + explicit IfcMedicalDeviceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcMedicalDeviceType_AIRSTATION, IfcMedicalDeviceType_FEEDAIRUNIT, IfcMedicalDeviceType_OXYGENGENERATOR, IfcMedicalDeviceType_OXYGENPLANT, IfcMedicalDeviceType_VACUUMSTATION, IfcMedicalDeviceType_USERDEFINED, IfcMedicalDeviceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcMedicalDeviceTypeEnum (IfcEntityInstanceData&& e); - IfcMedicalDeviceTypeEnum (Value v); - IfcMedicalDeviceTypeEnum (const std::string& v); + // IfcMedicalDeviceTypeEnum (Value v); + // IfcMedicalDeviceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcMemberTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the /// different types of linear elements an IfcMemberType object /// can fulfill: @@ -4714,47 +8150,53 @@ class IFC_PARSE_API IfcMemberTypeEnum : public IfcUtil::IfcBaseType { /// are added. /// IFC2x Edition 3 CHANGE The additional identifier MULLION has /// been added. +class IFC_PARSE_API IfcMemberTypeEnum : public express::DeclaredType { public: + IfcMemberTypeEnum() {} + explicit IfcMemberTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcMemberType_ARCH_SEGMENT, IfcMemberType_BRACE, IfcMemberType_CHORD, IfcMemberType_COLLAR, IfcMemberType_MEMBER, IfcMemberType_MULLION, IfcMemberType_PLATE, IfcMemberType_POST, IfcMemberType_PURLIN, IfcMemberType_RAFTER, IfcMemberType_STAY_CABLE, IfcMemberType_STIFFENING_RIB, IfcMemberType_STRINGER, IfcMemberType_STRUCTURALCABLE, IfcMemberType_STRUT, IfcMemberType_STUD, IfcMemberType_SUSPENDER, IfcMemberType_SUSPENSION_CABLE, IfcMemberType_TIEBAR, IfcMemberType_USERDEFINED, IfcMemberType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcMemberTypeEnum (IfcEntityInstanceData&& e); - IfcMemberTypeEnum (Value v); - IfcMemberTypeEnum (const std::string& v); + // IfcMemberTypeEnum (Value v); + // IfcMemberTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcMobileTelecommunicationsApplianceTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcMobileTelecommunicationsApplianceTypeEnum : public express::DeclaredType { public: + IfcMobileTelecommunicationsApplianceTypeEnum() {} + explicit IfcMobileTelecommunicationsApplianceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcMobileTelecommunicationsApplianceType_ACCESSPOINT, IfcMobileTelecommunicationsApplianceType_BASEBANDUNIT, IfcMobileTelecommunicationsApplianceType_BASETRANSCEIVERSTATION, IfcMobileTelecommunicationsApplianceType_E_UTRAN_NODE_B, IfcMobileTelecommunicationsApplianceType_GATEWAY_GPRS_SUPPORT_NODE, IfcMobileTelecommunicationsApplianceType_MASTERUNIT, IfcMobileTelecommunicationsApplianceType_MOBILESWITCHINGCENTER, IfcMobileTelecommunicationsApplianceType_MSCSERVER, IfcMobileTelecommunicationsApplianceType_PACKETCONTROLUNIT, IfcMobileTelecommunicationsApplianceType_REMOTERADIOUNIT, IfcMobileTelecommunicationsApplianceType_REMOTEUNIT, IfcMobileTelecommunicationsApplianceType_SERVICE_GPRS_SUPPORT_NODE, IfcMobileTelecommunicationsApplianceType_SUBSCRIBERSERVER, IfcMobileTelecommunicationsApplianceType_USERDEFINED, IfcMobileTelecommunicationsApplianceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcMobileTelecommunicationsApplianceTypeEnum (IfcEntityInstanceData&& e); - IfcMobileTelecommunicationsApplianceTypeEnum (Value v); - IfcMobileTelecommunicationsApplianceTypeEnum (const std::string& v); + // IfcMobileTelecommunicationsApplianceTypeEnum (Value v); + // IfcMobileTelecommunicationsApplianceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcMooringDeviceTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcMooringDeviceTypeEnum : public express::DeclaredType { public: + IfcMooringDeviceTypeEnum() {} + explicit IfcMooringDeviceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcMooringDeviceType_BOLLARD, IfcMooringDeviceType_LINETENSIONER, IfcMooringDeviceType_MAGNETICDEVICE, IfcMooringDeviceType_MOORINGHOOKS, IfcMooringDeviceType_VACUUMDEVICE, IfcMooringDeviceType_USERDEFINED, IfcMooringDeviceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcMooringDeviceTypeEnum (IfcEntityInstanceData&& e); - IfcMooringDeviceTypeEnum (Value v); - IfcMooringDeviceTypeEnum (const std::string& v); + // IfcMooringDeviceTypeEnum (Value v); + // IfcMooringDeviceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcMotorConnectionTypeEnum : public IfcUtil::IfcBaseType { /// The IfcMotorConnectionTypeEnum defines the range of different types of motor connection that can be specified. /// HISTORY: New type in IFC 2x. /// Enumeration @@ -4764,33 +8206,37 @@ class IFC_PARSE_API IfcMotorConnectionTypeEnum : public IfcUtil::IfcBaseType { /// DIRECTDRIVE: A direct, physical connection made between the motor and the driven device. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcMotorConnectionTypeEnum : public express::DeclaredType { public: + IfcMotorConnectionTypeEnum() {} + explicit IfcMotorConnectionTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcMotorConnectionType_BELTDRIVE, IfcMotorConnectionType_COUPLING, IfcMotorConnectionType_DIRECTDRIVE, IfcMotorConnectionType_USERDEFINED, IfcMotorConnectionType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcMotorConnectionTypeEnum (IfcEntityInstanceData&& e); - IfcMotorConnectionTypeEnum (Value v); - IfcMotorConnectionTypeEnum (const std::string& v); + // IfcMotorConnectionTypeEnum (Value v); + // IfcMotorConnectionTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcNavigationElementTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcNavigationElementTypeEnum : public express::DeclaredType { public: + IfcNavigationElementTypeEnum() {} + explicit IfcNavigationElementTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcNavigationElementType_BEACON, IfcNavigationElementType_BUOY, IfcNavigationElementType_USERDEFINED, IfcNavigationElementType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcNavigationElementTypeEnum (IfcEntityInstanceData&& e); - IfcNavigationElementTypeEnum (Value v); - IfcNavigationElementTypeEnum (const std::string& v); + // IfcNavigationElementTypeEnum (Value v); + // IfcNavigationElementTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcObjectiveEnum : public IfcUtil::IfcBaseType { /// IfcObjectiveEnum is an enumeration used to determine the objective for which purpose the constraint needs to be satisfied. /// /// HISTORY: IFC2x4 CHANGE: Extended to include CODEWAIVER. @@ -4820,19 +8266,21 @@ class IFC_PARSE_API IfcObjectiveEnum : public IfcUtil::IfcBaseType { /// /// TRIGGERCONDITION /// A constraint whose objective is to indicate a limiting value beyond which the condition of an object requires a particular form of attention. +class IFC_PARSE_API IfcObjectiveEnum : public express::DeclaredType { public: + IfcObjectiveEnum() {} + explicit IfcObjectiveEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcObjective_CODECOMPLIANCE, IfcObjective_CODEWAIVER, IfcObjective_DESIGNINTENT, IfcObjective_EXTERNAL, IfcObjective_HEALTHANDSAFETY, IfcObjective_MERGECONFLICT, IfcObjective_MODELVIEW, IfcObjective_PARAMETER, IfcObjective_REQUIREMENT, IfcObjective_SPECIFICATION, IfcObjective_TRIGGERCONDITION, IfcObjective_USERDEFINED, IfcObjective_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcObjectiveEnum (IfcEntityInstanceData&& e); - IfcObjectiveEnum (Value v); - IfcObjectiveEnum (const std::string& v); + // IfcObjectiveEnum (Value v); + // IfcObjectiveEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcOccupantTypeEnum : public IfcUtil::IfcBaseType { /// IfcOccupantTypeEnum defines the types of occupant from which the type required can be selected. /// HISTORY: New Enumeration in IFC Release 2.0 Modified in IFC 2x2 /// Enumeration: @@ -4846,19 +8294,21 @@ class IFC_PARSE_API IfcOccupantTypeEnum : public IfcUtil::IfcBaseType { /// TENANT: Actor renting the use of a property fro a period of time /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcOccupantTypeEnum : public express::DeclaredType { public: + IfcOccupantTypeEnum() {} + explicit IfcOccupantTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcOccupantType_ASSIGNEE, IfcOccupantType_ASSIGNOR, IfcOccupantType_LESSEE, IfcOccupantType_LESSOR, IfcOccupantType_LETTINGAGENT, IfcOccupantType_OWNER, IfcOccupantType_TENANT, IfcOccupantType_USERDEFINED, IfcOccupantType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcOccupantTypeEnum (IfcEntityInstanceData&& e); - IfcOccupantTypeEnum (Value v); - IfcOccupantTypeEnum (const std::string& v); + // IfcOccupantTypeEnum (Value v); + // IfcOccupantTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcOpeningElementTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: An enumeration defining the basic /// types for opening elements. /// @@ -4879,19 +8329,21 @@ class IFC_PARSE_API IfcOpeningElementTypeEnum : public IfcUtil::IfcBaseType { /// element /// NOTDEFINED: Undefined opening /// element +class IFC_PARSE_API IfcOpeningElementTypeEnum : public express::DeclaredType { public: + IfcOpeningElementTypeEnum() {} + explicit IfcOpeningElementTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcOpeningElementType_OPENING, IfcOpeningElementType_RECESS, IfcOpeningElementType_USERDEFINED, IfcOpeningElementType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcOpeningElementTypeEnum (IfcEntityInstanceData&& e); - IfcOpeningElementTypeEnum (Value v); - IfcOpeningElementTypeEnum (const std::string& v); + // IfcOpeningElementTypeEnum (Value v); + // IfcOpeningElementTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcOutletTypeEnum : public IfcUtil::IfcBaseType { /// The IfcOutletTypeEnum defines the range of different types of outlet that can be specified. /// /// HISTORY: New type in IFC 2x. Telephone and Data outlets added in IFC 2x4 @@ -4905,52 +8357,58 @@ class IFC_PARSE_API IfcOutletTypeEnum : public IfcUtil::IfcBaseType { /// TELEPHONEOUTLET: An outlet used for connecting telephone communications equipment. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcOutletTypeEnum : public express::DeclaredType { public: + IfcOutletTypeEnum() {} + explicit IfcOutletTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcOutletType_AUDIOVISUALOUTLET, IfcOutletType_COMMUNICATIONSOUTLET, IfcOutletType_DATAOUTLET, IfcOutletType_POWEROUTLET, IfcOutletType_TELEPHONEOUTLET, IfcOutletType_USERDEFINED, IfcOutletType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcOutletTypeEnum (IfcEntityInstanceData&& e); - IfcOutletTypeEnum (Value v); - IfcOutletTypeEnum (const std::string& v); + // IfcOutletTypeEnum (Value v); + // IfcOutletTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcPavementTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcPavementTypeEnum : public express::DeclaredType { public: + IfcPavementTypeEnum() {} + explicit IfcPavementTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcPavementType_FLEXIBLE, IfcPavementType_RIGID, IfcPavementType_USERDEFINED, IfcPavementType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcPavementTypeEnum (IfcEntityInstanceData&& e); - IfcPavementTypeEnum (Value v); - IfcPavementTypeEnum (const std::string& v); + // IfcPavementTypeEnum (Value v); + // IfcPavementTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcPerformanceHistoryTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration is used to identify the primary purpose of performance history. The IfcPerformanceHistoryTypeEnum contains the following: /// /// USERDEFINED: User-defined. /// NOTDEFINED: Undefined. /// /// HISTORY: New enumeration in IFC2x4 +class IFC_PARSE_API IfcPerformanceHistoryTypeEnum : public express::DeclaredType { public: + IfcPerformanceHistoryTypeEnum() {} + explicit IfcPerformanceHistoryTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcPerformanceHistoryType_USERDEFINED, IfcPerformanceHistoryType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcPerformanceHistoryTypeEnum (IfcEntityInstanceData&& e); - IfcPerformanceHistoryTypeEnum (Value v); - IfcPerformanceHistoryTypeEnum (const std::string& v); + // IfcPerformanceHistoryTypeEnum (Value v); + // IfcPerformanceHistoryTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcPermeableCoveringOperationEnum : public IfcUtil::IfcBaseType { /// Definition: Enumeration defining the valid types of permeable coverings. /// /// Enumeration: @@ -4973,19 +8431,21 @@ class IFC_PARSE_API IfcPermeableCoveringOperationEnum : public IfcUtil::IfcBaseT /// no information available /// /// HISTORY: New Enumeration in IFC Release 2.0 +class IFC_PARSE_API IfcPermeableCoveringOperationEnum : public express::DeclaredType { public: + IfcPermeableCoveringOperationEnum() {} + explicit IfcPermeableCoveringOperationEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcPermeableCoveringOperation_GRILL, IfcPermeableCoveringOperation_LOUVER, IfcPermeableCoveringOperation_SCREEN, IfcPermeableCoveringOperation_USERDEFINED, IfcPermeableCoveringOperation_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcPermeableCoveringOperationEnum (IfcEntityInstanceData&& e); - IfcPermeableCoveringOperationEnum (Value v); - IfcPermeableCoveringOperationEnum (const std::string& v); + // IfcPermeableCoveringOperationEnum (Value v); + // IfcPermeableCoveringOperationEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcPermitTypeEnum : public IfcUtil::IfcBaseType { /// IfcPermitTypeEnum defines the types of permits that can be granted. /// HISTORY: New Enumeration in IFC2x4. /// Enumeration: @@ -4995,19 +8455,21 @@ class IFC_PARSE_API IfcPermitTypeEnum : public IfcUtil::IfcBaseType { /// WORK: Enables work to be carried out in an identified area. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcPermitTypeEnum : public express::DeclaredType { public: + IfcPermitTypeEnum() {} + explicit IfcPermitTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcPermitType_ACCESS, IfcPermitType_BUILDING, IfcPermitType_WORK, IfcPermitType_USERDEFINED, IfcPermitType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcPermitTypeEnum (IfcEntityInstanceData&& e); - IfcPermitTypeEnum (Value v); - IfcPermitTypeEnum (const std::string& v); + // IfcPermitTypeEnum (Value v); + // IfcPermitTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcPhysicalOrVirtualEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the /// different types of space boundaries in terms of its /// physical manifestation. A space boundary can either be @@ -5031,19 +8493,21 @@ class IFC_PARSE_API IfcPhysicalOrVirtualEnum : public IfcUtil::IfcBaseType { /// /// HISTORY: New enumeration in /// IFC Release 2.0 +class IFC_PARSE_API IfcPhysicalOrVirtualEnum : public express::DeclaredType { public: + IfcPhysicalOrVirtualEnum() {} + explicit IfcPhysicalOrVirtualEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcPhysicalOrVirtual_PHYSICAL, IfcPhysicalOrVirtual_VIRTUAL, IfcPhysicalOrVirtual_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcPhysicalOrVirtualEnum (IfcEntityInstanceData&& e); - IfcPhysicalOrVirtualEnum (Value v); - IfcPhysicalOrVirtualEnum (const std::string& v); + // IfcPhysicalOrVirtualEnum (Value v); + // IfcPhysicalOrVirtualEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcPileConstructionEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: Enumeration defining the construction type /// for piles. The type is mainly based on how the piles are used and manufactured. /// Some material information is mixed in because this affects the way the piles @@ -5066,19 +8530,21 @@ class IFC_PARSE_API IfcPileConstructionEnum : public IfcUtil::IfcBaseType { /// USERDEFINED Special types of pile construction which meet /// specific local requirements. /// NOTDEFINED The type of pile construction is not defined. +class IFC_PARSE_API IfcPileConstructionEnum : public express::DeclaredType { public: + IfcPileConstructionEnum() {} + explicit IfcPileConstructionEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcPileConstruction_CAST_IN_PLACE, IfcPileConstruction_COMPOSITE, IfcPileConstruction_PRECAST_CONCRETE, IfcPileConstruction_PREFAB_STEEL, IfcPileConstruction_USERDEFINED, IfcPileConstruction_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcPileConstructionEnum (IfcEntityInstanceData&& e); - IfcPileConstructionEnum (Value v); - IfcPileConstructionEnum (const std::string& v); + // IfcPileConstructionEnum (Value v); + // IfcPileConstructionEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcPileTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: Enumeration defining the pile type. /// /// HISTORY New type in IFC Release 2x2 @@ -5092,19 +8558,21 @@ class IFC_PARSE_API IfcPileTypeEnum : public IfcUtil::IfcBaseType { /// SUPPORT A support pile. /// USERDEFINED The type of pile function is user defined. /// NOTDEFINED The type of pile function is not defined. +class IFC_PARSE_API IfcPileTypeEnum : public express::DeclaredType { public: + IfcPileTypeEnum() {} + explicit IfcPileTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcPileType_BORED, IfcPileType_COHESION, IfcPileType_DRIVEN, IfcPileType_FRICTION, IfcPileType_JETGROUTING, IfcPileType_SUPPORT, IfcPileType_USERDEFINED, IfcPileType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcPileTypeEnum (IfcEntityInstanceData&& e); - IfcPileTypeEnum (Value v); - IfcPileTypeEnum (const std::string& v); + // IfcPileTypeEnum (Value v); + // IfcPileTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcPipeFittingTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration is used to identify the primary purpose of a pipe fitting. This is a very basic categorization mechanism /// to generically identify the pipe fitting type. Subcategories /// of pipe fittings are not enumerated. @@ -5136,19 +8604,21 @@ class IFC_PARSE_API IfcPipeFittingTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined fitting. /// /// HISTORY: New enumeration in IFC 2x2 +class IFC_PARSE_API IfcPipeFittingTypeEnum : public express::DeclaredType { public: + IfcPipeFittingTypeEnum() {} + explicit IfcPipeFittingTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcPipeFittingType_BEND, IfcPipeFittingType_CONNECTOR, IfcPipeFittingType_ENTRY, IfcPipeFittingType_EXIT, IfcPipeFittingType_JUNCTION, IfcPipeFittingType_OBSTRUCTION, IfcPipeFittingType_TRANSITION, IfcPipeFittingType_USERDEFINED, IfcPipeFittingType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcPipeFittingTypeEnum (IfcEntityInstanceData&& e); - IfcPipeFittingTypeEnum (Value v); - IfcPipeFittingTypeEnum (const std::string& v); + // IfcPipeFittingTypeEnum (Value v); + // IfcPipeFittingTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcPipeSegmentTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration is used to identify the primary purpose of a /// pipe segment. This is a very basic categorization mechanism /// to generically identify the pipe segment type. Subcategories @@ -5164,19 +8634,21 @@ class IFC_PARSE_API IfcPipeSegmentTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined segment. /// /// HISTORY: New enumeration in IFC 2x2 +class IFC_PARSE_API IfcPipeSegmentTypeEnum : public express::DeclaredType { public: + IfcPipeSegmentTypeEnum() {} + explicit IfcPipeSegmentTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcPipeSegmentType_CULVERT, IfcPipeSegmentType_FLEXIBLESEGMENT, IfcPipeSegmentType_GUTTER, IfcPipeSegmentType_RIGIDSEGMENT, IfcPipeSegmentType_SPOOL, IfcPipeSegmentType_USERDEFINED, IfcPipeSegmentType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcPipeSegmentTypeEnum (IfcEntityInstanceData&& e); - IfcPipeSegmentTypeEnum (Value v); - IfcPipeSegmentTypeEnum (const std::string& v); + // IfcPipeSegmentTypeEnum (Value v); + // IfcPipeSegmentTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcPlateTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration /// defines the different types of planar elements an IfcPlateType /// object can fulfill: @@ -5195,33 +8667,37 @@ class IFC_PARSE_API IfcPlateTypeEnum : public IfcUtil::IfcBaseType { /// CHANGE  The additional identifiers CURTAIN_PANEL, SHEET have /// been /// added. +class IFC_PARSE_API IfcPlateTypeEnum : public express::DeclaredType { public: + IfcPlateTypeEnum() {} + explicit IfcPlateTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcPlateType_BASE_PLATE, IfcPlateType_COVER_PLATE, IfcPlateType_CURTAIN_PANEL, IfcPlateType_FLANGE_PLATE, IfcPlateType_GUSSET_PLATE, IfcPlateType_SHEET, IfcPlateType_SPLICE_PLATE, IfcPlateType_STIFFENER_PLATE, IfcPlateType_WEB_PLATE, IfcPlateType_USERDEFINED, IfcPlateType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcPlateTypeEnum (IfcEntityInstanceData&& e); - IfcPlateTypeEnum (Value v); - IfcPlateTypeEnum (const std::string& v); + // IfcPlateTypeEnum (Value v); + // IfcPlateTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcPreferredSurfaceCurveRepresentation : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcPreferredSurfaceCurveRepresentation : public express::DeclaredType { public: + IfcPreferredSurfaceCurveRepresentation() {} + explicit IfcPreferredSurfaceCurveRepresentation (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcPreferredSurfaceCurveRepresentation_CURVE3D, IfcPreferredSurfaceCurveRepresentation_PCURVE_S1, IfcPreferredSurfaceCurveRepresentation_PCURVE_S2} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcPreferredSurfaceCurveRepresentation (IfcEntityInstanceData&& e); - IfcPreferredSurfaceCurveRepresentation (Value v); - IfcPreferredSurfaceCurveRepresentation (const std::string& v); + // IfcPreferredSurfaceCurveRepresentation (Value v); + // IfcPreferredSurfaceCurveRepresentation (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcProcedureTypeEnum : public IfcUtil::IfcBaseType { /// The IfcProcedureTypeEnum defines the range of different types of procedure that can be specified. /// /// HISTORY: New type in IFC2x2 @@ -5236,19 +8712,21 @@ class IFC_PARSE_API IfcProcedureTypeEnum : public IfcUtil::IfcBaseType { /// STARTUP: A procedure undertaken to start up the operation an artifact /// USERDEFINED /// NOTDEFINED +class IFC_PARSE_API IfcProcedureTypeEnum : public express::DeclaredType { public: + IfcProcedureTypeEnum() {} + explicit IfcProcedureTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcProcedureType_ADVICE_CAUTION, IfcProcedureType_ADVICE_NOTE, IfcProcedureType_ADVICE_WARNING, IfcProcedureType_CALIBRATION, IfcProcedureType_DIAGNOSTIC, IfcProcedureType_SHUTDOWN, IfcProcedureType_STARTUP, IfcProcedureType_USERDEFINED, IfcProcedureType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcProcedureTypeEnum (IfcEntityInstanceData&& e); - IfcProcedureTypeEnum (Value v); - IfcProcedureTypeEnum (const std::string& v); + // IfcProcedureTypeEnum (Value v); + // IfcProcedureTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcProfileTypeEnum : public IfcUtil::IfcBaseType { /// The enumeration defines whether the definition of a profile shape shall be geometrically resolved into a curve or into a surface. /// /// HISTORY: New type in IFC 1.5. @@ -5257,19 +8735,21 @@ class IFC_PARSE_API IfcProfileTypeEnum : public IfcUtil::IfcBaseType { /// /// CURVE: The resulting geometric item is of type curve and closed (with the only exception of the curve created by the IfcArbitraryOpenProfileDef which resolves into an open curve). The resulting geometry after applying a sweeping operation is a swept surface. This can be used to define shapes with thin sheets, such as ducts, where the thickness is not appropriate for geometric representation. /// AREA: The resulting geometric item is of type surface. The resulting geometry after applying a sweeping operation is a swept solid with defined volume. +class IFC_PARSE_API IfcProfileTypeEnum : public express::DeclaredType { public: + IfcProfileTypeEnum() {} + explicit IfcProfileTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcProfileType_AREA, IfcProfileType_CURVE} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcProfileTypeEnum (IfcEntityInstanceData&& e); - IfcProfileTypeEnum (Value v); - IfcProfileTypeEnum (const std::string& v); + // IfcProfileTypeEnum (Value v); + // IfcProfileTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcProjectOrderTypeEnum : public IfcUtil::IfcBaseType { /// An IfcProjectOrderTypeEnum is a list of the types of project order that may be identified. /// HISTORY: New type in IFC 2x2 /// Enumeration @@ -5281,38 +8761,42 @@ class IFC_PARSE_API IfcProjectOrderTypeEnum : public IfcUtil::IfcBaseType { /// WORKORDER: A general instruction to carry out work and a description of the work to be done. Note the difference between a work order generally and a maintenance work order. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcProjectOrderTypeEnum : public express::DeclaredType { public: + IfcProjectOrderTypeEnum() {} + explicit IfcProjectOrderTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcProjectOrderType_CHANGEORDER, IfcProjectOrderType_MAINTENANCEWORKORDER, IfcProjectOrderType_MOVEORDER, IfcProjectOrderType_PURCHASEORDER, IfcProjectOrderType_WORKORDER, IfcProjectOrderType_USERDEFINED, IfcProjectOrderType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcProjectOrderTypeEnum (IfcEntityInstanceData&& e); - IfcProjectOrderTypeEnum (Value v); - IfcProjectOrderTypeEnum (const std::string& v); + // IfcProjectOrderTypeEnum (Value v); + // IfcProjectOrderTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcProjectedOrTrueLengthEnum : public IfcUtil::IfcBaseType { /// This enumeration type is needed for load definition and is only considered if the load values are given as global actions and if they define linear or planar loads (that is, one- or two-dimensionally distributed loads). /// Figure 234 illustrates the interpretation of a load definition depending on the enumeration types IfcGlobalOrLocalEnum and IfcProjectedOrTrueLengthEnum. /// /// HISTORY  New type in IFC2x2. /// /// Figure 234 — Projected or true length +class IFC_PARSE_API IfcProjectedOrTrueLengthEnum : public express::DeclaredType { public: + IfcProjectedOrTrueLengthEnum() {} + explicit IfcProjectedOrTrueLengthEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcProjectedOrTrueLength_PROJECTED_LENGTH, IfcProjectedOrTrueLength_TRUE_LENGTH} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcProjectedOrTrueLengthEnum (IfcEntityInstanceData&& e); - IfcProjectedOrTrueLengthEnum (Value v); - IfcProjectedOrTrueLengthEnum (const std::string& v); + // IfcProjectedOrTrueLengthEnum (Value v); + // IfcProjectedOrTrueLengthEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcProjectionElementTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: An enumeration defining the basic /// types for projection elements. /// @@ -5325,19 +8809,21 @@ class IFC_PARSE_API IfcProjectionElementTypeEnum : public IfcUtil::IfcBaseType { /// element /// NOTDEFINED: Undefined projection /// element +class IFC_PARSE_API IfcProjectionElementTypeEnum : public express::DeclaredType { public: + IfcProjectionElementTypeEnum() {} + explicit IfcProjectionElementTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcProjectionElementType_BLISTER, IfcProjectionElementType_DEVIATOR, IfcProjectionElementType_USERDEFINED, IfcProjectionElementType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcProjectionElementTypeEnum (IfcEntityInstanceData&& e); - IfcProjectionElementTypeEnum (Value v); - IfcProjectionElementTypeEnum (const std::string& v); + // IfcProjectionElementTypeEnum (Value v); + // IfcProjectionElementTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcPropertySetTemplateTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration defines the general /// applicability of instances of IfcPropertySet, or /// IfcElementQuantity defined by this @@ -5376,19 +8862,21 @@ class IFC_PARSE_API IfcPropertySetTemplateTypeEnum : public IfcUtil::IfcBaseType /// restriction provided, the property sets defined by this /// IfcPropertySetTemplate can be assigned to any entity, if not /// otherwise restricted by the ApplicableEntity attribute. +class IFC_PARSE_API IfcPropertySetTemplateTypeEnum : public express::DeclaredType { public: + IfcPropertySetTemplateTypeEnum() {} + explicit IfcPropertySetTemplateTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcPropertySetTemplateType_PSET_MATERIALDRIVEN, IfcPropertySetTemplateType_PSET_OCCURRENCEDRIVEN, IfcPropertySetTemplateType_PSET_PERFORMANCEDRIVEN, IfcPropertySetTemplateType_PSET_PROFILEDRIVEN, IfcPropertySetTemplateType_PSET_TYPEDRIVENONLY, IfcPropertySetTemplateType_PSET_TYPEDRIVENOVERRIDE, IfcPropertySetTemplateType_QTO_OCCURRENCEDRIVEN, IfcPropertySetTemplateType_QTO_TYPEDRIVENONLY, IfcPropertySetTemplateType_QTO_TYPEDRIVENOVERRIDE, IfcPropertySetTemplateType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcPropertySetTemplateTypeEnum (IfcEntityInstanceData&& e); - IfcPropertySetTemplateTypeEnum (Value v); - IfcPropertySetTemplateTypeEnum (const std::string& v); + // IfcPropertySetTemplateTypeEnum (Value v); + // IfcPropertySetTemplateTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcProtectiveDeviceTrippingUnitTypeEnum : public IfcUtil::IfcBaseType { /// Defines the range of different tripping unit types that can be used in conjunction with a protective device. /// HISTORY: New enumeration in IFC2x4 /// @@ -5396,19 +8884,21 @@ class IFC_PARSE_API IfcProtectiveDeviceTrippingUnitTypeEnum : public IfcUtil::If /// ELECTROMAGNETIC: A tripping unit activated by electromagnetic action. /// RESIDUALCURRENT: A tripping unit activated by residual current detection. /// THERMAL: A tripping unit activated by thermal action. +class IFC_PARSE_API IfcProtectiveDeviceTrippingUnitTypeEnum : public express::DeclaredType { public: + IfcProtectiveDeviceTrippingUnitTypeEnum() {} + explicit IfcProtectiveDeviceTrippingUnitTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcProtectiveDeviceTrippingUnitType_ELECTROMAGNETIC, IfcProtectiveDeviceTrippingUnitType_ELECTRONIC, IfcProtectiveDeviceTrippingUnitType_RESIDUALCURRENT, IfcProtectiveDeviceTrippingUnitType_THERMAL, IfcProtectiveDeviceTrippingUnitType_USERDEFINED, IfcProtectiveDeviceTrippingUnitType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcProtectiveDeviceTrippingUnitTypeEnum (IfcEntityInstanceData&& e); - IfcProtectiveDeviceTrippingUnitTypeEnum (Value v); - IfcProtectiveDeviceTrippingUnitTypeEnum (const std::string& v); + // IfcProtectiveDeviceTrippingUnitTypeEnum (Value v); + // IfcProtectiveDeviceTrippingUnitTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcProtectiveDeviceTypeEnum : public IfcUtil::IfcBaseType { /// The IfcProtectiveDeviceTypeEnum specifically defines the range of different breaker unit types that can be used in conjunction with protective device. Types may also be used as a reference to a complete protective device in circumstances where tripping units are not separately identified (typically expected to be the case during earlier stages of design). /// /// HISTORY: New type in IFC 2x2. Modified definition and usage in IFC 2x4 @@ -5424,19 +8914,21 @@ class IFC_PARSE_API IfcProtectiveDeviceTypeEnum : public IfcUtil::IfcBaseType { /// VARISTOR: A high voltage surge protection device. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcProtectiveDeviceTypeEnum : public express::DeclaredType { public: + IfcProtectiveDeviceTypeEnum() {} + explicit IfcProtectiveDeviceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcProtectiveDeviceType_ANTI_ARCING_DEVICE, IfcProtectiveDeviceType_CIRCUITBREAKER, IfcProtectiveDeviceType_EARTHINGSWITCH, IfcProtectiveDeviceType_EARTHLEAKAGECIRCUITBREAKER, IfcProtectiveDeviceType_FUSEDISCONNECTOR, IfcProtectiveDeviceType_RESIDUALCURRENTCIRCUITBREAKER, IfcProtectiveDeviceType_RESIDUALCURRENTSWITCH, IfcProtectiveDeviceType_SPARKGAP, IfcProtectiveDeviceType_VARISTOR, IfcProtectiveDeviceType_VOLTAGELIMITER, IfcProtectiveDeviceType_USERDEFINED, IfcProtectiveDeviceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcProtectiveDeviceTypeEnum (IfcEntityInstanceData&& e); - IfcProtectiveDeviceTypeEnum (Value v); - IfcProtectiveDeviceTypeEnum (const std::string& v); + // IfcProtectiveDeviceTypeEnum (Value v); + // IfcProtectiveDeviceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcPumpTypeEnum : public IfcUtil::IfcBaseType { /// Defines general types of pumps. /// /// The IfcPumpTypeEnum contains the following: @@ -5465,33 +8957,37 @@ class IFC_PARSE_API IfcPumpTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Pump type has not been defined. /// /// HISTORY: New enumeration in IFC R2x. SUBMERSIBLEPUMP and SUMPPUMP added in IFC2x4. +class IFC_PARSE_API IfcPumpTypeEnum : public express::DeclaredType { public: + IfcPumpTypeEnum() {} + explicit IfcPumpTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcPumpType_CIRCULATOR, IfcPumpType_ENDSUCTION, IfcPumpType_SPLITCASE, IfcPumpType_SUBMERSIBLEPUMP, IfcPumpType_SUMPPUMP, IfcPumpType_VERTICALINLINE, IfcPumpType_VERTICALTURBINE, IfcPumpType_USERDEFINED, IfcPumpType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcPumpTypeEnum (IfcEntityInstanceData&& e); - IfcPumpTypeEnum (Value v); - IfcPumpTypeEnum (const std::string& v); + // IfcPumpTypeEnum (Value v); + // IfcPumpTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcRailTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcRailTypeEnum : public express::DeclaredType { public: + IfcRailTypeEnum() {} + explicit IfcRailTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcRailType_BLADE, IfcRailType_CHECKRAIL, IfcRailType_GUARDRAIL, IfcRailType_RACKRAIL, IfcRailType_RAIL, IfcRailType_STOCKRAIL, IfcRailType_USERDEFINED, IfcRailType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcRailTypeEnum (IfcEntityInstanceData&& e); - IfcRailTypeEnum (Value v); - IfcRailTypeEnum (const std::string& v); + // IfcRailTypeEnum (Value v); + // IfcRailTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcRailingTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: Enumeration defining the valid types of /// railings that can be predefined using the enumeration values. /// HISTORY: New Enumeration in IFC @@ -5512,47 +9008,53 @@ class IFC_PARSE_API IfcRailingTypeEnum : public IfcUtil::IfcBaseType { /// the user type is given by the attribute IfcRailing.ObjectType. /// NOTDEFINED: Undefined railing element, no type information /// available. +class IFC_PARSE_API IfcRailingTypeEnum : public express::DeclaredType { public: + IfcRailingTypeEnum() {} + explicit IfcRailingTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcRailingType_BALUSTRADE, IfcRailingType_FENCE, IfcRailingType_GUARDRAIL, IfcRailingType_HANDRAIL, IfcRailingType_USERDEFINED, IfcRailingType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcRailingTypeEnum (IfcEntityInstanceData&& e); - IfcRailingTypeEnum (Value v); - IfcRailingTypeEnum (const std::string& v); + // IfcRailingTypeEnum (Value v); + // IfcRailingTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcRailwayPartTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcRailwayPartTypeEnum : public express::DeclaredType { public: + IfcRailwayPartTypeEnum() {} + explicit IfcRailwayPartTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcRailwayPartType_ABOVETRACK, IfcRailwayPartType_DILATIONTRACK, IfcRailwayPartType_LINESIDE, IfcRailwayPartType_LINESIDEPART, IfcRailwayPartType_PLAINTRACK, IfcRailwayPartType_SUBSTRUCTURE, IfcRailwayPartType_TRACK, IfcRailwayPartType_TRACKPART, IfcRailwayPartType_TURNOUTTRACK, IfcRailwayPartType_USERDEFINED, IfcRailwayPartType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcRailwayPartTypeEnum (IfcEntityInstanceData&& e); - IfcRailwayPartTypeEnum (Value v); - IfcRailwayPartTypeEnum (const std::string& v); + // IfcRailwayPartTypeEnum (Value v); + // IfcRailwayPartTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcRailwayTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcRailwayTypeEnum : public express::DeclaredType { public: + IfcRailwayTypeEnum() {} + explicit IfcRailwayTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcRailwayType_USERDEFINED, IfcRailwayType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcRailwayTypeEnum (IfcEntityInstanceData&& e); - IfcRailwayTypeEnum (Value v); - IfcRailwayTypeEnum (const std::string& v); + // IfcRailwayTypeEnum (Value v); + // IfcRailwayTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcRampFlightTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the different types /// of linear elements an IfcRampFlightType object can fulfill: /// @@ -5564,19 +9066,21 @@ class IFC_PARSE_API IfcRampFlightTypeEnum : public IfcUtil::IfcBaseType { /// /// HISTORY: New Enumeration in /// Release IFC2x Edition 2. +class IFC_PARSE_API IfcRampFlightTypeEnum : public express::DeclaredType { public: + IfcRampFlightTypeEnum() {} + explicit IfcRampFlightTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcRampFlightType_SPIRAL, IfcRampFlightType_STRAIGHT, IfcRampFlightType_USERDEFINED, IfcRampFlightType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcRampFlightTypeEnum (IfcEntityInstanceData&& e); - IfcRampFlightTypeEnum (Value v); - IfcRampFlightTypeEnum (const std::string& v); + // IfcRampFlightTypeEnum (Value v); + // IfcRampFlightTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcRampTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration defines the basic configuration of the ramp type in terms of the number and shape of ramp flights, as shown in Figure 67. The type also distinguished turns by landings. In addition the subdivision of the straight and changing direction ramps is included. The ramp configurations are given for ramps without and with one and two landings. /// /// Ramps which are subdivided into more than two landings have to be defined by the geometry only. Also ramps with non-regular shapes have to be defined by the geometry only. The type of such ramps is USERDEFINED. @@ -5625,19 +9129,21 @@ class IFC_PARSE_API IfcRampTypeEnum : public IfcUtil::IfcBaseType { ///   /// /// Figure 67 — Ramp types +class IFC_PARSE_API IfcRampTypeEnum : public express::DeclaredType { public: + IfcRampTypeEnum() {} + explicit IfcRampTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcRampType_HALF_TURN_RAMP, IfcRampType_QUARTER_TURN_RAMP, IfcRampType_SPIRAL_RAMP, IfcRampType_STRAIGHT_RUN_RAMP, IfcRampType_TWO_QUARTER_TURN_RAMP, IfcRampType_TWO_STRAIGHT_RUN_RAMP, IfcRampType_USERDEFINED, IfcRampType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcRampTypeEnum (IfcEntityInstanceData&& e); - IfcRampTypeEnum (Value v); - IfcRampTypeEnum (const std::string& v); + // IfcRampTypeEnum (Value v); + // IfcRampTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcRecurrenceTypeEnum : public IfcUtil::IfcBaseType { /// IfcRecurrenceTypeEnum enumerates the recurring pattern type. The following /// combinations are valid: /// @@ -5659,33 +9165,37 @@ class IFC_PARSE_API IfcRecurrenceTypeEnum : public IfcUtil::IfcBaseType { /// /// HISTORY: New enumeration in IFC /// Release 2x4. +class IFC_PARSE_API IfcRecurrenceTypeEnum : public express::DeclaredType { public: + IfcRecurrenceTypeEnum() {} + explicit IfcRecurrenceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcRecurrenceType_BY_DAY_COUNT, IfcRecurrenceType_BY_WEEKDAY_COUNT, IfcRecurrenceType_DAILY, IfcRecurrenceType_MONTHLY_BY_DAY_OF_MONTH, IfcRecurrenceType_MONTHLY_BY_POSITION, IfcRecurrenceType_WEEKLY, IfcRecurrenceType_YEARLY_BY_DAY_OF_MONTH, IfcRecurrenceType_YEARLY_BY_POSITION} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcRecurrenceTypeEnum (IfcEntityInstanceData&& e); - IfcRecurrenceTypeEnum (Value v); - IfcRecurrenceTypeEnum (const std::string& v); + // IfcRecurrenceTypeEnum (Value v); + // IfcRecurrenceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcReferentTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcReferentTypeEnum : public express::DeclaredType { public: + IfcReferentTypeEnum() {} + explicit IfcReferentTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcReferentType_BOUNDARY, IfcReferentType_INTERSECTION, IfcReferentType_KILOPOINT, IfcReferentType_LANDMARK, IfcReferentType_MILEPOINT, IfcReferentType_POSITION, IfcReferentType_REFERENCEMARKER, IfcReferentType_STATION, IfcReferentType_SUPERELEVATIONEVENT, IfcReferentType_WIDTHEVENT, IfcReferentType_USERDEFINED, IfcReferentType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcReferentTypeEnum (IfcEntityInstanceData&& e); - IfcReferentTypeEnum (Value v); - IfcReferentTypeEnum (const std::string& v); + // IfcReferentTypeEnum (Value v); + // IfcReferentTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcReflectanceMethodEnum : public IfcUtil::IfcBaseType { /// The IfcReflectanceMethodEnum defines the range of different reflectance methods available. /// /// HISTORY: New type in IFC 2x2. @@ -5702,33 +9212,37 @@ class IFC_PARSE_API IfcReflectanceMethodEnum : public IfcUtil::IfcBaseType { /// PLASTIC: A reflectance model providing a specular effect which is similar to the Phong model. /// STRAUSS: A reflectance model for metallic and non-metallic appearance based on a limited set of control parameter. /// NOTDEFINED +class IFC_PARSE_API IfcReflectanceMethodEnum : public express::DeclaredType { public: + IfcReflectanceMethodEnum() {} + explicit IfcReflectanceMethodEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcReflectanceMethod_BLINN, IfcReflectanceMethod_FLAT, IfcReflectanceMethod_GLASS, IfcReflectanceMethod_MATT, IfcReflectanceMethod_METAL, IfcReflectanceMethod_MIRROR, IfcReflectanceMethod_PHONG, IfcReflectanceMethod_PHYSICAL, IfcReflectanceMethod_PLASTIC, IfcReflectanceMethod_STRAUSS, IfcReflectanceMethod_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcReflectanceMethodEnum (IfcEntityInstanceData&& e); - IfcReflectanceMethodEnum (Value v); - IfcReflectanceMethodEnum (const std::string& v); + // IfcReflectanceMethodEnum (Value v); + // IfcReflectanceMethodEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcReinforcedSoilTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcReinforcedSoilTypeEnum : public express::DeclaredType { public: + IfcReinforcedSoilTypeEnum() {} + explicit IfcReinforcedSoilTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcReinforcedSoilType_DYNAMICALLYCOMPACTED, IfcReinforcedSoilType_GROUTED, IfcReinforcedSoilType_REPLACED, IfcReinforcedSoilType_ROLLERCOMPACTED, IfcReinforcedSoilType_SURCHARGEPRELOADED, IfcReinforcedSoilType_VERTICALLYDRAINED, IfcReinforcedSoilType_USERDEFINED, IfcReinforcedSoilType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcReinforcedSoilTypeEnum (IfcEntityInstanceData&& e); - IfcReinforcedSoilTypeEnum (Value v); - IfcReinforcedSoilTypeEnum (const std::string& v); + // IfcReinforcedSoilTypeEnum (Value v); + // IfcReinforcedSoilTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcReinforcingBarRoleEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: Enumeration defining standard types for the /// role, purpose or usage of the bar, i.e. the kind of loads and stresses they are /// intended to carry. @@ -5748,19 +9262,21 @@ class IFC_PARSE_API IfcReinforcingBarRoleEnum : public IfcUtil::IfcBaseType { /// ANCHORING Anchoring reinforcement. /// USERDEFINED The type of reinforcement is user defined. /// NOTDEFINED The type of reinforcement is not defined. +class IFC_PARSE_API IfcReinforcingBarRoleEnum : public express::DeclaredType { public: + IfcReinforcingBarRoleEnum() {} + explicit IfcReinforcingBarRoleEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcReinforcingBarRole_ANCHORING, IfcReinforcingBarRole_EDGE, IfcReinforcingBarRole_LIGATURE, IfcReinforcingBarRole_MAIN, IfcReinforcingBarRole_PUNCHING, IfcReinforcingBarRole_RING, IfcReinforcingBarRole_SHEAR, IfcReinforcingBarRole_STUD, IfcReinforcingBarRole_USERDEFINED, IfcReinforcingBarRole_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcReinforcingBarRoleEnum (IfcEntityInstanceData&& e); - IfcReinforcingBarRoleEnum (Value v); - IfcReinforcingBarRoleEnum (const std::string& v); + // IfcReinforcingBarRoleEnum (Value v); + // IfcReinforcingBarRoleEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcReinforcingBarSurfaceEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: Enumeration indicating whether the bar has a /// plain or textured (ribbed) surface. /// @@ -5770,75 +9286,85 @@ class IFC_PARSE_API IfcReinforcingBarSurfaceEnum : public IfcUtil::IfcBaseType { /// /// PLAIN The reinforcing bar surface is plain. /// TEXTURED The reinforcing bar surface is textured (ribbed). +class IFC_PARSE_API IfcReinforcingBarSurfaceEnum : public express::DeclaredType { public: + IfcReinforcingBarSurfaceEnum() {} + explicit IfcReinforcingBarSurfaceEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcReinforcingBarSurface_PLAIN, IfcReinforcingBarSurface_TEXTURED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcReinforcingBarSurfaceEnum (IfcEntityInstanceData&& e); - IfcReinforcingBarSurfaceEnum (Value v); - IfcReinforcingBarSurfaceEnum (const std::string& v); + // IfcReinforcingBarSurfaceEnum (Value v); + // IfcReinforcingBarSurfaceEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcReinforcingBarTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcReinforcingBarTypeEnum : public express::DeclaredType { public: + IfcReinforcingBarTypeEnum() {} + explicit IfcReinforcingBarTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcReinforcingBarType_ANCHORING, IfcReinforcingBarType_EDGE, IfcReinforcingBarType_LIGATURE, IfcReinforcingBarType_MAIN, IfcReinforcingBarType_PUNCHING, IfcReinforcingBarType_RING, IfcReinforcingBarType_SHEAR, IfcReinforcingBarType_SPACEBAR, IfcReinforcingBarType_STUD, IfcReinforcingBarType_USERDEFINED, IfcReinforcingBarType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcReinforcingBarTypeEnum (IfcEntityInstanceData&& e); - IfcReinforcingBarTypeEnum (Value v); - IfcReinforcingBarTypeEnum (const std::string& v); + // IfcReinforcingBarTypeEnum (Value v); + // IfcReinforcingBarTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcReinforcingMeshTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcReinforcingMeshTypeEnum : public express::DeclaredType { public: + IfcReinforcingMeshTypeEnum() {} + explicit IfcReinforcingMeshTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcReinforcingMeshType_USERDEFINED, IfcReinforcingMeshType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcReinforcingMeshTypeEnum (IfcEntityInstanceData&& e); - IfcReinforcingMeshTypeEnum (Value v); - IfcReinforcingMeshTypeEnum (const std::string& v); + // IfcReinforcingMeshTypeEnum (Value v); + // IfcReinforcingMeshTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcRoadPartTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcRoadPartTypeEnum : public express::DeclaredType { public: + IfcRoadPartTypeEnum() {} + explicit IfcRoadPartTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcRoadPartType_BICYCLECROSSING, IfcRoadPartType_BUS_STOP, IfcRoadPartType_CARRIAGEWAY, IfcRoadPartType_CENTRALISLAND, IfcRoadPartType_CENTRALRESERVE, IfcRoadPartType_HARDSHOULDER, IfcRoadPartType_INTERSECTION, IfcRoadPartType_LAYBY, IfcRoadPartType_PARKINGBAY, IfcRoadPartType_PASSINGBAY, IfcRoadPartType_PEDESTRIAN_CROSSING, IfcRoadPartType_RAILWAYCROSSING, IfcRoadPartType_REFUGEISLAND, IfcRoadPartType_ROADSEGMENT, IfcRoadPartType_ROADSIDE, IfcRoadPartType_ROADSIDEPART, IfcRoadPartType_ROADWAYPLATEAU, IfcRoadPartType_ROUNDABOUT, IfcRoadPartType_SHOULDER, IfcRoadPartType_SIDEWALK, IfcRoadPartType_SOFTSHOULDER, IfcRoadPartType_TOLLPLAZA, IfcRoadPartType_TRAFFICISLAND, IfcRoadPartType_TRAFFICLANE, IfcRoadPartType_USERDEFINED, IfcRoadPartType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcRoadPartTypeEnum (IfcEntityInstanceData&& e); - IfcRoadPartTypeEnum (Value v); - IfcRoadPartTypeEnum (const std::string& v); + // IfcRoadPartTypeEnum (Value v); + // IfcRoadPartTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcRoadTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcRoadTypeEnum : public express::DeclaredType { public: + IfcRoadTypeEnum() {} + explicit IfcRoadTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcRoadType_USERDEFINED, IfcRoadType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcRoadTypeEnum (IfcEntityInstanceData&& e); - IfcRoadTypeEnum (Value v); - IfcRoadTypeEnum (const std::string& v); + // IfcRoadTypeEnum (Value v); + // IfcRoadTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcRoleEnum : public IfcUtil::IfcBaseType { /// Definition: Roles which may be played by an actor. /// /// HISTORY This type has changes after IFC Release 2.0. Spelling of COMMISSIONINGENGINEER fixed in IFC 2x4. @@ -5868,19 +9394,21 @@ class IFC_PARSE_API IfcRoleEnum : public IfcUtil::IfcBaseType { /// FIELDCONSTRUCTIONMANAGER /// RESELLER /// USERDEFINED User defined value to be provided. +class IFC_PARSE_API IfcRoleEnum : public express::DeclaredType { public: + IfcRoleEnum() {} + explicit IfcRoleEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcRole_ARCHITECT, IfcRole_BUILDINGOPERATOR, IfcRole_BUILDINGOWNER, IfcRole_CIVILENGINEER, IfcRole_CLIENT, IfcRole_COMMISSIONINGENGINEER, IfcRole_CONSTRUCTIONMANAGER, IfcRole_CONSULTANT, IfcRole_CONTRACTOR, IfcRole_COSTENGINEER, IfcRole_ELECTRICALENGINEER, IfcRole_ENGINEER, IfcRole_FACILITIESMANAGER, IfcRole_FIELDCONSTRUCTIONMANAGER, IfcRole_MANUFACTURER, IfcRole_MECHANICALENGINEER, IfcRole_OWNER, IfcRole_PROJECTMANAGER, IfcRole_RESELLER, IfcRole_STRUCTURALENGINEER, IfcRole_SUBCONTRACTOR, IfcRole_SUPPLIER, IfcRole_USERDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcRoleEnum (IfcEntityInstanceData&& e); - IfcRoleEnum (Value v); - IfcRoleEnum (const std::string& v); + // IfcRoleEnum (Value v); + // IfcRoleEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcRoofTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration defines the basic configuration of the roof in terms of the different roof shapes, as illustrated in Figure 68. /// /// Roofs which are subdivided into more than these basic shapes have to be defined by the geometry only. Also roofs with non-regular shapes (free form roof) have to be defined by the geometry only. The type of such roofs is FREEFORM. @@ -5947,19 +9475,21 @@ class IFC_PARSE_API IfcRoofTypeEnum : public IfcUtil::IfcBaseType { ///   /// /// Figure 68 — Roof types +class IFC_PARSE_API IfcRoofTypeEnum : public express::DeclaredType { public: + IfcRoofTypeEnum() {} + explicit IfcRoofTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcRoofType_BARREL_ROOF, IfcRoofType_BUTTERFLY_ROOF, IfcRoofType_DOME_ROOF, IfcRoofType_FLAT_ROOF, IfcRoofType_FREEFORM, IfcRoofType_GABLE_ROOF, IfcRoofType_GAMBREL_ROOF, IfcRoofType_HIPPED_GABLE_ROOF, IfcRoofType_HIP_ROOF, IfcRoofType_MANSARD_ROOF, IfcRoofType_PAVILION_ROOF, IfcRoofType_RAINBOW_ROOF, IfcRoofType_SHED_ROOF, IfcRoofType_USERDEFINED, IfcRoofType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcRoofTypeEnum (IfcEntityInstanceData&& e); - IfcRoofTypeEnum (Value v); - IfcRoofTypeEnum (const std::string& v); + // IfcRoofTypeEnum (Value v); + // IfcRoofTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSIPrefix : public IfcUtil::IfcBaseType { /// Definition from ISO/CD 10303-41:1992: An SI prefix is the name of a prefix that may be associated /// with an SI unit. The definitions of SI prefixes are specified in ISO 1000 (clause 3). /// @@ -5987,19 +9517,21 @@ class IFC_PARSE_API IfcSIPrefix : public IfcUtil::IfcBaseType { /// ATTO: 10^-18. /// /// HISTORY New entity in IFC Release 1.5.1. +class IFC_PARSE_API IfcSIPrefix : public express::DeclaredType { public: + IfcSIPrefix() {} + explicit IfcSIPrefix (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSIPrefix_ATTO, IfcSIPrefix_CENTI, IfcSIPrefix_DECA, IfcSIPrefix_DECI, IfcSIPrefix_EXA, IfcSIPrefix_FEMTO, IfcSIPrefix_GIGA, IfcSIPrefix_HECTO, IfcSIPrefix_KILO, IfcSIPrefix_MEGA, IfcSIPrefix_MICRO, IfcSIPrefix_MILLI, IfcSIPrefix_NANO, IfcSIPrefix_PETA, IfcSIPrefix_PICO, IfcSIPrefix_TERA} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSIPrefix (IfcEntityInstanceData&& e); - IfcSIPrefix (Value v); - IfcSIPrefix (const std::string& v); + // IfcSIPrefix (Value v); + // IfcSIPrefix (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSIUnitName : public IfcUtil::IfcBaseType { /// Definition from ISO/CD 10303-41:1992: An SI unit name is the name of an SI unit. The definitions of the /// names of SI units are specified in ISO 1000 (clause 2). /// @@ -6039,19 +9571,21 @@ class IFC_PARSE_API IfcSIUnitName : public IfcUtil::IfcBaseType { /// WEBER: Unit for magnetic flux. /// /// HISTORY New entity in IFC Release 1.5.1. +class IFC_PARSE_API IfcSIUnitName : public express::DeclaredType { public: + IfcSIUnitName() {} + explicit IfcSIUnitName (const std::weak_ptr& data) : express::DeclaredType(data) {} + 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; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSIUnitName (IfcEntityInstanceData&& e); - IfcSIUnitName (Value v); - IfcSIUnitName (const std::string& v); + // IfcSIUnitName (Value v); + // IfcSIUnitName (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSanitaryTerminalTypeEnum : public IfcUtil::IfcBaseType { /// The IfcSanitaryTerminalTypeEnum defines the range of different types of sanitary terminal that can be specified. /// /// NOTE: The value WCSEAT has been deprecated and should no longer be used; toilet seats should be represented by IfcDiscreteAccessory with ObjectType 'WC Seat'. @@ -6071,19 +9605,21 @@ class IFC_PARSE_API IfcSanitaryTerminalTypeEnum : public IfcUtil::IfcBaseType { /// WCSEAT: [Deprecated] Hinged seat that fits on the top of a water closet (WC) pan. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcSanitaryTerminalTypeEnum : public express::DeclaredType { public: + IfcSanitaryTerminalTypeEnum() {} + explicit IfcSanitaryTerminalTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSanitaryTerminalType_BATH, IfcSanitaryTerminalType_BIDET, IfcSanitaryTerminalType_CISTERN, IfcSanitaryTerminalType_SANITARYFOUNTAIN, IfcSanitaryTerminalType_SHOWER, IfcSanitaryTerminalType_SINK, IfcSanitaryTerminalType_TOILETPAN, IfcSanitaryTerminalType_URINAL, IfcSanitaryTerminalType_WASHHANDBASIN, IfcSanitaryTerminalType_WCSEAT, IfcSanitaryTerminalType_USERDEFINED, IfcSanitaryTerminalType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSanitaryTerminalTypeEnum (IfcEntityInstanceData&& e); - IfcSanitaryTerminalTypeEnum (Value v); - IfcSanitaryTerminalTypeEnum (const std::string& v); + // IfcSanitaryTerminalTypeEnum (Value v); + // IfcSanitaryTerminalTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSectionTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: An enumeration indicating whether a /// specific piece of a cross section is uniform or tapered in longitudinal /// direction. @@ -6094,19 +9630,21 @@ class IFC_PARSE_API IfcSectionTypeEnum : public IfcUtil::IfcBaseType { /// UNIFORM The section is uniform in longitudinal direction. /// /// TAPERED The section is tapered in longitudinal direction. +class IFC_PARSE_API IfcSectionTypeEnum : public express::DeclaredType { public: + IfcSectionTypeEnum() {} + explicit IfcSectionTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSectionType_TAPERED, IfcSectionType_UNIFORM} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSectionTypeEnum (IfcEntityInstanceData&& e); - IfcSectionTypeEnum (Value v); - IfcSectionTypeEnum (const std::string& v); + // IfcSectionTypeEnum (Value v); + // IfcSectionTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSensorTypeEnum : public IfcUtil::IfcBaseType { /// The IfcSensorTypeEnum defines the range of different types of sensor that can be specified. /// /// HISTORY: New type in IFC R2.0. Added missing enumerations in IFC2x4 @@ -6135,37 +9673,41 @@ class IFC_PARSE_API IfcSensorTypeEnum : public IfcUtil::IfcBaseType { /// WINDSENSOR: A device that senses or detects airflow speed and direction. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcSensorTypeEnum : public express::DeclaredType { public: + IfcSensorTypeEnum() {} + explicit IfcSensorTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSensorType_CO2SENSOR, IfcSensorType_CONDUCTANCESENSOR, IfcSensorType_CONTACTSENSOR, IfcSensorType_COSENSOR, IfcSensorType_EARTHQUAKESENSOR, IfcSensorType_FIRESENSOR, IfcSensorType_FLOWSENSOR, IfcSensorType_FOREIGNOBJECTDETECTIONSENSOR, IfcSensorType_FROSTSENSOR, IfcSensorType_GASSENSOR, IfcSensorType_HEATSENSOR, IfcSensorType_HUMIDITYSENSOR, IfcSensorType_IDENTIFIERSENSOR, IfcSensorType_IONCONCENTRATIONSENSOR, IfcSensorType_LEVELSENSOR, IfcSensorType_LIGHTSENSOR, IfcSensorType_MOISTURESENSOR, IfcSensorType_MOVEMENTSENSOR, IfcSensorType_OBSTACLESENSOR, IfcSensorType_PHSENSOR, IfcSensorType_PRESSURESENSOR, IfcSensorType_RADIATIONSENSOR, IfcSensorType_RADIOACTIVITYSENSOR, IfcSensorType_RAINSENSOR, IfcSensorType_SMOKESENSOR, IfcSensorType_SNOWDEPTHSENSOR, IfcSensorType_SOUNDSENSOR, IfcSensorType_TEMPERATURESENSOR, IfcSensorType_TRAINSENSOR, IfcSensorType_TURNOUTCLOSURESENSOR, IfcSensorType_WHEELSENSOR, IfcSensorType_WINDSENSOR, IfcSensorType_USERDEFINED, IfcSensorType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSensorTypeEnum (IfcEntityInstanceData&& e); - IfcSensorTypeEnum (Value v); - IfcSensorTypeEnum (const std::string& v); + // IfcSensorTypeEnum (Value v); + // IfcSensorTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSequenceEnum : public IfcUtil::IfcBaseType { /// IfcSequenceEnum is an /// enumeration that defines the different ways in which a /// time lag is applied to a sequence between two processes. /// /// HISTORY  New entity in IFC 1.0 +class IFC_PARSE_API IfcSequenceEnum : public express::DeclaredType { public: + IfcSequenceEnum() {} + explicit IfcSequenceEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSequence_FINISH_FINISH, IfcSequence_FINISH_START, IfcSequence_START_FINISH, IfcSequence_START_START, IfcSequence_USERDEFINED, IfcSequence_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSequenceEnum (IfcEntityInstanceData&& e); - IfcSequenceEnum (Value v); - IfcSequenceEnum (const std::string& v); + // IfcSequenceEnum (Value v); + // IfcSequenceEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcShadingDeviceTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: Enumeration defining the valid /// types of shading devices that can be predefined using the /// enumeration values. @@ -6176,47 +9718,53 @@ class IFC_PARSE_API IfcShadingDeviceTypeEnum : public IfcUtil::IfcBaseType { /// /// HISTORY New Enumeration /// in ReleaseIFC2x4 +class IFC_PARSE_API IfcShadingDeviceTypeEnum : public express::DeclaredType { public: + IfcShadingDeviceTypeEnum() {} + explicit IfcShadingDeviceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcShadingDeviceType_AWNING, IfcShadingDeviceType_JALOUSIE, IfcShadingDeviceType_SHUTTER, IfcShadingDeviceType_USERDEFINED, IfcShadingDeviceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcShadingDeviceTypeEnum (IfcEntityInstanceData&& e); - IfcShadingDeviceTypeEnum (Value v); - IfcShadingDeviceTypeEnum (const std::string& v); + // IfcShadingDeviceTypeEnum (Value v); + // IfcShadingDeviceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSignTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcSignTypeEnum : public express::DeclaredType { public: + IfcSignTypeEnum() {} + explicit IfcSignTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSignType_MARKER, IfcSignType_MIRROR, IfcSignType_PICTORAL, IfcSignType_USERDEFINED, IfcSignType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSignTypeEnum (IfcEntityInstanceData&& e); - IfcSignTypeEnum (Value v); - IfcSignTypeEnum (const std::string& v); + // IfcSignTypeEnum (Value v); + // IfcSignTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSignalTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcSignalTypeEnum : public express::DeclaredType { public: + IfcSignalTypeEnum() {} + explicit IfcSignalTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSignalType_AUDIO, IfcSignalType_MIXED, IfcSignalType_VISUAL, IfcSignalType_USERDEFINED, IfcSignalType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSignalTypeEnum (IfcEntityInstanceData&& e); - IfcSignalTypeEnum (Value v); - IfcSignalTypeEnum (const std::string& v); + // IfcSignalTypeEnum (Value v); + // IfcSignalTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSimplePropertyTemplateTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration defines the correct subtype of instances of IfcSimpleProperty or IfcPhysicalSimpleQuantity that are created and are assigned to this IfcSimplePropertyTemplate. It also determines how the attributes of IfcPropertyTemplate, PrimaryUnit, SecondaryUnit, PrimaryDataType, SecondaryDataType, should be used. /// /// HISTORY New enumeration in IFC2x4. @@ -6235,19 +9783,21 @@ class IFC_PARSE_API IfcSimplePropertyTemplateTypeEnum : public IfcUtil::IfcBaseT /// Q_COUNT: the properties defined by this IfcPropertyTemplate are of type IfcQuantityCount. /// Q_WEIGHT: the properties defined by this IfcPropertyTemplate are of type IfcQuantityWeight. /// Q_TIME: the properties defined by this IfcPropertyTemplate are of type IfcQuantityTime. +class IFC_PARSE_API IfcSimplePropertyTemplateTypeEnum : public express::DeclaredType { public: + IfcSimplePropertyTemplateTypeEnum() {} + explicit IfcSimplePropertyTemplateTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSimplePropertyTemplateType_P_BOUNDEDVALUE, IfcSimplePropertyTemplateType_P_ENUMERATEDVALUE, IfcSimplePropertyTemplateType_P_LISTVALUE, IfcSimplePropertyTemplateType_P_REFERENCEVALUE, IfcSimplePropertyTemplateType_P_SINGLEVALUE, IfcSimplePropertyTemplateType_P_TABLEVALUE, IfcSimplePropertyTemplateType_Q_AREA, IfcSimplePropertyTemplateType_Q_COUNT, IfcSimplePropertyTemplateType_Q_LENGTH, IfcSimplePropertyTemplateType_Q_NUMBER, IfcSimplePropertyTemplateType_Q_TIME, IfcSimplePropertyTemplateType_Q_VOLUME, IfcSimplePropertyTemplateType_Q_WEIGHT} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSimplePropertyTemplateTypeEnum (IfcEntityInstanceData&& e); - IfcSimplePropertyTemplateTypeEnum (Value v); - IfcSimplePropertyTemplateTypeEnum (const std::string& v); + // IfcSimplePropertyTemplateTypeEnum (Value v); + // IfcSimplePropertyTemplateTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSlabTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the /// available predefined types of a slab. The /// IfcSlabTypeEnum can be used for slab occurrences, @@ -6280,19 +9830,21 @@ class IFC_PARSE_API IfcSlabTypeEnum : public IfcUtil::IfcBaseType { /// /// IFC2x3 CHANGE /// new enumerator added. +class IFC_PARSE_API IfcSlabTypeEnum : public express::DeclaredType { public: + IfcSlabTypeEnum() {} + explicit IfcSlabTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSlabType_APPROACH_SLAB, IfcSlabType_BASESLAB, IfcSlabType_FLOOR, IfcSlabType_LANDING, IfcSlabType_PAVING, IfcSlabType_ROOF, IfcSlabType_SIDEWALK, IfcSlabType_TRACKSLAB, IfcSlabType_WEARING, IfcSlabType_USERDEFINED, IfcSlabType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSlabTypeEnum (IfcEntityInstanceData&& e); - IfcSlabTypeEnum (Value v); - IfcSlabTypeEnum (const std::string& v); + // IfcSlabTypeEnum (Value v); + // IfcSlabTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSolarDeviceTypeEnum : public IfcUtil::IfcBaseType { /// The IfcSolarDeviceTypeEnum defines the range of types of solar devices available. /// HISTORY: New type in IFC 2x4. /// @@ -6302,19 +9854,21 @@ class IFC_PARSE_API IfcSolarDeviceTypeEnum : public IfcUtil::IfcBaseType { /// SOLARPANEL: A device that converts solar radiation into electric current. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcSolarDeviceTypeEnum : public express::DeclaredType { public: + IfcSolarDeviceTypeEnum() {} + explicit IfcSolarDeviceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSolarDeviceType_SOLARCOLLECTOR, IfcSolarDeviceType_SOLARPANEL, IfcSolarDeviceType_USERDEFINED, IfcSolarDeviceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSolarDeviceTypeEnum (IfcEntityInstanceData&& e); - IfcSolarDeviceTypeEnum (Value v); - IfcSolarDeviceTypeEnum (const std::string& v); + // IfcSolarDeviceTypeEnum (Value v); + // IfcSolarDeviceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSpaceHeaterTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the functional type of space heater. /// /// The IfcSpaceHeaterTypeEnum contains the following: @@ -6327,19 +9881,21 @@ class IFC_PARSE_API IfcSpaceHeaterTypeEnum : public IfcUtil::IfcBaseType { /// NOTE: This enumeration was revised in IFC 2x4 and was renamed from IfcHydronicHeaterTypeEnum in IFC R2x. /// /// HISTORY: New enumeration in IFC R2x. +class IFC_PARSE_API IfcSpaceHeaterTypeEnum : public express::DeclaredType { public: + IfcSpaceHeaterTypeEnum() {} + explicit IfcSpaceHeaterTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSpaceHeaterType_CONVECTOR, IfcSpaceHeaterType_RADIATOR, IfcSpaceHeaterType_USERDEFINED, IfcSpaceHeaterType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSpaceHeaterTypeEnum (IfcEntityInstanceData&& e); - IfcSpaceHeaterTypeEnum (Value v); - IfcSpaceHeaterTypeEnum (const std::string& v); + // IfcSpaceHeaterTypeEnum (Value v); + // IfcSpaceHeaterTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSpaceTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the /// available generic types for IfcSpace and /// IfcSpaceType. @@ -6375,19 +9931,21 @@ class IFC_PARSE_API IfcSpaceTypeEnum : public IfcUtil::IfcBaseType { /// NOTE the use is deprecated and /// only provided for backward compatibility /// purposes. +class IFC_PARSE_API IfcSpaceTypeEnum : public express::DeclaredType { public: + IfcSpaceTypeEnum() {} + explicit IfcSpaceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSpaceType_BERTH, IfcSpaceType_EXTERNAL, IfcSpaceType_GFA, IfcSpaceType_INTERNAL, IfcSpaceType_PARKING, IfcSpaceType_SPACE, IfcSpaceType_USERDEFINED, IfcSpaceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSpaceTypeEnum (IfcEntityInstanceData&& e); - IfcSpaceTypeEnum (Value v); - IfcSpaceTypeEnum (const std::string& v); + // IfcSpaceTypeEnum (Value v); + // IfcSpaceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSpatialZoneTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the range /// of different types of spatial zones that can further specify an /// IfcSpatialZoneTypeEnum. @@ -6413,19 +9971,21 @@ class IFC_PARSE_API IfcSpatialZoneTypeEnum : public IfcUtil::IfcBaseType { /// zone /// NOTDEFINED: undefined type spatial /// zone +class IFC_PARSE_API IfcSpatialZoneTypeEnum : public express::DeclaredType { public: + IfcSpatialZoneTypeEnum() {} + explicit IfcSpatialZoneTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSpatialZoneType_CONSTRUCTION, IfcSpatialZoneType_FIRESAFETY, IfcSpatialZoneType_INTERFERENCE, IfcSpatialZoneType_LIGHTING, IfcSpatialZoneType_OCCUPANCY, IfcSpatialZoneType_RESERVATION, IfcSpatialZoneType_SECURITY, IfcSpatialZoneType_THERMAL, IfcSpatialZoneType_TRANSPORT, IfcSpatialZoneType_VENTILATION, IfcSpatialZoneType_USERDEFINED, IfcSpatialZoneType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSpatialZoneTypeEnum (IfcEntityInstanceData&& e); - IfcSpatialZoneTypeEnum (Value v); - IfcSpatialZoneTypeEnum (const std::string& v); + // IfcSpatialZoneTypeEnum (Value v); + // IfcSpatialZoneTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcStackTerminalTypeEnum : public IfcUtil::IfcBaseType { /// An IfcStackTerminalTypeEnum defines the range of different types of stack terminal that can be specified for use at the top of a vertical stack subsystem. /// HISTORY: New type in IFC 2x /// Enumeration @@ -6435,19 +9995,21 @@ class IFC_PARSE_API IfcStackTerminalTypeEnum : public IfcUtil::IfcBaseType { /// RAINWATERHOPPER: A box placed at the top of a rainwater downpipe to catch rainwater from guttering. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcStackTerminalTypeEnum : public express::DeclaredType { public: + IfcStackTerminalTypeEnum() {} + explicit IfcStackTerminalTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcStackTerminalType_BIRDCAGE, IfcStackTerminalType_COWL, IfcStackTerminalType_RAINWATERHOPPER, IfcStackTerminalType_USERDEFINED, IfcStackTerminalType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcStackTerminalTypeEnum (IfcEntityInstanceData&& e); - IfcStackTerminalTypeEnum (Value v); - IfcStackTerminalTypeEnum (const std::string& v); + // IfcStackTerminalTypeEnum (Value v); + // IfcStackTerminalTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcStairFlightTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the different types /// of stair flights an IfcStairFlightType object can fulfill: /// @@ -6463,19 +10025,21 @@ class IFC_PARSE_API IfcStairFlightTypeEnum : public IfcUtil::IfcBaseType { /// /// HISTORY: New Enumeration in /// Release IFC2x Edition 2. +class IFC_PARSE_API IfcStairFlightTypeEnum : public express::DeclaredType { public: + IfcStairFlightTypeEnum() {} + explicit IfcStairFlightTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcStairFlightType_CURVED, IfcStairFlightType_FREEFORM, IfcStairFlightType_SPIRAL, IfcStairFlightType_STRAIGHT, IfcStairFlightType_WINDER, IfcStairFlightType_USERDEFINED, IfcStairFlightType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcStairFlightTypeEnum (IfcEntityInstanceData&& e); - IfcStairFlightTypeEnum (Value v); - IfcStairFlightTypeEnum (const std::string& v); + // IfcStairFlightTypeEnum (Value v); + // IfcStairFlightTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcStairTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration defines the basic configuration of the stair type in terms of the number of stair flights and the number of landings, as illustrated in Figure 69. The type also distinguished turns by windings or by landings. In addition the subdivision of the straight and changing direction stairs is included. The stair configurations are given for stairs without and with one, two or three landings. /// /// Stairs which are subdivided into more than three landings have to be defined by the geometry only. Also stairs with non-regular shapes have to be defined by the geometry only. The type of such stairs is OTHEROPERATION. @@ -6569,19 +10133,21 @@ class IFC_PARSE_API IfcStairTypeEnum : public IfcUtil::IfcBaseType { ///   /// /// Figure 69 — Stair types +class IFC_PARSE_API IfcStairTypeEnum : public express::DeclaredType { public: + IfcStairTypeEnum() {} + explicit IfcStairTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcStairType_CURVED_RUN_STAIR, IfcStairType_DOUBLE_RETURN_STAIR, IfcStairType_HALF_TURN_STAIR, IfcStairType_HALF_WINDING_STAIR, IfcStairType_LADDER, IfcStairType_QUARTER_TURN_STAIR, IfcStairType_QUARTER_WINDING_STAIR, IfcStairType_SPIRAL_STAIR, IfcStairType_STRAIGHT_RUN_STAIR, IfcStairType_THREE_QUARTER_TURN_STAIR, IfcStairType_THREE_QUARTER_WINDING_STAIR, IfcStairType_TWO_CURVED_RUN_STAIR, IfcStairType_TWO_QUARTER_TURN_STAIR, IfcStairType_TWO_QUARTER_WINDING_STAIR, IfcStairType_TWO_STRAIGHT_RUN_STAIR, IfcStairType_USERDEFINED, IfcStairType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcStairTypeEnum (IfcEntityInstanceData&& e); - IfcStairTypeEnum (Value v); - IfcStairTypeEnum (const std::string& v); + // IfcStairTypeEnum (Value v); + // IfcStairTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcStateEnum : public IfcUtil::IfcBaseType { /// The IfcStateEnum enumeration identifies the state or accessibility of the object (for example, read/write, locked). /// /// Valid enumerations are: @@ -6595,19 +10161,21 @@ class IFC_PARSE_API IfcStateEnum : public IfcUtil::IfcBaseType { /// HISTORY  New enumeration in IFC R2.0. /// /// IFC2x3 CHANGE  This concept was initially introduced in IFC 2.0 as IfcModifiedFlag of type BINARY(3) FIXED and has been modified in R2x to an enumeration. It was initially introduced as a first step towards providing facilities for partial model exchange from a server as requested by the IFC implementers. It is intended for use primarily by a model server so that an application can identify the state of the object. +class IFC_PARSE_API IfcStateEnum : public express::DeclaredType { public: + IfcStateEnum() {} + explicit IfcStateEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcState_LOCKED, IfcState_READONLY, IfcState_READONLYLOCKED, IfcState_READWRITE, IfcState_READWRITELOCKED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcStateEnum (IfcEntityInstanceData&& e); - IfcStateEnum (Value v); - IfcStateEnum (const std::string& v); + // IfcStateEnum (Value v); + // IfcStateEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcStructuralCurveActivityTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: Enumeration defining the distribution of load values in a curve action or reaction. /// /// HISTORY New type in IFC 2x4 @@ -6623,19 +10191,21 @@ class IFC_PARSE_API IfcStructuralCurveActivityTypeEnum : public IfcUtil::IfcBase /// DISCRETE The load is specified as a series of discrete load points. /// USERDEFINED The load distribution is user-defined. /// NOTDEFINED The load distribution is undefined. +class IFC_PARSE_API IfcStructuralCurveActivityTypeEnum : public express::DeclaredType { public: + IfcStructuralCurveActivityTypeEnum() {} + explicit IfcStructuralCurveActivityTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcStructuralCurveActivityType_CONST, IfcStructuralCurveActivityType_DISCRETE, IfcStructuralCurveActivityType_EQUIDISTANT, IfcStructuralCurveActivityType_LINEAR, IfcStructuralCurveActivityType_PARABOLA, IfcStructuralCurveActivityType_POLYGONAL, IfcStructuralCurveActivityType_SINUS, IfcStructuralCurveActivityType_USERDEFINED, IfcStructuralCurveActivityType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcStructuralCurveActivityTypeEnum (IfcEntityInstanceData&& e); - IfcStructuralCurveActivityTypeEnum (Value v); - IfcStructuralCurveActivityTypeEnum (const std::string& v); + // IfcStructuralCurveActivityTypeEnum (Value v); + // IfcStructuralCurveActivityTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcStructuralCurveMemberTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This type definition shall be used to /// /// distinguish between different types of structural 'curve' members, such as @@ -6654,19 +10224,21 @@ class IFC_PARSE_API IfcStructuralCurveMemberTypeEnum : public IfcUtil::IfcBaseTy /// /// HISTORY New type in IFC 2x2. /// IFC 2x4 change: Renamed from IfcStructuralCurveTypeEnum. +class IFC_PARSE_API IfcStructuralCurveMemberTypeEnum : public express::DeclaredType { public: + IfcStructuralCurveMemberTypeEnum() {} + explicit IfcStructuralCurveMemberTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcStructuralCurveMemberType_CABLE, IfcStructuralCurveMemberType_COMPRESSION_MEMBER, IfcStructuralCurveMemberType_PIN_JOINED_MEMBER, IfcStructuralCurveMemberType_RIGID_JOINED_MEMBER, IfcStructuralCurveMemberType_TENSION_MEMBER, IfcStructuralCurveMemberType_USERDEFINED, IfcStructuralCurveMemberType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcStructuralCurveMemberTypeEnum (IfcEntityInstanceData&& e); - IfcStructuralCurveMemberTypeEnum (Value v); - IfcStructuralCurveMemberTypeEnum (const std::string& v); + // IfcStructuralCurveMemberTypeEnum (Value v); + // IfcStructuralCurveMemberTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcStructuralSurfaceActivityTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: Enumeration defining the distribution of load values in a surface action or reaction. /// /// HISTORY New type in IFC 2x4 @@ -6679,19 +10251,21 @@ class IFC_PARSE_API IfcStructuralSurfaceActivityTypeEnum : public IfcUtil::IfcBa /// ISOCONTOUR The load is specified by a series of iso-curves (level sets), i.e. curves at which the load value is constant. These curves run perpendicularly to the load gradient. /// USERDEFINED The load distribution is user-defined. /// NOTDEFINED The load distribution is undefined. +class IFC_PARSE_API IfcStructuralSurfaceActivityTypeEnum : public express::DeclaredType { public: + IfcStructuralSurfaceActivityTypeEnum() {} + explicit IfcStructuralSurfaceActivityTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcStructuralSurfaceActivityType_BILINEAR, IfcStructuralSurfaceActivityType_CONST, IfcStructuralSurfaceActivityType_DISCRETE, IfcStructuralSurfaceActivityType_ISOCONTOUR, IfcStructuralSurfaceActivityType_USERDEFINED, IfcStructuralSurfaceActivityType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcStructuralSurfaceActivityTypeEnum (IfcEntityInstanceData&& e); - IfcStructuralSurfaceActivityTypeEnum (Value v); - IfcStructuralSurfaceActivityTypeEnum (const std::string& v); + // IfcStructuralSurfaceActivityTypeEnum (Value v); + // IfcStructuralSurfaceActivityTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcStructuralSurfaceMemberTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This type definition shall be used to /// /// distinguish between different types of structural surface members, such as the @@ -6706,19 +10280,21 @@ class IFC_PARSE_API IfcStructuralSurfaceMemberTypeEnum : public IfcUtil::IfcBase /// /// HISTORY New type in IFC 2x2. /// IFC 2x4 change: Renamed from IfcStructuralSurfaceTypeEnum. +class IFC_PARSE_API IfcStructuralSurfaceMemberTypeEnum : public express::DeclaredType { public: + IfcStructuralSurfaceMemberTypeEnum() {} + explicit IfcStructuralSurfaceMemberTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcStructuralSurfaceMemberType_BENDING_ELEMENT, IfcStructuralSurfaceMemberType_MEMBRANE_ELEMENT, IfcStructuralSurfaceMemberType_SHELL, IfcStructuralSurfaceMemberType_USERDEFINED, IfcStructuralSurfaceMemberType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcStructuralSurfaceMemberTypeEnum (IfcEntityInstanceData&& e); - IfcStructuralSurfaceMemberTypeEnum (Value v); - IfcStructuralSurfaceMemberTypeEnum (const std::string& v); + // IfcStructuralSurfaceMemberTypeEnum (Value v); + // IfcStructuralSurfaceMemberTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSubContractResourceTypeEnum : public IfcUtil::IfcBaseType { /// This enumeration is used to identify the primary purpose of a subcontract resource. The IfcSubContractResourceTypeEnum contains the following: /// /// PURCHASE: Furnishing or supplying products. @@ -6727,19 +10303,21 @@ class IFC_PARSE_API IfcSubContractResourceTypeEnum : public IfcUtil::IfcBaseType /// NOTDEFINED: Undefined resource. /// /// HISTORY: New enumeration in IFC2x4 +class IFC_PARSE_API IfcSubContractResourceTypeEnum : public express::DeclaredType { public: + IfcSubContractResourceTypeEnum() {} + explicit IfcSubContractResourceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSubContractResourceType_PURCHASE, IfcSubContractResourceType_WORK, IfcSubContractResourceType_USERDEFINED, IfcSubContractResourceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSubContractResourceTypeEnum (IfcEntityInstanceData&& e); - IfcSubContractResourceTypeEnum (Value v); - IfcSubContractResourceTypeEnum (const std::string& v); + // IfcSubContractResourceTypeEnum (Value v); + // IfcSubContractResourceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSurfaceFeatureTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration indicates the type of a surface feature. /// /// HISTORY New type in IFC 2x4. @@ -6751,19 +10329,21 @@ class IFC_PARSE_API IfcSurfaceFeatureTypeEnum : public IfcUtil::IfcBaseType { /// TREATMENT A subtractive surface feature, e.g. grinding, or an additive surface feature, e.g. coating, or an impregnating treatment, or a series of any of these kinds of treatments. /// USERDEFINED A user-defined type of surface feature. /// NOTDEFINED An undefined type of surface feature. +class IFC_PARSE_API IfcSurfaceFeatureTypeEnum : public express::DeclaredType { public: + IfcSurfaceFeatureTypeEnum() {} + explicit IfcSurfaceFeatureTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSurfaceFeatureType_DEFECT, IfcSurfaceFeatureType_HATCHMARKING, IfcSurfaceFeatureType_LINEMARKING, IfcSurfaceFeatureType_MARK, IfcSurfaceFeatureType_NONSKIDSURFACING, IfcSurfaceFeatureType_PAVEMENTSURFACEMARKING, IfcSurfaceFeatureType_RUMBLESTRIP, IfcSurfaceFeatureType_SYMBOLMARKING, IfcSurfaceFeatureType_TAG, IfcSurfaceFeatureType_TRANSVERSERUMBLESTRIP, IfcSurfaceFeatureType_TREATMENT, IfcSurfaceFeatureType_USERDEFINED, IfcSurfaceFeatureType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSurfaceFeatureTypeEnum (IfcEntityInstanceData&& e); - IfcSurfaceFeatureTypeEnum (Value v); - IfcSurfaceFeatureTypeEnum (const std::string& v); + // IfcSurfaceFeatureTypeEnum (Value v); + // IfcSurfaceFeatureTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSurfaceSide : public IfcUtil::IfcBaseType { /// IfcSurfaceSide is a denotion of whether negative, positive or both sides of a surface are being referenced. /// /// ENUMERATION Definition from ISO/CD 10303-46:1992: @@ -6775,19 +10355,21 @@ class IFC_PARSE_API IfcSurfaceSide : public IfcUtil::IfcBaseType { /// NOTE Corresponding ISO 10303 type: surface_side. Please refer to ISO/IS 10303-46:1994 for the final definition of the formal standard. /// /// HISTORY: New Enumeration in IFC 2.0 +class IFC_PARSE_API IfcSurfaceSide : public express::DeclaredType { public: + IfcSurfaceSide() {} + explicit IfcSurfaceSide (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSurfaceSide_BOTH, IfcSurfaceSide_NEGATIVE, IfcSurfaceSide_POSITIVE} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSurfaceSide (IfcEntityInstanceData&& e); - IfcSurfaceSide (Value v); - IfcSurfaceSide (const std::string& v); + // IfcSurfaceSide (Value v); + // IfcSurfaceSide (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSwitchingDeviceTypeEnum : public IfcUtil::IfcBaseType { /// The IfcSwitchingDeviceTypeEnum defines the range of different types of switch that can be specified. /// HISTORY: New type in IFC 2x2 /// Enumeration @@ -6804,19 +10386,21 @@ class IFC_PARSE_API IfcSwitchingDeviceTypeEnum : public IfcUtil::IfcBaseType { /// TOGGLESWITCH: A toggle switch has two positions, and may enable or isolate electrical power or other setting (according to the switched port type). /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcSwitchingDeviceTypeEnum : public express::DeclaredType { public: + IfcSwitchingDeviceTypeEnum() {} + explicit IfcSwitchingDeviceTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSwitchingDeviceType_CONTACTOR, IfcSwitchingDeviceType_DIMMERSWITCH, IfcSwitchingDeviceType_EMERGENCYSTOP, IfcSwitchingDeviceType_KEYPAD, IfcSwitchingDeviceType_MOMENTARYSWITCH, IfcSwitchingDeviceType_RELAY, IfcSwitchingDeviceType_SELECTORSWITCH, IfcSwitchingDeviceType_STARTER, IfcSwitchingDeviceType_START_AND_STOP_EQUIPMENT, IfcSwitchingDeviceType_SWITCHDISCONNECTOR, IfcSwitchingDeviceType_TOGGLESWITCH, IfcSwitchingDeviceType_USERDEFINED, IfcSwitchingDeviceType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSwitchingDeviceTypeEnum (IfcEntityInstanceData&& e); - IfcSwitchingDeviceTypeEnum (Value v); - IfcSwitchingDeviceTypeEnum (const std::string& v); + // IfcSwitchingDeviceTypeEnum (Value v); + // IfcSwitchingDeviceTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcSystemFurnitureElementTypeEnum : public IfcUtil::IfcBaseType { /// IfcSystemFurnitureTypeEnum defines the types of system furniture from which the type required can be selected. /// HISTORY: New Enumeration in IFC 2x4 /// Enumeration: @@ -6825,19 +10409,21 @@ class IFC_PARSE_API IfcSystemFurnitureElementTypeEnum : public IfcUtil::IfcBaseT /// WORKSURFACE: Workstation countertop. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcSystemFurnitureElementTypeEnum : public express::DeclaredType { public: + IfcSystemFurnitureElementTypeEnum() {} + explicit IfcSystemFurnitureElementTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcSystemFurnitureElementType_PANEL, IfcSystemFurnitureElementType_SUBRACK, IfcSystemFurnitureElementType_WORKSURFACE, IfcSystemFurnitureElementType_USERDEFINED, IfcSystemFurnitureElementType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcSystemFurnitureElementTypeEnum (IfcEntityInstanceData&& e); - IfcSystemFurnitureElementTypeEnum (Value v); - IfcSystemFurnitureElementTypeEnum (const std::string& v); + // IfcSystemFurnitureElementTypeEnum (Value v); + // IfcSystemFurnitureElementTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcTankTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the typical types of tanks. /// /// The IfcTankTypeEnum contains the following: @@ -6861,19 +10447,21 @@ class IFC_PARSE_API IfcTankTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined tank type. /// /// HISTORY: New enumeration in IFC 2x2. BASIN and VESSEL added in IFC2x4. +class IFC_PARSE_API IfcTankTypeEnum : public express::DeclaredType { public: + IfcTankTypeEnum() {} + explicit IfcTankTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcTankType_BASIN, IfcTankType_BREAKPRESSURE, IfcTankType_EXPANSION, IfcTankType_FEEDANDEXPANSION, IfcTankType_OILRETENTIONTRAY, IfcTankType_PRESSUREVESSEL, IfcTankType_STORAGE, IfcTankType_VESSEL, IfcTankType_USERDEFINED, IfcTankType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcTankTypeEnum (IfcEntityInstanceData&& e); - IfcTankTypeEnum (Value v); - IfcTankTypeEnum (const std::string& v); + // IfcTankTypeEnum (Value v); + // IfcTankTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcTaskDurationEnum : public IfcUtil::IfcBaseType { /// IfcTaskDurationEnum identifies how a time duration is measured: /// /// ELAPSEDTIME: The time duration is based on elapsed time (24 hours per day, independent of calendar). @@ -6881,19 +10469,21 @@ class IFC_PARSE_API IfcTaskDurationEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: The time duration is undefined. /// /// HISTORY: New enumeration in IFC2x4. +class IFC_PARSE_API IfcTaskDurationEnum : public express::DeclaredType { public: + IfcTaskDurationEnum() {} + explicit IfcTaskDurationEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcTaskDuration_ELAPSEDTIME, IfcTaskDuration_WORKTIME, IfcTaskDuration_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcTaskDurationEnum (IfcEntityInstanceData&& e); - IfcTaskDurationEnum (Value v); - IfcTaskDurationEnum (const std::string& v); + // IfcTaskDurationEnum (Value v); + // IfcTaskDurationEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcTaskTypeEnum : public IfcUtil::IfcBaseType { /// The IfcTaskTypeEnum defines the range of different types of task that can be specified. /// /// HISTORY  New type in IFC2x4 @@ -6912,61 +10502,69 @@ class IFC_PARSE_API IfcTaskTypeEnum : public IfcUtil::IfcBaseType { /// OPERATION: A procedure undertaken to start up the operation an artifact /// REMOVAL: Removal of an item from use and taking it from its place of use /// RENOVATION: Bringing something to an 'as-new' state +class IFC_PARSE_API IfcTaskTypeEnum : public express::DeclaredType { public: + IfcTaskTypeEnum() {} + explicit IfcTaskTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcTaskType_ADJUSTMENT, IfcTaskType_ATTENDANCE, IfcTaskType_CALIBRATION, IfcTaskType_CONSTRUCTION, IfcTaskType_DEMOLITION, IfcTaskType_DISMANTLE, IfcTaskType_DISPOSAL, IfcTaskType_EMERGENCY, IfcTaskType_INSPECTION, IfcTaskType_INSTALLATION, IfcTaskType_LOGISTIC, IfcTaskType_MAINTENANCE, IfcTaskType_MOVE, IfcTaskType_OPERATION, IfcTaskType_REMOVAL, IfcTaskType_RENOVATION, IfcTaskType_SAFETY, IfcTaskType_SHUTDOWN, IfcTaskType_STARTUP, IfcTaskType_TESTING, IfcTaskType_TROUBLESHOOTING, IfcTaskType_USERDEFINED, IfcTaskType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcTaskTypeEnum (IfcEntityInstanceData&& e); - IfcTaskTypeEnum (Value v); - IfcTaskTypeEnum (const std::string& v); + // IfcTaskTypeEnum (Value v); + // IfcTaskTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcTendonAnchorTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcTendonAnchorTypeEnum : public express::DeclaredType { public: + IfcTendonAnchorTypeEnum() {} + explicit IfcTendonAnchorTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcTendonAnchorType_COUPLER, IfcTendonAnchorType_FIXED_END, IfcTendonAnchorType_TENSIONING_END, IfcTendonAnchorType_USERDEFINED, IfcTendonAnchorType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcTendonAnchorTypeEnum (IfcEntityInstanceData&& e); - IfcTendonAnchorTypeEnum (Value v); - IfcTendonAnchorTypeEnum (const std::string& v); + // IfcTendonAnchorTypeEnum (Value v); + // IfcTendonAnchorTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcTendonConduitTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcTendonConduitTypeEnum : public express::DeclaredType { public: + IfcTendonConduitTypeEnum() {} + explicit IfcTendonConduitTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcTendonConduitType_COUPLER, IfcTendonConduitType_DIABOLO, IfcTendonConduitType_DUCT, IfcTendonConduitType_GROUTING_DUCT, IfcTendonConduitType_TRUMPET, IfcTendonConduitType_USERDEFINED, IfcTendonConduitType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcTendonConduitTypeEnum (IfcEntityInstanceData&& e); - IfcTendonConduitTypeEnum (Value v); - IfcTendonConduitTypeEnum (const std::string& v); + // IfcTendonConduitTypeEnum (Value v); + // IfcTendonConduitTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcTendonTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcTendonTypeEnum : public express::DeclaredType { public: + IfcTendonTypeEnum() {} + explicit IfcTendonTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcTendonType_BAR, IfcTendonType_COATED, IfcTendonType_STRAND, IfcTendonType_WIRE, IfcTendonType_USERDEFINED, IfcTendonType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcTendonTypeEnum (IfcEntityInstanceData&& e); - IfcTendonTypeEnum (Value v); - IfcTendonTypeEnum (const std::string& v); + // IfcTendonTypeEnum (Value v); + // IfcTendonTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcTextPath : public IfcUtil::IfcBaseType { /// The text path determines the direction of the text characters in respect to each other. /// /// NOTE: The IfcTextPath is an entity that had been adopted from ISO 10303, Industrial automation systems and integration—Product data representation and exchange, Part 46: Integrated generic resources: Visual presentation. @@ -6974,19 +10572,21 @@ class IFC_PARSE_API IfcTextPath : public IfcUtil::IfcBaseType { /// NOTE Corresponding ISO 10303 name:text_path . Please refer to ISO/IS 10303-46:1994 for the final definition of the formal standard. /// /// HISTORY New entity in IFC2x2. +class IFC_PARSE_API IfcTextPath : public express::DeclaredType { public: + IfcTextPath() {} + explicit IfcTextPath (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcTextPath_DOWN, IfcTextPath_LEFT, IfcTextPath_RIGHT, IfcTextPath_UP} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcTextPath (IfcEntityInstanceData&& e); - IfcTextPath (Value v); - IfcTextPath (const std::string& v); + // IfcTextPath (Value v); + // IfcTextPath (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcTimeSeriesDataTypeEnum : public IfcUtil::IfcBaseType { /// IfcTimeSeriesDataTypeEnum describes a type of time series data and is used to determine a value during the time series which is not explicitly specified: /// /// CONTINUOUS: The time series data is continuous. @@ -6998,33 +10598,37 @@ class IFC_PARSE_API IfcTimeSeriesDataTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: The time series data is not defined. /// /// HISTORY: New enumeration in IFC2x2. +class IFC_PARSE_API IfcTimeSeriesDataTypeEnum : public express::DeclaredType { public: + IfcTimeSeriesDataTypeEnum() {} + explicit IfcTimeSeriesDataTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcTimeSeriesDataType_CONTINUOUS, IfcTimeSeriesDataType_DISCRETE, IfcTimeSeriesDataType_DISCRETEBINARY, IfcTimeSeriesDataType_PIECEWISEBINARY, IfcTimeSeriesDataType_PIECEWISECONSTANT, IfcTimeSeriesDataType_PIECEWISECONTINUOUS, IfcTimeSeriesDataType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcTimeSeriesDataTypeEnum (IfcEntityInstanceData&& e); - IfcTimeSeriesDataTypeEnum (Value v); - IfcTimeSeriesDataTypeEnum (const std::string& v); + // IfcTimeSeriesDataTypeEnum (Value v); + // IfcTimeSeriesDataTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcTrackElementTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcTrackElementTypeEnum : public express::DeclaredType { public: + IfcTrackElementTypeEnum() {} + explicit IfcTrackElementTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcTrackElementType_BLOCKINGDEVICE, IfcTrackElementType_DERAILER, IfcTrackElementType_FROG, IfcTrackElementType_HALF_SET_OF_BLADES, IfcTrackElementType_SLEEPER, IfcTrackElementType_SPEEDREGULATOR, IfcTrackElementType_TRACKENDOFALIGNMENT, IfcTrackElementType_VEHICLESTOP, IfcTrackElementType_USERDEFINED, IfcTrackElementType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcTrackElementTypeEnum (IfcEntityInstanceData&& e); - IfcTrackElementTypeEnum (Value v); - IfcTrackElementTypeEnum (const std::string& v); + // IfcTrackElementTypeEnum (Value v); + // IfcTrackElementTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcTransformerTypeEnum : public IfcUtil::IfcBaseType { /// The IfcTransformerTypeEnum defines the range of different types of transformer that can be specified. /// HISTORY: New type in IFC 2x2 /// Enumeration @@ -7036,19 +10640,21 @@ class IFC_PARSE_API IfcTransformerTypeEnum : public IfcUtil::IfcBaseType { /// VOLTAGE: A transformer that changes the voltage between circuits. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcTransformerTypeEnum : public express::DeclaredType { public: + IfcTransformerTypeEnum() {} + explicit IfcTransformerTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcTransformerType_CHOPPER, IfcTransformerType_COMBINED, IfcTransformerType_CURRENT, IfcTransformerType_FREQUENCY, IfcTransformerType_INVERTER, IfcTransformerType_RECTIFIER, IfcTransformerType_VOLTAGE, IfcTransformerType_USERDEFINED, IfcTransformerType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcTransformerTypeEnum (IfcEntityInstanceData&& e); - IfcTransformerTypeEnum (Value v); - IfcTransformerTypeEnum (const std::string& v); + // IfcTransformerTypeEnum (Value v); + // IfcTransformerTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcTransitionCode : public IfcUtil::IfcBaseType { /// Definition from ISO/CD 10303-42:1992: This type conveys the continuity properties of a composite curve or surface. The continuity referred to is geometric, not parametric continuity. For example, in ContSameGradient the tangent vectors of successive segments will have the same direction, but may have different magnitude. /// /// NOTE  Corresponding ISO 10303 type: transition_code, please refer to ISO/IS 10303-42:1994, p. 14 for the final definition of the formal standard. @@ -7065,19 +10671,21 @@ class IFC_PARSE_API IfcTransitionCode : public IfcUtil::IfcBaseType { /// CONTINUOUS: The segments join but no condition on their tangents is implied. /// CONTSAMEGRADIENT: The segments join and their tangent vectors or tangent planes are parallel and have the same direction at the joint: equality of derivatives is not required. /// CONTSAMEGRADIENTSAMECURVATURE: For a curve, the segments join, their tangent vectors are parallel and in the same direction and their curvatures are equal at the joint: equality of derivatives is not required. For a surface this implies that the principle curvatures are the same and the principle directions are coincident along the common boundary. +class IFC_PARSE_API IfcTransitionCode : public express::DeclaredType { public: + IfcTransitionCode() {} + explicit IfcTransitionCode (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcTransitionCode_CONTINUOUS, IfcTransitionCode_CONTSAMEGRADIENT, IfcTransitionCode_CONTSAMEGRADIENTSAMECURVATURE, IfcTransitionCode_DISCONTINUOUS} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcTransitionCode (IfcEntityInstanceData&& e); - IfcTransitionCode (Value v); - IfcTransitionCode (const std::string& v); + // IfcTransitionCode (Value v); + // IfcTransitionCode (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcTransportElementTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration is used to /// identify primary transport element types. The /// IfcTransportElementTypeEnum contains the following: @@ -7102,19 +10710,21 @@ class IFC_PARSE_API IfcTransportElementTypeEnum : public IfcUtil::IfcBaseType { /// IFC2x4 CHANGE New enumerators /// CRANEWAY and LIFTINGGEAR added in /// IFC2x4. +class IFC_PARSE_API IfcTransportElementTypeEnum : public express::DeclaredType { public: + IfcTransportElementTypeEnum() {} + explicit IfcTransportElementTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcTransportElementType_CRANEWAY, IfcTransportElementType_ELEVATOR, IfcTransportElementType_ESCALATOR, IfcTransportElementType_HAULINGGEAR, IfcTransportElementType_LIFTINGGEAR, IfcTransportElementType_MOVINGWALKWAY, IfcTransportElementType_USERDEFINED, IfcTransportElementType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcTransportElementTypeEnum (IfcEntityInstanceData&& e); - IfcTransportElementTypeEnum (Value v); - IfcTransportElementTypeEnum (const std::string& v); + // IfcTransportElementTypeEnum (Value v); + // IfcTransportElementTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcTrimmingPreference : public IfcUtil::IfcBaseType { /// Definition from ISO/CD 10303-42:1992: This type is used to describe the preferred way of trimming a parametric curve where the trimming is multiply defined. /// /// NOTE Corresponding ISO 10303 type: trimming_preference, please refer to ISO/IS 10303-42:1994, p. 18 for the final definition of the formal standard. @@ -7126,19 +10736,21 @@ class IFC_PARSE_API IfcTrimmingPreference : public IfcUtil::IfcBaseType { /// CARTESIAN: Indicates that trimming by Cartesian point is preferred. /// PARAMETER: Indicates the preference for the parameter value. /// UNSPECIFIED: Indicates that no preference is communicated. +class IFC_PARSE_API IfcTrimmingPreference : public express::DeclaredType { public: + IfcTrimmingPreference() {} + explicit IfcTrimmingPreference (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcTrimmingPreference_CARTESIAN, IfcTrimmingPreference_PARAMETER, IfcTrimmingPreference_UNSPECIFIED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcTrimmingPreference (IfcEntityInstanceData&& e); - IfcTrimmingPreference (Value v); - IfcTrimmingPreference (const std::string& v); + // IfcTrimmingPreference (Value v); + // IfcTrimmingPreference (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcTubeBundleTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the typical types of tube bundles. /// The IfcTubeBundleTypeEnum contains the following: /// @@ -7147,19 +10759,21 @@ class IFC_PARSE_API IfcTubeBundleTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined tube bundle type. /// /// HISTORY: New enumeration in IFC 2x2. +class IFC_PARSE_API IfcTubeBundleTypeEnum : public express::DeclaredType { public: + IfcTubeBundleTypeEnum() {} + explicit IfcTubeBundleTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcTubeBundleType_FINNED, IfcTubeBundleType_USERDEFINED, IfcTubeBundleType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcTubeBundleTypeEnum (IfcEntityInstanceData&& e); - IfcTubeBundleTypeEnum (Value v); - IfcTubeBundleTypeEnum (const std::string& v); + // IfcTubeBundleTypeEnum (Value v); + // IfcTubeBundleTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcUnitEnum : public IfcUtil::IfcBaseType { /// IfcUnitEnum is an enumeration type for allowed unit types of IfcNamedUnit. /// /// ENUMERATION @@ -7196,19 +10810,21 @@ class IFC_PARSE_API IfcUnitEnum : public IfcUtil::IfcBaseType { /// USERDEFINED: User defined unit type. The type of unit is only implied by its name or the usage context. /// /// HISTORY New type in IFC Release 1.5.1. +class IFC_PARSE_API IfcUnitEnum : public express::DeclaredType { public: + IfcUnitEnum() {} + explicit IfcUnitEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + 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; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcUnitEnum (IfcEntityInstanceData&& e); - IfcUnitEnum (Value v); - IfcUnitEnum (const std::string& v); + // IfcUnitEnum (Value v); + // IfcUnitEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcUnitaryControlElementTypeEnum : public IfcUtil::IfcBaseType { /// The IfcUnitaryControlElementTypeEnum defines the range of different types and/or functions of unitary control elements possible. /// /// HISTORY: New type in IFC 2x4. @@ -7225,19 +10841,21 @@ class IFC_PARSE_API IfcUnitaryControlElementTypeEnum : public IfcUtil::IfcBaseTy /// WEATHERSTATION: A control element that senses multiple climate properties such as temperature, humidity, pressure, wind, and rain. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcUnitaryControlElementTypeEnum : public express::DeclaredType { public: + IfcUnitaryControlElementTypeEnum() {} + explicit IfcUnitaryControlElementTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcUnitaryControlElementType_ALARMPANEL, IfcUnitaryControlElementType_BASESTATIONCONTROLLER, IfcUnitaryControlElementType_COMBINED, IfcUnitaryControlElementType_CONTROLPANEL, IfcUnitaryControlElementType_GASDETECTIONPANEL, IfcUnitaryControlElementType_HUMIDISTAT, IfcUnitaryControlElementType_INDICATORPANEL, IfcUnitaryControlElementType_MIMICPANEL, IfcUnitaryControlElementType_THERMOSTAT, IfcUnitaryControlElementType_WEATHERSTATION, IfcUnitaryControlElementType_USERDEFINED, IfcUnitaryControlElementType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcUnitaryControlElementTypeEnum (IfcEntityInstanceData&& e); - IfcUnitaryControlElementTypeEnum (Value v); - IfcUnitaryControlElementTypeEnum (const std::string& v); + // IfcUnitaryControlElementTypeEnum (Value v); + // IfcUnitaryControlElementTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcUnitaryEquipmentTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the functional type of unitary equipment. /// The IfcUnitaryEquipmentTypeEnum contains the following: /// @@ -7250,19 +10868,21 @@ class IFC_PARSE_API IfcUnitaryEquipmentTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined unitary equipment type. /// /// HISTORY: New enumeration in IFC R2x. DEHUMIDIFIER added in IFC 2x4 +class IFC_PARSE_API IfcUnitaryEquipmentTypeEnum : public express::DeclaredType { public: + IfcUnitaryEquipmentTypeEnum() {} + explicit IfcUnitaryEquipmentTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcUnitaryEquipmentType_AIRCONDITIONINGUNIT, IfcUnitaryEquipmentType_AIRHANDLER, IfcUnitaryEquipmentType_DEHUMIDIFIER, IfcUnitaryEquipmentType_ROOFTOPUNIT, IfcUnitaryEquipmentType_SPLITSYSTEM, IfcUnitaryEquipmentType_USERDEFINED, IfcUnitaryEquipmentType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcUnitaryEquipmentTypeEnum (IfcEntityInstanceData&& e); - IfcUnitaryEquipmentTypeEnum (Value v); - IfcUnitaryEquipmentTypeEnum (const std::string& v); + // IfcUnitaryEquipmentTypeEnum (Value v); + // IfcUnitaryEquipmentTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcValveTypeEnum : public IfcUtil::IfcBaseType { /// The IfcValveTypeEnum defines the /// range of different types of valve that can be specified. These are typically /// used in conjunction with Pset_ValveTypeCommon, which contains common @@ -7306,47 +10926,53 @@ class IFC_PARSE_API IfcValveTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined valve type. /// /// HISTORY: New type in IFC R2.0 +class IFC_PARSE_API IfcValveTypeEnum : public express::DeclaredType { public: + IfcValveTypeEnum() {} + explicit IfcValveTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcValveType_AIRRELEASE, IfcValveType_ANTIVACUUM, IfcValveType_CHANGEOVER, IfcValveType_CHECK, IfcValveType_COMMISSIONING, IfcValveType_DIVERTING, IfcValveType_DOUBLECHECK, IfcValveType_DOUBLEREGULATING, IfcValveType_DRAWOFFCOCK, 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; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcValveTypeEnum (IfcEntityInstanceData&& e); - IfcValveTypeEnum (Value v); - IfcValveTypeEnum (const std::string& v); + // IfcValveTypeEnum (Value v); + // IfcValveTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcVehicleTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcVehicleTypeEnum : public express::DeclaredType { public: + IfcVehicleTypeEnum() {} + explicit IfcVehicleTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcVehicleType_CARGO, IfcVehicleType_ROLLINGSTOCK, IfcVehicleType_VEHICLE, IfcVehicleType_VEHICLEAIR, IfcVehicleType_VEHICLEMARINE, IfcVehicleType_VEHICLETRACKED, IfcVehicleType_VEHICLEWHEELED, IfcVehicleType_USERDEFINED, IfcVehicleType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcVehicleTypeEnum (IfcEntityInstanceData&& e); - IfcVehicleTypeEnum (Value v); - IfcVehicleTypeEnum (const std::string& v); + // IfcVehicleTypeEnum (Value v); + // IfcVehicleTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcVibrationDamperTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcVibrationDamperTypeEnum : public express::DeclaredType { public: + IfcVibrationDamperTypeEnum() {} + explicit IfcVibrationDamperTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcVibrationDamperType_AXIAL_YIELD, IfcVibrationDamperType_BENDING_YIELD, IfcVibrationDamperType_FRICTION, IfcVibrationDamperType_RUBBER, IfcVibrationDamperType_SHEAR_YIELD, IfcVibrationDamperType_VISCOUS, IfcVibrationDamperType_USERDEFINED, IfcVibrationDamperType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcVibrationDamperTypeEnum (IfcEntityInstanceData&& e); - IfcVibrationDamperTypeEnum (Value v); - IfcVibrationDamperTypeEnum (const std::string& v); + // IfcVibrationDamperTypeEnum (Value v); + // IfcVibrationDamperTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcVibrationIsolatorTypeEnum : public IfcUtil::IfcBaseType { /// Enumeration defining the typical types of vibration isolators. /// The IfcVibrationIsolatorTypeEnum contains the following: /// @@ -7356,33 +10982,37 @@ class IFC_PARSE_API IfcVibrationIsolatorTypeEnum : public IfcUtil::IfcBaseType { /// NOTDEFINED: Undefined vibration isolator type. /// /// HISTORY: New enumeration in IFC 2x2. +class IFC_PARSE_API IfcVibrationIsolatorTypeEnum : public express::DeclaredType { public: + IfcVibrationIsolatorTypeEnum() {} + explicit IfcVibrationIsolatorTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcVibrationIsolatorType_BASE, IfcVibrationIsolatorType_COMPRESSION, IfcVibrationIsolatorType_SPRING, IfcVibrationIsolatorType_USERDEFINED, IfcVibrationIsolatorType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcVibrationIsolatorTypeEnum (IfcEntityInstanceData&& e); - IfcVibrationIsolatorTypeEnum (Value v); - IfcVibrationIsolatorTypeEnum (const std::string& v); + // IfcVibrationIsolatorTypeEnum (Value v); + // IfcVibrationIsolatorTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcVirtualElementTypeEnum : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcVirtualElementTypeEnum : public express::DeclaredType { public: + IfcVirtualElementTypeEnum() {} + explicit IfcVirtualElementTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcVirtualElementType_BOUNDARY, IfcVirtualElementType_CLEARANCE, IfcVirtualElementType_PROVISIONFORVOID, IfcVirtualElementType_USERDEFINED, IfcVirtualElementType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcVirtualElementTypeEnum (IfcEntityInstanceData&& e); - IfcVirtualElementTypeEnum (Value v); - IfcVirtualElementTypeEnum (const std::string& v); + // IfcVirtualElementTypeEnum (Value v); + // IfcVirtualElementTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcVoidingFeatureTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration qualifies a voiding feature regarding its shape and configuration relative to the voided element. /// /// HISTORY New type in IFC 2x4. @@ -7397,19 +11027,21 @@ class IFC_PARSE_API IfcVoidingFeatureTypeEnum : public IfcUtil::IfcBaseType { /// EDGE A shape modification along an edge of the element with the edge length as the predominant dimension of the feature, and feature profile dimensions which are typically much smaller than the edge length. Can for example be a chamfer edge (differentiated from a chamfer by its ratio of dimensions and thus usually manufactured differently), rounded edge (a convex edge feature), or fillet edge (a concave edge feature). /// USERDEFINED A user-defined type of voiding feature. /// NOTDEFINED An undefined type of voiding feature. +class IFC_PARSE_API IfcVoidingFeatureTypeEnum : public express::DeclaredType { public: + IfcVoidingFeatureTypeEnum() {} + explicit IfcVoidingFeatureTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcVoidingFeatureType_CHAMFER, IfcVoidingFeatureType_CUTOUT, IfcVoidingFeatureType_EDGE, IfcVoidingFeatureType_HOLE, IfcVoidingFeatureType_MITER, IfcVoidingFeatureType_NOTCH, IfcVoidingFeatureType_USERDEFINED, IfcVoidingFeatureType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcVoidingFeatureTypeEnum (IfcEntityInstanceData&& e); - IfcVoidingFeatureTypeEnum (Value v); - IfcVoidingFeatureTypeEnum (const std::string& v); + // IfcVoidingFeatureTypeEnum (Value v); + // IfcVoidingFeatureTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcWallTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the /// different types of walls an IfcWallType object can /// fulfill: @@ -7447,19 +11079,21 @@ class IFC_PARSE_API IfcWallTypeEnum : public IfcUtil::IfcBaseType { /// added. /// IFC2x4 CHANGE New enumerator /// MOVABLE has been added. +class IFC_PARSE_API IfcWallTypeEnum : public express::DeclaredType { public: + IfcWallTypeEnum() {} + explicit IfcWallTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcWallType_ELEMENTEDWALL, IfcWallType_MOVABLE, IfcWallType_PARAPET, IfcWallType_PARTITIONING, IfcWallType_PLUMBINGWALL, IfcWallType_POLYGONAL, IfcWallType_RETAININGWALL, IfcWallType_SHEAR, IfcWallType_SOLIDWALL, IfcWallType_STANDARD, IfcWallType_WAVEWALL, IfcWallType_USERDEFINED, IfcWallType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcWallTypeEnum (IfcEntityInstanceData&& e); - IfcWallTypeEnum (Value v); - IfcWallTypeEnum (const std::string& v); + // IfcWallTypeEnum (Value v); + // IfcWallTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcWasteTerminalTypeEnum : public IfcUtil::IfcBaseType { /// The IfcWasteTerminalTypeEnum defines the range of different types of waste terminal that can be specified. /// HISTORY: New type in IFC 2x2. GREASEINTERCEPTOR, OILINTERCEPTOR, PETROLINTERCEPTOR moved to IfcInterceptorTypeEnum in IFC2x4. /// @@ -7474,19 +11108,21 @@ class IFC_PARSE_API IfcWasteTerminalTypeEnum : public IfcUtil::IfcBaseType { /// WASTETRAP: Pipe fitting, set adjacent to a sanitary terminal, that retains liquid to prevent the passage of foul air. /// USERDEFINED: User-defined type. /// NOTDEFINED: Undefined type. +class IFC_PARSE_API IfcWasteTerminalTypeEnum : public express::DeclaredType { public: + IfcWasteTerminalTypeEnum() {} + explicit IfcWasteTerminalTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcWasteTerminalType_FLOORTRAP, IfcWasteTerminalType_FLOORWASTE, IfcWasteTerminalType_GULLYSUMP, IfcWasteTerminalType_GULLYTRAP, IfcWasteTerminalType_ROOFDRAIN, IfcWasteTerminalType_WASTEDISPOSALUNIT, IfcWasteTerminalType_WASTETRAP, IfcWasteTerminalType_USERDEFINED, IfcWasteTerminalType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcWasteTerminalTypeEnum (IfcEntityInstanceData&& e); - IfcWasteTerminalTypeEnum (Value v); - IfcWasteTerminalTypeEnum (const std::string& v); + // IfcWasteTerminalTypeEnum (Value v); + // IfcWasteTerminalTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcWindowPanelOperationEnum : public IfcUtil::IfcBaseType { /// This enumeration defines the basic ways to describe how window panels operate, as shown in Figure 168. /// /// HISTORY New Enumeration in IFC Release 2.0 @@ -7571,19 +11207,21 @@ class IFC_PARSE_API IfcWindowPanelOperationEnum : public IfcUtil::IfcBaseType { /// These figures are only shown as illustrations /// /// Figure 169 — Window panel directions +class IFC_PARSE_API IfcWindowPanelOperationEnum : public express::DeclaredType { public: + IfcWindowPanelOperationEnum() {} + explicit IfcWindowPanelOperationEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcWindowPanelOperation_BOTTOMHUNG, IfcWindowPanelOperation_FIXEDCASEMENT, IfcWindowPanelOperation_OTHEROPERATION, IfcWindowPanelOperation_PIVOTHORIZONTAL, IfcWindowPanelOperation_PIVOTVERTICAL, IfcWindowPanelOperation_REMOVABLECASEMENT, IfcWindowPanelOperation_SIDEHUNGLEFTHAND, IfcWindowPanelOperation_SIDEHUNGRIGHTHAND, IfcWindowPanelOperation_SLIDINGHORIZONTAL, IfcWindowPanelOperation_SLIDINGVERTICAL, IfcWindowPanelOperation_TILTANDTURNLEFTHAND, IfcWindowPanelOperation_TILTANDTURNRIGHTHAND, IfcWindowPanelOperation_TOPHUNG, IfcWindowPanelOperation_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcWindowPanelOperationEnum (IfcEntityInstanceData&& e); - IfcWindowPanelOperationEnum (Value v); - IfcWindowPanelOperationEnum (const std::string& v); + // IfcWindowPanelOperationEnum (Value v); + // IfcWindowPanelOperationEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcWindowPanelPositionEnum : public IfcUtil::IfcBaseType { /// This enumeration defines the basic configuration of the window type in terms of the location of window panels. The window configurations are given for windows with one, two or three panels (including fixed panels) as shown in Figure 170. It corresponds to the OperationType of the IfcWindowStyle definition, which references the IfcWindowPanelProperties. /// /// Windows which are subdivided into more than three panels have to be defined by the geometry only. The type of such windows is given by an IfcWindowStyle.OperationType = USERDEFINED or NOTDEFINED (see IfcWindowStyleOperationEnum for details). @@ -7648,19 +11286,21 @@ class IFC_PARSE_API IfcWindowPanelPositionEnum : public IfcUtil::IfcBaseType { /// placement of the window, looking into the direction of the positive Y /// axis. /// These figures are only shown as illustrations. +class IFC_PARSE_API IfcWindowPanelPositionEnum : public express::DeclaredType { public: + IfcWindowPanelPositionEnum() {} + explicit IfcWindowPanelPositionEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcWindowPanelPosition_BOTTOM, IfcWindowPanelPosition_LEFT, IfcWindowPanelPosition_MIDDLE, IfcWindowPanelPosition_RIGHT, IfcWindowPanelPosition_TOP, IfcWindowPanelPosition_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcWindowPanelPositionEnum (IfcEntityInstanceData&& e); - IfcWindowPanelPositionEnum (Value v); - IfcWindowPanelPositionEnum (const std::string& v); + // IfcWindowPanelPositionEnum (Value v); + // IfcWindowPanelPositionEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcWindowTypeEnum : public IfcUtil::IfcBaseType { /// Definition from IAI: This enumeration defines the /// different predefined types of an IfcWindowType object can /// fulfill: @@ -7677,19 +11317,21 @@ class IFC_PARSE_API IfcWindowTypeEnum : public IfcUtil::IfcBaseType { /// /// HISTORY New Enumeration /// in IFC2x4. +class IFC_PARSE_API IfcWindowTypeEnum : public express::DeclaredType { public: + IfcWindowTypeEnum() {} + explicit IfcWindowTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcWindowType_LIGHTDOME, IfcWindowType_SKYLIGHT, IfcWindowType_WINDOW, IfcWindowType_USERDEFINED, IfcWindowType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcWindowTypeEnum (IfcEntityInstanceData&& e); - IfcWindowTypeEnum (Value v); - IfcWindowTypeEnum (const std::string& v); + // IfcWindowTypeEnum (Value v); + // IfcWindowTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcWindowTypePartitioningEnum : public IfcUtil::IfcBaseType { /// This enumeration defines the basic configuration of the window type in terms of the number of window panels and the subdivision of the total window as shown in Figure 70. The window configurations are given for windows with one, two or three panels (including fixed panels). /// /// Windows which are subdivided into more than three panels have to be defined by the geometry only. The type of such windows is USERDEFINED. @@ -7761,19 +11403,21 @@ class IFC_PARSE_API IfcWindowTypePartitioningEnum : public IfcUtil::IfcBaseType /// local placement of the window, looking into the direction of the /// positive Y axis. /// These figures are only shown as illustrations +class IFC_PARSE_API IfcWindowTypePartitioningEnum : public express::DeclaredType { public: + IfcWindowTypePartitioningEnum() {} + explicit IfcWindowTypePartitioningEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcWindowTypePartitioning_DOUBLE_PANEL_HORIZONTAL, IfcWindowTypePartitioning_DOUBLE_PANEL_VERTICAL, IfcWindowTypePartitioning_SINGLE_PANEL, IfcWindowTypePartitioning_TRIPLE_PANEL_BOTTOM, IfcWindowTypePartitioning_TRIPLE_PANEL_HORIZONTAL, IfcWindowTypePartitioning_TRIPLE_PANEL_LEFT, IfcWindowTypePartitioning_TRIPLE_PANEL_RIGHT, IfcWindowTypePartitioning_TRIPLE_PANEL_TOP, IfcWindowTypePartitioning_TRIPLE_PANEL_VERTICAL, IfcWindowTypePartitioning_USERDEFINED, IfcWindowTypePartitioning_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcWindowTypePartitioningEnum (IfcEntityInstanceData&& e); - IfcWindowTypePartitioningEnum (Value v); - IfcWindowTypePartitioningEnum (const std::string& v); + // IfcWindowTypePartitioningEnum (Value v); + // IfcWindowTypePartitioningEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcWorkCalendarTypeEnum : public IfcUtil::IfcBaseType { /// An IfcWorkCalendarTypeEnum is an enumeration data type that specifies the types of work calendar from which the relevant control can be selected. If given it should help to identify base calendars. /// /// HISTORY: Introduced in IFC2x4. @@ -7785,19 +11429,21 @@ class IFC_PARSE_API IfcWorkCalendarTypeEnum : public IfcUtil::IfcBaseType { /// THIRDSHIFT: Belongs to the third shift /// USERDEFINED /// NOTDEFINED +class IFC_PARSE_API IfcWorkCalendarTypeEnum : public express::DeclaredType { public: + IfcWorkCalendarTypeEnum() {} + explicit IfcWorkCalendarTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcWorkCalendarType_FIRSTSHIFT, IfcWorkCalendarType_SECONDSHIFT, IfcWorkCalendarType_THIRDSHIFT, IfcWorkCalendarType_USERDEFINED, IfcWorkCalendarType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcWorkCalendarTypeEnum (IfcEntityInstanceData&& e); - IfcWorkCalendarTypeEnum (Value v); - IfcWorkCalendarTypeEnum (const std::string& v); + // IfcWorkCalendarTypeEnum (Value v); + // IfcWorkCalendarTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcWorkPlanTypeEnum : public IfcUtil::IfcBaseType { /// An IfcWorkPlanTypeEnum is an enumeration data type that specifies the types of work plan from which the relevant control can be selected. /// /// HISTORY  Introduced in IFC2x4. Derived from IfcWorkControlTypeEnum that was introduced in IFC Release 2.0. @@ -7809,19 +11455,21 @@ class IFC_PARSE_API IfcWorkPlanTypeEnum : public IfcUtil::IfcBaseType { /// PLANNED: A control showing planned items. /// USERDEFINED /// NOTDEFINED +class IFC_PARSE_API IfcWorkPlanTypeEnum : public express::DeclaredType { public: + IfcWorkPlanTypeEnum() {} + explicit IfcWorkPlanTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcWorkPlanType_ACTUAL, IfcWorkPlanType_BASELINE, IfcWorkPlanType_PLANNED, IfcWorkPlanType_USERDEFINED, IfcWorkPlanType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcWorkPlanTypeEnum (IfcEntityInstanceData&& e); - IfcWorkPlanTypeEnum (Value v); - IfcWorkPlanTypeEnum (const std::string& v); + // IfcWorkPlanTypeEnum (Value v); + // IfcWorkPlanTypeEnum (const std::string& v); operator Value() const; }; -class IFC_PARSE_API IfcWorkScheduleTypeEnum : public IfcUtil::IfcBaseType { /// An IfcWorkScheduleTypeEnum is an enumeration data type that specifies the types of work schedule from which the relevant control can be selected. /// /// HISTORY  Introduced in IFC2x4. Derived from IfcWorkControlTypeEnum that was introduced in IFC Release 2.0. @@ -7833,16 +11481,19 @@ class IFC_PARSE_API IfcWorkScheduleTypeEnum : public IfcUtil::IfcBaseType { /// PLANNED: A control showing planned items /// USERDEFINED /// NOTDEFINED +class IFC_PARSE_API IfcWorkScheduleTypeEnum : public express::DeclaredType { public: + IfcWorkScheduleTypeEnum() {} + explicit IfcWorkScheduleTypeEnum (const std::weak_ptr& data) : express::DeclaredType(data) {} + typedef enum {IfcWorkScheduleType_ACTUAL, IfcWorkScheduleType_BASELINE, IfcWorkScheduleType_PLANNED, IfcWorkScheduleType_USERDEFINED, IfcWorkScheduleType_NOTDEFINED} Value; static const char* ToString(Value v); static Value FromString(const std::string& s); - virtual const IfcParse::enumeration_type& declaration() const; + // virtual const IfcParse::enumeration_type& declaration() const; static const IfcParse::enumeration_type& Class(); - IfcWorkScheduleTypeEnum (IfcEntityInstanceData&& e); - IfcWorkScheduleTypeEnum (Value v); - IfcWorkScheduleTypeEnum (const std::string& v); + // IfcWorkScheduleTypeEnum (Value v); + // IfcWorkScheduleTypeEnum (const std::string& v); operator Value() const; }; /// IfcAbsorbedDoseMeasure is a measure of the absorbed radioactivity dose. @@ -7850,12 +11501,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcAbsorbedDoseMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcAbsorbedDoseMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcAbsorbedDoseMeasure() {} + explicit IfcAbsorbedDoseMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcAbsorbedDoseMeasure (IfcEntityInstanceData&& e); - IfcAbsorbedDoseMeasure (double v); + // IfcAbsorbedDoseMeasure (double v); operator double() const; }; /// IfcAccelerationMeasure is a measure of acceleration. @@ -7863,12 +11516,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcAccelerationMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcAccelerationMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcAccelerationMeasure() {} + explicit IfcAccelerationMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcAccelerationMeasure (IfcEntityInstanceData&& e); - IfcAccelerationMeasure (double v); + // IfcAccelerationMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: An amount of substance measure is the value for the quantity of a substance when compared with the number of atoms in 0.012kilogram of carbon 12. @@ -7879,12 +11534,14 @@ public: /// NOTE Corresponding ISO 10303 name: amount_of_substance_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcAmountOfSubstanceMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcAmountOfSubstanceMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcAmountOfSubstanceMeasure() {} + explicit IfcAmountOfSubstanceMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcAmountOfSubstanceMeasure (IfcEntityInstanceData&& e); - IfcAmountOfSubstanceMeasure (double v); + // IfcAmountOfSubstanceMeasure (double v); operator double() const; }; /// IfcAngularVelocityMeasure is a measure of the velocity of a body measured in terms of angle subtended per unit time. @@ -7892,30 +11549,36 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcAngularVelocityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcAngularVelocityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcAngularVelocityMeasure() {} + explicit IfcAngularVelocityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcAngularVelocityMeasure (IfcEntityInstanceData&& e); - IfcAngularVelocityMeasure (double v); + // IfcAngularVelocityMeasure (double v); operator double() const; }; -class IFC_PARSE_API IfcArcIndex : public IfcUtil::IfcBaseType, public IfcSegmentIndexSelect { +class IFC_PARSE_API IfcArcIndex : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcArcIndex() {} + explicit IfcArcIndex (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcArcIndex (IfcEntityInstanceData&& e); - IfcArcIndex (std::vector< int > /*[3:3]*/ v); + // IfcArcIndex (std::vector< int > /*[3:3]*/ v); operator std::vector< int > /*[3:3]*/() const; }; -class IFC_PARSE_API IfcAreaDensityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcAreaDensityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcAreaDensityMeasure() {} + explicit IfcAreaDensityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcAreaDensityMeasure (IfcEntityInstanceData&& e); - IfcAreaDensityMeasure (double v); + // IfcAreaDensityMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: An area measure is the value of the extent of a surface. @@ -7925,21 +11588,25 @@ public: /// NOTE Corresponding ISO 10303 name: area_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcAreaMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcAreaMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcAreaMeasure() {} + explicit IfcAreaMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcAreaMeasure (IfcEntityInstanceData&& e); - IfcAreaMeasure (double v); + // IfcAreaMeasure (double v); operator double() const; }; -class IFC_PARSE_API IfcBinary : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMetricValueSelect, public IfcSimpleValue, public IfcValue { +class IFC_PARSE_API IfcBinary : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcBinary() {} + explicit IfcBinary (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcBinary (IfcEntityInstanceData&& e); - IfcBinary (boost::dynamic_bitset<> v); + // IfcBinary (boost::dynamic_bitset<> v); operator boost::dynamic_bitset<>() const; }; /// IfcBoolean is a defined data type of simple data type Boolean. It is required since a select type (IfcSimpleValue) cannot directly include simple types in its select list. A boolean type can have value TRUE or FALSE. @@ -7947,12 +11614,14 @@ public: /// Type: BOOLEAN /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcBoolean : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMetricValueSelect, public IfcModulusOfRotationalSubgradeReactionSelect, public IfcModulusOfSubgradeReactionSelect, public IfcModulusOfTranslationalSubgradeReactionSelect, public IfcRotationalStiffnessSelect, public IfcSimpleValue, public IfcTranslationalStiffnessSelect, public IfcValue, public IfcWarpingStiffnessSelect { +class IFC_PARSE_API IfcBoolean : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcBoolean() {} + explicit IfcBoolean (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcBoolean (IfcEntityInstanceData&& e); - IfcBoolean (bool v); + // IfcBoolean (bool v); operator bool() const; }; /// An IfcCardinalPointReference is an index reference to @@ -7998,12 +11667,14 @@ public: /// Figure 284 illustrates an example extrusion shape with arbitrary profile (IfcArbitraryClosedProfileDef), aligned "mid-depth right" on the member axis. The line of sight follows the extrusion direction Z which points into the drawing plane of above illustration. Hence, "left" is in the positive X direction of the IfcProfileDef. "Top" is in the positive Y direction of the IfcProfileDef. /// /// Figure 284 — Cardinal point extrusion -class IFC_PARSE_API IfcCardinalPointReference : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcCardinalPointReference : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcCardinalPointReference() {} + explicit IfcCardinalPointReference (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcCardinalPointReference (IfcEntityInstanceData&& e); - IfcCardinalPointReference (int v); + // IfcCardinalPointReference (int v); operator int() const; }; /// IfcComplexNumber is a representation of a complex number expressed as an array with two elements. @@ -8017,12 +11688,14 @@ public: /// Type: ARRAY [1:2] OF REAL /// /// HISTORY New type in IFC Release 2x2. -class IFC_PARSE_API IfcComplexNumber : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcComplexNumber : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcComplexNumber() {} + explicit IfcComplexNumber (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcComplexNumber (IfcEntityInstanceData&& e); - IfcComplexNumber (std::vector< double > /*[1:2]*/ v); + // IfcComplexNumber (std::vector< double > /*[1:2]*/ v); operator std::vector< double > /*[1:2]*/() const; }; /// IfcCompoundPlaneAngleMeasure is a compound measure of plane angle in degrees, minutes, seconds, and optionally millionth-seconds of arc. @@ -8073,12 +11746,14 @@ public: ///      + FORMAT(ABS(c[4]), '##');  -- -50° 58' 33" 110400 /// /// Another often encountered display format of latitudes and longitudes is to omit the signs and print N, S, E, W indicators instead, for example, 50°58'33"S. When stored as IfcCompoundPlaneAngleMeasure however, a compound plane angle measure is always signed, with same sign of all components. -class IFC_PARSE_API IfcCompoundPlaneAngleMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcCompoundPlaneAngleMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcCompoundPlaneAngleMeasure() {} + explicit IfcCompoundPlaneAngleMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcCompoundPlaneAngleMeasure (IfcEntityInstanceData&& e); - IfcCompoundPlaneAngleMeasure (std::vector< int > /*[3:4]*/ v); + // IfcCompoundPlaneAngleMeasure (std::vector< int > /*[3:4]*/ v); operator std::vector< int > /*[3:4]*/() const; }; /// Definition from ISO/CD 10303-41:1992: Is the value of a physical quantity as defined by an application context. @@ -8087,12 +11762,14 @@ public: /// NOTE Corresponding ISO 10303 name: context_dependent_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcContextDependentMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcContextDependentMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcContextDependentMeasure() {} + explicit IfcContextDependentMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcContextDependentMeasure (IfcEntityInstanceData&& e); - IfcContextDependentMeasure (double v); + // IfcContextDependentMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: A count measure is the value of a count. @@ -8101,12 +11778,14 @@ public: /// NOTE Corresponding ISO 10303 name: count_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcCountMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcCountMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcCountMeasure() {} + explicit IfcCountMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcCountMeasure (IfcEntityInstanceData&& e); - IfcCountMeasure (int v); + // IfcCountMeasure (int v); operator int() const; }; /// IfcCurvatureMeasure is a measure for curvature, which is defined as the change of slope per length. @@ -8116,12 +11795,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC2x2. -class IFC_PARSE_API IfcCurvatureMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcCurvatureMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcCurvatureMeasure() {} + explicit IfcCurvatureMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcCurvatureMeasure (IfcEntityInstanceData&& e); - IfcCurvatureMeasure (double v); + // IfcCurvatureMeasure (double v); operator double() const; }; /// The lexical representation for date is the reduced (right truncated) lexical representation for dateTime: CCYY-MM-DD. No left truncation is allowed. An optional following time zone qualifier is allowed as for dateTime. To accommodate year values outside the range from 0001 to 9999, additional digits can be added to the left of this representation and a preceding "-" sign is allowed. @@ -8130,12 +11811,14 @@ public: /// /// Use definitions /// All given values should be provided in context and converted into a Gregorian date context and be shall be processable by a receiving application. -class IFC_PARSE_API IfcDate : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMetricValueSelect, public IfcSimpleValue, public IfcValue { +class IFC_PARSE_API IfcDate : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcDate() {} + explicit IfcDate (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcDate (IfcEntityInstanceData&& e); - IfcDate (std::string v); + // IfcDate (std::string v); operator std::string() const; }; /// This lexical representation is the [ISO 8601] extended @@ -8156,12 +11839,14 @@ public: /// otherwise they are forbidden. The year 0000 is prohibited. /// /// HISTORY: New type in IFC2x4 -class IFC_PARSE_API IfcDateTime : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMetricValueSelect, public IfcSimpleValue, public IfcValue { +class IFC_PARSE_API IfcDateTime : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcDateTime() {} + explicit IfcDateTime (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcDateTime (IfcEntityInstanceData&& e); - IfcDateTime (std::string v); + // IfcDateTime (std::string v); operator std::string() const; }; /// Definition from IAI: The IfcDayInMonthNumber is @@ -8176,12 +11861,14 @@ public: /// Release 1.5.1. /// IFC2x4 CHANGE Where rule /// ValidRange added. -class IFC_PARSE_API IfcDayInMonthNumber : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcDayInMonthNumber : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcDayInMonthNumber() {} + explicit IfcDayInMonthNumber (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcDayInMonthNumber (IfcEntityInstanceData&& e); - IfcDayInMonthNumber (int v); + // IfcDayInMonthNumber (int v); operator int() const; }; /// Definition from IAI: The IfcDayInWeekNumber is @@ -8218,12 +11905,14 @@ public: /// Type: INTEGER /// HISTORY New type in /// IFC2x4. -class IFC_PARSE_API IfcDayInWeekNumber : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcDayInWeekNumber : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcDayInWeekNumber() {} + explicit IfcDayInWeekNumber (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcDayInWeekNumber (IfcEntityInstanceData&& e); - IfcDayInWeekNumber (int v); + // IfcDayInWeekNumber (int v); operator int() const; }; /// Definition from ISO/CD 10303-41:1992: A descriptive measure is a human interpretable definition of a quantifiable value. @@ -8232,12 +11921,14 @@ public: /// NOTE Corresponding ISO 10303 name:descriptive_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcDescriptiveMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcSizeSelect, public IfcValue { +class IFC_PARSE_API IfcDescriptiveMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcDescriptiveMeasure() {} + explicit IfcDescriptiveMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcDescriptiveMeasure (IfcEntityInstanceData&& e); - IfcDescriptiveMeasure (std::string v); + // IfcDescriptiveMeasure (std::string v); operator std::string() const; }; /// Definition from ISO/CD 10303-42:1992: A dimension count is a positive integer used to define the coordinate space dimensionality. @@ -8247,12 +11938,14 @@ public: /// NOTE Corresponding ISO 10303 type: dimension_count, please refer to ISO/IS 10303-42:1994, p. 14 for the final definition of the formal standard. /// /// HISTORY New Type in IFC Release 1.5 -class IFC_PARSE_API IfcDimensionCount : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcDimensionCount : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcDimensionCount() {} + explicit IfcDimensionCount (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcDimensionCount (IfcEntityInstanceData&& e); - IfcDimensionCount (int v); + // IfcDimensionCount (int v); operator int() const; }; /// IfcDoseEquivalentMeasure is a measure of the radioactive dose equivalent. @@ -8260,12 +11953,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcDoseEquivalentMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcDoseEquivalentMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcDoseEquivalentMeasure() {} + explicit IfcDoseEquivalentMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcDoseEquivalentMeasure (IfcEntityInstanceData&& e); - IfcDoseEquivalentMeasure (double v); + // IfcDoseEquivalentMeasure (double v); operator double() const; }; /// String representation of a time duration according to ISO8601:2000 "Data elements and interchange formats - Information interchange - Representation of dates and times" as defined in section 5.5.3 "Representation of duration". @@ -8273,12 +11968,14 @@ public: /// EXAMPLE: P0002-10-15T10:30:20 (duration of two years, 10 months, 15 days, 10 hours, 30 minutes and 20 seconds). /// /// HISTORY: New type in IFC2x4 -class IFC_PARSE_API IfcDuration : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMetricValueSelect, public IfcSimpleValue, public IfcTimeOrRatioSelect, public IfcValue { +class IFC_PARSE_API IfcDuration : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcDuration() {} + explicit IfcDuration (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcDuration (IfcEntityInstanceData&& e); - IfcDuration (std::string v); + // IfcDuration (std::string v); operator std::string() const; }; /// IfcDynamicViscosityMeasure is a measure of the viscous resistance of a medium. @@ -8287,12 +11984,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcDynamicViscosityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcDynamicViscosityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcDynamicViscosityMeasure() {} + explicit IfcDynamicViscosityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcDynamicViscosityMeasure (IfcEntityInstanceData&& e); - IfcDynamicViscosityMeasure (double v); + // IfcDynamicViscosityMeasure (double v); operator double() const; }; /// IfcElectricCapacitanceMeasure is a measure of the electric capacitance. @@ -8300,12 +11999,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcElectricCapacitanceMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcElectricCapacitanceMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcElectricCapacitanceMeasure() {} + explicit IfcElectricCapacitanceMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcElectricCapacitanceMeasure (IfcEntityInstanceData&& e); - IfcElectricCapacitanceMeasure (double v); + // IfcElectricCapacitanceMeasure (double v); operator double() const; }; /// IfcElectricChargeMeasure is a measure of the electric charge. @@ -8313,12 +12014,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcElectricChargeMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcElectricChargeMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcElectricChargeMeasure() {} + explicit IfcElectricChargeMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcElectricChargeMeasure (IfcEntityInstanceData&& e); - IfcElectricChargeMeasure (double v); + // IfcElectricChargeMeasure (double v); operator double() const; }; /// IfcElectricConductanceMeasure is a measure of the electric conductance. @@ -8326,12 +12029,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcElectricConductanceMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcElectricConductanceMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcElectricConductanceMeasure() {} + explicit IfcElectricConductanceMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcElectricConductanceMeasure (IfcEntityInstanceData&& e); - IfcElectricConductanceMeasure (double v); + // IfcElectricConductanceMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: The value for the movement of electrically charged particles. @@ -8341,12 +12046,14 @@ public: /// NOTE Corresponding ISO 10303 name: electric_current_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcElectricCurrentMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcElectricCurrentMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcElectricCurrentMeasure() {} + explicit IfcElectricCurrentMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcElectricCurrentMeasure (IfcEntityInstanceData&& e); - IfcElectricCurrentMeasure (double v); + // IfcElectricCurrentMeasure (double v); operator double() const; }; /// IfcElectricResistanceMeasure is a measure of the electric resistance. @@ -8354,12 +12061,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcElectricResistanceMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcElectricResistanceMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcElectricResistanceMeasure() {} + explicit IfcElectricResistanceMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcElectricResistanceMeasure (IfcEntityInstanceData&& e); - IfcElectricResistanceMeasure (double v); + // IfcElectricResistanceMeasure (double v); operator double() const; }; /// IfcElectricVoltageMeasure is a measure of electromotive force. @@ -8367,12 +12076,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcElectricVoltageMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcElectricVoltageMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcElectricVoltageMeasure() {} + explicit IfcElectricVoltageMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcElectricVoltageMeasure (IfcEntityInstanceData&& e); - IfcElectricVoltageMeasure (double v); + // IfcElectricVoltageMeasure (double v); operator double() const; }; /// IfcEnergyMeasure is a measure of energy required or used. @@ -8380,12 +12091,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcEnergyMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcEnergyMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcEnergyMeasure() {} + explicit IfcEnergyMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcEnergyMeasure (IfcEntityInstanceData&& e); - IfcEnergyMeasure (double v); + // IfcEnergyMeasure (double v); operator double() const; }; /// Definition from CSS1 (W3C Recommendation): The font-style property selects between normal (sometimes @@ -8402,12 +12115,14 @@ public: /// NOTE  Corresponding CSS1 definitions is font-style. /// /// HISTORY  New type in IFC2x3. -class IFC_PARSE_API IfcFontStyle : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcFontStyle : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcFontStyle() {} + explicit IfcFontStyle (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcFontStyle (IfcEntityInstanceData&& e); - IfcFontStyle (std::string v); + // IfcFontStyle (std::string v); operator std::string() const; }; /// Definition from CSS1 (W3C Recommendation): The font-style property selects between normal and small-caps within a font family. Values are: @@ -8422,12 +12137,14 @@ public: /// NOTE  Corresponding CSS1 definitions is font-variant. /// /// HISTORY  New type in IFC2x3. -class IFC_PARSE_API IfcFontVariant : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcFontVariant : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcFontVariant() {} + explicit IfcFontVariant (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcFontVariant (IfcEntityInstanceData&& e); - IfcFontVariant (std::string v); + // IfcFontVariant (std::string v); operator std::string() const; }; /// Definition from CSS1 (W3C Recommendation): The 'font-weight' property selects the weight of the font. The values '100' to '900' form an ordered sequence, where each number indicates a weight that is at least as dark as its predecessor. The keyword 'normal' is synonymous with '400', and 'bold' is synonymous with '700'. Keywords other than 'normal' and 'bold' have been shown to be often confused with font names and a numerical scale was therefore chosen for the 9-value list. Values are: @@ -8453,12 +12170,14 @@ public: /// NOTE  Corresponding CSS1 definitions is font-weight. /// /// HISTORY  New type in IFC2x2 Addendum 2. -class IFC_PARSE_API IfcFontWeight : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcFontWeight : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcFontWeight() {} + explicit IfcFontWeight (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcFontWeight (IfcEntityInstanceData&& e); - IfcFontWeight (std::string v); + // IfcFontWeight (std::string v); operator std::string() const; }; /// IfcForceMeasure is a measure of the force. @@ -8466,12 +12185,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcForceMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcForceMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcForceMeasure() {} + explicit IfcForceMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcForceMeasure (IfcEntityInstanceData&& e); - IfcForceMeasure (double v); + // IfcForceMeasure (double v); operator double() const; }; /// IfcFrequencyMeasure is a measure of the number of times that an item vibrates in unit time. @@ -8479,12 +12200,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcFrequencyMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcFrequencyMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcFrequencyMeasure() {} + explicit IfcFrequencyMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcFrequencyMeasure (IfcEntityInstanceData&& e); - IfcFrequencyMeasure (double v); + // IfcFrequencyMeasure (double v); operator double() const; }; /// An IfcGloballyUniqueId holds an encoded string identifier that is used to uniquely identify an IFC object. An IfcGloballyUniqueId is a Globally @@ -8500,12 +12223,14 @@ public: /// Refer to the BuildingSMART website (www.buildingsmart-tech.org) for more information and sample encoding algorithms. /// /// HISTORY  New type in IFC R1.5.1. -class IFC_PARSE_API IfcGloballyUniqueId : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcGloballyUniqueId : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcGloballyUniqueId() {} + explicit IfcGloballyUniqueId (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcGloballyUniqueId (IfcEntityInstanceData&& e); - IfcGloballyUniqueId (std::string v); + // IfcGloballyUniqueId (std::string v); operator std::string() const; }; /// IfcHeatFluxDensityMeasure is a measure of the density of heat flux within a body. @@ -8513,23 +12238,27 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcHeatFluxDensityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcHeatFluxDensityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcHeatFluxDensityMeasure() {} + explicit IfcHeatFluxDensityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcHeatFluxDensityMeasure (IfcEntityInstanceData&& e); - IfcHeatFluxDensityMeasure (double v); + // IfcHeatFluxDensityMeasure (double v); operator double() const; }; /// IfcHeatingValueMeasure defines the amount of energy released (usually in MJ/kg) when a fuel is burned. /// /// HISTORY: This is new type in IFC2x2. -class IFC_PARSE_API IfcHeatingValueMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcHeatingValueMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcHeatingValueMeasure() {} + explicit IfcHeatingValueMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcHeatingValueMeasure (IfcEntityInstanceData&& e); - IfcHeatingValueMeasure (double v); + // IfcHeatingValueMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: An identifier is an alphanumeric string which allows an individual thing to be identified. It may not provide natural-language meaning. @@ -8546,12 +12275,14 @@ public: /// Per ISO 10303-11, the set of characters that may appear in STRINGs is defined in ISO 10646. The encoding of characters in case of file-based exchange is defined in ISO 10303-21 (STEP physical files) and ISO 10303-28 (XML files). Among else, these specifications define the encoding of 8-bit characters from ISO 8859-1...-16 and of 2-byte Unicode characters. /// /// Note that while IfcIdentifier is restricted to 255 characters, the size in exchange files after encoding may be considerably larger than 255 octets, depending on the particular encoding and on the contents of the identifier. -class IFC_PARSE_API IfcIdentifier : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMetricValueSelect, public IfcSimpleValue, public IfcValue { +class IFC_PARSE_API IfcIdentifier : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcIdentifier() {} + explicit IfcIdentifier (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcIdentifier (IfcEntityInstanceData&& e); - IfcIdentifier (std::string v); + // IfcIdentifier (std::string v); operator std::string() const; }; /// IfcIlluminanceMeasure is a measure of the illuminance. @@ -8559,12 +12290,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcIlluminanceMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcIlluminanceMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcIlluminanceMeasure() {} + explicit IfcIlluminanceMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcIlluminanceMeasure (IfcEntityInstanceData&& e); - IfcIlluminanceMeasure (double v); + // IfcIlluminanceMeasure (double v); operator double() const; }; /// IfcInductanceMeasure is a measure of the inductance. @@ -8572,12 +12305,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcInductanceMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcInductanceMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcInductanceMeasure() {} + explicit IfcInductanceMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcInductanceMeasure (IfcEntityInstanceData&& e); - IfcInductanceMeasure (double v); + // IfcInductanceMeasure (double v); operator double() const; }; /// IfcInteger is a defined type of simple data type Integer. It is required since a select type (IfcSimpleValue) cannot include directly simple types in its select list. @@ -8587,12 +12322,14 @@ public: /// Type: INTEGER /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcInteger : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMetricValueSelect, public IfcSimpleValue, public IfcValue { +class IFC_PARSE_API IfcInteger : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcInteger() {} + explicit IfcInteger (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcInteger (IfcEntityInstanceData&& e); - IfcInteger (int v); + // IfcInteger (int v); operator int() const; }; /// IfcIntegerCountRateMeasure is a measure of the integer number of units flowing per unit time. @@ -8602,23 +12339,27 @@ public: /// Type: INTEGER /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcIntegerCountRateMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcIntegerCountRateMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcIntegerCountRateMeasure() {} + explicit IfcIntegerCountRateMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcIntegerCountRateMeasure (IfcEntityInstanceData&& e); - IfcIntegerCountRateMeasure (int v); + // IfcIntegerCountRateMeasure (int v); operator int() const; }; /// IfcIonConcentrationMeasure is a measure of particular ion concentration in a liquid, given in mg/L. /// /// HISTORY: New type in IFC2x2. -class IFC_PARSE_API IfcIonConcentrationMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcIonConcentrationMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcIonConcentrationMeasure() {} + explicit IfcIonConcentrationMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcIonConcentrationMeasure (IfcEntityInstanceData&& e); - IfcIonConcentrationMeasure (double v); + // IfcIonConcentrationMeasure (double v); operator double() const; }; /// IfcIsothermalMoistureCapacityMeasure is a measure of isothermal moisture capacity. @@ -8626,12 +12367,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcIsothermalMoistureCapacityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcIsothermalMoistureCapacityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcIsothermalMoistureCapacityMeasure() {} + explicit IfcIsothermalMoistureCapacityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcIsothermalMoistureCapacityMeasure (IfcEntityInstanceData&& e); - IfcIsothermalMoistureCapacityMeasure (double v); + // IfcIsothermalMoistureCapacityMeasure (double v); operator double() const; }; /// IfcKinematicViscosityMeasure is a measure of the viscous resistance of a medium to a moving body. @@ -8639,12 +12382,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcKinematicViscosityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcKinematicViscosityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcKinematicViscosityMeasure() {} + explicit IfcKinematicViscosityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcKinematicViscosityMeasure (IfcEntityInstanceData&& e); - IfcKinematicViscosityMeasure (double v); + // IfcKinematicViscosityMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: A label is the term by which something may be referred to. It is a string which represents the human-interpretable name of something and shall have a natural-language meaning. @@ -8661,12 +12406,14 @@ public: /// Per ISO 10303-11, the set of characters that may appear in STRINGs is defined in ISO 10646. The encoding of characters in case of file-based exchange is defined in ISO 10303-21 (STEP physical files) and ISO 10303-28 (XML files). Among else, these specifications define the encoding of 8-bit characters from ISO 8859-1...-16 and of 2-byte Unicode characters. /// /// Note that while IfcLabel is restricted to 255 characters, the size in exchange files after encoding may be considerably larger than 255 octets, depending on the particular encoding and on the contents of the label. -class IFC_PARSE_API IfcLabel : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMetricValueSelect, public IfcSimpleValue, public IfcValue { +class IFC_PARSE_API IfcLabel : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcLabel() {} + explicit IfcLabel (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcLabel (IfcEntityInstanceData&& e); - IfcLabel (std::string v); + // IfcLabel (std::string v); operator std::string() const; }; /// IfcLanguageId identifies the language in which a natural language text is expressed. It uses a language tag to identify the language. @@ -8679,12 +12426,14 @@ public: /// NOTE  The use of IfcLanguageId should conform to the use of language tags in HTML and XML as published by the W3C consortium. /// /// HISTORY  New defined datatype in IFC2x4. -class IFC_PARSE_API IfcLanguageId : public IfcIdentifier { +class IFC_PARSE_API IfcLanguageId : public IfcIdentifier { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcLanguageId() {} + explicit IfcLanguageId (const std::weak_ptr& data) : IfcIdentifier(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcLanguageId (IfcEntityInstanceData&& e); - IfcLanguageId (std::string v); + // IfcLanguageId (std::string v); operator std::string() const; }; /// Definition from ISO/CD 10303-41:1992: A length measure is the value of a distance. @@ -8694,21 +12443,25 @@ public: /// NOTE Corresponding ISO 10303 name: length_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcLengthMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcBendingParameterSelect, public IfcCurveMeasureSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcSizeSelect, public IfcValue { +class IFC_PARSE_API IfcLengthMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcLengthMeasure() {} + explicit IfcLengthMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcLengthMeasure (IfcEntityInstanceData&& e); - IfcLengthMeasure (double v); + // IfcLengthMeasure (double v); operator double() const; }; -class IFC_PARSE_API IfcLineIndex : public IfcUtil::IfcBaseType, public IfcSegmentIndexSelect { +class IFC_PARSE_API IfcLineIndex : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcLineIndex() {} + explicit IfcLineIndex (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcLineIndex (IfcEntityInstanceData&& e); - IfcLineIndex (std::vector< int > /*[2:?]*/ v); + // IfcLineIndex (std::vector< int > /*[2:?]*/ v); operator std::vector< int > /*[2:?]*/() const; }; /// IfcLinearForceMeasure is a measure of linear force. @@ -8716,12 +12469,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcLinearForceMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcLinearForceMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcLinearForceMeasure() {} + explicit IfcLinearForceMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcLinearForceMeasure (IfcEntityInstanceData&& e); - IfcLinearForceMeasure (double v); + // IfcLinearForceMeasure (double v); operator double() const; }; /// IfcLinearMomentMeasure is a measure of linear moment. @@ -8729,12 +12484,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcLinearMomentMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcLinearMomentMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcLinearMomentMeasure() {} + explicit IfcLinearMomentMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcLinearMomentMeasure (IfcEntityInstanceData&& e); - IfcLinearMomentMeasure (double v); + // IfcLinearMomentMeasure (double v); operator double() const; }; /// IfcLinearStiffnessMeasureA measure of linear stiffness. @@ -8742,12 +12499,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcLinearStiffnessMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcTranslationalStiffnessSelect, public IfcValue { +class IFC_PARSE_API IfcLinearStiffnessMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcLinearStiffnessMeasure() {} + explicit IfcLinearStiffnessMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcLinearStiffnessMeasure (IfcEntityInstanceData&& e); - IfcLinearStiffnessMeasure (double v); + // IfcLinearStiffnessMeasure (double v); operator double() const; }; /// IfcLinearVelocityMeasure is a measure of the velocity of a body measured in terms of distance moved per unit time. @@ -8755,12 +12514,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcLinearVelocityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcLinearVelocityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcLinearVelocityMeasure() {} + explicit IfcLinearVelocityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcLinearVelocityMeasure (IfcEntityInstanceData&& e); - IfcLinearVelocityMeasure (double v); + // IfcLinearVelocityMeasure (double v); operator double() const; }; /// IfcLogical& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcLogical (IfcEntityInstanceData&& e); - IfcLogical (boost::logic::tribool v); + // IfcLogical (boost::logic::tribool v); operator boost::logic::tribool() const; }; /// IfcLuminousFluxMeasure is a measure of the luminous flux. @@ -8781,12 +12544,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcLuminousFluxMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcLuminousFluxMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcLuminousFluxMeasure() {} + explicit IfcLuminousFluxMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcLuminousFluxMeasure (IfcEntityInstanceData&& e); - IfcLuminousFluxMeasure (double v); + // IfcLuminousFluxMeasure (double v); operator double() const; }; /// IfcLuminousIntensityDistributionMeasure is a measure of the luminous intensity of a light source that changes according to the direction of the ray. It is normally based on some standardized distribution light distribution curves. @@ -8796,12 +12561,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC2x2. -class IFC_PARSE_API IfcLuminousIntensityDistributionMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcLuminousIntensityDistributionMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcLuminousIntensityDistributionMeasure() {} + explicit IfcLuminousIntensityDistributionMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcLuminousIntensityDistributionMeasure (IfcEntityInstanceData&& e); - IfcLuminousIntensityDistributionMeasure (double v); + // IfcLuminousIntensityDistributionMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: A luminous intensity measure is the value for the brightness of a body. @@ -8811,12 +12578,14 @@ public: /// NOTE Corresponding ISO 10303 name: luminous_intensity_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcLuminousIntensityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcLuminousIntensityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcLuminousIntensityMeasure() {} + explicit IfcLuminousIntensityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcLuminousIntensityMeasure (IfcEntityInstanceData&& e); - IfcLuminousIntensityMeasure (double v); + // IfcLuminousIntensityMeasure (double v); operator double() const; }; /// IfcMagneticFluxDensityMeasure is a measure of the magnetic flux density. @@ -8824,12 +12593,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcMagneticFluxDensityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcMagneticFluxDensityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcMagneticFluxDensityMeasure() {} + explicit IfcMagneticFluxDensityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcMagneticFluxDensityMeasure (IfcEntityInstanceData&& e); - IfcMagneticFluxDensityMeasure (double v); + // IfcMagneticFluxDensityMeasure (double v); operator double() const; }; /// IfcMagneticFluxMeasure is a measure of the magnetic flux. @@ -8837,12 +12608,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcMagneticFluxMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcMagneticFluxMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcMagneticFluxMeasure() {} + explicit IfcMagneticFluxMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcMagneticFluxMeasure (IfcEntityInstanceData&& e); - IfcMagneticFluxMeasure (double v); + // IfcMagneticFluxMeasure (double v); operator double() const; }; /// IfcMassDensityMeasure is a measure of the density of a medium. @@ -8850,12 +12623,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcMassDensityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcMassDensityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcMassDensityMeasure() {} + explicit IfcMassDensityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcMassDensityMeasure (IfcEntityInstanceData&& e); - IfcMassDensityMeasure (double v); + // IfcMassDensityMeasure (double v); operator double() const; }; /// IfcMassFlowRateMeasure is a measure of the mass of a medium flowing per unit time. @@ -8863,12 +12638,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcMassFlowRateMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcMassFlowRateMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcMassFlowRateMeasure() {} + explicit IfcMassFlowRateMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcMassFlowRateMeasure (IfcEntityInstanceData&& e); - IfcMassFlowRateMeasure (double v); + // IfcMassFlowRateMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: A mass measure is the value of the amount of matter that a body contains. @@ -8878,12 +12655,14 @@ public: /// NOTE Corresponding ISO 10303 name: mass_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcMassMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcMassMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcMassMeasure() {} + explicit IfcMassMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcMassMeasure (IfcEntityInstanceData&& e); - IfcMassMeasure (double v); + // IfcMassMeasure (double v); operator double() const; }; /// IfcMassPerLengthMeasure is a measure for mass per length. For example for rolled steel profiles the weight of @@ -8893,12 +12672,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC2x2. -class IFC_PARSE_API IfcMassPerLengthMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcMassPerLengthMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcMassPerLengthMeasure() {} + explicit IfcMassPerLengthMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcMassPerLengthMeasure (IfcEntityInstanceData&& e); - IfcMassPerLengthMeasure (double v); + // IfcMassPerLengthMeasure (double v); operator double() const; }; /// IfcModulusOfElasticityMeasure is a measure of modulus of elasticity. @@ -8906,12 +12687,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcModulusOfElasticityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcModulusOfElasticityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcModulusOfElasticityMeasure() {} + explicit IfcModulusOfElasticityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcModulusOfElasticityMeasure (IfcEntityInstanceData&& e); - IfcModulusOfElasticityMeasure (double v); + // IfcModulusOfElasticityMeasure (double v); operator double() const; }; /// IfcModulusOfLinearSubgradeReactionMeasure is a measure for modulus of linear subgrade reaction, which expresses the elastic bedding of a linear structural element per length, such as for a beam. It is typically measured in N/m^2. @@ -8919,12 +12702,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x2. -class IFC_PARSE_API IfcModulusOfLinearSubgradeReactionMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcModulusOfTranslationalSubgradeReactionSelect, public IfcValue { +class IFC_PARSE_API IfcModulusOfLinearSubgradeReactionMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcModulusOfLinearSubgradeReactionMeasure() {} + explicit IfcModulusOfLinearSubgradeReactionMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcModulusOfLinearSubgradeReactionMeasure (IfcEntityInstanceData&& e); - IfcModulusOfLinearSubgradeReactionMeasure (double v); + // IfcModulusOfLinearSubgradeReactionMeasure (double v); operator double() const; }; /// IfcModulusOfRotationalSubgradeReactionMeasure is a measure for modulus of rotational subgrade reaction, which expresses the rotational elastic bedding of a linear structural element per length, such as for a beam. It is typically measured in Nm/(m*rad). @@ -8932,12 +12717,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC2x2. -class IFC_PARSE_API IfcModulusOfRotationalSubgradeReactionMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcModulusOfRotationalSubgradeReactionSelect, public IfcValue { +class IFC_PARSE_API IfcModulusOfRotationalSubgradeReactionMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcModulusOfRotationalSubgradeReactionMeasure() {} + explicit IfcModulusOfRotationalSubgradeReactionMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcModulusOfRotationalSubgradeReactionMeasure (IfcEntityInstanceData&& e); - IfcModulusOfRotationalSubgradeReactionMeasure (double v); + // IfcModulusOfRotationalSubgradeReactionMeasure (double v); operator double() const; }; /// IfcModulusOfSubgradeReactionMeasure is a geotechnical measure describing interaction between foundation structures and the soil. May also be known as bedding measure. @@ -8949,12 +12736,14 @@ public: /// Figure 290 illustrates elastic support of a planar member. /// /// Figure 290 — Modulus of subgrade reaction measure -class IFC_PARSE_API IfcModulusOfSubgradeReactionMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcModulusOfSubgradeReactionSelect, public IfcValue { +class IFC_PARSE_API IfcModulusOfSubgradeReactionMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcModulusOfSubgradeReactionMeasure() {} + explicit IfcModulusOfSubgradeReactionMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcModulusOfSubgradeReactionMeasure (IfcEntityInstanceData&& e); - IfcModulusOfSubgradeReactionMeasure (double v); + // IfcModulusOfSubgradeReactionMeasure (double v); operator double() const; }; /// IfcMoistureDiffusivityMeasure is a measure of moisture diffusivity. @@ -8962,12 +12751,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcMoistureDiffusivityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcMoistureDiffusivityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcMoistureDiffusivityMeasure() {} + explicit IfcMoistureDiffusivityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcMoistureDiffusivityMeasure (IfcEntityInstanceData&& e); - IfcMoistureDiffusivityMeasure (double v); + // IfcMoistureDiffusivityMeasure (double v); operator double() const; }; /// IfcMolecularWeightMeasure is a measure of molecular weight of material (typically gas). @@ -8975,12 +12766,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcMolecularWeightMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcMolecularWeightMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcMolecularWeightMeasure() {} + explicit IfcMolecularWeightMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcMolecularWeightMeasure (IfcEntityInstanceData&& e); - IfcMolecularWeightMeasure (double v); + // IfcMolecularWeightMeasure (double v); operator double() const; }; /// IfcMomentOfInertiaMeasure is a measure of moment of inertia. @@ -8988,24 +12781,28 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcMomentOfInertiaMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcMomentOfInertiaMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcMomentOfInertiaMeasure() {} + explicit IfcMomentOfInertiaMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcMomentOfInertiaMeasure (IfcEntityInstanceData&& e); - IfcMomentOfInertiaMeasure (double v); + // IfcMomentOfInertiaMeasure (double v); operator double() const; }; /// A monetary measure is the value of an amount of money without regard to its currency. /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcMonetaryMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcMonetaryMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcMonetaryMeasure() {} + explicit IfcMonetaryMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcMonetaryMeasure (IfcEntityInstanceData&& e); - IfcMonetaryMeasure (double v); + // IfcMonetaryMeasure (double v); operator double() const; }; /// Definition from IAI: The IfcDayInMonthNumber is @@ -9064,12 +12861,14 @@ public: /// standard. /// HISTORY New type in IFC /// Release 1.5.1. -class IFC_PARSE_API IfcMonthInYearNumber : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcMonthInYearNumber : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcMonthInYearNumber() {} + explicit IfcMonthInYearNumber (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcMonthInYearNumber (IfcEntityInstanceData&& e); - IfcMonthInYearNumber (int v); + // IfcMonthInYearNumber (int v); operator int() const; }; /// A non-negative length measure is a length measure that is greater than or equal to zero. @@ -9077,12 +12876,14 @@ public: /// Type: IfcLengthMeasure /// /// HISTORY New type in IFC Release 2x4. -class IFC_PARSE_API IfcNonNegativeLengthMeasure : public IfcLengthMeasure { +class IFC_PARSE_API IfcNonNegativeLengthMeasure : public IfcLengthMeasure { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcNonNegativeLengthMeasure() {} + explicit IfcNonNegativeLengthMeasure (const std::weak_ptr& data) : IfcLengthMeasure(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcNonNegativeLengthMeasure (IfcEntityInstanceData&& e); - IfcNonNegativeLengthMeasure (double v); + // IfcNonNegativeLengthMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: A numeric measure is the numeric value of a physical quantity. @@ -9091,23 +12892,27 @@ public: /// NOTE Corresponding ISO 10303 name: numeric_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcNumericMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcNumericMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcNumericMeasure() {} + explicit IfcNumericMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcNumericMeasure (IfcEntityInstanceData&& e); - IfcNumericMeasure (double v); + // IfcNumericMeasure (double v); operator double() const; }; /// IfcPHMeasure is a measure of the molar hydrogen ion concentration in a liquid (usually defined as the measure of acidity) in a range from 0 to 14. /// /// HISTORY: New type in IFC 2x2. -class IFC_PARSE_API IfcPHMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcPHMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcPHMeasure() {} + explicit IfcPHMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcPHMeasure (IfcEntityInstanceData&& e); - IfcPHMeasure (double v); + // IfcPHMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: A parameter value is the value which specifies the amount of a @@ -9117,12 +12922,14 @@ public: /// NOTE Corresponding STEP name: parameter_value, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcParameterValue : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcCurveMeasureSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcTrimmingSelect, public IfcValue { +class IFC_PARSE_API IfcParameterValue : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcParameterValue() {} + explicit IfcParameterValue (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcParameterValue (IfcEntityInstanceData&& e); - IfcParameterValue (double v); + // IfcParameterValue (double v); operator double() const; }; /// IfcPlanarForceMeasure is a measure of force on an area. @@ -9130,12 +12937,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcPlanarForceMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcPlanarForceMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcPlanarForceMeasure() {} + explicit IfcPlanarForceMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcPlanarForceMeasure (IfcEntityInstanceData&& e); - IfcPlanarForceMeasure (double v); + // IfcPlanarForceMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: A plane angle measure is the value of an angle in a plane. @@ -9149,21 +12958,25 @@ public: /// NOTE Corresponding ISO 10303 name: plane_angle_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcPlaneAngleMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcBendingParameterSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcPlaneAngleMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcPlaneAngleMeasure() {} + explicit IfcPlaneAngleMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcPlaneAngleMeasure (IfcEntityInstanceData&& e); - IfcPlaneAngleMeasure (double v); + // IfcPlaneAngleMeasure (double v); operator double() const; }; -class IFC_PARSE_API IfcPositiveInteger : public IfcInteger { +class IFC_PARSE_API IfcPositiveInteger : public IfcInteger { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcPositiveInteger() {} + explicit IfcPositiveInteger (const std::weak_ptr& data) : IfcInteger(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcPositiveInteger (IfcEntityInstanceData&& e); - IfcPositiveInteger (int v); + // IfcPositiveInteger (int v); operator int() const; }; /// Definition from ISO/CD 10303-41:1992: A positive length measure is a length measure that is greater than zero. @@ -9172,12 +12985,14 @@ public: /// NOTE Corresponding ISO 10303 name: positive_length_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcPositiveLengthMeasure : public IfcLengthMeasure, public IfcHatchLineDistanceSelect { +class IFC_PARSE_API IfcPositiveLengthMeasure : public IfcLengthMeasure { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcPositiveLengthMeasure() {} + explicit IfcPositiveLengthMeasure (const std::weak_ptr& data) : IfcLengthMeasure(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcPositiveLengthMeasure (IfcEntityInstanceData&& e); - IfcPositiveLengthMeasure (double v); + // IfcPositiveLengthMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: Positive plane angle measure is a plane angle measure that is greater than zero. @@ -9186,12 +13001,14 @@ public: /// NOTE Corresponding STEP name: positive_plane_angle_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcPositivePlaneAngleMeasure : public IfcPlaneAngleMeasure { +class IFC_PARSE_API IfcPositivePlaneAngleMeasure : public IfcPlaneAngleMeasure { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcPositivePlaneAngleMeasure() {} + explicit IfcPositivePlaneAngleMeasure (const std::weak_ptr& data) : IfcPlaneAngleMeasure(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcPositivePlaneAngleMeasure (IfcEntityInstanceData&& e); - IfcPositivePlaneAngleMeasure (double v); + // IfcPositivePlaneAngleMeasure (double v); operator double() const; }; /// IfcPowerMeasure is a measure of power required or used. @@ -9199,12 +13016,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcPowerMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcPowerMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcPowerMeasure() {} + explicit IfcPowerMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcPowerMeasure (IfcEntityInstanceData&& e); - IfcPowerMeasure (double v); + // IfcPowerMeasure (double v); operator double() const; }; /// IfcPresentableText is a text string used to capture the content of a text literal for the purpose of presentation. The IfcPresentableText can include multiple lines of text, for which the line feed character LF, 0x0A, should be used to separate lines. @@ -9216,12 +13035,14 @@ public: /// NOTE  Corresponding ISO 10303 name: presentable_text. Please refer to ISO/IS 10303-46:1994, p. 133 for the final definition of the formal standard. /// /// HISTORY  New type in IFC2x2. -class IFC_PARSE_API IfcPresentableText : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcPresentableText : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcPresentableText() {} + explicit IfcPresentableText (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcPresentableText (IfcEntityInstanceData&& e); - IfcPresentableText (std::string v); + // IfcPresentableText (std::string v); operator std::string() const; }; /// IfcPressureMeasure is a measure of the quantity of a medium acting on a unit area. @@ -9229,34 +13050,40 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcPressureMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcPressureMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcPressureMeasure() {} + explicit IfcPressureMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcPressureMeasure (IfcEntityInstanceData&& e); - IfcPressureMeasure (double v); + // IfcPressureMeasure (double v); operator double() const; }; -class IFC_PARSE_API IfcPropertySetDefinitionSet : public IfcUtil::IfcBaseType, public IfcPropertySetDefinitionSelect { +class IFC_PARSE_API IfcPropertySetDefinitionSet : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcPropertySetDefinitionSet() {} + explicit IfcPropertySetDefinitionSet (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcPropertySetDefinitionSet (IfcEntityInstanceData&& e); - IfcPropertySetDefinitionSet (aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr v); - operator aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr() const; + // IfcPropertySetDefinitionSet (std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > v); + operator std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition >() const; }; /// IfcRadioActivityMeasure is a measure of activity of radionuclide. /// Usually measured in Becquerel (Bq, 1/s). /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcRadioActivityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcRadioActivityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcRadioActivityMeasure() {} + explicit IfcRadioActivityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcRadioActivityMeasure (IfcEntityInstanceData&& e); - IfcRadioActivityMeasure (double v); + // IfcRadioActivityMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: A ratio measure is the value of the relation between two @@ -9269,12 +13096,14 @@ public: /// NOTE Corresponding STEP name: ratio_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcRatioMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcSizeSelect, public IfcTimeOrRatioSelect, public IfcValue { +class IFC_PARSE_API IfcRatioMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcRatioMeasure() {} + explicit IfcRatioMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcRatioMeasure (IfcEntityInstanceData&& e); - IfcRatioMeasure (double v); + // IfcRatioMeasure (double v); operator double() const; }; /// IfcReal is a defined type of simple data type REAL. It is required since a select type (IfcSimpleValue), cannot directly include simple types in its select list. @@ -9284,12 +13113,14 @@ public: /// Type: REAL /// /// HISTORY: New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcReal : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMetricValueSelect, public IfcSimpleValue, public IfcValue { +class IFC_PARSE_API IfcReal : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcReal() {} + explicit IfcReal (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcReal (IfcEntityInstanceData&& e); - IfcReal (double v); + // IfcReal (double v); operator double() const; }; /// IfcRotationalFrequencyMeasure is a measure of the number of cycles that an item revolves in unit time. @@ -9297,12 +13128,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcRotationalFrequencyMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcRotationalFrequencyMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcRotationalFrequencyMeasure() {} + explicit IfcRotationalFrequencyMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcRotationalFrequencyMeasure (IfcEntityInstanceData&& e); - IfcRotationalFrequencyMeasure (double v); + // IfcRotationalFrequencyMeasure (double v); operator double() const; }; /// The rotational mass measure denotes the inertia of a body with respect to angular acceleration. @@ -9311,12 +13144,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC2x2. -class IFC_PARSE_API IfcRotationalMassMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcRotationalMassMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcRotationalMassMeasure() {} + explicit IfcRotationalMassMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcRotationalMassMeasure (IfcEntityInstanceData&& e); - IfcRotationalMassMeasure (double v); + // IfcRotationalMassMeasure (double v); operator double() const; }; /// IfcRotationalStiffnessMeasure is a measure of rotational stiffness. @@ -9324,12 +13159,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcRotationalStiffnessMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcRotationalStiffnessSelect, public IfcValue { +class IFC_PARSE_API IfcRotationalStiffnessMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcRotationalStiffnessMeasure() {} + explicit IfcRotationalStiffnessMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcRotationalStiffnessMeasure (IfcEntityInstanceData&& e); - IfcRotationalStiffnessMeasure (double v); + // IfcRotationalStiffnessMeasure (double v); operator double() const; }; /// IfcSectionModulusMeasure is a measure for the resistance of a cross section against bending or torsional moment. It is usually measured in m^3. @@ -9337,12 +13174,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x2. -class IFC_PARSE_API IfcSectionModulusMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcSectionModulusMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcSectionModulusMeasure() {} + explicit IfcSectionModulusMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcSectionModulusMeasure (IfcEntityInstanceData&& e); - IfcSectionModulusMeasure (double v); + // IfcSectionModulusMeasure (double v); operator double() const; }; /// The sectional area integral measure is typically used in torsional analysis. It is usually measured in m^5. @@ -9350,12 +13189,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC2x2. -class IFC_PARSE_API IfcSectionalAreaIntegralMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcSectionalAreaIntegralMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcSectionalAreaIntegralMeasure() {} + explicit IfcSectionalAreaIntegralMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcSectionalAreaIntegralMeasure (IfcEntityInstanceData&& e); - IfcSectionalAreaIntegralMeasure (double v); + // IfcSectionalAreaIntegralMeasure (double v); operator double() const; }; /// IfcShearModulusMeasure is a measure of shear modulus. @@ -9363,12 +13204,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcShearModulusMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcShearModulusMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcShearModulusMeasure() {} + explicit IfcShearModulusMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcShearModulusMeasure (IfcEntityInstanceData&& e); - IfcShearModulusMeasure (double v); + // IfcShearModulusMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: A solid angle measure is the value of an angle in a solid. @@ -9378,21 +13221,25 @@ public: /// NOTE Corresponding ISO 10303 name: solid_angle_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcSolidAngleMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcSolidAngleMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcSolidAngleMeasure() {} + explicit IfcSolidAngleMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcSolidAngleMeasure (IfcEntityInstanceData&& e); - IfcSolidAngleMeasure (double v); + // IfcSolidAngleMeasure (double v); operator double() const; }; -class IFC_PARSE_API IfcSoundPowerLevelMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcSoundPowerLevelMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcSoundPowerLevelMeasure() {} + explicit IfcSoundPowerLevelMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcSoundPowerLevelMeasure (IfcEntityInstanceData&& e); - IfcSoundPowerLevelMeasure (double v); + // IfcSoundPowerLevelMeasure (double v); operator double() const; }; /// A sound power measure is a measure of total radiated noise with units of decibels with a reference value of picowatts. @@ -9400,21 +13247,25 @@ public: /// Type: REAL /// /// HISTORY New type in IFC2x2. -class IFC_PARSE_API IfcSoundPowerMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcSoundPowerMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcSoundPowerMeasure() {} + explicit IfcSoundPowerMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcSoundPowerMeasure (IfcEntityInstanceData&& e); - IfcSoundPowerMeasure (double v); + // IfcSoundPowerMeasure (double v); operator double() const; }; -class IFC_PARSE_API IfcSoundPressureLevelMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcSoundPressureLevelMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcSoundPressureLevelMeasure() {} + explicit IfcSoundPressureLevelMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcSoundPressureLevelMeasure (IfcEntityInstanceData&& e); - IfcSoundPressureLevelMeasure (double v); + // IfcSoundPressureLevelMeasure (double v); operator double() const; }; /// A sound pressure measure is a measure of the pressure fluctuations superimposed over the ambient pressure level with units of decibels with a reference value of micropascals. @@ -9422,12 +13273,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC2x2. -class IFC_PARSE_API IfcSoundPressureMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcSoundPressureMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcSoundPressureMeasure() {} + explicit IfcSoundPressureMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcSoundPressureMeasure (IfcEntityInstanceData&& e); - IfcSoundPressureMeasure (double v); + // IfcSoundPressureMeasure (double v); operator double() const; }; /// IfcSpecificHeatCapacityMeasure defines the specific heat of material: The heat energy absorbed per temperature unit. @@ -9435,12 +13288,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcSpecificHeatCapacityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcSpecificHeatCapacityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcSpecificHeatCapacityMeasure() {} + explicit IfcSpecificHeatCapacityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcSpecificHeatCapacityMeasure (IfcEntityInstanceData&& e); - IfcSpecificHeatCapacityMeasure (double v); + // IfcSpecificHeatCapacityMeasure (double v); operator double() const; }; /// The IfcSpecularExponent defines the datatype for exponent determining the sharpness of the 'reflection'. reflection is made sharper with large values of the exponent, such as 10.0. Small values, such as 1.0, decrease the specular fall-off. @@ -9450,12 +13305,14 @@ public: /// NOTE: The datatype relates to the definition of specular_exponent in ISO 10303-46 entity surface_style_reflectance_ambient_diffuse_specular. /// /// HISTORY: New type in IFC2x2. -class IFC_PARSE_API IfcSpecularExponent : public IfcUtil::IfcBaseType, public IfcSpecularHighlightSelect { +class IFC_PARSE_API IfcSpecularExponent : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcSpecularExponent() {} + explicit IfcSpecularExponent (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcSpecularExponent (IfcEntityInstanceData&& e); - IfcSpecularExponent (double v); + // IfcSpecularExponent (double v); operator double() const; }; /// The IfcSpecularRoughness defines the datatype for the reflection resulting from the roughness of a surface through the height of surface impurities where the specular highlight is made sharper with small values for the roughness, such as 0.1. @@ -9467,21 +13324,25 @@ public: /// NOTE: The datatype relates to the definition of "shiness" in VRML97, which is the reciprocate value to the specular roughness. /// /// HISTORY: New type in Release IFC2x2. -class IFC_PARSE_API IfcSpecularRoughness : public IfcUtil::IfcBaseType, public IfcSpecularHighlightSelect { +class IFC_PARSE_API IfcSpecularRoughness : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcSpecularRoughness() {} + explicit IfcSpecularRoughness (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcSpecularRoughness (IfcEntityInstanceData&& e); - IfcSpecularRoughness (double v); + // IfcSpecularRoughness (double v); operator double() const; }; -class IFC_PARSE_API IfcStrippedOptional : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcStrippedOptional : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcStrippedOptional() {} + explicit IfcStrippedOptional (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcStrippedOptional (IfcEntityInstanceData&& e); - IfcStrippedOptional (bool v); + // IfcStrippedOptional (bool v); operator bool() const; }; /// The temperature gradient measures the difference of a temperature per lenght, as for instance used in an external wall or its layers. It is usually measured in K/m. @@ -9489,12 +13350,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC2x2. -class IFC_PARSE_API IfcTemperatureGradientMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcTemperatureGradientMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcTemperatureGradientMeasure() {} + explicit IfcTemperatureGradientMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcTemperatureGradientMeasure (IfcEntityInstanceData&& e); - IfcTemperatureGradientMeasure (double v); + // IfcTemperatureGradientMeasure (double v); operator double() const; }; /// The temperature rate of change measures the difference of a temperature per time (positive: rise, negative: fall), as for instance used with heat sensors. It is for example measured in K/s (Kelvin per second). @@ -9502,12 +13365,14 @@ public: /// Type: REAL /// /// HISTORY  New type in IFC2x4. -class IFC_PARSE_API IfcTemperatureRateOfChangeMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcTemperatureRateOfChangeMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcTemperatureRateOfChangeMeasure() {} + explicit IfcTemperatureRateOfChangeMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcTemperatureRateOfChangeMeasure (IfcEntityInstanceData&& e); - IfcTemperatureRateOfChangeMeasure (double v); + // IfcTemperatureRateOfChangeMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: A text is an alphanumeric string of characters which is intended to be read and understood by a human being. It is for information purposes only. @@ -9521,12 +13386,14 @@ public: /// Per ISO 10303-11, the set of characters that may appear in STRINGs is defined in ISO 10646. The encoding of characters in case of file-based exchange is defined in ISO 10303-21 (STEP physical files) and ISO 10303-28 (XML files). Among else, these specifications define the encoding of 8-bit characters from ISO 8859-1...-16 and of 2-byte Unicode characters. /// /// Note that while IfcText is not formally restricted in length, the size of a string in ISO 10303-21:2002 conforming exchange files must not exceed 32767 octets after encoding and escaping. -class IFC_PARSE_API IfcText : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMetricValueSelect, public IfcSimpleValue, public IfcValue { +class IFC_PARSE_API IfcText : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcText() {} + explicit IfcText (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcText (IfcEntityInstanceData&& e); - IfcText (std::string v); + // IfcText (std::string v); operator std::string() const; }; /// Definition from CSS1 (W3C Recommendation): This property describes how text is aligned within the element. The actual justification algorithm used is user agent and human language dependent. If 'justify' is not supported, the user agent will supply a replacement. Typically, this will be 'left' for western languages. Values are: @@ -9539,12 +13406,14 @@ public: /// NOTE  Corresponding CSS1 definition is text-align. /// /// HISTORY  New type in IFC2x3. -class IFC_PARSE_API IfcTextAlignment : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcTextAlignment : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcTextAlignment() {} + explicit IfcTextAlignment (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcTextAlignment (IfcEntityInstanceData&& e); - IfcTextAlignment (std::string v); + // IfcTextAlignment (std::string v); operator std::string() const; }; /// Definition from CSS1 (W3C Recommendation): This property describes decorations that are added to the text of an element. A value of 'blink' causes the text to blink.. Values are: @@ -9560,12 +13429,14 @@ public: /// NOTE  Corresponding CSS1 definition is text-decoration. /// /// HISTORY  New type in IFC2x3. -class IFC_PARSE_API IfcTextDecoration : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcTextDecoration : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcTextDecoration() {} + explicit IfcTextDecoration (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcTextDecoration (IfcEntityInstanceData&& e); - IfcTextDecoration (std::string v); + // IfcTextDecoration (std::string v); operator std::string() const; }; /// Definition from CSS1 (W3C Recommendation): The value is a font family name and/or generic family name. Values are: @@ -9587,12 +13458,14 @@ public: /// HISTORY  New type in IFC2x2 Addendum 2. /// /// IFC2x2 Addendum 2 CHANGE: The IfcFontFamily has been added. -class IFC_PARSE_API IfcTextFontName : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcTextFontName : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcTextFontName() {} + explicit IfcTextFontName (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcTextFontName (IfcEntityInstanceData&& e); - IfcTextFontName (std::string v); + // IfcTextFontName (std::string v); operator std::string() const; }; /// Definition from CSS1 (W3C Recommendation): This property describes how the cases of characters are handled. Values are: @@ -9605,12 +13478,14 @@ public: /// NOTE  Corresponding CSS1 definition is text-transform. /// /// HISTORY  New type in IFC2x3. -class IFC_PARSE_API IfcTextTransformation : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcTextTransformation : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcTextTransformation() {} + explicit IfcTextTransformation (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcTextTransformation (IfcEntityInstanceData&& e); - IfcTextTransformation (std::string v); + // IfcTextTransformation (std::string v); operator std::string() const; }; /// IfcThermalAdmittanceMeasure is the measure of the ability of a surface to smooth out temperature variations. @@ -9618,12 +13493,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcThermalAdmittanceMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcThermalAdmittanceMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcThermalAdmittanceMeasure() {} + explicit IfcThermalAdmittanceMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcThermalAdmittanceMeasure (IfcEntityInstanceData&& e); - IfcThermalAdmittanceMeasure (double v); + // IfcThermalAdmittanceMeasure (double v); operator double() const; }; /// IfcThermalConductivityMeasure is a measure of thermal conductivity. @@ -9631,36 +13508,42 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcThermalConductivityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcThermalConductivityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcThermalConductivityMeasure() {} + explicit IfcThermalConductivityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcThermalConductivityMeasure (IfcEntityInstanceData&& e); - IfcThermalConductivityMeasure (double v); + // IfcThermalConductivityMeasure (double v); operator double() const; }; /// IfcThermalExpansionCoeffientMeasure is a measure of the thermal expansion coefficient of a material, which expresses its elongation (as a ratio) per temperature difference. It is usually measured in 1/K. A positive elongation per (positive) rise of temperature is expressed by a positive value. /// Type: REAL /// /// HISTORY New type in IFC2x2. -class IFC_PARSE_API IfcThermalExpansionCoefficientMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcThermalExpansionCoefficientMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcThermalExpansionCoefficientMeasure() {} + explicit IfcThermalExpansionCoefficientMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcThermalExpansionCoefficientMeasure (IfcEntityInstanceData&& e); - IfcThermalExpansionCoefficientMeasure (double v); + // IfcThermalExpansionCoefficientMeasure (double v); operator double() const; }; /// IfcThermalResistanceMeasure is a measure of the resistance offered by a body to the flow of energy. /// Usually measured in m2 Kelvin/Watt. /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcThermalResistanceMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcThermalResistanceMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcThermalResistanceMeasure() {} + explicit IfcThermalResistanceMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcThermalResistanceMeasure (IfcEntityInstanceData&& e); - IfcThermalResistanceMeasure (double v); + // IfcThermalResistanceMeasure (double v); operator double() const; }; /// IfcThermalTransmittanceMeasure is a measure of the rate at which energy is transmitted through a body. @@ -9668,12 +13551,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcThermalTransmittanceMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcThermalTransmittanceMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcThermalTransmittanceMeasure() {} + explicit IfcThermalTransmittanceMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcThermalTransmittanceMeasure (IfcEntityInstanceData&& e); - IfcThermalTransmittanceMeasure (double v); + // IfcThermalTransmittanceMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: A thermodynamic temperature measure is the value for the degree of heat of a body. @@ -9683,12 +13568,14 @@ public: /// NOTE Corresponding ISO 10303 name: thermodynamic_temperature_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcThermodynamicTemperatureMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcThermodynamicTemperatureMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcThermodynamicTemperatureMeasure() {} + explicit IfcThermodynamicTemperatureMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcThermodynamicTemperatureMeasure (IfcEntityInstanceData&& e); - IfcThermodynamicTemperatureMeasure (double v); + // IfcThermodynamicTemperatureMeasure (double v); operator double() const; }; /// The lexical representation for time is the left truncated @@ -9699,12 +13586,14 @@ public: /// 13:20:00-05:00. /// /// HISTORY: New type in IFC2x4 -class IFC_PARSE_API IfcTime : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMetricValueSelect, public IfcSimpleValue, public IfcValue { +class IFC_PARSE_API IfcTime : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcTime() {} + explicit IfcTime (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcTime (IfcEntityInstanceData&& e); - IfcTime (std::string v); + // IfcTime (std::string v); operator std::string() const; }; /// Definition from ISO/CD 10303-41:1992: A time measure is the value of the duration of periods. @@ -9714,24 +13603,28 @@ public: /// NOTE Corresponding ISO 10303 name: time_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcTimeMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcTimeMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcTimeMeasure() {} + explicit IfcTimeMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcTimeMeasure (IfcEntityInstanceData&& e); - IfcTimeMeasure (double v); + // IfcTimeMeasure (double v); operator double() const; }; /// IfcTimeStamp is an indication of date and time by measuring the number of seconds which have elapsed since the beginning of the year 1970. /// Type: INTEGER /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcTimeStamp : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMetricValueSelect, public IfcSimpleValue, public IfcValue { +class IFC_PARSE_API IfcTimeStamp : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcTimeStamp() {} + explicit IfcTimeStamp (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcTimeStamp (IfcEntityInstanceData&& e); - IfcTimeStamp (int v); + // IfcTimeStamp (int v); operator int() const; }; /// IfcTorqueMeasure is a measure of the torque or moment of a couple. @@ -9739,12 +13632,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcTorqueMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcTorqueMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcTorqueMeasure() {} + explicit IfcTorqueMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcTorqueMeasure (IfcEntityInstanceData&& e); - IfcTorqueMeasure (double v); + // IfcTorqueMeasure (double v); operator double() const; }; /// IfcURIReference provides for identifying a Uniform Resource Identifier, URI, as defined by the RFC3986 of the Network Working Group. A URI can be classified as a locator or a name or both, that is it may comprise a Uniform Resource Locator (URL) and/or a Uniform Resource Name (URN). @@ -9754,12 +13649,14 @@ public: /// designed to make it easy to map other namespaces (that share the properties of URNs) into URN-space. /// /// HISTORY New defined datatype in IFC 2x4. -class IFC_PARSE_API IfcURIReference : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMetricValueSelect, public IfcSimpleValue, public IfcValue { +class IFC_PARSE_API IfcURIReference : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcURIReference() {} + explicit IfcURIReference (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcURIReference (IfcEntityInstanceData&& e); - IfcURIReference (std::string v); + // IfcURIReference (std::string v); operator std::string() const; }; /// IfcVaporPermeabilityMeasure is a measure of vapor permeability. @@ -9767,12 +13664,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcVaporPermeabilityMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcVaporPermeabilityMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcVaporPermeabilityMeasure() {} + explicit IfcVaporPermeabilityMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcVaporPermeabilityMeasure (IfcEntityInstanceData&& e); - IfcVaporPermeabilityMeasure (double v); + // IfcVaporPermeabilityMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: A volume measure is the value of the solid content of a body. @@ -9782,12 +13681,14 @@ public: /// NOTE Corresponding ISO 10303 name: volume_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcVolumeMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcVolumeMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcVolumeMeasure() {} + explicit IfcVolumeMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcVolumeMeasure (IfcEntityInstanceData&& e); - IfcVolumeMeasure (double v); + // IfcVolumeMeasure (double v); operator double() const; }; /// IfcVolumetricFlowRateMeasure is a measure of the volume of a medium flowing per unit time. @@ -9795,12 +13696,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2.0. -class IFC_PARSE_API IfcVolumetricFlowRateMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcVolumetricFlowRateMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcVolumetricFlowRateMeasure() {} + explicit IfcVolumetricFlowRateMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcVolumetricFlowRateMeasure (IfcEntityInstanceData&& e); - IfcVolumetricFlowRateMeasure (double v); + // IfcVolumetricFlowRateMeasure (double v); operator double() const; }; /// IfcWarpingConstantMeasure is a measure for the warping constant or warping resistance of a cross section under torsional loading. It is usually measured in m^6. @@ -9808,12 +13711,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC2x2. -class IFC_PARSE_API IfcWarpingConstantMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue { +class IFC_PARSE_API IfcWarpingConstantMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcWarpingConstantMeasure() {} + explicit IfcWarpingConstantMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcWarpingConstantMeasure (IfcEntityInstanceData&& e); - IfcWarpingConstantMeasure (double v); + // IfcWarpingConstantMeasure (double v); operator double() const; }; /// The warping moment measure is a measure for the warping moment, which occurs in warping torsional analysis. It is usually measured in kN*m^2. @@ -9821,21 +13726,25 @@ public: /// Type: REAL /// /// HISTORY New type in IFC2x2. -class IFC_PARSE_API IfcWarpingMomentMeasure : public IfcUtil::IfcBaseType, public IfcAppliedValueSelect, public IfcDerivedMeasureValue, public IfcMetricValueSelect, public IfcValue, public IfcWarpingStiffnessSelect { +class IFC_PARSE_API IfcWarpingMomentMeasure : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcWarpingMomentMeasure() {} + explicit IfcWarpingMomentMeasure (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcWarpingMomentMeasure (IfcEntityInstanceData&& e); - IfcWarpingMomentMeasure (double v); + // IfcWarpingMomentMeasure (double v); operator double() const; }; -class IFC_PARSE_API IfcWellKnownTextLiteral : public IfcUtil::IfcBaseType { +class IFC_PARSE_API IfcWellKnownTextLiteral : public express::DeclaredType { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcWellKnownTextLiteral() {} + explicit IfcWellKnownTextLiteral (const std::weak_ptr& data) : express::DeclaredType(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcWellKnownTextLiteral (IfcEntityInstanceData&& e); - IfcWellKnownTextLiteral (std::string v); + // IfcWellKnownTextLiteral (std::string v); operator std::string() const; }; /// The box alignment specifies the alignment of the text box relative to its position. The following string values shall be used: @@ -9863,12 +13772,14 @@ public: /// HISTORY  New type in IFC2x2 Addendum2. /// /// IFC2x3 CHANGE  The IfcBoxAlignment has been added. -class IFC_PARSE_API IfcBoxAlignment : public IfcLabel { +class IFC_PARSE_API IfcBoxAlignment : public IfcLabel { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcBoxAlignment() {} + explicit IfcBoxAlignment (const std::weak_ptr& data) : IfcLabel(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcBoxAlignment (IfcEntityInstanceData&& e); - IfcBoxAlignment (std::string v); + // IfcBoxAlignment (std::string v); operator std::string() const; }; /// IfcNormalisedRatioMeasure is a dimensionless measure to express ratio values ranging from 0.0 to 1.0. @@ -9876,12 +13787,14 @@ public: /// Type: REAL /// /// HISTORY New type in IFC Release 2x. -class IFC_PARSE_API IfcNormalisedRatioMeasure : public IfcRatioMeasure, public IfcColourOrFactor { +class IFC_PARSE_API IfcNormalisedRatioMeasure : public IfcRatioMeasure { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcNormalisedRatioMeasure() {} + explicit IfcNormalisedRatioMeasure (const std::weak_ptr& data) : IfcRatioMeasure(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcNormalisedRatioMeasure (IfcEntityInstanceData&& e); - IfcNormalisedRatioMeasure (double v); + // IfcNormalisedRatioMeasure (double v); operator double() const; }; /// Definition from ISO/CD 10303-41:1992: A positive ratio measure is a ratio measure that is greater than zero. @@ -9890,12 +13803,14 @@ public: /// NOTE Corresponding ISO 10303 name: positive_ratio_measure, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcPositiveRatioMeasure : public IfcRatioMeasure { +class IFC_PARSE_API IfcPositiveRatioMeasure : public IfcRatioMeasure { public: - virtual const IfcParse::type_declaration& declaration() const; + IfcPositiveRatioMeasure() {} + explicit IfcPositiveRatioMeasure (const std::weak_ptr& data) : IfcRatioMeasure(data) {} + + // virtual const IfcParse::type_declaration& declaration() const; static const IfcParse::type_declaration& Class(); - explicit IfcPositiveRatioMeasure (IfcEntityInstanceData&& e); - IfcPositiveRatioMeasure (double v); + // IfcPositiveRatioMeasure (double v); operator double() const; }; @@ -9910,113 +13825,118 @@ public: /// Corresponds to the following entity in ISO-10303-41: organization_role and person_role. /// /// HISTORY New entity in IFC Release 1.5.1 -class IFC_PARSE_API IfcActorRole : public IfcUtil::IfcBaseEntity, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcActorRole : public express::Entity { public: + IfcActorRole() {} + explicit IfcActorRole (const std::weak_ptr& data) : express::Entity(data) {} + /// The name of the role played by an actor. If the Role has value USERDEFINED, then /// the user defined role shall be provided as a value of the attribute UserDefinedRole. ::Ifc4x3_add2::IfcRoleEnum::Value Role() const; - void setRole(::Ifc4x3_add2::IfcRoleEnum::Value v); + void setRole(const ::Ifc4x3_add2::IfcRoleEnum::Value& v); /// Allows for specification of user defined roles beyond the /// enumeration values provided by Role attribute of type IfcRoleEnum. /// When a value is provided for attribute UserDefinedRole in parallel /// the attribute Role shall have enumeration value USERDEFINED. - boost::optional< std::string > UserDefinedRole() const; - void setUserDefinedRole(boost::optional< std::string > v); + std::optional< std::string > UserDefinedRole() const; + void setUserDefinedRole(const std::optional< std::string >& v); /// A textual description relating the nature of the role played by an actor. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); - aggregate_of< IfcExternalReferenceRelationship >::ptr HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); + std::vector< IfcExternalReferenceRelationship > HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcActorRole (IfcEntityInstanceData&& e); - IfcActorRole (::Ifc4x3_add2::IfcRoleEnum::Value v1_Role, boost::optional< std::string > v2_UserDefinedRole, boost::optional< std::string > v3_Description); - typedef aggregate_of< IfcActorRole > list; + // IfcActorRole (::Ifc4x3_add2::IfcRoleEnum::Value v1_Role, std::optional< std::string > v2_UserDefinedRole, std::optional< std::string > v3_Description); }; /// Definition: An abstract entity type for various kinds of postal and telecom addresses. /// /// NOTE Corresponds to the following entity in ISO-10303-41: address. /// /// HISTORY New entity in IFC Release 1.5.1. -class IFC_PARSE_API IfcAddress : public IfcUtil::IfcBaseEntity, public IfcObjectReferenceSelect { +class IFC_PARSE_API IfcAddress : public express::Entity { public: + IfcAddress() {} + explicit IfcAddress (const std::weak_ptr& data) : express::Entity(data) {} + /// Identifies the logical location of the address. - boost::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > Purpose() const; - void setPurpose(boost::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > Purpose() const; + void setPurpose(const std::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value >& v); /// Text that relates the nature of the address. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// Allows for specification of user specific purpose of the address beyond the /// enumeration values provided by Purpose attribute of type IfcAddressTypeEnum. /// When a value is provided for attribute UserDefinedPurpose, in parallel the /// attribute Purpose shall have enumeration value USERDEFINED. - boost::optional< std::string > UserDefinedPurpose() const; - void setUserDefinedPurpose(boost::optional< std::string > v); - aggregate_of< IfcPerson >::ptr OfPerson() const; // INVERSE IfcPerson::Addresses - aggregate_of< IfcOrganization >::ptr OfOrganization() const; // INVERSE IfcOrganization::Addresses - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > UserDefinedPurpose() const; + void setUserDefinedPurpose(const std::optional< std::string >& v); + std::vector< IfcPerson > OfPerson() const; // INVERSE IfcPerson::Addresses + std::vector< IfcOrganization > OfOrganization() const; // INVERSE IfcOrganization::Addresses + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAddress (IfcEntityInstanceData&& e); - IfcAddress (boost::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose); - typedef aggregate_of< IfcAddress > list; + // IfcAddress (std::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > v1_Purpose, std::optional< std::string > v2_Description, std::optional< std::string > v3_UserDefinedPurpose); }; -class IFC_PARSE_API IfcAlignmentParameterSegment : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcAlignmentParameterSegment : public express::Entity { public: - boost::optional< std::string > StartTag() const; - void setStartTag(boost::optional< std::string > v); - boost::optional< std::string > EndTag() const; - void setEndTag(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + IfcAlignmentParameterSegment() {} + explicit IfcAlignmentParameterSegment (const std::weak_ptr& data) : express::Entity(data) {} + + std::optional< std::string > StartTag() const; + void setStartTag(const std::optional< std::string >& v); + std::optional< std::string > EndTag() const; + void setEndTag(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAlignmentParameterSegment (IfcEntityInstanceData&& e); - IfcAlignmentParameterSegment (boost::optional< std::string > v1_StartTag, boost::optional< std::string > v2_EndTag); - typedef aggregate_of< IfcAlignmentParameterSegment > list; + // IfcAlignmentParameterSegment (std::optional< std::string > v1_StartTag, std::optional< std::string > v2_EndTag); }; -class IFC_PARSE_API IfcAlignmentVerticalSegment : public IfcAlignmentParameterSegment { +class IFC_PARSE_API IfcAlignmentVerticalSegment : public IfcAlignmentParameterSegment { public: + IfcAlignmentVerticalSegment() {} + explicit IfcAlignmentVerticalSegment (const std::weak_ptr& data) : IfcAlignmentParameterSegment(data) {} + double StartDistAlong() const; - void setStartDistAlong(double v); + void setStartDistAlong(const double& v); double HorizontalLength() const; - void setHorizontalLength(double v); + void setHorizontalLength(const double& v); double StartHeight() const; - void setStartHeight(double v); + void setStartHeight(const double& v); double StartGradient() const; - void setStartGradient(double v); + void setStartGradient(const double& v); double EndGradient() const; - void setEndGradient(double v); - boost::optional< double > RadiusOfCurvature() const; - void setRadiusOfCurvature(boost::optional< double > v); + void setEndGradient(const double& v); + std::optional< double > RadiusOfCurvature() const; + void setRadiusOfCurvature(const std::optional< double >& v); ::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAlignmentVerticalSegment (IfcEntityInstanceData&& e); - IfcAlignmentVerticalSegment (boost::optional< std::string > v1_StartTag, boost::optional< std::string > v2_EndTag, double v3_StartDistAlong, double v4_HorizontalLength, double v5_StartHeight, double v6_StartGradient, double v7_EndGradient, boost::optional< double > v8_RadiusOfCurvature, ::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Value v9_PredefinedType); - typedef aggregate_of< IfcAlignmentVerticalSegment > list; + // IfcAlignmentVerticalSegment (std::optional< std::string > v1_StartTag, std::optional< std::string > v2_EndTag, double v3_StartDistAlong, double v4_HorizontalLength, double v5_StartHeight, double v6_StartGradient, double v7_EndGradient, std::optional< double > v8_RadiusOfCurvature, ::Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::Value v9_PredefinedType); }; /// IfcApplication holds the information about an IFC compliant application developed by an application developer. The IfcApplication utilizes a short identifying name as provided by the application developer. /// /// HISTORY  New entity in IFC R1.5. -class IFC_PARSE_API IfcApplication : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcApplication : public express::Entity { public: + IfcApplication() {} + explicit IfcApplication (const std::weak_ptr& data) : express::Entity(data) {} + /// Name of the application developer, being requested to be member of the IAI. - ::Ifc4x3_add2::IfcOrganization* ApplicationDeveloper() const; - void setApplicationDeveloper(::Ifc4x3_add2::IfcOrganization* v); + ::Ifc4x3_add2::IfcOrganization ApplicationDeveloper() const; + void setApplicationDeveloper(const ::Ifc4x3_add2::IfcOrganization& v); /// The version number of this software as specified by the developer of the application. std::string Version() const; - void setVersion(std::string v); + void setVersion(const std::string& v); /// The full name of the application as specified by the application developer. std::string ApplicationFullName() const; - void setApplicationFullName(std::string v); + void setApplicationFullName(const std::string& v); /// Short identifying name for the application. std::string ApplicationIdentifier() const; - void setApplicationIdentifier(std::string v); - virtual const IfcParse::entity& declaration() const; + void setApplicationIdentifier(const std::string& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcApplication (IfcEntityInstanceData&& e); - IfcApplication (::Ifc4x3_add2::IfcOrganization* v1_ApplicationDeveloper, std::string v2_Version, std::string v3_ApplicationFullName, std::string v4_ApplicationIdentifier); - typedef aggregate_of< IfcApplication > list; + // IfcApplication (::Ifc4x3_add2::IfcOrganization v1_ApplicationDeveloper, std::string v2_Version, std::string v3_ApplicationFullName, std::string v4_ApplicationIdentifier); }; /// IfcAppliedValue is an abstract supertype that specifies the common attributes for cost values. /// @@ -10032,99 +13952,101 @@ public: /// An instance of IfcAppliedValue may have a unit basis asserted. This is defined as an IfcMeasureWithUnit that determines the extent of the unit value for application purposes. It is assumed that when this attribute is asserted, then the value given to IfcAppliedValue is that for unit quantity. This is not enforced within the IFC schema and thus needs to be controlled within an application. /// /// Applied values may be referenced from a document (such as a price list). The relationship between one or more occurrences of IfcAppliedValue (or its subtypes) is achieved through the use of the IfcExternalReferenceRelationship in which the document provides the IfcExternalReferenceRelationship.RelatingExtReference and the value occurrences are the IfcExternalReferenceRelationship.RelatedResourceObjects. -class IFC_PARSE_API IfcAppliedValue : public IfcUtil::IfcBaseEntity, public IfcMetricValueSelect, public IfcObjectReferenceSelect, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcAppliedValue : public express::Entity { public: + IfcAppliedValue() {} + explicit IfcAppliedValue (const std::weak_ptr& data) : express::Entity(data) {} + /// A name or additional clarification given to a cost value. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// The description that may apply additional information about a cost value. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// The extent or quantity or amount of an applied value. - ::Ifc4x3_add2::IfcAppliedValueSelect* AppliedValue() const; - void setAppliedValue(::Ifc4x3_add2::IfcAppliedValueSelect* v); + ::Ifc4x3_add2::IfcAppliedValueSelect AppliedValue() const; + void setAppliedValue(const ::Ifc4x3_add2::IfcAppliedValueSelect& v); /// The number and unit of measure on which the unit cost is based. /// /// Note: As well as the normally expected units of measure such as length, area, volume etc., costs may be based on units of measure which need to be defined e.g. sack, drum, pallet, item etc. Unit costs may be based on quantities greater (or lesser) than a unitary value of the basis measure. For instance, timber may have a unit cost rate per X meters where X > 1; similarly for cable, piping and many other items. The basis number may be either an integer or a real value. /// /// Note: This attribute should be asserted for all circumstances where the cost to be applied is per unit quantity. It may be asserted even for circumstances where an item price is used, in which case the unit cost basis should be by item (or equivalent definition). - ::Ifc4x3_add2::IfcMeasureWithUnit* UnitBasis() const; - void setUnitBasis(::Ifc4x3_add2::IfcMeasureWithUnit* v); + ::Ifc4x3_add2::IfcMeasureWithUnit UnitBasis() const; + void setUnitBasis(const ::Ifc4x3_add2::IfcMeasureWithUnit& v); /// The date on or from which an applied value is applicable. /// /// IFC2x4 CHANGE Type changed from IfcDateTimeSelect. - boost::optional< std::string > ApplicableDate() const; - void setApplicableDate(boost::optional< std::string > v); + std::optional< std::string > ApplicableDate() const; + void setApplicableDate(const std::optional< std::string >& v); /// The date until which applied value is applicable. /// /// IFC2x4 CHANGE Type changed from IfcDateTimeSelect. - boost::optional< std::string > FixedUntilDate() const; - void setFixedUntilDate(boost::optional< std::string > v); - boost::optional< std::string > Category() const; - void setCategory(boost::optional< std::string > v); - boost::optional< std::string > Condition() const; - void setCondition(boost::optional< std::string > v); - boost::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value > ArithmeticOperator() const; - void setArithmeticOperator(boost::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value > v); - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > Components() const; - void setComponents(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v); - aggregate_of< IfcExternalReferenceRelationship >::ptr HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > FixedUntilDate() const; + void setFixedUntilDate(const std::optional< std::string >& v); + std::optional< std::string > Category() const; + void setCategory(const std::optional< std::string >& v); + std::optional< std::string > Condition() const; + void setCondition(const std::optional< std::string >& v); + std::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value > ArithmeticOperator() const; + void setArithmeticOperator(const std::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value >& v); + std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > Components() const; + void setComponents(const std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > >& v); + std::vector< IfcExternalReferenceRelationship > HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects + // 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, ::Ifc4x3_add2::IfcAppliedValueSelect* v3_AppliedValue, ::Ifc4x3_add2::IfcMeasureWithUnit* v4_UnitBasis, boost::optional< std::string > v5_ApplicableDate, boost::optional< std::string > v6_FixedUntilDate, boost::optional< std::string > v7_Category, boost::optional< std::string > v8_Condition, boost::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value > v9_ArithmeticOperator, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_Components); - typedef aggregate_of< IfcAppliedValue > list; + // IfcAppliedValue (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcAppliedValueSelect v3_AppliedValue, ::Ifc4x3_add2::IfcMeasureWithUnit v4_UnitBasis, std::optional< std::string > v5_ApplicableDate, std::optional< std::string > v6_FixedUntilDate, std::optional< std::string > v7_Category, std::optional< std::string > v8_Condition, std::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value > v9_ArithmeticOperator, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_Components); }; /// Definition: An IfcApproval represents information about approval processes such as for a plan, a design, a proposal, or a change order in a construction or facilities management project. IfcApproval is referenced by IfcRelAssociatesApproval in IfcControlExtension schema, and thereby can be related to all subtypes of IfcRoot. An approval may also be given to resource objects using IfcResourceApprovalRelationship /// /// HISTORY New Entity in IFC Release 2.0 /// /// IFC2x Edition 4 CHANGE  Attributes Identifier and Name made optional, where rule added to require at least one of them being asserted. Inverse attributes ApprovedObjects, ApprovedResources and HasExternalReferences added. Inverse attribute Properties deleted (more general relationship via inverse ApprovedResources to be used instead). -class IFC_PARSE_API IfcApproval : public IfcUtil::IfcBaseEntity, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcApproval : public express::Entity { public: + IfcApproval() {} + explicit IfcApproval (const std::weak_ptr& data) : express::Entity(data) {} + /// A computer interpretable identifier by which the approval is known. - boost::optional< std::string > Identifier() const; - void setIdentifier(boost::optional< std::string > v); + std::optional< std::string > Identifier() const; + void setIdentifier(const std::optional< std::string >& v); /// A human readable name given to an approval. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// A general textual description of a design, work task, plan, etc. that is being approved for. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// Date and time when the result of the approval process is produced. /// /// IFC2x4 CHANGE  Attribute data type changed to IfcDateTime using ISO 8601 representation, renamed from ApprovalDateTime and made OPTIONAL. - boost::optional< std::string > TimeOfApproval() const; - void setTimeOfApproval(boost::optional< std::string > v); + std::optional< std::string > TimeOfApproval() const; + void setTimeOfApproval(const std::optional< std::string >& v); /// The result or current status of the approval, e.g. Requested, Processed, Approved, Not Approved. - boost::optional< std::string > Status() const; - void setStatus(boost::optional< std::string > v); + std::optional< std::string > Status() const; + void setStatus(const std::optional< std::string >& v); /// Level of the approval e.g. Draft v.s. Completed design. - boost::optional< std::string > Level() const; - void setLevel(boost::optional< std::string > v); + std::optional< std::string > Level() const; + void setLevel(const std::optional< std::string >& v); /// Textual description of special constraints or conditions for the approval. - boost::optional< std::string > Qualifier() const; - void setQualifier(boost::optional< std::string > v); + std::optional< std::string > Qualifier() const; + void setQualifier(const std::optional< std::string >& v); /// The actor that is acting in the role specified at IfcOrganization or individually at IfcPerson and requesting an approval. /// /// IFC2x4 CHANGE  New attribute for approval request replacing IfcApprovalActorRelationship (being deleted). - ::Ifc4x3_add2::IfcActorSelect* RequestingApproval() const; - void setRequestingApproval(::Ifc4x3_add2::IfcActorSelect* v); + ::Ifc4x3_add2::IfcActorSelect RequestingApproval() const; + void setRequestingApproval(const ::Ifc4x3_add2::IfcActorSelect& v); /// The actor that is acting in the role specified at IfcOrganization or individually at IfcPerson and giving an approval. /// /// IFC2x4 CHANGE  New attribute for approval provision replacing IfcApprovalActorRelationship (being deleted). - ::Ifc4x3_add2::IfcActorSelect* GivingApproval() const; - void setGivingApproval(::Ifc4x3_add2::IfcActorSelect* v); - aggregate_of< IfcExternalReferenceRelationship >::ptr HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects - aggregate_of< IfcRelAssociatesApproval >::ptr ApprovedObjects() const; // INVERSE IfcRelAssociatesApproval::RelatingApproval - aggregate_of< IfcResourceApprovalRelationship >::ptr ApprovedResources() const; // INVERSE IfcResourceApprovalRelationship::RelatingApproval - aggregate_of< IfcApprovalRelationship >::ptr IsRelatedWith() const; // INVERSE IfcApprovalRelationship::RelatedApprovals - aggregate_of< IfcApprovalRelationship >::ptr Relates() const; // INVERSE IfcApprovalRelationship::RelatingApproval - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcActorSelect GivingApproval() const; + void setGivingApproval(const ::Ifc4x3_add2::IfcActorSelect& v); + std::vector< IfcExternalReferenceRelationship > HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects + std::vector< IfcRelAssociatesApproval > ApprovedObjects() const; // INVERSE IfcRelAssociatesApproval::RelatingApproval + std::vector< IfcResourceApprovalRelationship > ApprovedResources() const; // INVERSE IfcResourceApprovalRelationship::RelatingApproval + std::vector< IfcApprovalRelationship > IsRelatedWith() const; // INVERSE IfcApprovalRelationship::RelatedApprovals + std::vector< IfcApprovalRelationship > 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_Identifier, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, boost::optional< std::string > v4_TimeOfApproval, boost::optional< std::string > v5_Status, boost::optional< std::string > v6_Level, boost::optional< std::string > v7_Qualifier, ::Ifc4x3_add2::IfcActorSelect* v8_RequestingApproval, ::Ifc4x3_add2::IfcActorSelect* v9_GivingApproval); - typedef aggregate_of< IfcApproval > list; + // IfcApproval (std::optional< std::string > v1_Identifier, std::optional< std::string > v2_Name, std::optional< std::string > v3_Description, std::optional< std::string > v4_TimeOfApproval, std::optional< std::string > v5_Status, std::optional< std::string > v6_Level, std::optional< std::string > v7_Qualifier, ::Ifc4x3_add2::IfcActorSelect v8_RequestingApproval, ::Ifc4x3_add2::IfcActorSelect v9_GivingApproval); }; /// Definition /// from IAI: The abstract entity IfcBoundaryCondition @@ -10141,16 +14063,17 @@ public: /// HISTORY: New entity /// in Release IFC2x Edition /// 2. -class IFC_PARSE_API IfcBoundaryCondition : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcBoundaryCondition : public express::Entity { public: + IfcBoundaryCondition() {} + explicit IfcBoundaryCondition (const std::weak_ptr& data) : express::Entity(data) {} + /// Optionally defines a name for this boundary condition. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Name() const; + void setName(const std::optional< 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 aggregate_of< IfcBoundaryCondition > list; + // IfcBoundaryCondition (std::optional< std::string > v1_Name); }; /// Definition from IAI: Describes linearly elastic support conditions or connection conditions. /// @@ -10162,31 +14085,32 @@ public: /// IFC 2x4 change: Attributes LinearStiffnessX/Y/Z renamed to TranslationalStiffnessX/Y/Z. /// /// IFC 2x4 change: All attribute data types changed from numeric to SELECT between Boolean and numeric. Stiffnesses may now also be negative, for example to capture destabilizing effects in boundary conditions. The IFC 2x3 convention of -1. representing infinite stiffness is no longer valid and must not be used. Infinite stiffness, i.e. fixed supports, are now modeled by the Boolean value TRUE. -class IFC_PARSE_API IfcBoundaryEdgeCondition : public IfcBoundaryCondition { +class IFC_PARSE_API IfcBoundaryEdgeCondition : public IfcBoundaryCondition { public: + IfcBoundaryEdgeCondition() {} + explicit IfcBoundaryEdgeCondition (const std::weak_ptr& data) : IfcBoundaryCondition(data) {} + /// Translational stiffness value in x-direction of the coordinate system defined by the instance which uses this resource object. - ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* TranslationalStiffnessByLengthX() const; - void setTranslationalStiffnessByLengthX(::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* v); + ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect TranslationalStiffnessByLengthX() const; + void setTranslationalStiffnessByLengthX(const ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect& v); /// Translational stiffness value in y-direction of the coordinate system defined by the instance which uses this resource object. - ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* TranslationalStiffnessByLengthY() const; - void setTranslationalStiffnessByLengthY(::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* v); + ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect TranslationalStiffnessByLengthY() const; + void setTranslationalStiffnessByLengthY(const ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect& v); /// Translational stiffness value in z-direction of the coordinate system defined by the instance which uses this resource object. - ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* TranslationalStiffnessByLengthZ() const; - void setTranslationalStiffnessByLengthZ(::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* v); + ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect TranslationalStiffnessByLengthZ() const; + void setTranslationalStiffnessByLengthZ(const ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect& v); /// Rotational stiffness value about the x-axis of the coordinate system defined by the instance which uses this resource object. - ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* RotationalStiffnessByLengthX() const; - void setRotationalStiffnessByLengthX(::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* v); + ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect RotationalStiffnessByLengthX() const; + void setRotationalStiffnessByLengthX(const ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect& v); /// Rotational stiffness value about the y-axis of the coordinate system defined by the instance which uses this resource object. - ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* RotationalStiffnessByLengthY() const; - void setRotationalStiffnessByLengthY(::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* v); + ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect RotationalStiffnessByLengthY() const; + void setRotationalStiffnessByLengthY(const ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect& v); /// Rotational stiffness value about the z-axis of the coordinate system defined by the instance which uses this resource object. - ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* RotationalStiffnessByLengthZ() const; - void setRotationalStiffnessByLengthZ(::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect RotationalStiffnessByLengthZ() const; + void setRotationalStiffnessByLengthZ(const ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBoundaryEdgeCondition (IfcEntityInstanceData&& e); - IfcBoundaryEdgeCondition (boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* v2_TranslationalStiffnessByLengthX, ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* v3_TranslationalStiffnessByLengthY, ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect* v4_TranslationalStiffnessByLengthZ, ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* v5_RotationalStiffnessByLengthX, ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* v6_RotationalStiffnessByLengthY, ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect* v7_RotationalStiffnessByLengthZ); - typedef aggregate_of< IfcBoundaryEdgeCondition > list; + // IfcBoundaryEdgeCondition (std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect v2_TranslationalStiffnessByLengthX, ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect v3_TranslationalStiffnessByLengthY, ::Ifc4x3_add2::IfcModulusOfTranslationalSubgradeReactionSelect v4_TranslationalStiffnessByLengthZ, ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect v5_RotationalStiffnessByLengthX, ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect v6_RotationalStiffnessByLengthY, ::Ifc4x3_add2::IfcModulusOfRotationalSubgradeReactionSelect v7_RotationalStiffnessByLengthZ); }; /// Definition from IAI: Describes linearly elastic support conditions or connection conditions. /// @@ -10198,22 +14122,23 @@ public: /// IFC 2x4 change: Attributes LinearStiffnessX/Y/Z renamed to TranslationalStiffnessX/Y/Z. /// /// IFC 2x4 change: All attribute data types changed from numeric to SELECT between Boolean and numeric. Stiffnesses may now also be negative, for example to capture destabilizing effects in boundary conditions. The IFC 2x3 convention of -1. representing infinite stiffness is no longer valid and must not be used. Infinite stiffness, i.e. fixed supports, are now modeled by the Boolean value TRUE. -class IFC_PARSE_API IfcBoundaryFaceCondition : public IfcBoundaryCondition { +class IFC_PARSE_API IfcBoundaryFaceCondition : public IfcBoundaryCondition { public: + IfcBoundaryFaceCondition() {} + explicit IfcBoundaryFaceCondition (const std::weak_ptr& data) : IfcBoundaryCondition(data) {} + /// Translational stiffness value in x-direction of the coordinate system defined by the instance which uses this resource object. - ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* TranslationalStiffnessByAreaX() const; - void setTranslationalStiffnessByAreaX(::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* v); + ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect TranslationalStiffnessByAreaX() const; + void setTranslationalStiffnessByAreaX(const ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect& v); /// Translational stiffness value in y-direction of the coordinate system defined by the instance which uses this resource object. - ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* TranslationalStiffnessByAreaY() const; - void setTranslationalStiffnessByAreaY(::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* v); + ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect TranslationalStiffnessByAreaY() const; + void setTranslationalStiffnessByAreaY(const ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect& v); /// Translational stiffness value in z-direction of the coordinate system defined by the instance which uses this resource object. - ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* TranslationalStiffnessByAreaZ() const; - void setTranslationalStiffnessByAreaZ(::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect TranslationalStiffnessByAreaZ() const; + void setTranslationalStiffnessByAreaZ(const ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBoundaryFaceCondition (IfcEntityInstanceData&& e); - IfcBoundaryFaceCondition (boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* v2_TranslationalStiffnessByAreaX, ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* v3_TranslationalStiffnessByAreaY, ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect* v4_TranslationalStiffnessByAreaZ); - typedef aggregate_of< IfcBoundaryFaceCondition > list; + // IfcBoundaryFaceCondition (std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect v2_TranslationalStiffnessByAreaX, ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect v3_TranslationalStiffnessByAreaY, ::Ifc4x3_add2::IfcModulusOfSubgradeReactionSelect v4_TranslationalStiffnessByAreaZ); }; /// Definition from IAI: Describes linearly elastic support conditions or connection conditions. /// @@ -10225,31 +14150,32 @@ public: /// IFC 2x4 change: Attributes LinearStiffnessX/Y/Z renamed to TranslationalStiffnessX/Y/Z. /// /// IFC 2x4 change: All attribute data types changed from numeric to SELECT between Boolean and numeric. Stiffnesses may now also be negative, for example to capture destabilizing effects in boundary conditions. The IFC 2x3 convention of -1. representing infinite stiffness is no longer valid and must not be used. Infinite stiffness, i.e. fixed supports, are now modeled by the Boolean value TRUE. -class IFC_PARSE_API IfcBoundaryNodeCondition : public IfcBoundaryCondition { +class IFC_PARSE_API IfcBoundaryNodeCondition : public IfcBoundaryCondition { public: + IfcBoundaryNodeCondition() {} + explicit IfcBoundaryNodeCondition (const std::weak_ptr& data) : IfcBoundaryCondition(data) {} + /// Translational stiffness value in x-direction of the coordinate system defined by the instance which uses this resource object. - ::Ifc4x3_add2::IfcTranslationalStiffnessSelect* TranslationalStiffnessX() const; - void setTranslationalStiffnessX(::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v); + ::Ifc4x3_add2::IfcTranslationalStiffnessSelect TranslationalStiffnessX() const; + void setTranslationalStiffnessX(const ::Ifc4x3_add2::IfcTranslationalStiffnessSelect& v); /// Translational stiffness value in y-direction of the coordinate system defined by the instance which uses this resource object. - ::Ifc4x3_add2::IfcTranslationalStiffnessSelect* TranslationalStiffnessY() const; - void setTranslationalStiffnessY(::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v); + ::Ifc4x3_add2::IfcTranslationalStiffnessSelect TranslationalStiffnessY() const; + void setTranslationalStiffnessY(const ::Ifc4x3_add2::IfcTranslationalStiffnessSelect& v); /// Translational stiffness value in z-direction of the coordinate system defined by the instance which uses this resource object. - ::Ifc4x3_add2::IfcTranslationalStiffnessSelect* TranslationalStiffnessZ() const; - void setTranslationalStiffnessZ(::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v); + ::Ifc4x3_add2::IfcTranslationalStiffnessSelect TranslationalStiffnessZ() const; + void setTranslationalStiffnessZ(const ::Ifc4x3_add2::IfcTranslationalStiffnessSelect& v); /// Rotational stiffness value about the x-axis of the coordinate system defined by the instance which uses this resource object. - ::Ifc4x3_add2::IfcRotationalStiffnessSelect* RotationalStiffnessX() const; - void setRotationalStiffnessX(::Ifc4x3_add2::IfcRotationalStiffnessSelect* v); + ::Ifc4x3_add2::IfcRotationalStiffnessSelect RotationalStiffnessX() const; + void setRotationalStiffnessX(const ::Ifc4x3_add2::IfcRotationalStiffnessSelect& v); /// Rotational stiffness value about the y-axis of the coordinate system defined by the instance which uses this resource object. - ::Ifc4x3_add2::IfcRotationalStiffnessSelect* RotationalStiffnessY() const; - void setRotationalStiffnessY(::Ifc4x3_add2::IfcRotationalStiffnessSelect* v); + ::Ifc4x3_add2::IfcRotationalStiffnessSelect RotationalStiffnessY() const; + void setRotationalStiffnessY(const ::Ifc4x3_add2::IfcRotationalStiffnessSelect& v); /// Rotational stiffness value about the z-axis of the coordinate system defined by the instance which uses this resource object. - ::Ifc4x3_add2::IfcRotationalStiffnessSelect* RotationalStiffnessZ() const; - void setRotationalStiffnessZ(::Ifc4x3_add2::IfcRotationalStiffnessSelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcRotationalStiffnessSelect RotationalStiffnessZ() const; + void setRotationalStiffnessZ(const ::Ifc4x3_add2::IfcRotationalStiffnessSelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBoundaryNodeCondition (IfcEntityInstanceData&& e); - IfcBoundaryNodeCondition (boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v2_TranslationalStiffnessX, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v3_TranslationalStiffnessY, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v4_TranslationalStiffnessZ, ::Ifc4x3_add2::IfcRotationalStiffnessSelect* v5_RotationalStiffnessX, ::Ifc4x3_add2::IfcRotationalStiffnessSelect* v6_RotationalStiffnessY, ::Ifc4x3_add2::IfcRotationalStiffnessSelect* v7_RotationalStiffnessZ); - typedef aggregate_of< IfcBoundaryNodeCondition > list; + // IfcBoundaryNodeCondition (std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect v2_TranslationalStiffnessX, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect v3_TranslationalStiffnessY, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect v4_TranslationalStiffnessZ, ::Ifc4x3_add2::IfcRotationalStiffnessSelect v5_RotationalStiffnessX, ::Ifc4x3_add2::IfcRotationalStiffnessSelect v6_RotationalStiffnessY, ::Ifc4x3_add2::IfcRotationalStiffnessSelect v7_RotationalStiffnessZ); }; /// Definition from IAI: Describes linearly elastic support conditions or connection conditions, including linearly elastic warping restraints. /// @@ -10260,16 +14186,17 @@ public: /// HISTORY: New entity in IFC 2x2. /// /// IFC 2x4 change: All attribute data types changed from numeric to SELECT between Boolean and numeric. Stiffnesses may now also be negative, for example to capture destabilizing effects in boundary conditions. The IFC 2x3 convention of -1. representing infinite stiffness is no longer valid and must not be used. Infinite stiffness, i.e. fixed supports, are now modeled by the Boolean value TRUE. -class IFC_PARSE_API IfcBoundaryNodeConditionWarping : public IfcBoundaryNodeCondition { +class IFC_PARSE_API IfcBoundaryNodeConditionWarping : public IfcBoundaryNodeCondition { public: + IfcBoundaryNodeConditionWarping() {} + explicit IfcBoundaryNodeConditionWarping (const std::weak_ptr& data) : IfcBoundaryNodeCondition(data) {} + /// Defines the warping stiffness value. - ::Ifc4x3_add2::IfcWarpingStiffnessSelect* WarpingStiffness() const; - void setWarpingStiffness(::Ifc4x3_add2::IfcWarpingStiffnessSelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcWarpingStiffnessSelect WarpingStiffness() const; + void setWarpingStiffness(const ::Ifc4x3_add2::IfcWarpingStiffnessSelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBoundaryNodeConditionWarping (IfcEntityInstanceData&& e); - IfcBoundaryNodeConditionWarping (boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v2_TranslationalStiffnessX, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v3_TranslationalStiffnessY, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect* v4_TranslationalStiffnessZ, ::Ifc4x3_add2::IfcRotationalStiffnessSelect* v5_RotationalStiffnessX, ::Ifc4x3_add2::IfcRotationalStiffnessSelect* v6_RotationalStiffnessY, ::Ifc4x3_add2::IfcRotationalStiffnessSelect* v7_RotationalStiffnessZ, ::Ifc4x3_add2::IfcWarpingStiffnessSelect* v8_WarpingStiffness); - typedef aggregate_of< IfcBoundaryNodeConditionWarping > list; + // IfcBoundaryNodeConditionWarping (std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect v2_TranslationalStiffnessX, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect v3_TranslationalStiffnessY, ::Ifc4x3_add2::IfcTranslationalStiffnessSelect v4_TranslationalStiffnessZ, ::Ifc4x3_add2::IfcRotationalStiffnessSelect v5_RotationalStiffnessX, ::Ifc4x3_add2::IfcRotationalStiffnessSelect v6_RotationalStiffnessY, ::Ifc4x3_add2::IfcRotationalStiffnessSelect v7_RotationalStiffnessZ, ::Ifc4x3_add2::IfcWarpingStiffnessSelect v8_WarpingStiffness); }; /// IfcConnectionGeometry is used to describe the geometric and topological constraints that facilitate the physical connection of two objects. It is envisioned as a control that applies to the element connection relationships. /// @@ -10285,13 +14212,14 @@ public: /// HISTORY  New entity in IFC Release 1.5. /// /// IFC2x Edition 3 CHANGE  The definition of the subtypes has been enhanced by allowing either geometric representation items (point | curve | surface) or topological representation items with associated geometry (vertex point | edge curve | face  surface). -class IFC_PARSE_API IfcConnectionGeometry : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcConnectionGeometry : public express::Entity { public: - virtual const IfcParse::entity& declaration() const; + IfcConnectionGeometry() {} + explicit IfcConnectionGeometry (const std::weak_ptr& data) : express::Entity(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConnectionGeometry (IfcEntityInstanceData&& e); - IfcConnectionGeometry (); - typedef aggregate_of< IfcConnectionGeometry > list; + // IfcConnectionGeometry (); }; /// IfcConnectionPointGeometry /// is used to describe the geometric constraints that facilitate the @@ -10309,19 +14237,20 @@ public: /// /// Geometry use definitions /// The IfcPoint (or the IfcVertexPoint with an associated IfcPoint) at the PointOnRelatingElement attribute defines the point where the basic geometry items of the connected elements connect. The point coordinates are provided within the local coordinate system of the RelatingElement, as specified at the IfcRelConnectsSubtype that utilizes the IfcConnectionPointGeometry. Optionally, the same point coordinates can also be provided within the local coordinate system of the RelatedElement by using the PointOnRelatedElement attribute. If both point coordinates are not identical within a common parent coordinate system (ultimately within the world coordinate system), the subtype IfcConnectionPointEccentricity shall be used. -class IFC_PARSE_API IfcConnectionPointGeometry : public IfcConnectionGeometry { +class IFC_PARSE_API IfcConnectionPointGeometry : public IfcConnectionGeometry { public: + IfcConnectionPointGeometry() {} + explicit IfcConnectionPointGeometry (const std::weak_ptr& data) : IfcConnectionGeometry(data) {} + /// Point at which the connected object is aligned at the relating element, given in the LCS of the relating element. - ::Ifc4x3_add2::IfcPointOrVertexPoint* PointOnRelatingElement() const; - void setPointOnRelatingElement(::Ifc4x3_add2::IfcPointOrVertexPoint* v); + ::Ifc4x3_add2::IfcPointOrVertexPoint PointOnRelatingElement() const; + void setPointOnRelatingElement(const ::Ifc4x3_add2::IfcPointOrVertexPoint& v); /// Point at which connected objects are aligned at the related element, given in the LCS of the related element. If the information is omitted, then the origin of the related element is used. - ::Ifc4x3_add2::IfcPointOrVertexPoint* PointOnRelatedElement() const; - void setPointOnRelatedElement(::Ifc4x3_add2::IfcPointOrVertexPoint* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcPointOrVertexPoint PointOnRelatedElement() const; + void setPointOnRelatedElement(const ::Ifc4x3_add2::IfcPointOrVertexPoint& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConnectionPointGeometry (IfcEntityInstanceData&& e); - IfcConnectionPointGeometry (::Ifc4x3_add2::IfcPointOrVertexPoint* v1_PointOnRelatingElement, ::Ifc4x3_add2::IfcPointOrVertexPoint* v2_PointOnRelatedElement); - typedef aggregate_of< IfcConnectionPointGeometry > list; + // IfcConnectionPointGeometry (::Ifc4x3_add2::IfcPointOrVertexPoint v1_PointOnRelatingElement, ::Ifc4x3_add2::IfcPointOrVertexPoint v2_PointOnRelatedElement); }; /// IfcConnectionSurfaceGeometry is used to describe the geometric constraints that facilitate the physical connection of two objects at a surface or at a face with surface geometry associated. It is envisioned as a control that applies to the element connection relationships. /// @@ -10331,19 +14260,20 @@ public: /// /// Geometry use definitions /// The IfcSurface (or the IfcFaceSurface with an associated IfcSurface) at the SurfaceOnRelatingElement attribute defines the surface where the basic geometry items of the connected elements connects. The surface geometry and coordinates are provided within the local coordinate system of the RelatingElement, as specified at the IfcRelConnectsSubtype that utilizes the IfcConnectionSurfaceGeometry. Optionally, the same surface geometry and coordinates can also be provided within the local coordinate system of the RelatedElement by using the SurfaceOnRelatedElement attribute. -class IFC_PARSE_API IfcConnectionSurfaceGeometry : public IfcConnectionGeometry { +class IFC_PARSE_API IfcConnectionSurfaceGeometry : public IfcConnectionGeometry { public: + IfcConnectionSurfaceGeometry() {} + explicit IfcConnectionSurfaceGeometry (const std::weak_ptr& data) : IfcConnectionGeometry(data) {} + /// Surface at which related object is aligned at the relating element, given in the LCS of the relating element. - ::Ifc4x3_add2::IfcSurfaceOrFaceSurface* SurfaceOnRelatingElement() const; - void setSurfaceOnRelatingElement(::Ifc4x3_add2::IfcSurfaceOrFaceSurface* v); + ::Ifc4x3_add2::IfcSurfaceOrFaceSurface SurfaceOnRelatingElement() const; + void setSurfaceOnRelatingElement(const ::Ifc4x3_add2::IfcSurfaceOrFaceSurface& v); /// Surface at which the relating element is aligned at the related element, given in the LCS of the related element. If the information is omitted, then the origin of the related element is used. - ::Ifc4x3_add2::IfcSurfaceOrFaceSurface* SurfaceOnRelatedElement() const; - void setSurfaceOnRelatedElement(::Ifc4x3_add2::IfcSurfaceOrFaceSurface* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcSurfaceOrFaceSurface SurfaceOnRelatedElement() const; + void setSurfaceOnRelatedElement(const ::Ifc4x3_add2::IfcSurfaceOrFaceSurface& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConnectionSurfaceGeometry (IfcEntityInstanceData&& e); - IfcConnectionSurfaceGeometry (::Ifc4x3_add2::IfcSurfaceOrFaceSurface* v1_SurfaceOnRelatingElement, ::Ifc4x3_add2::IfcSurfaceOrFaceSurface* v2_SurfaceOnRelatedElement); - typedef aggregate_of< IfcConnectionSurfaceGeometry > list; + // IfcConnectionSurfaceGeometry (::Ifc4x3_add2::IfcSurfaceOrFaceSurface v1_SurfaceOnRelatingElement, ::Ifc4x3_add2::IfcSurfaceOrFaceSurface v2_SurfaceOnRelatedElement); }; /// IfcConnectionVolumeGeometry is used to describe the geometric constraints that facilitate the physical connection (or overlap) of two objects at a volume defined by a solid or closed shell. It is envisioned as a control that applies to the element connection or interference relationships. /// @@ -10351,19 +14281,20 @@ public: /// /// Geometry use definitions /// The IfcSolidModel (or the IfcClosedShell) at the VolumeOnRelatingElement attribute defines the volume where the basic geometry items of the interfering elements overlap. The volume geometry and coordinates are provided within the local coordinate system of the RelatingElement, as specified at the subtypes of the relationship IfcRelConnects that utilizes the IfcConnectionSurfaceGeometry. Optionally, the samevolume geometry and coordinates can also be provided within the local coordinate system of the RelatedElement by using the VolumeOnRelatedElement attribute. -class IFC_PARSE_API IfcConnectionVolumeGeometry : public IfcConnectionGeometry { +class IFC_PARSE_API IfcConnectionVolumeGeometry : public IfcConnectionGeometry { public: + IfcConnectionVolumeGeometry() {} + explicit IfcConnectionVolumeGeometry (const std::weak_ptr& data) : IfcConnectionGeometry(data) {} + /// Volume at which related object overlaps with the relating element, given in the LCS of the relating element. - ::Ifc4x3_add2::IfcSolidOrShell* VolumeOnRelatingElement() const; - void setVolumeOnRelatingElement(::Ifc4x3_add2::IfcSolidOrShell* v); + ::Ifc4x3_add2::IfcSolidOrShell VolumeOnRelatingElement() const; + void setVolumeOnRelatingElement(const ::Ifc4x3_add2::IfcSolidOrShell& v); /// Volume at which related object overlaps with the relating element, given in the LCS of the related element. - ::Ifc4x3_add2::IfcSolidOrShell* VolumeOnRelatedElement() const; - void setVolumeOnRelatedElement(::Ifc4x3_add2::IfcSolidOrShell* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcSolidOrShell VolumeOnRelatedElement() const; + void setVolumeOnRelatedElement(const ::Ifc4x3_add2::IfcSolidOrShell& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConnectionVolumeGeometry (IfcEntityInstanceData&& e); - IfcConnectionVolumeGeometry (::Ifc4x3_add2::IfcSolidOrShell* v1_VolumeOnRelatingElement, ::Ifc4x3_add2::IfcSolidOrShell* v2_VolumeOnRelatedElement); - typedef aggregate_of< IfcConnectionVolumeGeometry > list; + // IfcConnectionVolumeGeometry (::Ifc4x3_add2::IfcSolidOrShell v1_VolumeOnRelatingElement, ::Ifc4x3_add2::IfcSolidOrShell v2_VolumeOnRelatedElement); }; /// An IfcConstraint is used to define a constraint or limiting value or boundary condition that may be applied to an object or to the value of a property. /// @@ -10377,39 +14308,40 @@ public: /// A constraint must have a name applied through the IfcConstraint.Name attribute and optionally, a description through IfcConstraint.Description. The grade of the constraint (hard, soft, advisory) must be specified through IfcConstraint.ConstraintGrade or IfcConstraint.UserDefinedGrade whilst the source, creating actor and time at which the constraint is created may be optionally asserted through IfcConstraint.ConstraintSource, IfcConstraint.CreatingActor and IfcConstraint.CreationTime. /// /// A constraint may also have additional external information (such as classification or document information) associated to it by IfcExternalReferenceRelationship, accessible through inverse attribute IfcConstraint.HasExternalReferences -class IFC_PARSE_API IfcConstraint : public IfcUtil::IfcBaseEntity, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcConstraint : public express::Entity { public: + IfcConstraint() {} + explicit IfcConstraint (const std::weak_ptr& data) : express::Entity(data) {} + /// A name to be used for the constraint (e.g., ChillerCoefficientOfPerformance). std::string Name() const; - void setName(std::string v); + void setName(const std::string& v); /// A description that may apply additional information about a constraint. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// Enumeration that qualifies the type of constraint. ::Ifc4x3_add2::IfcConstraintEnum::Value ConstraintGrade() const; - void setConstraintGrade(::Ifc4x3_add2::IfcConstraintEnum::Value v); + void setConstraintGrade(const ::Ifc4x3_add2::IfcConstraintEnum::Value& v); /// Any source material, such as a code or standard, from which the constraint originated. - boost::optional< std::string > ConstraintSource() const; - void setConstraintSource(boost::optional< std::string > v); + std::optional< std::string > ConstraintSource() const; + void setConstraintSource(const std::optional< std::string >& v); /// Person and/or organization that has created the constraint. - ::Ifc4x3_add2::IfcActorSelect* CreatingActor() const; - void setCreatingActor(::Ifc4x3_add2::IfcActorSelect* v); + ::Ifc4x3_add2::IfcActorSelect CreatingActor() const; + void setCreatingActor(const ::Ifc4x3_add2::IfcActorSelect& v); /// Time when information specifying the constraint instance was created. /// /// Note IFC2x4 CHANGE: Attribute data type changed to IfcDateTime using ISO 8601 representation - boost::optional< std::string > CreationTime() const; - void setCreationTime(boost::optional< std::string > v); + std::optional< std::string > CreationTime() const; + void setCreationTime(const std::optional< std::string >& v); /// Allows for specification of user defined grade of the constraint beyond the enumeration values (hard, soft, advisory) provided by ConstraintGrade attribute of type IfcConstraintEnum. /// When a value is provided for attribute UserDefinedGrade in parallel the attribute ConstraintGrade shall have enumeration value USERDEFINED. - boost::optional< std::string > UserDefinedGrade() const; - void setUserDefinedGrade(boost::optional< std::string > v); - aggregate_of< IfcExternalReferenceRelationship >::ptr HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects - aggregate_of< IfcResourceConstraintRelationship >::ptr PropertiesForConstraint() const; // INVERSE IfcResourceConstraintRelationship::RelatingConstraint - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > UserDefinedGrade() const; + void setUserDefinedGrade(const std::optional< std::string >& v); + std::vector< IfcExternalReferenceRelationship > HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects + std::vector< IfcResourceConstraintRelationship > PropertiesForConstraint() const; // INVERSE IfcResourceConstraintRelationship::RelatingConstraint + // 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, ::Ifc4x3_add2::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc4x3_add2::IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade); - typedef aggregate_of< IfcConstraint > list; + // IfcConstraint (std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcConstraintEnum::Value v3_ConstraintGrade, std::optional< std::string > v4_ConstraintSource, ::Ifc4x3_add2::IfcActorSelect v5_CreatingActor, std::optional< std::string > v6_CreationTime, std::optional< std::string > v7_UserDefinedGrade); }; /// Definition from OpenGIS® Abstract Specification, /// Topic 2: If the relationship between any two coordinate @@ -10457,19 +14389,20 @@ public: /// and any map or other coordinate reference system. /// /// HISTORY  New entity in IFC2x4. -class IFC_PARSE_API IfcCoordinateOperation : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcCoordinateOperation : public express::Entity { public: + IfcCoordinateOperation() {} + explicit IfcCoordinateOperation (const std::weak_ptr& data) : express::Entity(data) {} + /// Source coordinate reference system for the operation. - ::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect* SourceCRS() const; - void setSourceCRS(::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect* v); + ::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect SourceCRS() const; + void setSourceCRS(const ::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect& v); /// Target coordinate reference system for the operation. - ::Ifc4x3_add2::IfcCoordinateReferenceSystem* TargetCRS() const; - void setTargetCRS(::Ifc4x3_add2::IfcCoordinateReferenceSystem* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcCoordinateReferenceSystem TargetCRS() const; + void setTargetCRS(const ::Ifc4x3_add2::IfcCoordinateReferenceSystem& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCoordinateOperation (IfcEntityInstanceData&& e); - IfcCoordinateOperation (::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect* v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem* v2_TargetCRS); - typedef aggregate_of< IfcCoordinateOperation > list; + // IfcCoordinateOperation (::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem v2_TargetCRS); }; /// Definition from OpenGIS® Abstract Specification, Topic /// 2: A coordinate reference system is a coordinate system which @@ -10493,29 +14426,30 @@ public: /// Specifications. /// /// HISTORY  New entity in IFC2x4. -class IFC_PARSE_API IfcCoordinateReferenceSystem : public IfcUtil::IfcBaseEntity, public IfcCoordinateReferenceSystemSelect { +class IFC_PARSE_API IfcCoordinateReferenceSystem : public express::Entity { public: + IfcCoordinateReferenceSystem() {} + explicit IfcCoordinateReferenceSystem (const std::weak_ptr& data) : express::Entity(data) {} + /// Name by which the coordinate reference system is identified. /// Note  The name shall be taken from the list recognized by the European Petroleum Survey Group EPSG. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// Informal description of this coordinate reference system. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// Name by which this datum is identified. The geodetic datum is associated with the coordinate reference system and indicates the shape and size of the rotation ellipsoid and this ellipsoid's connection and orientation to the actual globe/earth. Examples for geodetic datums include: /// /// ED50 /// EUREF89 /// WSG84 - boost::optional< std::string > GeodeticDatum() const; - void setGeodeticDatum(boost::optional< std::string > v); - aggregate_of< IfcCoordinateOperation >::ptr HasCoordinateOperation() const; // INVERSE IfcCoordinateOperation::SourceCRS - aggregate_of< IfcWellKnownText >::ptr WellKnownText() const; // INVERSE IfcWellKnownText::CoordinateReferenceSystem - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > GeodeticDatum() const; + void setGeodeticDatum(const std::optional< std::string >& v); + std::vector< IfcCoordinateOperation > HasCoordinateOperation() const; // INVERSE IfcCoordinateOperation::SourceCRS + std::vector< IfcWellKnownText > WellKnownText() const; // INVERSE IfcWellKnownText::CoordinateReferenceSystem + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCoordinateReferenceSystem (IfcEntityInstanceData&& e); - IfcCoordinateReferenceSystem (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_GeodeticDatum); - typedef aggregate_of< IfcCoordinateReferenceSystem > list; + // IfcCoordinateReferenceSystem (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::optional< std::string > v3_GeodeticDatum); }; /// IfcCostValue is an amount of money or a value that affects an amount of money. /// @@ -10559,13 +14493,14 @@ public: /// Whole life /// /// In the absence of any well-defined standard, it is recommended that local agreements should be made to define allowable and understandable cost value types within a project or region. -class IFC_PARSE_API IfcCostValue : public IfcAppliedValue { +class IFC_PARSE_API IfcCostValue : public IfcAppliedValue { public: - virtual const IfcParse::entity& declaration() const; + IfcCostValue() {} + explicit IfcCostValue (const std::weak_ptr& data) : IfcAppliedValue(data) {} + + // 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, ::Ifc4x3_add2::IfcAppliedValueSelect* v3_AppliedValue, ::Ifc4x3_add2::IfcMeasureWithUnit* v4_UnitBasis, boost::optional< std::string > v5_ApplicableDate, boost::optional< std::string > v6_FixedUntilDate, boost::optional< std::string > v7_Category, boost::optional< std::string > v8_Condition, boost::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value > v9_ArithmeticOperator, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_Components); - typedef aggregate_of< IfcCostValue > list; + // IfcCostValue (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcAppliedValueSelect v3_AppliedValue, ::Ifc4x3_add2::IfcMeasureWithUnit v4_UnitBasis, std::optional< std::string > v5_ApplicableDate, std::optional< std::string > v6_FixedUntilDate, std::optional< std::string > v7_Category, std::optional< std::string > v8_Condition, std::optional< ::Ifc4x3_add2::IfcArithmeticOperatorEnum::Value > v9_ArithmeticOperator, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_Components); }; /// Definition from ISO/CD 10303-41:1992: A derived unit is an expression of units. /// @@ -10574,23 +14509,24 @@ public: /// NOTE: Corresponding ISO 10303 name: derived_unit, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY: New entity in IFC Release 1.5.1. -class IFC_PARSE_API IfcDerivedUnit : public IfcUtil::IfcBaseEntity, public IfcUnit { +class IFC_PARSE_API IfcDerivedUnit : public express::Entity { public: + IfcDerivedUnit() {} + explicit IfcDerivedUnit (const std::weak_ptr& data) : express::Entity(data) {} + /// The group of units and their exponents that define the derived unit. - aggregate_of< ::Ifc4x3_add2::IfcDerivedUnitElement >::ptr Elements() const; - void setElements(aggregate_of< ::Ifc4x3_add2::IfcDerivedUnitElement >::ptr v); + std::vector< ::Ifc4x3_add2::IfcDerivedUnitElement > Elements() const; + void setElements(const std::vector< ::Ifc4x3_add2::IfcDerivedUnitElement >& v); /// Name of the derived unit chosen from an enumeration of derived unit types for use in IFC models. ::Ifc4x3_add2::IfcDerivedUnitEnum::Value UnitType() const; - void setUnitType(::Ifc4x3_add2::IfcDerivedUnitEnum::Value v); - boost::optional< std::string > UserDefinedType() const; - void setUserDefinedType(boost::optional< std::string > v); - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + void setUnitType(const ::Ifc4x3_add2::IfcDerivedUnitEnum::Value& v); + std::optional< std::string > UserDefinedType() const; + void setUserDefinedType(const std::optional< std::string >& v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDerivedUnit (IfcEntityInstanceData&& e); - IfcDerivedUnit (aggregate_of< ::Ifc4x3_add2::IfcDerivedUnitElement >::ptr v1_Elements, ::Ifc4x3_add2::IfcDerivedUnitEnum::Value v2_UnitType, boost::optional< std::string > v3_UserDefinedType, boost::optional< std::string > v4_Name); - typedef aggregate_of< IfcDerivedUnit > list; + // IfcDerivedUnit (std::vector< ::Ifc4x3_add2::IfcDerivedUnitElement > v1_Elements, ::Ifc4x3_add2::IfcDerivedUnitEnum::Value v2_UnitType, std::optional< std::string > v3_UserDefinedType, std::optional< std::string > v4_Name); }; /// Definition from ISO/CD 10303-41:1992: A derived unit element is one of the unit quantities /// which makes up a derived unit. @@ -10601,19 +14537,20 @@ public: /// NOTE: Corresponding ISO 10303 name: derived_unit_element, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New entity in IFC Release 1.5.1. -class IFC_PARSE_API IfcDerivedUnitElement : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcDerivedUnitElement : public express::Entity { public: + IfcDerivedUnitElement() {} + explicit IfcDerivedUnitElement (const std::weak_ptr& data) : express::Entity(data) {} + /// The fixed quantity which is used as the mathematical factor. - ::Ifc4x3_add2::IfcNamedUnit* Unit() const; - void setUnit(::Ifc4x3_add2::IfcNamedUnit* v); + ::Ifc4x3_add2::IfcNamedUnit Unit() const; + void setUnit(const ::Ifc4x3_add2::IfcNamedUnit& v); /// The power that is applied to the unit attribute. int Exponent() const; - void setExponent(int v); - virtual const IfcParse::entity& declaration() const; + void setExponent(const int& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDerivedUnitElement (IfcEntityInstanceData&& e); - IfcDerivedUnitElement (::Ifc4x3_add2::IfcNamedUnit* v1_Unit, int v2_Exponent); - typedef aggregate_of< IfcDerivedUnitElement > list; + // IfcDerivedUnitElement (::Ifc4x3_add2::IfcNamedUnit v1_Unit, int v2_Exponent); }; /// Definition from ISO/CD 10303-41:1992: The dimensionality of any quantity can be expressed as a product of powers of the dimensions of base quantities. /// The dimensional exponents entity defines the powers of the dimensions of the base quantities. All the physical @@ -10632,34 +14569,35 @@ public: /// for the final definition of the formal standard. /// /// HISTORY New entity in IFC Release 1.5.1. -class IFC_PARSE_API IfcDimensionalExponents : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcDimensionalExponents : public express::Entity { public: + IfcDimensionalExponents() {} + explicit IfcDimensionalExponents (const std::weak_ptr& data) : express::Entity(data) {} + /// The power of the length base quantity. int LengthExponent() const; - void setLengthExponent(int v); + void setLengthExponent(const int& v); /// The power of the mass base quantity. int MassExponent() const; - void setMassExponent(int v); + void setMassExponent(const int& v); /// The power of the time base quantity. int TimeExponent() const; - void setTimeExponent(int v); + void setTimeExponent(const int& v); /// The power of the electric current base quantity. int ElectricCurrentExponent() const; - void setElectricCurrentExponent(int v); + void setElectricCurrentExponent(const int& v); /// The power of the thermodynamic temperature base quantity. int ThermodynamicTemperatureExponent() const; - void setThermodynamicTemperatureExponent(int v); + void setThermodynamicTemperatureExponent(const int& v); /// The power of the amount of substance base quantity. int AmountOfSubstanceExponent() const; - void setAmountOfSubstanceExponent(int v); + void setAmountOfSubstanceExponent(const int& v); /// The power of the luminous intensity base quantity. int LuminousIntensityExponent() const; - void setLuminousIntensityExponent(int v); - virtual const IfcParse::entity& declaration() const; + void setLuminousIntensityExponent(const 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 aggregate_of< IfcDimensionalExponents > list; + // IfcDimensionalExponents (int v1_LengthExponent, int v2_MassExponent, int v3_TimeExponent, int v4_ElectricCurrentExponent, int v5_ThermodynamicTemperatureExponent, int v6_AmountOfSubstanceExponent, int v7_LuminousIntensityExponent); }; /// An IfcExternalInformation is the identification of an information source that is not explicitly represented in the current model or in the project database (as an implementation of the current model). The IfcExternalInformation identifies the external source (classification, document, or library), but not the particular items such as a dictionary entry, a classification notation, or a document reference within the external source /// @@ -10667,13 +14605,14 @@ public: /// all external information entities. /// /// HISTORY New entity in IFC2x4. -class IFC_PARSE_API IfcExternalInformation : public IfcUtil::IfcBaseEntity, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcExternalInformation : public express::Entity { public: - virtual const IfcParse::entity& declaration() const; + IfcExternalInformation() {} + explicit IfcExternalInformation (const std::weak_ptr& data) : express::Entity(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcExternalInformation (IfcEntityInstanceData&& e); - IfcExternalInformation (); - typedef aggregate_of< IfcExternalInformation > list; + // IfcExternalInformation (); }; /// An IfcExternalReference is the identification of information that is not explicitly represented in the current model or in the project database (as an implementation of the current model). Such information may be contained in classifications, documents or libraries. The IfcExternalReference identifies a particular item, such as a /// dictionary entry, a classification notation, or a document reference within the external source. @@ -10684,13 +14623,16 @@ public: /// IfcExternalReference is an abstract supertype of all external reference entities. /// /// HISTORY New entity in IFC2x. -class IFC_PARSE_API IfcExternalReference : public IfcUtil::IfcBaseEntity, public IfcLightDistributionDataSourceSelect, public IfcObjectReferenceSelect, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcExternalReference : public express::Entity { public: + IfcExternalReference() {} + explicit IfcExternalReference (const std::weak_ptr& data) : express::Entity(data) {} + /// Location, where the external source (classification, document or library) can be accessed by electronic means. The electronic location is provided as an URI, and would normally be given as an URL location string. /// /// IFC2x4 CHANGE  The data type has been changed from IfcLabel to IfcURIReference. - boost::optional< std::string > Location() const; - void setLocation(boost::optional< std::string > v); + std::optional< std::string > Location() const; + void setLocation(const std::optional< std::string >& v); /// The Identification provides a unique identifier of the referenced item within the external source (classification, document or library). It may be provided as /// /// a key, e.g. a classification notation, like NF2.3 @@ -10700,17 +14642,15 @@ public: /// It may be human readable (such as a key) or not (such as a handle or uuid) depending on the context of its usage (which has to be determined by local agreement). /// /// IFC2x4 CHANGE Attribute renamed from ItemReference for consistency. - boost::optional< std::string > Identification() const; - void setIdentification(boost::optional< std::string > v); + std::optional< std::string > Identification() const; + void setIdentification(const std::optional< std::string >& v); /// Optional name to further specify the reference. It can provide a human readable identifier (which does not necessarily need to have a counterpart in the internal structure of the document). - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); - aggregate_of< IfcExternalReferenceRelationship >::ptr ExternalReferenceForResources() const; // INVERSE IfcExternalReferenceRelationship::RelatingReference - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); + std::vector< IfcExternalReferenceRelationship > ExternalReferenceForResources() const; // INVERSE IfcExternalReferenceRelationship::RelatingReference + // 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_Identification, boost::optional< std::string > v3_Name); - typedef aggregate_of< IfcExternalReference > list; + // IfcExternalReference (std::optional< std::string > v1_Location, std::optional< std::string > v2_Identification, std::optional< std::string > v3_Name); }; /// Definition from ISO/CD 10303-46:1992: The externally defined hatch style is an entity which makes an external reference to a hatching style. /// @@ -10720,13 +14660,14 @@ public: /// the final definition of the formal standard. /// /// HISTORY: New entity in IFC2x2. -class IFC_PARSE_API IfcExternallyDefinedHatchStyle : public IfcExternalReference, public IfcFillStyleSelect { +class IFC_PARSE_API IfcExternallyDefinedHatchStyle : public IfcExternalReference { public: - virtual const IfcParse::entity& declaration() const; + IfcExternallyDefinedHatchStyle() {} + explicit IfcExternallyDefinedHatchStyle (const std::weak_ptr& data) : IfcExternalReference(data) {} + + // 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_Identification, boost::optional< std::string > v3_Name); - typedef aggregate_of< IfcExternallyDefinedHatchStyle > list; + // IfcExternallyDefinedHatchStyle (std::optional< std::string > v1_Location, std::optional< std::string > v2_Identification, std::optional< std::string > v3_Name); }; /// IfcExternallyDefinedSurfaceStyle is a definition of a surface style through referencing an external source, such as a material library for rendering information. /// @@ -10735,13 +14676,14 @@ public: /// HISTORY  New entity in IFC2x2. /// /// IFC2x3 CHANGE  The spelling has been corrected from IfcExternallyDefinedSufaceStyle with no upward compatibility. -class IFC_PARSE_API IfcExternallyDefinedSurfaceStyle : public IfcExternalReference, public IfcSurfaceStyleElementSelect { +class IFC_PARSE_API IfcExternallyDefinedSurfaceStyle : public IfcExternalReference { public: - virtual const IfcParse::entity& declaration() const; + IfcExternallyDefinedSurfaceStyle() {} + explicit IfcExternallyDefinedSurfaceStyle (const std::weak_ptr& data) : IfcExternalReference(data) {} + + // 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_Identification, boost::optional< std::string > v3_Name); - typedef aggregate_of< IfcExternallyDefinedSurfaceStyle > list; + // IfcExternallyDefinedSurfaceStyle (std::optional< std::string > v1_Location, std::optional< std::string > v2_Identification, std::optional< std::string > v3_Name); }; /// Definition from ISO/CD 10303-46:1992: The externally defined text font is an external reference to a text font /// @@ -10750,28 +14692,30 @@ public: /// NOTE  Corresponding ISO 10303 name: externally_defined_text_font. Please refer to ISO/IS 10303-46:1994, p. 137 for the final definition of the formal standard. /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcExternallyDefinedTextFont : public IfcExternalReference, public IfcTextFontSelect { +class IFC_PARSE_API IfcExternallyDefinedTextFont : public IfcExternalReference { public: - virtual const IfcParse::entity& declaration() const; + IfcExternallyDefinedTextFont() {} + explicit IfcExternallyDefinedTextFont (const std::weak_ptr& data) : IfcExternalReference(data) {} + + // 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_Identification, boost::optional< std::string > v3_Name); - typedef aggregate_of< IfcExternallyDefinedTextFont > list; + // IfcExternallyDefinedTextFont (std::optional< std::string > v1_Location, std::optional< std::string > v2_Identification, std::optional< std::string > v3_Name); }; -class IFC_PARSE_API IfcGeographicCRS : public IfcCoordinateReferenceSystem { +class IFC_PARSE_API IfcGeographicCRS : public IfcCoordinateReferenceSystem { public: - boost::optional< std::string > PrimeMeridian() const; - void setPrimeMeridian(boost::optional< std::string > v); - ::Ifc4x3_add2::IfcNamedUnit* AngleUnit() const; - void setAngleUnit(::Ifc4x3_add2::IfcNamedUnit* v); - ::Ifc4x3_add2::IfcNamedUnit* HeightUnit() const; - void setHeightUnit(::Ifc4x3_add2::IfcNamedUnit* v); - virtual const IfcParse::entity& declaration() const; + IfcGeographicCRS() {} + explicit IfcGeographicCRS (const std::weak_ptr& data) : IfcCoordinateReferenceSystem(data) {} + + std::optional< std::string > PrimeMeridian() const; + void setPrimeMeridian(const std::optional< std::string >& v); + ::Ifc4x3_add2::IfcNamedUnit AngleUnit() const; + void setAngleUnit(const ::Ifc4x3_add2::IfcNamedUnit& v); + ::Ifc4x3_add2::IfcNamedUnit HeightUnit() const; + void setHeightUnit(const ::Ifc4x3_add2::IfcNamedUnit& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcGeographicCRS (IfcEntityInstanceData&& e); - IfcGeographicCRS (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_GeodeticDatum, boost::optional< std::string > v4_PrimeMeridian, ::Ifc4x3_add2::IfcNamedUnit* v5_AngleUnit, ::Ifc4x3_add2::IfcNamedUnit* v6_HeightUnit); - typedef aggregate_of< IfcGeographicCRS > list; + // IfcGeographicCRS (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::optional< std::string > v3_GeodeticDatum, std::optional< std::string > v4_PrimeMeridian, ::Ifc4x3_add2::IfcNamedUnit v5_AngleUnit, ::Ifc4x3_add2::IfcNamedUnit v6_HeightUnit); }; /// An individual axis, IfcGridAxis, is defined in the context of a design grid. The axis definition is based on a curve of dimensionality 2. The grid axis is positioned within the XY plane of the position coordinate system defined by the IfcDesignGrid. /// @@ -10796,43 +14740,45 @@ public: /// underlying AxisCurve supports this concept. /// /// Figure 242 — Grid axis -class IFC_PARSE_API IfcGridAxis : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcGridAxis : public express::Entity { public: + IfcGridAxis() {} + explicit IfcGridAxis (const std::weak_ptr& data) : express::Entity(data) {} + /// The tag or name for this grid axis. - boost::optional< std::string > AxisTag() const; - void setAxisTag(boost::optional< std::string > v); + std::optional< std::string > AxisTag() const; + void setAxisTag(const std::optional< std::string >& v); /// Underlying curve which provides the geometry for this grid axis. - ::Ifc4x3_add2::IfcCurve* AxisCurve() const; - void setAxisCurve(::Ifc4x3_add2::IfcCurve* v); + ::Ifc4x3_add2::IfcCurve AxisCurve() const; + void setAxisCurve(const ::Ifc4x3_add2::IfcCurve& v); /// Defines whether the original sense of curve is used or whether it is reversed in the context of the grid axis. bool SameSense() const; - void setSameSense(bool v); - aggregate_of< IfcGrid >::ptr PartOfW() const; // INVERSE IfcGrid::WAxes - aggregate_of< IfcGrid >::ptr PartOfV() const; // INVERSE IfcGrid::VAxes - aggregate_of< IfcGrid >::ptr PartOfU() const; // INVERSE IfcGrid::UAxes - aggregate_of< IfcVirtualGridIntersection >::ptr HasIntersections() const; // INVERSE IfcVirtualGridIntersection::IntersectingAxes - virtual const IfcParse::entity& declaration() const; + void setSameSense(const bool& v); + std::vector< IfcGrid > PartOfW() const; // INVERSE IfcGrid::WAxes + std::vector< IfcGrid > PartOfV() const; // INVERSE IfcGrid::VAxes + std::vector< IfcGrid > PartOfU() const; // INVERSE IfcGrid::UAxes + std::vector< IfcVirtualGridIntersection > 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, ::Ifc4x3_add2::IfcCurve* v2_AxisCurve, bool v3_SameSense); - typedef aggregate_of< IfcGridAxis > list; + // IfcGridAxis (std::optional< std::string > v1_AxisTag, ::Ifc4x3_add2::IfcCurve v2_AxisCurve, bool v3_SameSense); }; /// The IfcIrregularTimeSeriesValue describes a value (or set of values) at a particular time point. /// /// HISTORY: New entity in IFC 2x2. -class IFC_PARSE_API IfcIrregularTimeSeriesValue : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcIrregularTimeSeriesValue : public express::Entity { public: + IfcIrregularTimeSeriesValue() {} + explicit IfcIrregularTimeSeriesValue (const std::weak_ptr& data) : express::Entity(data) {} + /// The specification of the time point. std::string TimeStamp() const; - void setTimeStamp(std::string v); + void setTimeStamp(const std::string& v); /// A list of time-series values. At least one value is required. - aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr ListValues() const; - void setListValues(aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcValue > ListValues() const; + void setListValues(const std::vector< ::Ifc4x3_add2::IfcValue >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcIrregularTimeSeriesValue (IfcEntityInstanceData&& e); - IfcIrregularTimeSeriesValue (std::string v1_TimeStamp, aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr v2_ListValues); - typedef aggregate_of< IfcIrregularTimeSeriesValue > list; + // IfcIrregularTimeSeriesValue (std::string v1_TimeStamp, std::vector< ::Ifc4x3_add2::IfcValue > v2_ListValues); }; /// An IfcLibraryInformation describes a library where a library is a structured store of information, normally organized in a manner which allows information lookup through an index or reference value. IfcLibraryInformation provides the library Name and optional Version, VersionDate and Publisher attributes. A Location may be added for electronic access to the library. /// @@ -10842,36 +14788,37 @@ public: /// Entity in IFC2x. /// /// IFC2x4 CHANGE  Location attribute added, HasLibraryReferences inverse attribute added (previous LibraryReference changed to inverse). -class IFC_PARSE_API IfcLibraryInformation : public IfcExternalInformation, public IfcLibrarySelect { +class IFC_PARSE_API IfcLibraryInformation : public IfcExternalInformation { public: + IfcLibraryInformation() {} + explicit IfcLibraryInformation (const std::weak_ptr& data) : IfcExternalInformation(data) {} + /// The name which is used to identify the library. std::string Name() const; - void setName(std::string v); + void setName(const std::string& v); /// Identifier for the library version used for reference. - boost::optional< std::string > Version() const; - void setVersion(boost::optional< std::string > v); + std::optional< std::string > Version() const; + void setVersion(const std::optional< std::string >& v); /// Information of the organization that acts as the library publisher. - ::Ifc4x3_add2::IfcActorSelect* Publisher() const; - void setPublisher(::Ifc4x3_add2::IfcActorSelect* v); + ::Ifc4x3_add2::IfcActorSelect Publisher() const; + void setPublisher(const ::Ifc4x3_add2::IfcActorSelect& v); /// Date of the referenced version of the library. /// /// IFC2x4 CHANGE  The data type has been changed to IfcDate, the date string according to ISO8601. - boost::optional< std::string > VersionDate() const; - void setVersionDate(boost::optional< std::string > v); + std::optional< std::string > VersionDate() const; + void setVersionDate(const std::optional< std::string >& v); /// Resource identifier or locator, provided as URI, URN or URL, of the library information for online references. /// /// IFC2x4 CHANGE  New attribute added at the end of the attribute list. - boost::optional< std::string > Location() const; - void setLocation(boost::optional< std::string > v); - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); - aggregate_of< IfcRelAssociatesLibrary >::ptr LibraryInfoForObjects() const; // INVERSE IfcRelAssociatesLibrary::RelatingLibrary - aggregate_of< IfcLibraryReference >::ptr HasLibraryReferences() const; // INVERSE IfcLibraryReference::ReferencedLibrary - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Location() const; + void setLocation(const std::optional< std::string >& v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); + std::vector< IfcRelAssociatesLibrary > LibraryInfoForObjects() const; // INVERSE IfcRelAssociatesLibrary::RelatingLibrary + std::vector< IfcLibraryReference > HasLibraryReferences() const; // INVERSE IfcLibraryReference::ReferencedLibrary + // 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, ::Ifc4x3_add2::IfcActorSelect* v3_Publisher, boost::optional< std::string > v4_VersionDate, boost::optional< std::string > v5_Location, boost::optional< std::string > v6_Description); - typedef aggregate_of< IfcLibraryInformation > list; + // IfcLibraryInformation (std::string v1_Name, std::optional< std::string > v2_Version, ::Ifc4x3_add2::IfcActorSelect v3_Publisher, std::optional< std::string > v4_VersionDate, std::optional< std::string > v5_Location, std::optional< std::string > v6_Description); }; /// An IfcLibraryReference is a reference into a library of information by Location (provided as a URI). It also provides an optional inherited Identification key to allow more specific references to library sections or tables. The inherited Name attribute allows for a human interpretable identification of the library item. Also, general information on the library from which the reference is taken, is given by the ReferencedLibrary relation which identifies the relevant occurrence of IfcLibraryInformation. /// @@ -10880,27 +14827,28 @@ public: /// HISTORY  New Entity in IFC2.0. /// /// IFC2x4 CHANGE  Description and Language attribute added; ReferencedLibrary attribute added (reversing previous ReferenceIntoLibrary inverse relationship). -class IFC_PARSE_API IfcLibraryReference : public IfcExternalReference, public IfcLibrarySelect { +class IFC_PARSE_API IfcLibraryReference : public IfcExternalReference { public: + IfcLibraryReference() {} + explicit IfcLibraryReference (const std::weak_ptr& data) : IfcExternalReference(data) {} + /// Additional description provided for the library reference. /// /// IFC2x4 CHANGE  New attribute added at the end of the attribute list. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// The language in which a library reference is expressed. /// /// IFC2x4 CHANGE  New attribute added at the end of the attribute list. - boost::optional< std::string > Language() const; - void setLanguage(boost::optional< std::string > v); + std::optional< std::string > Language() const; + void setLanguage(const std::optional< std::string >& v); /// The library information that is being referenced. - ::Ifc4x3_add2::IfcLibraryInformation* ReferencedLibrary() const; - void setReferencedLibrary(::Ifc4x3_add2::IfcLibraryInformation* v); - aggregate_of< IfcRelAssociatesLibrary >::ptr LibraryRefForObjects() const; // INVERSE IfcRelAssociatesLibrary::RelatingLibrary - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcLibraryInformation ReferencedLibrary() const; + void setReferencedLibrary(const ::Ifc4x3_add2::IfcLibraryInformation& v); + std::vector< IfcRelAssociatesLibrary > LibraryRefForObjects() const; // INVERSE IfcRelAssociatesLibrary::RelatingLibrary + // 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_Identification, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_Language, ::Ifc4x3_add2::IfcLibraryInformation* v6_ReferencedLibrary); - typedef aggregate_of< IfcLibraryReference > list; + // IfcLibraryReference (std::optional< std::string > v1_Location, std::optional< std::string > v2_Identification, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_Language, ::Ifc4x3_add2::IfcLibraryInformation v6_ReferencedLibrary); }; /// IfcLightDistributionData defines the luminous intensity of a light source given at a particular main plane angle. It is based on some standardized light distribution curves; the MainPlaneAngle is either the /// @@ -10917,41 +14865,43 @@ public: /// For each pair of MainPlaneAngle and SecondaryPlaneAngle the LuminousIntensity is provided (the unit is given by the IfcUnitAssignment referring to the LuminousIntensityDistributionUnit, normally cd/klm). /// /// HISTORY: New entity in IFC2x2. -class IFC_PARSE_API IfcLightDistributionData : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcLightDistributionData : public express::Entity { public: + IfcLightDistributionData() {} + explicit IfcLightDistributionData (const std::weak_ptr& data) : express::Entity(data) {} + /// The main plane angle (A, B or C angles, according to the light distribution curve chosen). double MainPlaneAngle() const; - void setMainPlaneAngle(double v); + void setMainPlaneAngle(const double& v); /// The list of secondary plane angles (the α, β or γ angles) according to the light distribution curve chosen. /// /// NOTE: The SecondaryPlaneAngle and LuminousIntensity lists are corresponding lists. std::vector< double > /*[1:?]*/ SecondaryPlaneAngle() const; - void setSecondaryPlaneAngle(std::vector< double > /*[1:?]*/ v); + void setSecondaryPlaneAngle(const std::vector< double > /*[1:?]*/& v); /// The luminous intensity distribution measure for this pair of main and secondary plane angles according to the light distribution curve chosen. std::vector< double > /*[1:?]*/ LuminousIntensity() const; - void setLuminousIntensity(std::vector< double > /*[1:?]*/ v); - virtual const IfcParse::entity& declaration() const; + void setLuminousIntensity(const 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 aggregate_of< IfcLightDistributionData > list; + // IfcLightDistributionData (double v1_MainPlaneAngle, std::vector< double > /*[1:?]*/ v2_SecondaryPlaneAngle, std::vector< double > /*[1:?]*/ v3_LuminousIntensity); }; /// IfcLightIntensityDistribution defines the the luminous intensity of a light source that changes according to the direction of the ray. It is based on some standardized light distribution curves, which are defined by the LightDistributionCurve attribute. /// /// New entity in IFC2x2. -class IFC_PARSE_API IfcLightIntensityDistribution : public IfcUtil::IfcBaseEntity, public IfcLightDistributionDataSourceSelect { +class IFC_PARSE_API IfcLightIntensityDistribution : public express::Entity { public: + IfcLightIntensityDistribution() {} + explicit IfcLightIntensityDistribution (const std::weak_ptr& data) : express::Entity(data) {} + /// Standardized light distribution curve used to define the luminous intensity of the light in all directions. ::Ifc4x3_add2::IfcLightDistributionCurveEnum::Value LightDistributionCurve() const; - void setLightDistributionCurve(::Ifc4x3_add2::IfcLightDistributionCurveEnum::Value v); + void setLightDistributionCurve(const ::Ifc4x3_add2::IfcLightDistributionCurveEnum::Value& v); /// Light distribution data applied to the light source. It is defined by a list of main plane angles (B or C according to the light distribution curve chosen) that includes (for each B or C angle) a second list of secondary plane angles (the β or γ angles) and the according luminous intensity distribution measures. - aggregate_of< ::Ifc4x3_add2::IfcLightDistributionData >::ptr DistributionData() const; - void setDistributionData(aggregate_of< ::Ifc4x3_add2::IfcLightDistributionData >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcLightDistributionData > DistributionData() const; + void setDistributionData(const std::vector< ::Ifc4x3_add2::IfcLightDistributionData >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLightIntensityDistribution (IfcEntityInstanceData&& e); - IfcLightIntensityDistribution (::Ifc4x3_add2::IfcLightDistributionCurveEnum::Value v1_LightDistributionCurve, aggregate_of< ::Ifc4x3_add2::IfcLightDistributionData >::ptr v2_DistributionData); - typedef aggregate_of< IfcLightIntensityDistribution > list; + // IfcLightIntensityDistribution (::Ifc4x3_add2::IfcLightDistributionCurveEnum::Value v1_LightDistributionCurve, std::vector< ::Ifc4x3_add2::IfcLightDistributionData > v2_DistributionData); }; /// The map conversion deals with transforming the local engineering coordinate system, often called world coordinate system, into the coordinate reference system of the underlying map. /// @@ -10964,72 +14914,75 @@ public: /// The scale factor can be used when the length unit for the 3 axes of the map coordinate system are not identical with the length unit established for this project (seeIfcProject.UnitsInContext), if omitted, the scale factor 1.0 is assumed. /// /// HISTORY  New entity in IFC2x4. -class IFC_PARSE_API IfcMapConversion : public IfcCoordinateOperation { +class IFC_PARSE_API IfcMapConversion : public IfcCoordinateOperation { public: + IfcMapConversion() {} + explicit IfcMapConversion (const std::weak_ptr& data) : IfcCoordinateOperation(data) {} + /// Specifies the location along the easting of the coordinate system of the target map coordinate reference system. /// NOTE  for right-handed Cartesian coordinate systems this would establish the location along the x axis double Eastings() const; - void setEastings(double v); + void setEastings(const double& v); /// Specifies the location along the northing of the coordinate system of the target map coordinate reference system. /// NOTE  for right-handed Cartesian coordinate systems this would establish the location along the y axis double Northings() const; - void setNorthings(double v); + void setNorthings(const double& v); /// Orthogonal height relativ to the vertical datum specified. /// NOTE  for right-handed Cartesian coordinate systems this would establish the location along the z axis double OrthogonalHeight() const; - void setOrthogonalHeight(double v); + void setOrthogonalHeight(const double& v); /// Specifies the value along the easing axis of the end point of a vector indicating the position of the local x axis of the engineering coordinate reference system. /// NOTE  for right-handed Cartesian coordinate systems this would establish the location along the x axis /// NOTE  together with the XAxisOrdinate it provides the direction of the local x axis within the horizontal plane of the map coordinate system - boost::optional< double > XAxisAbscissa() const; - void setXAxisAbscissa(boost::optional< double > v); + std::optional< double > XAxisAbscissa() const; + void setXAxisAbscissa(const std::optional< double >& v); /// Specifies the value along the northing axis of the end point of a vector indicating the position of the local x axis of the engineering coordinate reference system. /// NOTE  for right-handed Cartesian coordinate systems this would establish the location along the y axis /// NOTE  together with the XAxisAbscissa it provides the direction of the local x axis within the horizontal plane of the map coordinate system - boost::optional< double > XAxisOrdinate() const; - void setXAxisOrdinate(boost::optional< double > v); + std::optional< double > XAxisOrdinate() const; + void setXAxisOrdinate(const std::optional< double >& v); /// Scale to be used, when the units of the CRS are not identical to the units of the engineering coordinate system. If omited, the value of 1.0 is assumed. - boost::optional< double > Scale() const; - void setScale(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > Scale() const; + void setScale(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMapConversion (IfcEntityInstanceData&& e); - IfcMapConversion (::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect* v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem* v2_TargetCRS, double v3_Eastings, double v4_Northings, double v5_OrthogonalHeight, boost::optional< double > v6_XAxisAbscissa, boost::optional< double > v7_XAxisOrdinate, boost::optional< double > v8_Scale); - typedef aggregate_of< IfcMapConversion > list; + // IfcMapConversion (::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem v2_TargetCRS, double v3_Eastings, double v4_Northings, double v5_OrthogonalHeight, std::optional< double > v6_XAxisAbscissa, std::optional< double > v7_XAxisOrdinate, std::optional< double > v8_Scale); }; -class IFC_PARSE_API IfcMapConversionScaled : public IfcMapConversion { +class IFC_PARSE_API IfcMapConversionScaled : public IfcMapConversion { public: + IfcMapConversionScaled() {} + explicit IfcMapConversionScaled (const std::weak_ptr& data) : IfcMapConversion(data) {} + double FactorX() const; - void setFactorX(double v); + void setFactorX(const double& v); double FactorY() const; - void setFactorY(double v); + void setFactorY(const double& v); double FactorZ() const; - void setFactorZ(double v); - virtual const IfcParse::entity& declaration() const; + void setFactorZ(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMapConversionScaled (IfcEntityInstanceData&& e); - IfcMapConversionScaled (::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect* v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem* v2_TargetCRS, double v3_Eastings, double v4_Northings, double v5_OrthogonalHeight, boost::optional< double > v6_XAxisAbscissa, boost::optional< double > v7_XAxisOrdinate, boost::optional< double > v8_Scale, double v9_FactorX, double v10_FactorY, double v11_FactorZ); - typedef aggregate_of< IfcMapConversionScaled > list; + // IfcMapConversionScaled (::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem v2_TargetCRS, double v3_Eastings, double v4_Northings, double v5_OrthogonalHeight, std::optional< double > v6_XAxisAbscissa, std::optional< double > v7_XAxisOrdinate, std::optional< double > v8_Scale, double v9_FactorX, double v10_FactorY, double v11_FactorZ); }; /// IfcMaterialClassificationRelationship is a relationship assigning classifications to materials. /// /// HISTORY New entity in IFC2x. /// /// IFC2x4 CHANGE The entity IfcMaterialClassificationRelationship is deprecated since IFC2x4 and shall no longer be used. Use IfcExternalReferenceRelationship instead. -class IFC_PARSE_API IfcMaterialClassificationRelationship : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcMaterialClassificationRelationship : public express::Entity { public: + IfcMaterialClassificationRelationship() {} + explicit IfcMaterialClassificationRelationship (const std::weak_ptr& data) : express::Entity(data) {} + /// The material classifications identifying the type of material. - aggregate_of< ::Ifc4x3_add2::IfcClassificationSelect >::ptr MaterialClassifications() const; - void setMaterialClassifications(aggregate_of< ::Ifc4x3_add2::IfcClassificationSelect >::ptr v); + std::vector< ::Ifc4x3_add2::IfcClassificationSelect > MaterialClassifications() const; + void setMaterialClassifications(const std::vector< ::Ifc4x3_add2::IfcClassificationSelect >& v); /// Material being classified. - ::Ifc4x3_add2::IfcMaterial* ClassifiedMaterial() const; - void setClassifiedMaterial(::Ifc4x3_add2::IfcMaterial* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcMaterial ClassifiedMaterial() const; + void setClassifiedMaterial(const ::Ifc4x3_add2::IfcMaterial& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialClassificationRelationship (IfcEntityInstanceData&& e); - IfcMaterialClassificationRelationship (aggregate_of< ::Ifc4x3_add2::IfcClassificationSelect >::ptr v1_MaterialClassifications, ::Ifc4x3_add2::IfcMaterial* v2_ClassifiedMaterial); - typedef aggregate_of< IfcMaterialClassificationRelationship > list; + // IfcMaterialClassificationRelationship (std::vector< ::Ifc4x3_add2::IfcClassificationSelect > v1_MaterialClassifications, ::Ifc4x3_add2::IfcMaterial v2_ClassifiedMaterial); }; /// IfcMaterialDefinition is a general supertype for all /// material related information items in IFC that have common @@ -11055,16 +15008,17 @@ public: /// IfcRelAssociatesMaterial. /// /// HISTORY New entity in IFC2x4 -class IFC_PARSE_API IfcMaterialDefinition : public IfcUtil::IfcBaseEntity, public IfcMaterialSelect, public IfcObjectReferenceSelect, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcMaterialDefinition : public express::Entity { public: - aggregate_of< IfcRelAssociatesMaterial >::ptr AssociatedTo() const; // INVERSE IfcRelAssociatesMaterial::RelatingMaterial - aggregate_of< IfcExternalReferenceRelationship >::ptr HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects - aggregate_of< IfcMaterialProperties >::ptr HasProperties() const; // INVERSE IfcMaterialProperties::Material - virtual const IfcParse::entity& declaration() const; + IfcMaterialDefinition() {} + explicit IfcMaterialDefinition (const std::weak_ptr& data) : express::Entity(data) {} + + std::vector< IfcRelAssociatesMaterial > AssociatedTo() const; // INVERSE IfcRelAssociatesMaterial::RelatingMaterial + std::vector< IfcExternalReferenceRelationship > HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects + std::vector< IfcMaterialProperties > HasProperties() const; // INVERSE IfcMaterialProperties::Material + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialDefinition (IfcEntityInstanceData&& e); - IfcMaterialDefinition (); - typedef aggregate_of< IfcMaterialDefinition > list; + // IfcMaterialDefinition (); }; /// IfcMaterialLayer is a single and identifiable part of an element which is constructed of a number of layers (one or more). Each IfcMaterialLayer has a constant thickness and is located relative to the referencing IfcMaterialLayerSet along the MlsBase. /// @@ -11089,43 +15043,44 @@ public: /// HISTORY  New entity in IFC 1.5 /// /// IFC2x4 CHANGE  The attributes Name, Description, Category, Priority have been added at the end of attribute list. Data type of LayerThickness relaxed to IfcNonNegativeLengthMeasure. -class IFC_PARSE_API IfcMaterialLayer : public IfcMaterialDefinition { +class IFC_PARSE_API IfcMaterialLayer : public IfcMaterialDefinition { public: + IfcMaterialLayer() {} + explicit IfcMaterialLayer (const std::weak_ptr& data) : IfcMaterialDefinition(data) {} + /// Optional reference to the material from which the layer is constructed. Note that if this value is not given, it does not denote a layer with no material (an air gap), it only means that the material is not specified at that point. - ::Ifc4x3_add2::IfcMaterial* Material() const; - void setMaterial(::Ifc4x3_add2::IfcMaterial* v); + ::Ifc4x3_add2::IfcMaterial Material() const; + void setMaterial(const ::Ifc4x3_add2::IfcMaterial& v); /// The thickness of the material layer. The dimension is measured along the positive MlsDirection as specified in IfcMaterialLayerSet (that is mapped to AXIS-2, as specified in IfcMaterialLayerSetUsage for element occurrences supporting IfcMaterialLayerSetUsage. /// /// NOTE  The attribute value can be 0. for material thicknesses very close to zero, such as for a membrane. Material layers with thickess 0. shall not be rendered in the geometric representation. /// /// IFC2x4 CHANGE  The attribute datatype has been changed to IfcNonNegativeLengthMeasure allowing for 0. as thickness. double LayerThickness() const; - void setLayerThickness(double v); + void setLayerThickness(const double& v); /// Indication of whether the material layer represents an air layer (or cavity). /// /// set to TRUE if the material layer is an air gap and provides air exchange from the layer to the outside air. /// set to UNKNOWN if the material layer is an air gap and does not provide air exchange (or when this information about air exchange of the air gap is not available). /// set to FALSE if the material layer is a solid material layer (the default). - boost::optional< boost::logic::tribool > IsVentilated() const; - void setIsVentilated(boost::optional< boost::logic::tribool > v); + std::optional< boost::logic::tribool > IsVentilated() const; + void setIsVentilated(const std::optional< boost::logic::tribool >& v); /// The name by which the material layer is known. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// Definition of the material layer in more descriptive terms than given by attributes Name or Category. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// Category of the material layer, e.g. the role it has in the layer set it belongs to (such as 'load bearing', 'thermal insulation' etc.). - boost::optional< std::string > Category() const; - void setCategory(boost::optional< std::string > v); + std::optional< std::string > Category() const; + void setCategory(const std::optional< std::string >& v); /// The relative priority of the layer, expressed as ratio measure, normalised to 0..1. Controls how layers intersect in connections and corners of building elements: a layer from one element protrudes into (i.e. displaces) a layer from another element in a joint of these elements if the former element's layer has higher priority than the latter. The priorty value for a material layer in an element has to be set and maintained by software applications, in relation to the material layers in connected elements. The usage has to be further specified for each element, especially to avoid simultanious use with IfcLayerOffset. - boost::optional< int > Priority() const; - void setPriority(boost::optional< int > v); - aggregate_of< IfcMaterialLayerSet >::ptr ToMaterialLayerSet() const; // INVERSE IfcMaterialLayerSet::MaterialLayers - virtual const IfcParse::entity& declaration() const; + std::optional< int > Priority() const; + void setPriority(const std::optional< int >& v); + std::vector< IfcMaterialLayerSet > ToMaterialLayerSet() const; // INVERSE IfcMaterialLayerSet::MaterialLayers + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialLayer (IfcEntityInstanceData&& e); - IfcMaterialLayer (::Ifc4x3_add2::IfcMaterial* v1_Material, double v2_LayerThickness, boost::optional< boost::logic::tribool > v3_IsVentilated, boost::optional< std::string > v4_Name, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Category, boost::optional< int > v7_Priority); - typedef aggregate_of< IfcMaterialLayer > list; + // IfcMaterialLayer (::Ifc4x3_add2::IfcMaterial v1_Material, double v2_LayerThickness, std::optional< boost::logic::tribool > v3_IsVentilated, std::optional< std::string > v4_Name, std::optional< std::string > v5_Description, std::optional< std::string > v6_Category, std::optional< int > v7_Priority); }; /// IfcMaterialLayerSet is a designation by which materials of an element constructed of a number of material layers is known and through which the relative positioning of individual layers can be expressed. /// @@ -11160,24 +15115,25 @@ public: /// placed on top of the previous (no gaps or overlaps). /// /// Figure 285 — Material layer set -class IFC_PARSE_API IfcMaterialLayerSet : public IfcMaterialDefinition { +class IFC_PARSE_API IfcMaterialLayerSet : public IfcMaterialDefinition { public: + IfcMaterialLayerSet() {} + explicit IfcMaterialLayerSet (const std::weak_ptr& data) : IfcMaterialDefinition(data) {} + /// Identification of the layers from which the material layer set is composed. - aggregate_of< ::Ifc4x3_add2::IfcMaterialLayer >::ptr MaterialLayers() const; - void setMaterialLayers(aggregate_of< ::Ifc4x3_add2::IfcMaterialLayer >::ptr v); + std::vector< ::Ifc4x3_add2::IfcMaterialLayer > MaterialLayers() const; + void setMaterialLayers(const std::vector< ::Ifc4x3_add2::IfcMaterialLayer >& v); /// The name by which the material layer set is known. - boost::optional< std::string > LayerSetName() const; - void setLayerSetName(boost::optional< std::string > v); + std::optional< std::string > LayerSetName() const; + void setLayerSetName(const std::optional< std::string >& v); /// Definition of the material layer set in descriptive terms. /// /// IFC2x4 CHANGE  The attribute has been added at the end of attribute list. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialLayerSet (IfcEntityInstanceData&& e); - IfcMaterialLayerSet (aggregate_of< ::Ifc4x3_add2::IfcMaterialLayer >::ptr v1_MaterialLayers, boost::optional< std::string > v2_LayerSetName, boost::optional< std::string > v3_Description); - typedef aggregate_of< IfcMaterialLayerSet > list; + // IfcMaterialLayerSet (std::vector< ::Ifc4x3_add2::IfcMaterialLayer > v1_MaterialLayers, std::optional< std::string > v2_LayerSetName, std::optional< std::string > v3_Description); }; /// IfcMaterialLayerWithOffsets is a specialization of IfcMaterialLayer enabling definition /// of offset values along edges (within the material layer set usage in parent layer set). @@ -11222,19 +15178,20 @@ public: /// Figure 289 shows an example of applying the OffsetValues to the material layers of a standard wall. /// /// Figure 289 — Material layer with offsets -class IFC_PARSE_API IfcMaterialLayerWithOffsets : public IfcMaterialLayer { +class IFC_PARSE_API IfcMaterialLayerWithOffsets : public IfcMaterialLayer { public: + IfcMaterialLayerWithOffsets() {} + explicit IfcMaterialLayerWithOffsets (const std::weak_ptr& data) : IfcMaterialLayer(data) {} + /// Orientation of the offset; shall be perpendicular to the parent layer set direction. ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value OffsetDirection() const; - void setOffsetDirection(::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value v); + void setOffsetDirection(const ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value& v); /// The numerical value of layer offset, in the direction of the axis assigned by the attribute OffsetDirection. The OffsetValues[1] identifies the offset from the lower position along the axis direction (normally the start of the standard extrusion), the OffsetValues[2] identifies the offset from the upper position along the axis direction (normally the end of the standard extrusion), std::vector< double > /*[1:2]*/ OffsetValues() const; - void setOffsetValues(std::vector< double > /*[1:2]*/ v); - virtual const IfcParse::entity& declaration() const; + void setOffsetValues(const std::vector< double > /*[1:2]*/& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialLayerWithOffsets (IfcEntityInstanceData&& e); - IfcMaterialLayerWithOffsets (::Ifc4x3_add2::IfcMaterial* v1_Material, double v2_LayerThickness, boost::optional< boost::logic::tribool > v3_IsVentilated, boost::optional< std::string > v4_Name, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Category, boost::optional< int > v7_Priority, ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value v8_OffsetDirection, std::vector< double > /*[1:2]*/ v9_OffsetValues); - typedef aggregate_of< IfcMaterialLayerWithOffsets > list; + // IfcMaterialLayerWithOffsets (::Ifc4x3_add2::IfcMaterial v1_Material, double v2_LayerThickness, std::optional< boost::logic::tribool > v3_IsVentilated, std::optional< std::string > v4_Name, std::optional< std::string > v5_Description, std::optional< std::string > v6_Category, std::optional< int > v7_Priority, ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value v8_OffsetDirection, std::vector< double > /*[1:2]*/ v9_OffsetValues); }; /// IfcMaterialList is a list of the different materials /// that are used in an element. @@ -11253,92 +15210,96 @@ public: /// /// IFC2x4 CHANGE The entity IfcMaterialList is deprecated and shall no longer /// be used. Use IfcMaterialConstituentSet instead. -class IFC_PARSE_API IfcMaterialList : public IfcUtil::IfcBaseEntity, public IfcMaterialSelect { +class IFC_PARSE_API IfcMaterialList : public express::Entity { public: + IfcMaterialList() {} + explicit IfcMaterialList (const std::weak_ptr& data) : express::Entity(data) {} + /// Materials used in a composition of substances. - aggregate_of< ::Ifc4x3_add2::IfcMaterial >::ptr Materials() const; - void setMaterials(aggregate_of< ::Ifc4x3_add2::IfcMaterial >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcMaterial > Materials() const; + void setMaterials(const std::vector< ::Ifc4x3_add2::IfcMaterial >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialList (IfcEntityInstanceData&& e); - IfcMaterialList (aggregate_of< ::Ifc4x3_add2::IfcMaterial >::ptr v1_Materials); - typedef aggregate_of< IfcMaterialList > list; + // IfcMaterialList (std::vector< ::Ifc4x3_add2::IfcMaterial > v1_Materials); }; /// IfcMaterialProfile is a single and identifiable part of an element which is constructed of a number of profiles (one or more). /// /// NOTE In case of multiple MaterialProfiles, the relative positioning of individual profiles in IfcMaterialProfileSet are defined using the concept of IfcCompositeProfileDef in IfcProfileResource schema; otherwise, only one MaterialProfile is given and defined by an individual IfcProfileDef (subtype). /// /// HISTORYNew Entity in IFC2x4 -class IFC_PARSE_API IfcMaterialProfile : public IfcMaterialDefinition { +class IFC_PARSE_API IfcMaterialProfile : public IfcMaterialDefinition { public: + IfcMaterialProfile() {} + explicit IfcMaterialProfile (const std::weak_ptr& data) : IfcMaterialDefinition(data) {} + /// The name by which the material profile is known. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// Definition of the material profile in descriptive terms. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// Optional reference to the material from which the profile is constructed. - ::Ifc4x3_add2::IfcMaterial* Material() const; - void setMaterial(::Ifc4x3_add2::IfcMaterial* v); + ::Ifc4x3_add2::IfcMaterial Material() const; + void setMaterial(const ::Ifc4x3_add2::IfcMaterial& v); /// Identification of the profile for which this material profile is associating material. - ::Ifc4x3_add2::IfcProfileDef* Profile() const; - void setProfile(::Ifc4x3_add2::IfcProfileDef* v); + ::Ifc4x3_add2::IfcProfileDef Profile() const; + void setProfile(const ::Ifc4x3_add2::IfcProfileDef& v); /// The relative priority of the profile, expressed as ratio measure, normalised to 0..1. Controls how profiles intersect in connections and corners of building elements: a profile from one element protrudes into (i.e. displaces) a profile from another element in a joint of these elements if the former element's profile has higher priority than the latter. The priorty value for a material profile in an element has to be set and maintained by software applications, in relation to the material profiles in connected elements. - boost::optional< int > Priority() const; - void setPriority(boost::optional< int > v); + std::optional< int > Priority() const; + void setPriority(const std::optional< int >& v); /// Category of the material profile, e.g. the role it has in the profile set it belongs to. - boost::optional< std::string > Category() const; - void setCategory(boost::optional< std::string > v); - aggregate_of< IfcMaterialProfileSet >::ptr ToMaterialProfileSet() const; // INVERSE IfcMaterialProfileSet::MaterialProfiles - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Category() const; + void setCategory(const std::optional< std::string >& v); + std::vector< IfcMaterialProfileSet > ToMaterialProfileSet() const; // INVERSE IfcMaterialProfileSet::MaterialProfiles + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialProfile (IfcEntityInstanceData&& e); - IfcMaterialProfile (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial* v3_Material, ::Ifc4x3_add2::IfcProfileDef* v4_Profile, boost::optional< int > v5_Priority, boost::optional< std::string > v6_Category); - typedef aggregate_of< IfcMaterialProfile > list; + // IfcMaterialProfile (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial v3_Material, ::Ifc4x3_add2::IfcProfileDef v4_Profile, std::optional< int > v5_Priority, std::optional< std::string > v6_Category); }; /// IfcMaterialProfileSet is a designation by which individual material(s) of a prismatic element (for example, beam or column) constructed of a single or multiple material profiles is known. If only a single material profile is used (the most typical case) then no CompositeProfile is asserted. /// /// NOTE In case of multiple MaterialProfiles, the relative positioning of individual profiles in IfcMaterialProfileSet are defined using the concept of IfcCompositeProfileDef in IfcProfileResource schema; otherwise, only one MaterialProfile is given and defined by an individual IfcProfileDef (subtype). /// /// HISTORYNew Entity in IFC2x4. -class IFC_PARSE_API IfcMaterialProfileSet : public IfcMaterialDefinition { +class IFC_PARSE_API IfcMaterialProfileSet : public IfcMaterialDefinition { public: + IfcMaterialProfileSet() {} + explicit IfcMaterialProfileSet (const std::weak_ptr& data) : IfcMaterialDefinition(data) {} + /// The name by which the material profile set is known. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// Definition of the material profile set in descriptive terms. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// Identification of the profiles from which the material profile set is composed. - aggregate_of< ::Ifc4x3_add2::IfcMaterialProfile >::ptr MaterialProfiles() const; - void setMaterialProfiles(aggregate_of< ::Ifc4x3_add2::IfcMaterialProfile >::ptr v); + std::vector< ::Ifc4x3_add2::IfcMaterialProfile > MaterialProfiles() const; + void setMaterialProfiles(const std::vector< ::Ifc4x3_add2::IfcMaterialProfile >& v); /// Reference to the composite profile definition for which this material profile set associates material to each of its individual profile. /// /// NOTE   /// The referenced IfcCompositeProfileDef instance shall be composed of all of the IfcProfileDef instances which are used via the MaterialProfiles list in the current IfcMaterialProfileSet . - ::Ifc4x3_add2::IfcCompositeProfileDef* CompositeProfile() const; - void setCompositeProfile(::Ifc4x3_add2::IfcCompositeProfileDef* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcCompositeProfileDef CompositeProfile() const; + void setCompositeProfile(const ::Ifc4x3_add2::IfcCompositeProfileDef& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialProfileSet (IfcEntityInstanceData&& e); - IfcMaterialProfileSet (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcMaterialProfile >::ptr v3_MaterialProfiles, ::Ifc4x3_add2::IfcCompositeProfileDef* v4_CompositeProfile); - typedef aggregate_of< IfcMaterialProfileSet > list; + // IfcMaterialProfileSet (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcMaterialProfile > v3_MaterialProfiles, ::Ifc4x3_add2::IfcCompositeProfileDef v4_CompositeProfile); }; /// IfcMaterialProfileWithOffsets is a specialization of IfcMaterialProfile enabling definition offset values for profile start or end in its use in parent material profile set usage. /// /// Relative positions of IfcMaterialProfileWithOffsets in the longitudinal direction of an element can be defined giving offsets at the start and end. This shall not be used for relative positions of individual profiles in the plane of profile definition, which is given in composite profile definition itself. Also, care should be taken especially when used with IfcMaterialProfileSetUsageTapering for correct start and end offset assignement. /// /// HISTORY New Entity in IFC2x4. -class IFC_PARSE_API IfcMaterialProfileWithOffsets : public IfcMaterialProfile { +class IFC_PARSE_API IfcMaterialProfileWithOffsets : public IfcMaterialProfile { public: + IfcMaterialProfileWithOffsets() {} + explicit IfcMaterialProfileWithOffsets (const std::weak_ptr& data) : IfcMaterialProfile(data) {} + /// The numerical value of profile offset, in the direction of the axis direction - always AXIS1 i.e. the axis along the extrusion path. The OffsetValues[1] identifies the offset from the lower position along the axis direction (normally the start of the standard extrusion), the OffsetValues[2] identifies the offset from the upper position along the axis direction (normally the end of the standard extrusion), std::vector< double > /*[1:2]*/ OffsetValues() const; - void setOffsetValues(std::vector< double > /*[1:2]*/ v); - virtual const IfcParse::entity& declaration() const; + void setOffsetValues(const std::vector< double > /*[1:2]*/& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialProfileWithOffsets (IfcEntityInstanceData&& e); - IfcMaterialProfileWithOffsets (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial* v3_Material, ::Ifc4x3_add2::IfcProfileDef* v4_Profile, boost::optional< int > v5_Priority, boost::optional< std::string > v6_Category, std::vector< double > /*[1:2]*/ v7_OffsetValues); - typedef aggregate_of< IfcMaterialProfileWithOffsets > list; + // IfcMaterialProfileWithOffsets (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial v3_Material, ::Ifc4x3_add2::IfcProfileDef v4_Profile, std::optional< int > v5_Priority, std::optional< std::string > v6_Category, std::vector< double > /*[1:2]*/ v7_OffsetValues); }; /// IfcMaterialUsageDefinition is a general supertype for all /// material related information items in IFC that have occurrence @@ -11371,14 +15332,15 @@ public: /// IfcMaterialUsageDefinition to a subtype of /// IfcElementType, it shall only be assigned to an element /// occurrence. -class IFC_PARSE_API IfcMaterialUsageDefinition : public IfcUtil::IfcBaseEntity, public IfcMaterialSelect { +class IFC_PARSE_API IfcMaterialUsageDefinition : public express::Entity { public: - aggregate_of< IfcRelAssociatesMaterial >::ptr AssociatedTo() const; // INVERSE IfcRelAssociatesMaterial::RelatingMaterial - virtual const IfcParse::entity& declaration() const; + IfcMaterialUsageDefinition() {} + explicit IfcMaterialUsageDefinition (const std::weak_ptr& data) : express::Entity(data) {} + + std::vector< IfcRelAssociatesMaterial > AssociatedTo() const; // INVERSE IfcRelAssociatesMaterial::RelatingMaterial + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialUsageDefinition (IfcEntityInstanceData&& e); - IfcMaterialUsageDefinition (); - typedef aggregate_of< IfcMaterialUsageDefinition > list; + // IfcMaterialUsageDefinition (); }; /// Definition from ISO/CD 10303-41:1992: A measure with unit is the specification of a physical quantity as defined in ISO 31 (clause 2). /// @@ -11390,19 +15352,20 @@ public: /// NOTE Corresponding ISO 10303 name: measure_with_unit, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New entity in IFC Release 1.5.1. -class IFC_PARSE_API IfcMeasureWithUnit : public IfcUtil::IfcBaseEntity, public IfcAppliedValueSelect, public IfcMetricValueSelect { +class IFC_PARSE_API IfcMeasureWithUnit : public express::Entity { public: + IfcMeasureWithUnit() {} + explicit IfcMeasureWithUnit (const std::weak_ptr& data) : express::Entity(data) {} + /// The value of the physical quantity when expressed in the specified units. - ::Ifc4x3_add2::IfcValue* ValueComponent() const; - void setValueComponent(::Ifc4x3_add2::IfcValue* v); + ::Ifc4x3_add2::IfcValue ValueComponent() const; + void setValueComponent(const ::Ifc4x3_add2::IfcValue& v); /// The unit in which the physical quantity is expressed. - ::Ifc4x3_add2::IfcUnit* UnitComponent() const; - void setUnitComponent(::Ifc4x3_add2::IfcUnit* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcUnit UnitComponent() const; + void setUnitComponent(const ::Ifc4x3_add2::IfcUnit& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMeasureWithUnit (IfcEntityInstanceData&& e); - IfcMeasureWithUnit (::Ifc4x3_add2::IfcValue* v1_ValueComponent, ::Ifc4x3_add2::IfcUnit* v2_UnitComponent); - typedef aggregate_of< IfcMeasureWithUnit > list; + // IfcMeasureWithUnit (::Ifc4x3_add2::IfcValue v1_ValueComponent, ::Ifc4x3_add2::IfcUnit v2_UnitComponent); }; /// An IfcMetric is used to capture quantitative resultant metrics that can be applied to objectives. /// @@ -11456,59 +15419,62 @@ public: /// HARD /// /// This constraint (instantiated as IfcMetric) uses a Date/Time value in IfcMetric.DataValue through IfcMetricValueSelect. An appropriate benchmark is applied according to the requirement of the constraint (as indicated) by IfcMetric.Benchmark. The grade of the constraint (hard, soft, advisory) must be specified through IfcConstraint.ConstraintGrade whilst the time at which the constraint is created may be optionally asserted through IfcConstraint.CreationTime. -class IFC_PARSE_API IfcMetric : public IfcConstraint { +class IFC_PARSE_API IfcMetric : public IfcConstraint { public: + IfcMetric() {} + explicit IfcMetric (const std::weak_ptr& data) : IfcConstraint(data) {} + /// Enumeration that identifies the type of benchmark data. ::Ifc4x3_add2::IfcBenchmarkEnum::Value Benchmark() const; - void setBenchmark(::Ifc4x3_add2::IfcBenchmarkEnum::Value v); + void setBenchmark(const ::Ifc4x3_add2::IfcBenchmarkEnum::Value& v); /// Reference source for data values. - boost::optional< std::string > ValueSource() const; - void setValueSource(boost::optional< std::string > v); + std::optional< std::string > ValueSource() const; + void setValueSource(const std::optional< std::string >& v); /// The value with data type defined by the underlying type accesses via IfcMetricValueSelect. - ::Ifc4x3_add2::IfcMetricValueSelect* DataValue() const; - void setDataValue(::Ifc4x3_add2::IfcMetricValueSelect* v); - ::Ifc4x3_add2::IfcReference* ReferencePath() const; - void setReferencePath(::Ifc4x3_add2::IfcReference* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcMetricValueSelect DataValue() const; + void setDataValue(const ::Ifc4x3_add2::IfcMetricValueSelect& v); + ::Ifc4x3_add2::IfcReference ReferencePath() const; + void setReferencePath(const ::Ifc4x3_add2::IfcReference& 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, ::Ifc4x3_add2::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc4x3_add2::IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, ::Ifc4x3_add2::IfcBenchmarkEnum::Value v8_Benchmark, boost::optional< std::string > v9_ValueSource, ::Ifc4x3_add2::IfcMetricValueSelect* v10_DataValue, ::Ifc4x3_add2::IfcReference* v11_ReferencePath); - typedef aggregate_of< IfcMetric > list; + // IfcMetric (std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcConstraintEnum::Value v3_ConstraintGrade, std::optional< std::string > v4_ConstraintSource, ::Ifc4x3_add2::IfcActorSelect v5_CreatingActor, std::optional< std::string > v6_CreationTime, std::optional< std::string > v7_UserDefinedGrade, ::Ifc4x3_add2::IfcBenchmarkEnum::Value v8_Benchmark, std::optional< std::string > v9_ValueSource, ::Ifc4x3_add2::IfcMetricValueSelect v10_DataValue, ::Ifc4x3_add2::IfcReference v11_ReferencePath); }; /// IfcMonetaryUnit is a unit to define currency for money. /// /// HISTORY: New entity in IFC Release 2x. /// /// IFC2x4 CHANGE: Type of the attribute Currency changed. -class IFC_PARSE_API IfcMonetaryUnit : public IfcUtil::IfcBaseEntity, public IfcUnit { +class IFC_PARSE_API IfcMonetaryUnit : public express::Entity { public: + IfcMonetaryUnit() {} + explicit IfcMonetaryUnit (const std::weak_ptr& data) : express::Entity(data) {} + /// Code or name of the currency. Permissible values are the three-letter alphabetic currency codes as per ISO 4217, for example CNY, EUR, GBP, JPY, USD. std::string Currency() const; - void setCurrency(std::string v); - virtual const IfcParse::entity& declaration() const; + void setCurrency(const std::string& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMonetaryUnit (IfcEntityInstanceData&& e); - IfcMonetaryUnit (std::string v1_Currency); - typedef aggregate_of< IfcMonetaryUnit > list; + // IfcMonetaryUnit (std::string v1_Currency); }; /// Definition from ISO/CD 10303-41:1992: A named unit is a unit quantity associated with the word, or group of words, by which the unit is identified. /// /// NOTE Corresponding ISO 10303 name: named_unit, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New type in IFC Release 1.5.1. -class IFC_PARSE_API IfcNamedUnit : public IfcUtil::IfcBaseEntity, public IfcUnit { +class IFC_PARSE_API IfcNamedUnit : public express::Entity { public: + IfcNamedUnit() {} + explicit IfcNamedUnit (const std::weak_ptr& data) : express::Entity(data) {} + /// The dimensional exponents of the SI base units by which the named unit is defined. - ::Ifc4x3_add2::IfcDimensionalExponents* Dimensions() const; - void setDimensions(::Ifc4x3_add2::IfcDimensionalExponents* v); + ::Ifc4x3_add2::IfcDimensionalExponents Dimensions() const; + void setDimensions(const ::Ifc4x3_add2::IfcDimensionalExponents& v); /// The type of the unit. ::Ifc4x3_add2::IfcUnitEnum::Value UnitType() const; - void setUnitType(::Ifc4x3_add2::IfcUnitEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setUnitType(const ::Ifc4x3_add2::IfcUnitEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcNamedUnit (IfcEntityInstanceData&& e); - IfcNamedUnit (::Ifc4x3_add2::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType); - typedef aggregate_of< IfcNamedUnit > list; + // IfcNamedUnit (::Ifc4x3_add2::IfcDimensionalExponents v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType); }; /// IfcObjectPlacement is an abstract supertype for the special types defining the object coordinate system. The /// IfcObjectPlacement has to be provided for each product that has a shape representation. @@ -11521,17 +15487,18 @@ public: /// In any case the object placement has to unambiguously define the object coordinate system as either two-dimensional axis placement (IfcAxis2Placement2D) or three-dimensional axis placement (IfcAxis2Placement3D). The axis placement may have to be calculated. /// /// HISTORY New entity in IFC Release 2x. -class IFC_PARSE_API IfcObjectPlacement : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcObjectPlacement : public express::Entity { public: - ::Ifc4x3_add2::IfcObjectPlacement* PlacementRelTo() const; - void setPlacementRelTo(::Ifc4x3_add2::IfcObjectPlacement* v); - aggregate_of< IfcProduct >::ptr PlacesObject() const; // INVERSE IfcProduct::ObjectPlacement - aggregate_of< IfcObjectPlacement >::ptr ReferencedByPlacements() const; // INVERSE IfcObjectPlacement::PlacementRelTo - virtual const IfcParse::entity& declaration() const; + IfcObjectPlacement() {} + explicit IfcObjectPlacement (const std::weak_ptr& data) : express::Entity(data) {} + + ::Ifc4x3_add2::IfcObjectPlacement PlacementRelTo() const; + void setPlacementRelTo(const ::Ifc4x3_add2::IfcObjectPlacement& v); + std::vector< IfcProduct > PlacesObject() const; // INVERSE IfcProduct::ObjectPlacement + std::vector< IfcObjectPlacement > ReferencedByPlacements() const; // INVERSE IfcObjectPlacement::PlacementRelTo + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcObjectPlacement (IfcEntityInstanceData&& e); - IfcObjectPlacement (::Ifc4x3_add2::IfcObjectPlacement* v1_PlacementRelTo); - typedef aggregate_of< IfcObjectPlacement > list; + // IfcObjectPlacement (::Ifc4x3_add2::IfcObjectPlacement v1_PlacementRelTo); }; /// An IfcObjective captures qualitative information for an objective-based constraint. /// @@ -11542,24 +15509,25 @@ public: /// IfcObjective is a subtype of IfcConstraint and may be associated with any subtype of IfcRoot through the IfcRelAssociatesConstraint relationship in the IfcControlExtension schema, or may be associated with IfcProperty by IfcPropertyConstraintRelationship. /// /// The aim of IfcObjective is to specify the purpose for which the constraint is applied and to capture the values of the constraint. These may be both the benchmark values that are intended to indicate the constraint extent and the resulting values in use that enable performance comparisons to be applied. -class IFC_PARSE_API IfcObjective : public IfcConstraint { +class IFC_PARSE_API IfcObjective : public IfcConstraint { public: + IfcObjective() {} + explicit IfcObjective (const std::weak_ptr& data) : IfcConstraint(data) {} + /// A list of any benchmark values used for comparison purposes. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcConstraint >::ptr > BenchmarkValues() const; - void setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcConstraint >::ptr > v); - boost::optional< ::Ifc4x3_add2::IfcLogicalOperatorEnum::Value > LogicalAggregator() const; - void setLogicalAggregator(boost::optional< ::Ifc4x3_add2::IfcLogicalOperatorEnum::Value > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcConstraint > > BenchmarkValues() const; + void setBenchmarkValues(const std::optional< std::vector< ::Ifc4x3_add2::IfcConstraint > >& v); + std::optional< ::Ifc4x3_add2::IfcLogicalOperatorEnum::Value > LogicalAggregator() const; + void setLogicalAggregator(const std::optional< ::Ifc4x3_add2::IfcLogicalOperatorEnum::Value >& v); /// Enumeration that qualifies the type of objective constraint. ::Ifc4x3_add2::IfcObjectiveEnum::Value ObjectiveQualifier() const; - void setObjectiveQualifier(::Ifc4x3_add2::IfcObjectiveEnum::Value v); + void setObjectiveQualifier(const ::Ifc4x3_add2::IfcObjectiveEnum::Value& v); /// A user defined value that qualifies the type of objective constraint when ObjectiveQualifier attribute of type IfcObjectiveEnum has value USERDEFINED. - boost::optional< std::string > UserDefinedQualifier() const; - void setUserDefinedQualifier(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > UserDefinedQualifier() const; + void setUserDefinedQualifier(const std::optional< 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, ::Ifc4x3_add2::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc4x3_add2::IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcConstraint >::ptr > v8_BenchmarkValues, boost::optional< ::Ifc4x3_add2::IfcLogicalOperatorEnum::Value > v9_LogicalAggregator, ::Ifc4x3_add2::IfcObjectiveEnum::Value v10_ObjectiveQualifier, boost::optional< std::string > v11_UserDefinedQualifier); - typedef aggregate_of< IfcObjective > list; + // IfcObjective (std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcConstraintEnum::Value v3_ConstraintGrade, std::optional< std::string > v4_ConstraintSource, ::Ifc4x3_add2::IfcActorSelect v5_CreatingActor, std::optional< std::string > v6_CreationTime, std::optional< std::string > v7_UserDefinedGrade, std::optional< std::vector< ::Ifc4x3_add2::IfcConstraint > > v8_BenchmarkValues, std::optional< ::Ifc4x3_add2::IfcLogicalOperatorEnum::Value > v9_LogicalAggregator, ::Ifc4x3_add2::IfcObjectiveEnum::Value v10_ObjectiveQualifier, std::optional< std::string > v11_UserDefinedQualifier); }; /// A named and structured grouping with a corporate identity. /// @@ -11569,32 +15537,33 @@ public: /// /// HISTORY New entity in IFC Release 1.5.1. /// IFC 2x4 change: attribute Id renamed to Identification. -class IFC_PARSE_API IfcOrganization : public IfcUtil::IfcBaseEntity, public IfcActorSelect, public IfcObjectReferenceSelect, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcOrganization : public express::Entity { public: + IfcOrganization() {} + explicit IfcOrganization (const std::weak_ptr& data) : express::Entity(data) {} + /// Identification of the organization. - boost::optional< std::string > Identification() const; - void setIdentification(boost::optional< std::string > v); + std::optional< std::string > Identification() const; + void setIdentification(const std::optional< std::string >& v); /// The word, or group of words, by which the organization is referred to. std::string Name() const; - void setName(std::string v); + void setName(const std::string& v); /// Text that relates the nature of the organization. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// Roles played by the organization. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > Roles() const; - void setRoles(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > > Roles() const; + void setRoles(const std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > >& v); /// Postal and telecom addresses of an organization. /// NOTE: There may be several addresses related to an organization. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAddress >::ptr > Addresses() const; - void setAddresses(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAddress >::ptr > v); - aggregate_of< IfcOrganizationRelationship >::ptr IsRelatedBy() const; // INVERSE IfcOrganizationRelationship::RelatedOrganizations - aggregate_of< IfcOrganizationRelationship >::ptr Relates() const; // INVERSE IfcOrganizationRelationship::RelatingOrganization - aggregate_of< IfcPersonAndOrganization >::ptr Engages() const; // INVERSE IfcPersonAndOrganization::TheOrganization - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< ::Ifc4x3_add2::IfcAddress > > Addresses() const; + void setAddresses(const std::optional< std::vector< ::Ifc4x3_add2::IfcAddress > >& v); + std::vector< IfcOrganizationRelationship > IsRelatedBy() const; // INVERSE IfcOrganizationRelationship::RelatedOrganizations + std::vector< IfcOrganizationRelationship > Relates() const; // INVERSE IfcOrganizationRelationship::RelatingOrganization + std::vector< IfcPersonAndOrganization > 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_Identification, std::string v2_Name, boost::optional< std::string > v3_Description, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > v4_Roles, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAddress >::ptr > v5_Addresses); - typedef aggregate_of< IfcOrganization > list; + // IfcOrganization (std::optional< std::string > v1_Identification, std::string v2_Name, std::optional< std::string > v3_Description, std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > > v4_Roles, std::optional< std::vector< ::Ifc4x3_add2::IfcAddress > > v5_Addresses); }; /// IfcOwnerHistory defines all history and identification related information. In order to provide fast access it is directly attached to all independent objects, relationships and properties. /// @@ -11606,37 +15575,38 @@ public: /// /// If LastModifiedDate is defined but ChangeAction is not asserted, then the state of ChangeAction is assumed to be UNDEFINED. /// If both LastModifiedDate and ChangeAction are asserted, then the state of ChangeAction applies to the value asserted in LastModifiedDate. -class IFC_PARSE_API IfcOwnerHistory : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcOwnerHistory : public express::Entity { public: + IfcOwnerHistory() {} + explicit IfcOwnerHistory (const std::weak_ptr& data) : express::Entity(data) {} + /// Direct reference to the end user who currently "owns" this object. Note that IFC includes the concept of ownership transfer from one user to another and therefore distinguishes between the Owning User and Creating User. - ::Ifc4x3_add2::IfcPersonAndOrganization* OwningUser() const; - void setOwningUser(::Ifc4x3_add2::IfcPersonAndOrganization* v); + ::Ifc4x3_add2::IfcPersonAndOrganization OwningUser() const; + void setOwningUser(const ::Ifc4x3_add2::IfcPersonAndOrganization& v); /// Direct reference to the application which currently "Owns" this object on behalf of the owning user, who uses this application. Note that IFC includes the concept of ownership transfer from one application to another and therefore distinguishes between the Owning Application and Creating Application. - ::Ifc4x3_add2::IfcApplication* OwningApplication() const; - void setOwningApplication(::Ifc4x3_add2::IfcApplication* v); + ::Ifc4x3_add2::IfcApplication OwningApplication() const; + void setOwningApplication(const ::Ifc4x3_add2::IfcApplication& v); /// Enumeration that defines the current access state of the object. - boost::optional< ::Ifc4x3_add2::IfcStateEnum::Value > State() const; - void setState(boost::optional< ::Ifc4x3_add2::IfcStateEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcStateEnum::Value > State() const; + void setState(const std::optional< ::Ifc4x3_add2::IfcStateEnum::Value >& v); /// Enumeration that defines the actions associated with changes made to the object. - boost::optional< ::Ifc4x3_add2::IfcChangeActionEnum::Value > ChangeAction() const; - void setChangeAction(boost::optional< ::Ifc4x3_add2::IfcChangeActionEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcChangeActionEnum::Value > ChangeAction() const; + void setChangeAction(const std::optional< ::Ifc4x3_add2::IfcChangeActionEnum::Value >& v); /// Date and Time expressed in UTC (Universal Time Coordinated, formerly Greenwich Mean Time or GMT) at which the last modification was made by LastModifyingUser and LastModifyingApplication. - boost::optional< int > LastModifiedDate() const; - void setLastModifiedDate(boost::optional< int > v); + std::optional< int > LastModifiedDate() const; + void setLastModifiedDate(const std::optional< int >& v); /// User who carried out the last modification using LastModifyingApplication. - ::Ifc4x3_add2::IfcPersonAndOrganization* LastModifyingUser() const; - void setLastModifyingUser(::Ifc4x3_add2::IfcPersonAndOrganization* v); + ::Ifc4x3_add2::IfcPersonAndOrganization LastModifyingUser() const; + void setLastModifyingUser(const ::Ifc4x3_add2::IfcPersonAndOrganization& v); /// Application used to make the last modification. - ::Ifc4x3_add2::IfcApplication* LastModifyingApplication() const; - void setLastModifyingApplication(::Ifc4x3_add2::IfcApplication* v); + ::Ifc4x3_add2::IfcApplication LastModifyingApplication() const; + void setLastModifyingApplication(const ::Ifc4x3_add2::IfcApplication& v); /// The date and time expressed in UTC (Universal Time Coordinated, formerly Greenwich Mean Time or GMT) when first created by the original OwningApplication. Once defined this value remains unchanged through the lifetime of the entity. int CreationDate() const; - void setCreationDate(int v); - virtual const IfcParse::entity& declaration() const; + void setCreationDate(const int& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcOwnerHistory (IfcEntityInstanceData&& e); - IfcOwnerHistory (::Ifc4x3_add2::IfcPersonAndOrganization* v1_OwningUser, ::Ifc4x3_add2::IfcApplication* v2_OwningApplication, boost::optional< ::Ifc4x3_add2::IfcStateEnum::Value > v3_State, boost::optional< ::Ifc4x3_add2::IfcChangeActionEnum::Value > v4_ChangeAction, boost::optional< int > v5_LastModifiedDate, ::Ifc4x3_add2::IfcPersonAndOrganization* v6_LastModifyingUser, ::Ifc4x3_add2::IfcApplication* v7_LastModifyingApplication, int v8_CreationDate); - typedef aggregate_of< IfcOwnerHistory > list; + // IfcOwnerHistory (::Ifc4x3_add2::IfcPersonAndOrganization v1_OwningUser, ::Ifc4x3_add2::IfcApplication v2_OwningApplication, std::optional< ::Ifc4x3_add2::IfcStateEnum::Value > v3_State, std::optional< ::Ifc4x3_add2::IfcChangeActionEnum::Value > v4_ChangeAction, std::optional< int > v5_LastModifiedDate, ::Ifc4x3_add2::IfcPersonAndOrganization v6_LastModifyingUser, ::Ifc4x3_add2::IfcApplication v7_LastModifyingApplication, int v8_CreationDate); }; /// Definition: an individual human being. /// @@ -11647,87 +15617,90 @@ public: /// /// HISTORY New entity in IFC Release 1.5.1. /// IFC 2x4 change: attribute Id renamed to Identification. WHERE rule relaxed to allow omission of names if Identification is provided. -class IFC_PARSE_API IfcPerson : public IfcUtil::IfcBaseEntity, public IfcActorSelect, public IfcObjectReferenceSelect, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcPerson : public express::Entity { public: + IfcPerson() {} + explicit IfcPerson (const std::weak_ptr& data) : express::Entity(data) {} + /// Identification of the person. - boost::optional< std::string > Identification() const; - void setIdentification(boost::optional< std::string > v); + std::optional< std::string > Identification() const; + void setIdentification(const std::optional< std::string >& v); /// The name by which the family identity of the person may be recognized. /// NOTE: Depending on geographical location and culture, family name may appear either as the first or last component of a name. - boost::optional< std::string > FamilyName() const; - void setFamilyName(boost::optional< std::string > v); + std::optional< std::string > FamilyName() const; + void setFamilyName(const std::optional< std::string >& v); /// The name by which a person is known within a family and by which he or she may be familiarly recognized. /// NOTE: Depending on geographical location and culture, given name may appear either as the first or last component of a name. - boost::optional< std::string > GivenName() const; - void setGivenName(boost::optional< std::string > v); + std::optional< std::string > GivenName() const; + void setGivenName(const std::optional< std::string >& v); /// Additional names given to a person that enable their identification apart from others who may have the same or similar family and given names. /// NOTE: Middle names are not normally used in familiar communication but may be asserted to provide additional /// identification of a particular person if necessary. They may be particularly useful in situations where the person concerned has a /// family name that occurs commonly in the geographical region. - boost::optional< std::vector< std::string > /*[1:?]*/ > MiddleNames() const; - void setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v); + std::optional< std::vector< std::string > /*[1:?]*/ > MiddleNames() const; + void setMiddleNames(const std::optional< std::vector< std::string > /*[1:?]*/ >& v); /// The word, or group of words, which specify the person's social and/or professional standing and appear before his/her names. - boost::optional< std::vector< std::string > /*[1:?]*/ > PrefixTitles() const; - void setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v); + std::optional< std::vector< std::string > /*[1:?]*/ > PrefixTitles() const; + void setPrefixTitles(const std::optional< std::vector< std::string > /*[1:?]*/ >& v); /// The word, or group of words, which specify the person's social and/or professional standing and appear after his/her names. - boost::optional< std::vector< std::string > /*[1:?]*/ > SuffixTitles() const; - void setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v); + std::optional< std::vector< std::string > /*[1:?]*/ > SuffixTitles() const; + void setSuffixTitles(const std::optional< std::vector< std::string > /*[1:?]*/ >& v); /// Roles played by the person. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > Roles() const; - void setRoles(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > > Roles() const; + void setRoles(const std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > >& v); /// Postal and telecommunication addresses of a person. /// NOTE - A person may have several addresses. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAddress >::ptr > Addresses() const; - void setAddresses(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAddress >::ptr > v); - aggregate_of< IfcPersonAndOrganization >::ptr EngagedIn() const; // INVERSE IfcPersonAndOrganization::ThePerson - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< ::Ifc4x3_add2::IfcAddress > > Addresses() const; + void setAddresses(const std::optional< std::vector< ::Ifc4x3_add2::IfcAddress > >& v); + std::vector< IfcPersonAndOrganization > 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_Identification, boost::optional< std::string > v2_FamilyName, boost::optional< std::string > v3_GivenName, boost::optional< std::vector< std::string > /*[1:?]*/ > v4_MiddleNames, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_PrefixTitles, boost::optional< std::vector< std::string > /*[1:?]*/ > v6_SuffixTitles, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > v7_Roles, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAddress >::ptr > v8_Addresses); - typedef aggregate_of< IfcPerson > list; + // IfcPerson (std::optional< std::string > v1_Identification, std::optional< std::string > v2_FamilyName, std::optional< std::string > v3_GivenName, std::optional< std::vector< std::string > /*[1:?]*/ > v4_MiddleNames, std::optional< std::vector< std::string > /*[1:?]*/ > v5_PrefixTitles, std::optional< std::vector< std::string > /*[1:?]*/ > v6_SuffixTitles, std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > > v7_Roles, std::optional< std::vector< ::Ifc4x3_add2::IfcAddress > > v8_Addresses); }; /// Definition: Identification of a person within an organization. /// /// NOTE Corresponds to the following entity in ISO-10303-41: person_and_organization. /// /// HISTORY New entity in IFC Release 1.5.1 -class IFC_PARSE_API IfcPersonAndOrganization : public IfcUtil::IfcBaseEntity, public IfcActorSelect, public IfcObjectReferenceSelect, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcPersonAndOrganization : public express::Entity { public: + IfcPersonAndOrganization() {} + explicit IfcPersonAndOrganization (const std::weak_ptr& data) : express::Entity(data) {} + /// The person who is related to the organization. - ::Ifc4x3_add2::IfcPerson* ThePerson() const; - void setThePerson(::Ifc4x3_add2::IfcPerson* v); + ::Ifc4x3_add2::IfcPerson ThePerson() const; + void setThePerson(const ::Ifc4x3_add2::IfcPerson& v); /// The organization to which the person is related. - ::Ifc4x3_add2::IfcOrganization* TheOrganization() const; - void setTheOrganization(::Ifc4x3_add2::IfcOrganization* v); + ::Ifc4x3_add2::IfcOrganization TheOrganization() const; + void setTheOrganization(const ::Ifc4x3_add2::IfcOrganization& v); /// Roles played by the person within the context of an organization. These may differ from the roles in ThePerson.Roles which may be asserted without organizational context. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > Roles() const; - void setRoles(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > > Roles() const; + void setRoles(const std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPersonAndOrganization (IfcEntityInstanceData&& e); - IfcPersonAndOrganization (::Ifc4x3_add2::IfcPerson* v1_ThePerson, ::Ifc4x3_add2::IfcOrganization* v2_TheOrganization, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorRole >::ptr > v3_Roles); - typedef aggregate_of< IfcPersonAndOrganization > list; + // IfcPersonAndOrganization (::Ifc4x3_add2::IfcPerson v1_ThePerson, ::Ifc4x3_add2::IfcOrganization v2_TheOrganization, std::optional< std::vector< ::Ifc4x3_add2::IfcActorRole > > v3_Roles); }; /// The physical quantity, IfcPhysicalQuantity, is an abstract entity that holds a complex or simple quantity measure together with a semantic definition of the usage for the single or several measure value. /// /// The Name attribute defines the actual usage or kind of measure. The interpretation of the name label has to be established within the actual exchange context. In addition an informative text may be associated to each quantity by the Description attribute. /// /// HISTORY  New entity in IFC2x. It replaces the calcXxx attributes used in previous IFC Releases. -class IFC_PARSE_API IfcPhysicalQuantity : public IfcUtil::IfcBaseEntity, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcPhysicalQuantity : public express::Entity { public: + IfcPhysicalQuantity() {} + explicit IfcPhysicalQuantity (const std::weak_ptr& data) : express::Entity(data) {} + /// Name of the element quantity or measure. The name attribute has to be made recognizable by further agreements. std::string Name() const; - void setName(std::string v); + void setName(const std::string& v); /// Further explanation that might be given to the quantity. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); - aggregate_of< IfcExternalReferenceRelationship >::ptr HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects - aggregate_of< IfcPhysicalComplexQuantity >::ptr PartOfComplex() const; // INVERSE IfcPhysicalComplexQuantity::HasQuantities - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); + std::vector< IfcExternalReferenceRelationship > HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects + std::vector< IfcPhysicalComplexQuantity > 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 aggregate_of< IfcPhysicalQuantity > list; + // IfcPhysicalQuantity (std::string v1_Name, std::optional< std::string > v2_Description); }; /// The physical quantity, IfcPhysicalSimpleQuantity, is an entity that holds a single quantity measure value (as defined at the subtypes of IfcPhysicalSimpleQuantity) together with a semantic definition of the usage for the measure value. /// @@ -11738,63 +15711,66 @@ public: /// HISTORY New entity in IFC2x2 Addendum 1. /// /// IFC2x2 ADDENDUM 1 CHANGE  The abstract entity IfcPhysicalSimpleQuantity has been added. Upward compatibility for file based exchange is guaranteed. -class IFC_PARSE_API IfcPhysicalSimpleQuantity : public IfcPhysicalQuantity { +class IFC_PARSE_API IfcPhysicalSimpleQuantity : public IfcPhysicalQuantity { public: + IfcPhysicalSimpleQuantity() {} + explicit IfcPhysicalSimpleQuantity (const std::weak_ptr& data) : IfcPhysicalQuantity(data) {} + /// Optional assignment of a unit. If no unit is given, then the global unit assignment, as established at the IfcProject, applies to the quantity measures. - ::Ifc4x3_add2::IfcNamedUnit* Unit() const; - void setUnit(::Ifc4x3_add2::IfcNamedUnit* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcNamedUnit Unit() const; + void setUnit(const ::Ifc4x3_add2::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, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit); - typedef aggregate_of< IfcPhysicalSimpleQuantity > list; + // IfcPhysicalSimpleQuantity (std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit); }; /// Definition: The address for delivery of paper based mail. /// /// HISTORY New entity in IFC Release 2x. -class IFC_PARSE_API IfcPostalAddress : public IfcAddress { +class IFC_PARSE_API IfcPostalAddress : public IfcAddress { public: + IfcPostalAddress() {} + explicit IfcPostalAddress (const std::weak_ptr& data) : IfcAddress(data) {} + /// An organization defined address for internal mail delivery. - boost::optional< std::string > InternalLocation() const; - void setInternalLocation(boost::optional< std::string > v); + std::optional< std::string > InternalLocation() const; + void setInternalLocation(const std::optional< std::string >& v); /// The postal address. /// NOTE: A postal address may occupy several lines (or elements) when recorded. /// It is expected that normal usage will incorporate relevant elements of the following address concepts: /// A location within a building (e.g. 3rd Floor) Building name (e.g. Interoperability House) Street number /// (e.g. 6400) Street name (e.g. Alliance Boulevard). Typical content of address lines may vary in different /// countries. - boost::optional< std::vector< std::string > /*[1:?]*/ > AddressLines() const; - void setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v); + std::optional< std::vector< std::string > /*[1:?]*/ > AddressLines() const; + void setAddressLines(const std::optional< std::vector< std::string > /*[1:?]*/ >& v); /// An address that is implied by an identifiable mail drop. - boost::optional< std::string > PostalBox() const; - void setPostalBox(boost::optional< std::string > v); + std::optional< std::string > PostalBox() const; + void setPostalBox(const std::optional< std::string >& v); /// The name of a town. - boost::optional< std::string > Town() const; - void setTown(boost::optional< std::string > v); + std::optional< std::string > Town() const; + void setTown(const std::optional< std::string >& v); /// The name of a region. /// NOTE: The counties of the United Kingdom and the states of North America are examples of regions. - boost::optional< std::string > Region() const; - void setRegion(boost::optional< std::string > v); + std::optional< std::string > Region() const; + void setRegion(const std::optional< std::string >& v); /// The code that is used by the country's postal service. - boost::optional< std::string > PostalCode() const; - void setPostalCode(boost::optional< std::string > v); + std::optional< std::string > PostalCode() const; + void setPostalCode(const std::optional< std::string >& v); /// The name of a country. - boost::optional< std::string > Country() const; - void setCountry(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Country() const; + void setCountry(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPostalAddress (IfcEntityInstanceData&& e); - IfcPostalAddress (boost::optional< ::Ifc4x3_add2::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 aggregate_of< IfcPostalAddress > list; + // IfcPostalAddress (std::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > v1_Purpose, std::optional< std::string > v2_Description, std::optional< std::string > v3_UserDefinedPurpose, std::optional< std::string > v4_InternalLocation, std::optional< std::vector< std::string > /*[1:?]*/ > v5_AddressLines, std::optional< std::string > v6_PostalBox, std::optional< std::string > v7_Town, std::optional< std::string > v8_Region, std::optional< std::string > v9_PostalCode, std::optional< std::string > v10_Country); }; -class IFC_PARSE_API IfcPresentationItem : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcPresentationItem : public express::Entity { public: - virtual const IfcParse::entity& declaration() const; + IfcPresentationItem() {} + explicit IfcPresentationItem (const std::weak_ptr& data) : express::Entity(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPresentationItem (IfcEntityInstanceData&& e); - IfcPresentationItem (); - typedef aggregate_of< IfcPresentationItem > list; + // IfcPresentationItem (); }; /// The presentation layer assignment provides the layer name (and optionally a description and an identifier) for a collection of geometric representation items. The IfcPresentationLayerAssignment corresponds to the term "CAD Layer" and is used mainly for grouping and visibility control. /// @@ -11811,25 +15787,26 @@ public: /// Figure 305 illustrates assignment of items by shape representation or representation item. The set of AssignedItems can either include a whole shape representation, or individual geometric representation items. If both, the IfcShapeRepresentation has a layer assignment, and an individual geometric representation item in the set of IfcShapeRepresentation.Items, then the layer assignment of the IfcGeometricRepresentationItem overides the layer assignment of the IfcShapeRepresentation. /// /// Figure 305 — Presentation layer assignment -class IFC_PARSE_API IfcPresentationLayerAssignment : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcPresentationLayerAssignment : public express::Entity { public: + IfcPresentationLayerAssignment() {} + explicit IfcPresentationLayerAssignment (const std::weak_ptr& data) : express::Entity(data) {} + /// Name of the layer. std::string Name() const; - void setName(std::string v); + void setName(const std::string& v); /// Additional description of the layer. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// The set of layered items, which are assigned to this layer. - aggregate_of< ::Ifc4x3_add2::IfcLayeredItem >::ptr AssignedItems() const; - void setAssignedItems(aggregate_of< ::Ifc4x3_add2::IfcLayeredItem >::ptr v); + std::vector< ::Ifc4x3_add2::IfcLayeredItem > AssignedItems() const; + void setAssignedItems(const std::vector< ::Ifc4x3_add2::IfcLayeredItem >& v); /// An (internal) identifier assigned to the layer. - boost::optional< std::string > Identifier() const; - void setIdentifier(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Identifier() const; + void setIdentifier(const std::optional< 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, aggregate_of< ::Ifc4x3_add2::IfcLayeredItem >::ptr v3_AssignedItems, boost::optional< std::string > v4_Identifier); - typedef aggregate_of< IfcPresentationLayerAssignment > list; + // IfcPresentationLayerAssignment (std::string v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcLayeredItem > v3_AssignedItems, std::optional< std::string > v4_Identifier); }; /// An IfcPresentationLayerAssignmentWithStyle extends the presentation layer assignment with capabilities to define visibility control, access control and common style information. /// @@ -11844,45 +15821,47 @@ public: /// HISTORY  New entity in IFC2x2. /// /// IFC2x3 CHANGE  The attributes have been modified without upward compatibility. -class IFC_PARSE_API IfcPresentationLayerWithStyle : public IfcPresentationLayerAssignment { +class IFC_PARSE_API IfcPresentationLayerWithStyle : public IfcPresentationLayerAssignment { public: + IfcPresentationLayerWithStyle() {} + explicit IfcPresentationLayerWithStyle (const std::weak_ptr& data) : IfcPresentationLayerAssignment(data) {} + /// A logical setting, TRUE indicates that the layer is set to 'On', FALSE that the layer is set to 'Off', UNKNOWN that such information is not available. boost::logic::tribool LayerOn() const; - void setLayerOn(boost::logic::tribool v); + void setLayerOn(const boost::logic::tribool& v); /// A logical setting, TRUE indicates that the layer is set to 'Frozen', FALSE that the layer is set to 'Not frozen', UNKNOWN that such information is not available. boost::logic::tribool LayerFrozen() const; - void setLayerFrozen(boost::logic::tribool v); + void setLayerFrozen(const boost::logic::tribool& v); /// A logical setting, TRUE indicates that the layer is set to 'Blocked', FALSE that the layer is set to 'Not blocked', UNKNOWN that such information is not available. boost::logic::tribool LayerBlocked() const; - void setLayerBlocked(boost::logic::tribool v); + void setLayerBlocked(const boost::logic::tribool& v); /// Assignment of presentation styles to the layer to provide a default style for representation items. /// /// NOTE  In most cases the assignment of styles to a layer is restricted to an IfcCurveStyle representing the layer curve colour, layer curve thickness, and layer curve type. /// /// IFC2x4 CHANGE  The data type has been changed from IfcPresentationStyleSelect (now deprecated) to IfcPresentationStyle. - aggregate_of< ::Ifc4x3_add2::IfcPresentationStyle >::ptr LayerStyles() const; - void setLayerStyles(aggregate_of< ::Ifc4x3_add2::IfcPresentationStyle >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcPresentationStyle > LayerStyles() const; + void setLayerStyles(const std::vector< ::Ifc4x3_add2::IfcPresentationStyle >& 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, aggregate_of< ::Ifc4x3_add2::IfcLayeredItem >::ptr v3_AssignedItems, boost::optional< std::string > v4_Identifier, boost::logic::tribool v5_LayerOn, boost::logic::tribool v6_LayerFrozen, boost::logic::tribool v7_LayerBlocked, aggregate_of< ::Ifc4x3_add2::IfcPresentationStyle >::ptr v8_LayerStyles); - typedef aggregate_of< IfcPresentationLayerWithStyle > list; + // IfcPresentationLayerWithStyle (std::string v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcLayeredItem > v3_AssignedItems, std::optional< std::string > v4_Identifier, boost::logic::tribool v5_LayerOn, boost::logic::tribool v6_LayerFrozen, boost::logic::tribool v7_LayerBlocked, std::vector< ::Ifc4x3_add2::IfcPresentationStyle > v8_LayerStyles); }; /// IfcPresentationStyle is an abstract generalization of style table for presentation information assigned to geometric representation items. It includes styles for curves, areas, surfaces, text and symbols. Style information may include colour, hatching, rendering, and text fonts. /// /// Each subtype of  IfcPresentationStyle can be assigned to IfcGeometricRepresentationItem's via the IfcPresentationStyleAssignment through an intermediate IfcStyledItem or one of its subtypes. /// /// HISTORY  New entity in IFC2x3. -class IFC_PARSE_API IfcPresentationStyle : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcPresentationStyle : public express::Entity { public: + IfcPresentationStyle() {} + explicit IfcPresentationStyle (const std::weak_ptr& data) : express::Entity(data) {} + /// Name of the presentation style. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Name() const; + void setName(const std::optional< 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 aggregate_of< IfcPresentationStyle > list; + // IfcPresentationStyle (std::optional< std::string > v1_Name); }; /// IfcProductRepresentation defines a representation of a /// product, including its (geometric or topological) representation. @@ -11901,22 +15880,23 @@ public: /// IFC2x3 NOTE Users should not instantiate the entity from IFC2x Edition 3 onwards. /// /// IFC2x4 CHANGE  Entity made abstract. -class IFC_PARSE_API IfcProductRepresentation : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcProductRepresentation : public express::Entity { public: + IfcProductRepresentation() {} + explicit IfcProductRepresentation (const std::weak_ptr& data) : express::Entity(data) {} + /// The word or group of words by which the product representation is known. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// The word or group of words that characterize the product representation. It can be used to add additional meaning to the name of the product representation. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// Contained list of representations (including shape representations). Each member defines a valid representation of a particular type within a particular representation context. - aggregate_of< ::Ifc4x3_add2::IfcRepresentation >::ptr Representations() const; - void setRepresentations(aggregate_of< ::Ifc4x3_add2::IfcRepresentation >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcRepresentation > Representations() const; + void setRepresentations(const std::vector< ::Ifc4x3_add2::IfcRepresentation >& 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, aggregate_of< ::Ifc4x3_add2::IfcRepresentation >::ptr v3_Representations); - typedef aggregate_of< IfcProductRepresentation > list; + // IfcProductRepresentation (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcRepresentation > v3_Representations); }; /// IfcProfileDef /// is the supertype of all definitions of standard and arbitrary profiles @@ -12088,21 +16068,22 @@ public: /// possible to directly instantiate IfcProfileDef and further specify /// the profile only by external reference or by profile properties. The latter /// are tracked by the inverse attribute HasProperties. -class IFC_PARSE_API IfcProfileDef : public IfcUtil::IfcBaseEntity, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcProfileDef : public express::Entity { public: + IfcProfileDef() {} + explicit IfcProfileDef (const std::weak_ptr& data) : express::Entity(data) {} + /// Defines the type of geometry into which this profile definition shall be resolved, either a curve or a surface area. In case of curve the profile should be referenced by a swept surface, in case of area the profile should be referenced by a swept area solid. ::Ifc4x3_add2::IfcProfileTypeEnum::Value ProfileType() const; - void setProfileType(::Ifc4x3_add2::IfcProfileTypeEnum::Value v); + void setProfileType(const ::Ifc4x3_add2::IfcProfileTypeEnum::Value& v); /// Human-readable name of the profile, for example according to a standard profile table. As noted above, machine-readable standardized profile designations should be provided in IfcExternalReference.ItemReference. - boost::optional< std::string > ProfileName() const; - void setProfileName(boost::optional< std::string > v); - aggregate_of< IfcExternalReferenceRelationship >::ptr HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects - aggregate_of< IfcProfileProperties >::ptr HasProperties() const; // INVERSE IfcProfileProperties::ProfileDefinition - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > ProfileName() const; + void setProfileName(const std::optional< std::string >& v); + std::vector< IfcExternalReferenceRelationship > HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects + std::vector< IfcProfileProperties > HasProperties() const; // INVERSE IfcProfileProperties::ProfileDefinition + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProfileDef (IfcEntityInstanceData&& e); - IfcProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName); - typedef aggregate_of< IfcProfileDef > list; + // IfcProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName); }; /// Definition from OpenGIS® Abstract Specification, /// Topic 2: A 2D (or with vertical coordinate axis 3D) @@ -12127,41 +16108,43 @@ public: /// length unit used by the map. /// /// HISTORY  New entity in IFC2x4. -class IFC_PARSE_API IfcProjectedCRS : public IfcCoordinateReferenceSystem { +class IFC_PARSE_API IfcProjectedCRS : public IfcCoordinateReferenceSystem { public: - boost::optional< std::string > VerticalDatum() const; - void setVerticalDatum(boost::optional< std::string > v); + IfcProjectedCRS() {} + explicit IfcProjectedCRS (const std::weak_ptr& data) : IfcCoordinateReferenceSystem(data) {} + + std::optional< std::string > VerticalDatum() const; + void setVerticalDatum(const std::optional< std::string >& v); /// Name by which the map projection is identified. /// /// UTM /// Gaus-Krueger - boost::optional< std::string > MapProjection() const; - void setMapProjection(boost::optional< std::string > v); + std::optional< std::string > MapProjection() const; + void setMapProjection(const std::optional< std::string >& v); /// Name by which the map zone, relating to the MapProjection, is identified. Examples are /// /// for UTM, the zone number, like 32 for UTM32 /// for Gaus-Krueger, the zones of longitudinal width, like 3' - boost::optional< std::string > MapZone() const; - void setMapZone(boost::optional< std::string > v); + std::optional< std::string > MapZone() const; + void setMapZone(const std::optional< std::string >& v); /// Unit of the coordinate axes composing the map coordinate system. /// NOTE  Only length measures are in scope and all two or three axes of the map coordinate system shall have the same length unit. - ::Ifc4x3_add2::IfcNamedUnit* MapUnit() const; - void setMapUnit(::Ifc4x3_add2::IfcNamedUnit* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcNamedUnit MapUnit() const; + void setMapUnit(const ::Ifc4x3_add2::IfcNamedUnit& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProjectedCRS (IfcEntityInstanceData&& e); - IfcProjectedCRS (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_GeodeticDatum, boost::optional< std::string > v4_VerticalDatum, boost::optional< std::string > v5_MapProjection, boost::optional< std::string > v6_MapZone, ::Ifc4x3_add2::IfcNamedUnit* v7_MapUnit); - typedef aggregate_of< IfcProjectedCRS > list; + // IfcProjectedCRS (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::optional< std::string > v3_GeodeticDatum, std::optional< std::string > v4_VerticalDatum, std::optional< std::string > v5_MapProjection, std::optional< std::string > v6_MapZone, ::Ifc4x3_add2::IfcNamedUnit v7_MapUnit); }; -class IFC_PARSE_API IfcPropertyAbstraction : public IfcUtil::IfcBaseEntity, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcPropertyAbstraction : public express::Entity { public: - aggregate_of< IfcExternalReferenceRelationship >::ptr HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects - virtual const IfcParse::entity& declaration() const; + IfcPropertyAbstraction() {} + explicit IfcPropertyAbstraction (const std::weak_ptr& data) : express::Entity(data) {} + + std::vector< IfcExternalReferenceRelationship > HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPropertyAbstraction (IfcEntityInstanceData&& e); - IfcPropertyAbstraction (); - typedef aggregate_of< IfcPropertyAbstraction > list; + // IfcPropertyAbstraction (); }; /// IfcPropertyEnumeration is a collection of simple /// or measure values that define a prescribed set of alternatives from @@ -12209,161 +16192,169 @@ public: ///   /// /// HISTORY  New Entity in IFC Release 2.0, capabilities enhanced in IFC Release 2x. Entity has been renamed from IfcEnumeration in IFC Release 2x. -class IFC_PARSE_API IfcPropertyEnumeration : public IfcPropertyAbstraction { +class IFC_PARSE_API IfcPropertyEnumeration : public IfcPropertyAbstraction { public: + IfcPropertyEnumeration() {} + explicit IfcPropertyEnumeration (const std::weak_ptr& data) : IfcPropertyAbstraction(data) {} + /// Name of this enumeration. std::string Name() const; - void setName(std::string v); + void setName(const std::string& v); /// List of values that form the enumeration. - aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr EnumerationValues() const; - void setEnumerationValues(aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr v); + std::vector< ::Ifc4x3_add2::IfcValue > EnumerationValues() const; + void setEnumerationValues(const std::vector< ::Ifc4x3_add2::IfcValue >& v); /// Unit for the enumerator values, if not given, the default value for the measure type (given by the TYPE of nominal value) is used as defined by the global unit assignment at IfcProject. - ::Ifc4x3_add2::IfcUnit* Unit() const; - void setUnit(::Ifc4x3_add2::IfcUnit* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcUnit Unit() const; + void setUnit(const ::Ifc4x3_add2::IfcUnit& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPropertyEnumeration (IfcEntityInstanceData&& e); - IfcPropertyEnumeration (std::string v1_Name, aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr v2_EnumerationValues, ::Ifc4x3_add2::IfcUnit* v3_Unit); - typedef aggregate_of< IfcPropertyEnumeration > list; + // IfcPropertyEnumeration (std::string v1_Name, std::vector< ::Ifc4x3_add2::IfcValue > v2_EnumerationValues, ::Ifc4x3_add2::IfcUnit v3_Unit); }; /// IfcQuantityArea is a physical quantity that defines a derived area measure to provide an element's physical property. It is normally derived from the physical properties of the element under the specific measure rules given by a method of measurement. /// /// EXAMPLE  An opening may have an opening area used to deduct it from the wall surface area. The actual size of the area depends on the method of measurement used. /// /// HISTORY  New entity in IFC2x. It replaces the calcXxx attributes used in previous IFC Releases. -class IFC_PARSE_API IfcQuantityArea : public IfcPhysicalSimpleQuantity { +class IFC_PARSE_API IfcQuantityArea : public IfcPhysicalSimpleQuantity { public: + IfcQuantityArea() {} + explicit IfcQuantityArea (const std::weak_ptr& data) : IfcPhysicalSimpleQuantity(data) {} + /// Area measure value of this quantity. double AreaValue() const; - void setAreaValue(double v); + void setAreaValue(const double& v); /// A formula by which the quantity has been calculated. It can be assigned in addition to the actual value of the quantity. Formulas could be mathematic calculations (like width x height), database links, or a combination. The formula is for informational purposes only. /// /// IFC2x4 CHANGE Attribute added to the end of the attribute list. - boost::optional< std::string > Formula() const; - void setFormula(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Formula() const; + void setFormula(const std::optional< std::string >& 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, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit, double v4_AreaValue, boost::optional< std::string > v5_Formula); - typedef aggregate_of< IfcQuantityArea > list; + // IfcQuantityArea (std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit, double v4_AreaValue, std::optional< std::string > v5_Formula); }; /// IfcQuantityCount is a physical quantity that defines a derived count measure to provide an element's physical property. It is normally derived from the physical properties of the element under the specific measure rules given by a method of measurement. /// /// EXAMPLE  An radiator may be measured according to its number of coils. The actual counting method depends on the method of measurement used. /// /// HISTORY  New entity in IFC2x. It replaces the calcXxx attributes used in previous IFC Releases. -class IFC_PARSE_API IfcQuantityCount : public IfcPhysicalSimpleQuantity { +class IFC_PARSE_API IfcQuantityCount : public IfcPhysicalSimpleQuantity { public: + IfcQuantityCount() {} + explicit IfcQuantityCount (const std::weak_ptr& data) : IfcPhysicalSimpleQuantity(data) {} + /// Count measure value of this quantity. int CountValue() const; - void setCountValue(int v); + void setCountValue(const int& v); /// A formula by which the quantity has been calculated. It can be assigned in addition to the actual value of the quantity. Formulas could be mathematic calculations (like width x height), database links, or a combination. The formula is for informational purposes only. /// /// IFC2x4 CHANGE Attribute added to the end of the attribute list. - boost::optional< std::string > Formula() const; - void setFormula(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Formula() const; + void setFormula(const std::optional< std::string >& 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, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit, int v4_CountValue, boost::optional< std::string > v5_Formula); - typedef aggregate_of< IfcQuantityCount > list; + // IfcQuantityCount (std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit, int v4_CountValue, std::optional< std::string > v5_Formula); }; /// IfcQuantityLength is a physical quantity that defines a derived length measure to provide an element's physical property. It is normally derived from the physical properties of the element under the specific measure rules given by a method of measurement. /// /// EXAMPLE  A rafter within a roof construction may be measured according to its length (taking a common cross section into account). The actual size of the length depends on the method of measurement used. /// /// HISTORY  New entity in IFC Release 2.x. It replaces the calcXxx attributes used in previous IFC Releases. -class IFC_PARSE_API IfcQuantityLength : public IfcPhysicalSimpleQuantity { +class IFC_PARSE_API IfcQuantityLength : public IfcPhysicalSimpleQuantity { public: + IfcQuantityLength() {} + explicit IfcQuantityLength (const std::weak_ptr& data) : IfcPhysicalSimpleQuantity(data) {} + /// Length measure value of this quantity. double LengthValue() const; - void setLengthValue(double v); + void setLengthValue(const double& v); /// A formula by which the quantity has been calculated. It can be assigned in addition to the actual value of the quantity. Formulas could be mathematic calculations (like width x height), database links, or a combination. The formula is for informational purposes only. /// /// IFC2x4 CHANGE Attribute added to the end of the attribute list. - boost::optional< std::string > Formula() const; - void setFormula(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Formula() const; + void setFormula(const std::optional< std::string >& 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, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit, double v4_LengthValue, boost::optional< std::string > v5_Formula); - typedef aggregate_of< IfcQuantityLength > list; + // IfcQuantityLength (std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit, double v4_LengthValue, std::optional< std::string > v5_Formula); }; -class IFC_PARSE_API IfcQuantityNumber : public IfcPhysicalSimpleQuantity { +class IFC_PARSE_API IfcQuantityNumber : public IfcPhysicalSimpleQuantity { public: + IfcQuantityNumber() {} + explicit IfcQuantityNumber (const std::weak_ptr& data) : IfcPhysicalSimpleQuantity(data) {} + double NumberValue() const; - void setNumberValue(double v); - boost::optional< std::string > Formula() const; - void setFormula(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + void setNumberValue(const double& v); + std::optional< std::string > Formula() const; + void setFormula(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcQuantityNumber (IfcEntityInstanceData&& e); - IfcQuantityNumber (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit, double v4_NumberValue, boost::optional< std::string > v5_Formula); - typedef aggregate_of< IfcQuantityNumber > list; + // IfcQuantityNumber (std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit, double v4_NumberValue, std::optional< std::string > v5_Formula); }; /// IfcQuantityTime is an element quantity that defines a time measure to provide an property of time related to an element. It is normally given by the recipe information of the element under the specific measure rules given by a method of measurement. /// /// EXAMPLE  The amount of time needed to pour concrete for a wall is given as a time quantity for the labor part of the recipe information. /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcQuantityTime : public IfcPhysicalSimpleQuantity { +class IFC_PARSE_API IfcQuantityTime : public IfcPhysicalSimpleQuantity { public: + IfcQuantityTime() {} + explicit IfcQuantityTime (const std::weak_ptr& data) : IfcPhysicalSimpleQuantity(data) {} + /// Time measure value of this quantity. double TimeValue() const; - void setTimeValue(double v); + void setTimeValue(const double& v); /// A formula by which the quantity has been calculated. It can be assigned in addition to the actual value of the quantity. Formulas could be mathematic calculations (like width x height), database links, or a combination. The formula is for informational purposes only. /// /// IFC2x4 CHANGE Attribute added to the end of the attribute list. - boost::optional< std::string > Formula() const; - void setFormula(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Formula() const; + void setFormula(const std::optional< std::string >& 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, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit, double v4_TimeValue, boost::optional< std::string > v5_Formula); - typedef aggregate_of< IfcQuantityTime > list; + // IfcQuantityTime (std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit, double v4_TimeValue, std::optional< std::string > v5_Formula); }; /// IfcQuantityVolume is a physical quantity that defines a derived volume measure to provide an element's physical property. It is normally derived from the physical properties of the element under the specific measure rules given by a method of measurement. /// /// EXAMPLE  A thick brick wall may be measured according to its volume. The actual size of the volume depends on the method of measurement used. /// /// HISTORY New entity in IFC2x. It replaces the calcXxx attributes used in previous IFC Releases. -class IFC_PARSE_API IfcQuantityVolume : public IfcPhysicalSimpleQuantity { +class IFC_PARSE_API IfcQuantityVolume : public IfcPhysicalSimpleQuantity { public: + IfcQuantityVolume() {} + explicit IfcQuantityVolume (const std::weak_ptr& data) : IfcPhysicalSimpleQuantity(data) {} + /// Volume measure value of this quantity. double VolumeValue() const; - void setVolumeValue(double v); + void setVolumeValue(const double& v); /// A formula by which the quantity has been calculated. It can be assigned in addition to the actual value of the quantity. Formulas could be mathematic calculations (like width x height), database links, or a combination. The formula is for informational purposes only. /// /// IFC2x4 CHANGE Attribute added to the end of the attribute list. - boost::optional< std::string > Formula() const; - void setFormula(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Formula() const; + void setFormula(const std::optional< std::string >& 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, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit, double v4_VolumeValue, boost::optional< std::string > v5_Formula); - typedef aggregate_of< IfcQuantityVolume > list; + // IfcQuantityVolume (std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit, double v4_VolumeValue, std::optional< std::string > v5_Formula); }; /// IfcQuantityWeight is a physical element quantity that defines a derived weight measure to provide an element's physical property. It is normally derived from the physical properties of the element under the specific measure rules given by a method of measurement. /// /// EXAMPLE  The amount of reinforcement used within a building element may be measured according to its weight. The actual size of the weight depends on the method of measurement used. /// /// HISTORY  New entity in IFC2x. It replaces the calcXxx attributes used in previous IFC Releases. -class IFC_PARSE_API IfcQuantityWeight : public IfcPhysicalSimpleQuantity { +class IFC_PARSE_API IfcQuantityWeight : public IfcPhysicalSimpleQuantity { public: + IfcQuantityWeight() {} + explicit IfcQuantityWeight (const std::weak_ptr& data) : IfcPhysicalSimpleQuantity(data) {} + /// Mass measure value of this quantity. double WeightValue() const; - void setWeightValue(double v); + void setWeightValue(const double& v); /// A formula by which the quantity has been calculated. It can be assigned in addition to the actual value of the quantity. Formulas could be mathematic calculations (like width x height), database links, or a combination. The formula is for informational purposes only. /// /// IFC2x4 CHANGE Attribute added to the end of the attribute list. - boost::optional< std::string > Formula() const; - void setFormula(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Formula() const; + void setFormula(const std::optional< std::string >& 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, ::Ifc4x3_add2::IfcNamedUnit* v3_Unit, double v4_WeightValue, boost::optional< std::string > v5_Formula); - typedef aggregate_of< IfcQuantityWeight > list; + // IfcQuantityWeight (std::string v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcNamedUnit v3_Unit, double v4_WeightValue, std::optional< std::string > v5_Formula); }; /// IfcRecurrencePattern defines repetitive time periods on the basis of regular recurrences such as each Monday in a week, or every third Tuesday in a month. The population of the remaining attributes such as DayComponent, Position, and Interval depend on the specified recurrence type. /// @@ -12371,69 +16362,71 @@ public: /// /// Use definitions /// IfcRecurrencePattern supports various recurrence patterns that are differentiated by a type definition (IfcRecurrencePattern.RecurrenceType), which is required to provide the meaning of the given values. It can be further constrained by applicable times through specified IfcTimePeriod instances, thus enabling time periods such as between 7:00 and 12:00 and between 13:00 and 17:00 for each of the applicable days, weeks or months. -class IFC_PARSE_API IfcRecurrencePattern : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcRecurrencePattern : public express::Entity { public: + IfcRecurrencePattern() {} + explicit IfcRecurrencePattern (const std::weak_ptr& data) : express::Entity(data) {} + /// Defines the recurrence type that gives meaning to the used /// attributes and decides about possible attribute /// combinations, i.e. what attributes are needed to fully /// describe the pattern type. ::Ifc4x3_add2::IfcRecurrenceTypeEnum::Value RecurrenceType() const; - void setRecurrenceType(::Ifc4x3_add2::IfcRecurrenceTypeEnum::Value v); + void setRecurrenceType(const ::Ifc4x3_add2::IfcRecurrenceTypeEnum::Value& v); /// The position of the specified day in a month. - boost::optional< std::vector< int > /*[1:?]*/ > DayComponent() const; - void setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v); + std::optional< std::vector< int > /*[1:?]*/ > DayComponent() const; + void setDayComponent(const std::optional< std::vector< int > /*[1:?]*/ >& v); /// The weekday name of the specified day in a week. - boost::optional< std::vector< int > /*[1:?]*/ > WeekdayComponent() const; - void setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v); + std::optional< std::vector< int > /*[1:?]*/ > WeekdayComponent() const; + void setWeekdayComponent(const std::optional< std::vector< int > /*[1:?]*/ >& v); /// The position of the specified month in a year. - boost::optional< std::vector< int > /*[1:?]*/ > MonthComponent() const; - void setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v); + std::optional< std::vector< int > /*[1:?]*/ > MonthComponent() const; + void setMonthComponent(const std::optional< std::vector< int > /*[1:?]*/ >& v); /// The position of the specified component, e.g. the 3rd /// (position=3) Tuesday (weekday component) in a month. A /// negative position value is used to define the last position /// of the component (-1), the next to last position (-2) etc. - boost::optional< int > Position() const; - void setPosition(boost::optional< int > v); + std::optional< int > Position() const; + void setPosition(const std::optional< int >& v); /// An interval can be given according to the pattern type. An /// interval value of 2 can for instance every two days, weeks, /// months, years. An empty interval value is regarded as 1. The /// used interval values should be in a reasonable range, e.g. /// not 0 or <0. - boost::optional< int > Interval() const; - void setInterval(boost::optional< int > v); + std::optional< int > Interval() const; + void setInterval(const std::optional< int >& v); /// Defines the number of occurrences of this pattern, e.g. a weekly /// event might be defined to occur 5 times before it stops. - boost::optional< int > Occurrences() const; - void setOccurrences(boost::optional< int > v); + std::optional< int > Occurrences() const; + void setOccurrences(const std::optional< int >& v); /// List of time periods that are defined by a start and end time /// of the recurring element (day). The order of the list should /// reflect the sequence of the time periods. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTimePeriod >::ptr > TimePeriods() const; - void setTimePeriods(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTimePeriod >::ptr > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< ::Ifc4x3_add2::IfcTimePeriod > > TimePeriods() const; + void setTimePeriods(const std::optional< std::vector< ::Ifc4x3_add2::IfcTimePeriod > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRecurrencePattern (IfcEntityInstanceData&& e); - IfcRecurrencePattern (::Ifc4x3_add2::IfcRecurrenceTypeEnum::Value v1_RecurrenceType, boost::optional< std::vector< int > /*[1:?]*/ > v2_DayComponent, boost::optional< std::vector< int > /*[1:?]*/ > v3_WeekdayComponent, boost::optional< std::vector< int > /*[1:?]*/ > v4_MonthComponent, boost::optional< int > v5_Position, boost::optional< int > v6_Interval, boost::optional< int > v7_Occurrences, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTimePeriod >::ptr > v8_TimePeriods); - typedef aggregate_of< IfcRecurrencePattern > list; + // IfcRecurrencePattern (::Ifc4x3_add2::IfcRecurrenceTypeEnum::Value v1_RecurrenceType, std::optional< std::vector< int > /*[1:?]*/ > v2_DayComponent, std::optional< std::vector< int > /*[1:?]*/ > v3_WeekdayComponent, std::optional< std::vector< int > /*[1:?]*/ > v4_MonthComponent, std::optional< int > v5_Position, std::optional< int > v6_Interval, std::optional< int > v7_Occurrences, std::optional< std::vector< ::Ifc4x3_add2::IfcTimePeriod > > v8_TimePeriods); }; -class IFC_PARSE_API IfcReference : public IfcUtil::IfcBaseEntity, public IfcAppliedValueSelect, public IfcMetricValueSelect { +class IFC_PARSE_API IfcReference : public express::Entity { public: - boost::optional< std::string > TypeIdentifier() const; - void setTypeIdentifier(boost::optional< std::string > v); - boost::optional< std::string > AttributeIdentifier() const; - void setAttributeIdentifier(boost::optional< std::string > v); - boost::optional< std::string > InstanceName() const; - void setInstanceName(boost::optional< std::string > v); - boost::optional< std::vector< int > /*[1:?]*/ > ListPositions() const; - void setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v); - ::Ifc4x3_add2::IfcReference* InnerReference() const; - void setInnerReference(::Ifc4x3_add2::IfcReference* v); - virtual const IfcParse::entity& declaration() const; + IfcReference() {} + explicit IfcReference (const std::weak_ptr& data) : express::Entity(data) {} + + std::optional< std::string > TypeIdentifier() const; + void setTypeIdentifier(const std::optional< std::string >& v); + std::optional< std::string > AttributeIdentifier() const; + void setAttributeIdentifier(const std::optional< std::string >& v); + std::optional< std::string > InstanceName() const; + void setInstanceName(const std::optional< std::string >& v); + std::optional< std::vector< int > /*[1:?]*/ > ListPositions() const; + void setListPositions(const std::optional< std::vector< int > /*[1:?]*/ >& v); + ::Ifc4x3_add2::IfcReference InnerReference() const; + void setInnerReference(const ::Ifc4x3_add2::IfcReference& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcReference (IfcEntityInstanceData&& e); - IfcReference (boost::optional< std::string > v1_TypeIdentifier, boost::optional< std::string > v2_AttributeIdentifier, boost::optional< std::string > v3_InstanceName, boost::optional< std::vector< int > /*[1:?]*/ > v4_ListPositions, ::Ifc4x3_add2::IfcReference* v5_InnerReference); - typedef aggregate_of< IfcReference > list; + // IfcReference (std::optional< std::string > v1_TypeIdentifier, std::optional< std::string > v2_AttributeIdentifier, std::optional< std::string > v3_InstanceName, std::optional< std::vector< int > /*[1:?]*/ > v4_ListPositions, ::Ifc4x3_add2::IfcReference v5_InnerReference); }; /// Definition from ISO/CD 10303-43:1992: A /// representation is one or more representation items that are @@ -12481,29 +16474,30 @@ public: /// IFC2x4 CHANGE  Entity /// IfcRepresentation has been changed into an ABSTRACT /// supertype. -class IFC_PARSE_API IfcRepresentation : public IfcUtil::IfcBaseEntity, public IfcLayeredItem { +class IFC_PARSE_API IfcRepresentation : public express::Entity { public: + IfcRepresentation() {} + explicit IfcRepresentation (const std::weak_ptr& data) : express::Entity(data) {} + /// Definition of the representation context for which the different subtypes of representation are valid. - ::Ifc4x3_add2::IfcRepresentationContext* ContextOfItems() const; - void setContextOfItems(::Ifc4x3_add2::IfcRepresentationContext* v); + ::Ifc4x3_add2::IfcRepresentationContext ContextOfItems() const; + void setContextOfItems(const ::Ifc4x3_add2::IfcRepresentationContext& v); /// The optional identifier of the representation as used within a project. - boost::optional< std::string > RepresentationIdentifier() const; - void setRepresentationIdentifier(boost::optional< std::string > v); + std::optional< std::string > RepresentationIdentifier() const; + void setRepresentationIdentifier(const std::optional< std::string >& v); /// The description of the type of a representation context. The representation type defines the type of geometry or topology used for representing the product representation. More information is given at the subtypes IfcShapeRepresentation and IfcTopologyRepresentation. /// The supported values for context type are to be specified by implementers agreements. - boost::optional< std::string > RepresentationType() const; - void setRepresentationType(boost::optional< std::string > v); + std::optional< std::string > RepresentationType() const; + void setRepresentationType(const std::optional< std::string >& v); /// Set of geometric representation items that are defined for this representation. - aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr Items() const; - void setItems(aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr v); - aggregate_of< IfcRepresentationMap >::ptr RepresentationMap() const; // INVERSE IfcRepresentationMap::MappedRepresentation - aggregate_of< IfcPresentationLayerAssignment >::ptr LayerAssignments() const; // INVERSE IfcPresentationLayerAssignment::AssignedItems - aggregate_of< IfcProductRepresentation >::ptr OfProductRepresentation() const; // INVERSE IfcProductRepresentation::Representations - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcRepresentationItem > Items() const; + void setItems(const std::vector< ::Ifc4x3_add2::IfcRepresentationItem >& v); + std::vector< IfcRepresentationMap > RepresentationMap() const; // INVERSE IfcRepresentationMap::MappedRepresentation + std::vector< IfcPresentationLayerAssignment > LayerAssignments() const; // INVERSE IfcPresentationLayerAssignment::AssignedItems + std::vector< IfcProductRepresentation > OfProductRepresentation() const; // INVERSE IfcProductRepresentation::Representations + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRepresentation (IfcEntityInstanceData&& e); - IfcRepresentation (::Ifc4x3_add2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr v4_Items); - typedef aggregate_of< IfcRepresentation > list; + // IfcRepresentation (::Ifc4x3_add2::IfcRepresentationContext v1_ContextOfItems, std::optional< std::string > v2_RepresentationIdentifier, std::optional< std::string > v3_RepresentationType, std::vector< ::Ifc4x3_add2::IfcRepresentationItem > v4_Items); }; /// Definition from ISO/CD 10303-42:1992: A representation context is a context in which a set of representation items are related. /// @@ -12515,20 +16509,21 @@ public: /// /// IFC2x4 CHANGE Entity made abstract, had been deprecated from instantiation since /// IFC2x2. -class IFC_PARSE_API IfcRepresentationContext : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcRepresentationContext : public express::Entity { public: + IfcRepresentationContext() {} + explicit IfcRepresentationContext (const std::weak_ptr& data) : express::Entity(data) {} + /// The optional identifier of the representation context as used within a project. - boost::optional< std::string > ContextIdentifier() const; - void setContextIdentifier(boost::optional< std::string > v); + std::optional< std::string > ContextIdentifier() const; + void setContextIdentifier(const std::optional< std::string >& v); /// The description of the type of a representation context. The supported values for context type are to be specified by implementers agreements. - boost::optional< std::string > ContextType() const; - void setContextType(boost::optional< std::string > v); - aggregate_of< IfcRepresentation >::ptr RepresentationsInContext() const; // INVERSE IfcRepresentation::ContextOfItems - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > ContextType() const; + void setContextType(const std::optional< std::string >& v); + std::vector< IfcRepresentation > 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 aggregate_of< IfcRepresentationContext > list; + // IfcRepresentationContext (std::optional< std::string > v1_ContextIdentifier, std::optional< std::string > v2_ContextType); }; /// Definition from ISO/CD /// 10303-43:1992: A representation item is an element of @@ -12562,15 +16557,16 @@ public: /// HISTORY  New entity in IFC Release 2x. /// /// IFC2x3 CHANGE  The inverse attributes StyledByItem and LayerAssignments have been added. Upward compatibility for file based exchange is guaranteed. -class IFC_PARSE_API IfcRepresentationItem : public IfcUtil::IfcBaseEntity, public IfcLayeredItem { +class IFC_PARSE_API IfcRepresentationItem : public express::Entity { public: - aggregate_of< IfcPresentationLayerAssignment >::ptr LayerAssignment() const; // INVERSE IfcPresentationLayerAssignment::AssignedItems - aggregate_of< IfcStyledItem >::ptr StyledByItem() const; // INVERSE IfcStyledItem::Item - virtual const IfcParse::entity& declaration() const; + IfcRepresentationItem() {} + explicit IfcRepresentationItem (const std::weak_ptr& data) : express::Entity(data) {} + + std::vector< IfcPresentationLayerAssignment > LayerAssignment() const; // INVERSE IfcPresentationLayerAssignment::AssignedItems + std::vector< IfcStyledItem > StyledByItem() const; // INVERSE IfcStyledItem::Item + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRepresentationItem (IfcEntityInstanceData&& e); - IfcRepresentationItem (); - typedef aggregate_of< IfcRepresentationItem > list; + // IfcRepresentationItem (); }; /// Definition from ISO/CD 10303-43:1992: A representation map is the identification of a representation and a representation item in that representation for the purpose of mapping. The representation item defines the origin of the mapping. The representation map is used as the source of a mapping by a mapped item. /// @@ -12583,54 +16579,57 @@ public: /// NOTE  The definition of a mapping which is used to specify a new representation item comprises a representation map and a mapped item entity. Without both entities, the mapping is not fully defined. Two entities are specified to allow the same source representation to be mapped into multiple new representations. /// /// HISTORY  New entity in IFC Release 2x. -class IFC_PARSE_API IfcRepresentationMap : public IfcUtil::IfcBaseEntity, public IfcProductRepresentationSelect { +class IFC_PARSE_API IfcRepresentationMap : public express::Entity { public: + IfcRepresentationMap() {} + explicit IfcRepresentationMap (const std::weak_ptr& data) : express::Entity(data) {} + /// An axis2 placement that defines the position about which the mapped /// representation is mapped. - ::Ifc4x3_add2::IfcAxis2Placement* MappingOrigin() const; - void setMappingOrigin(::Ifc4x3_add2::IfcAxis2Placement* v); + ::Ifc4x3_add2::IfcAxis2Placement MappingOrigin() const; + void setMappingOrigin(const ::Ifc4x3_add2::IfcAxis2Placement& v); /// A representation that is mapped to at least one mapped item. - ::Ifc4x3_add2::IfcRepresentation* MappedRepresentation() const; - void setMappedRepresentation(::Ifc4x3_add2::IfcRepresentation* v); - aggregate_of< IfcShapeAspect >::ptr HasShapeAspects() const; // INVERSE IfcShapeAspect::PartOfProductDefinitionShape - aggregate_of< IfcMappedItem >::ptr MapUsage() const; // INVERSE IfcMappedItem::MappingSource - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcRepresentation MappedRepresentation() const; + void setMappedRepresentation(const ::Ifc4x3_add2::IfcRepresentation& v); + std::vector< IfcShapeAspect > HasShapeAspects() const; // INVERSE IfcShapeAspect::PartOfProductDefinitionShape + std::vector< IfcMappedItem > MapUsage() const; // INVERSE IfcMappedItem::MappingSource + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRepresentationMap (IfcEntityInstanceData&& e); - IfcRepresentationMap (::Ifc4x3_add2::IfcAxis2Placement* v1_MappingOrigin, ::Ifc4x3_add2::IfcRepresentation* v2_MappedRepresentation); - typedef aggregate_of< IfcRepresentationMap > list; + // IfcRepresentationMap (::Ifc4x3_add2::IfcAxis2Placement v1_MappingOrigin, ::Ifc4x3_add2::IfcRepresentation v2_MappedRepresentation); }; /// IfcResourceLevelRelationship is an abstract base class for relationships between resource-level entities. /// /// HISTORY New Entity in IFC 2x4 -class IFC_PARSE_API IfcResourceLevelRelationship : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcResourceLevelRelationship : public express::Entity { public: + IfcResourceLevelRelationship() {} + explicit IfcResourceLevelRelationship (const std::weak_ptr& data) : express::Entity(data) {} + /// A name used to identify or qualify the relationship. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// A description that may apply additional information about the relationship. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcResourceLevelRelationship (IfcEntityInstanceData&& e); - IfcResourceLevelRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description); - typedef aggregate_of< IfcResourceLevelRelationship > list; + // IfcResourceLevelRelationship (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description); }; -class IFC_PARSE_API IfcRigidOperation : public IfcCoordinateOperation { +class IFC_PARSE_API IfcRigidOperation : public IfcCoordinateOperation { public: - ::Ifc4x3_add2::IfcMeasureValue* FirstCoordinate() const; - void setFirstCoordinate(::Ifc4x3_add2::IfcMeasureValue* v); - ::Ifc4x3_add2::IfcMeasureValue* SecondCoordinate() const; - void setSecondCoordinate(::Ifc4x3_add2::IfcMeasureValue* v); - boost::optional< double > Height() const; - void setHeight(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + IfcRigidOperation() {} + explicit IfcRigidOperation (const std::weak_ptr& data) : IfcCoordinateOperation(data) {} + + ::Ifc4x3_add2::IfcMeasureValue FirstCoordinate() const; + void setFirstCoordinate(const ::Ifc4x3_add2::IfcMeasureValue& v); + ::Ifc4x3_add2::IfcMeasureValue SecondCoordinate() const; + void setSecondCoordinate(const ::Ifc4x3_add2::IfcMeasureValue& v); + std::optional< double > Height() const; + void setHeight(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRigidOperation (IfcEntityInstanceData&& e); - IfcRigidOperation (::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect* v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem* v2_TargetCRS, ::Ifc4x3_add2::IfcMeasureValue* v3_FirstCoordinate, ::Ifc4x3_add2::IfcMeasureValue* v4_SecondCoordinate, boost::optional< double > v5_Height); - typedef aggregate_of< IfcRigidOperation > list; + // IfcRigidOperation (::Ifc4x3_add2::IfcCoordinateReferenceSystemSelect v1_SourceCRS, ::Ifc4x3_add2::IfcCoordinateReferenceSystem v2_TargetCRS, ::Ifc4x3_add2::IfcMeasureValue v3_FirstCoordinate, ::Ifc4x3_add2::IfcMeasureValue v4_SecondCoordinate, std::optional< double > v5_Height); }; /// IfcRoot is the most abstract and root class for all IFC entity definitions that roots in the kernel or in subsequent layers of the IFC object model. It is therefore the common supertype of all IFC entities, beside those defined in an IFC resource schema. All entities that are subtypes of IfcRoot can be used independently, whereas resource schema entities, that are not subtypes of IfcRoot, are not supposed to be independent entities. /// @@ -12641,29 +16640,30 @@ public: /// HISTORY New entity in IFC Release 1.0 /// /// IFC2x4 CHANGE The attribute OwnerHistory has been made OPTIONAL. -class IFC_PARSE_API IfcRoot : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcRoot : public express::Entity { public: + IfcRoot() {} + explicit IfcRoot (const std::weak_ptr& data) : express::Entity(data) {} + /// Assignment of a globally unique identifier within the entire software world. std::string GlobalId() const; - void setGlobalId(std::string v); + void setGlobalId(const std::string& v); /// Assignment of the information about the current ownership of that object, including owning actor, application, local identification and information captured about the recent changes of the object, /// /// NOTE only the last modification in stored - either as addition, deletion or modification. /// /// IFC2x4 CHANGE  The attribute has been changed to be OPTIONAL. - ::Ifc4x3_add2::IfcOwnerHistory* OwnerHistory() const; - void setOwnerHistory(::Ifc4x3_add2::IfcOwnerHistory* v); + ::Ifc4x3_add2::IfcOwnerHistory OwnerHistory() const; + void setOwnerHistory(const ::Ifc4x3_add2::IfcOwnerHistory& v); /// Optional name for use by the participating software systems or users. For some subtypes of IfcRoot the insertion of the Name attribute may be required. This would be enforced by a where rule. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// Optional description, provided for exchanging informative comments. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRoot (IfcEntityInstanceData&& e); - IfcRoot (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description); - typedef aggregate_of< IfcRoot > list; + // IfcRoot (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description); }; /// Definition from ISO/CD 10303-41:1992: An SI unit is the fixed quantity used as a standard in terms of which items are measured as defined by ISO 1000 (clause 2). /// @@ -12672,42 +16672,44 @@ public: /// NOTE Corresponding ISO 10303 name: si_unit, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New entity in IFC Release 1.5.1. -class IFC_PARSE_API IfcSIUnit : public IfcNamedUnit { +class IFC_PARSE_API IfcSIUnit : public IfcNamedUnit { public: + IfcSIUnit() {} + explicit IfcSIUnit (const std::weak_ptr& data) : IfcNamedUnit(data) {} + /// The SI Prefix for defining decimal multiples and submultiples of the unit. - boost::optional< ::Ifc4x3_add2::IfcSIPrefix::Value > Prefix() const; - void setPrefix(boost::optional< ::Ifc4x3_add2::IfcSIPrefix::Value > v); + std::optional< ::Ifc4x3_add2::IfcSIPrefix::Value > Prefix() const; + void setPrefix(const std::optional< ::Ifc4x3_add2::IfcSIPrefix::Value >& v); /// The word, or group of words, by which the SI unit is referred to. /// /// NOTE  Even though the SI system's base unit for mass is kilogram, the IfcSIUnit for mass is gram if no Prefix is asserted. ::Ifc4x3_add2::IfcSIUnitName::Value Name() const; - void setName(::Ifc4x3_add2::IfcSIUnitName::Value v); - virtual const IfcParse::entity& declaration() const; + void setName(const ::Ifc4x3_add2::IfcSIUnitName::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSIUnit (IfcEntityInstanceData&& e); - IfcSIUnit (::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, boost::optional< ::Ifc4x3_add2::IfcSIPrefix::Value > v3_Prefix, ::Ifc4x3_add2::IfcSIUnitName::Value v4_Name); - typedef aggregate_of< IfcSIUnit > list; + // IfcSIUnit (::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, std::optional< ::Ifc4x3_add2::IfcSIPrefix::Value > v3_Prefix, ::Ifc4x3_add2::IfcSIUnitName::Value v4_Name); }; /// IfcSchedulingTime is the abstract supertype of entities that capture time-related information of processes. /// /// HISTORY: New entity in IFC2x4. -class IFC_PARSE_API IfcSchedulingTime : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcSchedulingTime : public express::Entity { public: + IfcSchedulingTime() {} + explicit IfcSchedulingTime (const std::weak_ptr& data) : express::Entity(data) {} + /// Optional name for the time definition. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// Specifies the origin of the scheduling time entity. It currently /// differentiates between predicted, simulated, measured, and user defined values. - boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > DataOrigin() const; - void setDataOrigin(boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > DataOrigin() const; + void setDataOrigin(const std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value >& v); /// Value of the data origin if DataOrigin attribute is USERDEFINED. - boost::optional< std::string > UserDefinedDataOrigin() const; - void setUserDefinedDataOrigin(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > UserDefinedDataOrigin() const; + void setUserDefinedDataOrigin(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSchedulingTime (IfcEntityInstanceData&& e); - IfcSchedulingTime (boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin); - typedef aggregate_of< IfcSchedulingTime > list; + // IfcSchedulingTime (std::optional< std::string > v1_Name, std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, std::optional< std::string > v3_UserDefinedDataOrigin); }; /// Definition from ISO/CD 10303-41:1992: The shape /// aspect is an identifiable element of the shape of a @@ -12746,33 +16748,34 @@ public: /// IfcRepresentationMap's that are used by an /// IfcTypeProduct through the /// RepresentationMaps attribute. -class IFC_PARSE_API IfcShapeAspect : public IfcUtil::IfcBaseEntity, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcShapeAspect : public express::Entity { public: + IfcShapeAspect() {} + explicit IfcShapeAspect (const std::weak_ptr& data) : express::Entity(data) {} + /// List of shape representations. Each member defines a valid representation of a particular type within a particular representation context as being an aspect (or part) of a product definition. /// IFC2x Edition 3 CHANGE  The data type has been changed from IfcShapeRepresentation to IfcShapeModel with upward compatibility - aggregate_of< ::Ifc4x3_add2::IfcShapeModel >::ptr ShapeRepresentations() const; - void setShapeRepresentations(aggregate_of< ::Ifc4x3_add2::IfcShapeModel >::ptr v); + std::vector< ::Ifc4x3_add2::IfcShapeModel > ShapeRepresentations() const; + void setShapeRepresentations(const std::vector< ::Ifc4x3_add2::IfcShapeModel >& v); /// The word or group of words by which the shape aspect is known. It is a tag to indicate the particular semantic of a component within the product definition shape, used to provide meaning. Example: use the tag "Glazing" to define which component of a window shape defines the glazing area. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// The word or group of words that characterize the shape aspect. It can be used to add additional meaning to the name of the aspect. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// An indication that the shape aspect is on the physical boundary of the product definition shape. If the value of this attribute is TRUE, it shall be asserted that the shape aspect being identified is on such a boundary. If the value is FALSE, it shall be asserted that the shape aspect being identified is not on such a boundary. If the value is UNKNOWN, it shall be asserted that it is not known whether or not the shape aspect being identified is on such a boundary. /// --- /// EXAMPLE: Would be FALSE for a center line, identified as shape aspect; would be TRUE for a cantilever. /// --- boost::logic::tribool ProductDefinitional() const; - void setProductDefinitional(boost::logic::tribool v); + void setProductDefinitional(const boost::logic::tribool& v); /// Reference to the product definition shape of which this class is an aspect. - ::Ifc4x3_add2::IfcProductRepresentationSelect* PartOfProductDefinitionShape() const; - void setPartOfProductDefinitionShape(::Ifc4x3_add2::IfcProductRepresentationSelect* v); - aggregate_of< IfcExternalReferenceRelationship >::ptr HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcProductRepresentationSelect PartOfProductDefinitionShape() const; + void setPartOfProductDefinitionShape(const ::Ifc4x3_add2::IfcProductRepresentationSelect& v); + std::vector< IfcExternalReferenceRelationship > HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcShapeAspect (IfcEntityInstanceData&& e); - IfcShapeAspect (aggregate_of< ::Ifc4x3_add2::IfcShapeModel >::ptr v1_ShapeRepresentations, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, boost::logic::tribool v4_ProductDefinitional, ::Ifc4x3_add2::IfcProductRepresentationSelect* v5_PartOfProductDefinitionShape); - typedef aggregate_of< IfcShapeAspect > list; + // IfcShapeAspect (std::vector< ::Ifc4x3_add2::IfcShapeModel > v1_ShapeRepresentations, std::optional< std::string > v2_Name, std::optional< std::string > v3_Description, boost::logic::tribool v4_ProductDefinitional, ::Ifc4x3_add2::IfcProductRepresentationSelect v5_PartOfProductDefinitionShape); }; /// IfcShapeModel represents /// the concept of a particular geometric and/or topological @@ -12792,14 +16795,15 @@ public: /// shape (via IfcShapeAspect). /// /// HISTORY  New entity in IFC2x3. -class IFC_PARSE_API IfcShapeModel : public IfcRepresentation { +class IFC_PARSE_API IfcShapeModel : public IfcRepresentation { public: - aggregate_of< IfcShapeAspect >::ptr OfShapeAspect() const; // INVERSE IfcShapeAspect::ShapeRepresentations - virtual const IfcParse::entity& declaration() const; + IfcShapeModel() {} + explicit IfcShapeModel (const std::weak_ptr& data) : IfcRepresentation(data) {} + + std::vector< IfcShapeAspect > OfShapeAspect() const; // INVERSE IfcShapeAspect::ShapeRepresentations + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcShapeModel (IfcEntityInstanceData&& e); - IfcShapeModel (::Ifc4x3_add2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr v4_Items); - typedef aggregate_of< IfcShapeModel > list; + // IfcShapeModel (::Ifc4x3_add2::IfcRepresentationContext v1_ContextOfItems, std::optional< std::string > v2_RepresentationIdentifier, std::optional< std::string > v3_RepresentationType, std::vector< ::Ifc4x3_add2::IfcRepresentationItem > v4_Items); }; /// The IfcShapeRepresentation represents the concept of a /// particular geometric representation of a product or a product @@ -12936,41 +16940,44 @@ public: /// HISTORY  New entity in IFC Release 1.5. /// /// IFC2x4 CHANGE  The RepresentationType's 'Curve3D', 'Surface2D', 'Surface3D', 'AdvancedBrep', 'LightSource', and the RepresentationIdentifier 'Lighting' have been added. -class IFC_PARSE_API IfcShapeRepresentation : public IfcShapeModel { +class IFC_PARSE_API IfcShapeRepresentation : public IfcShapeModel { public: - virtual const IfcParse::entity& declaration() const; + IfcShapeRepresentation() {} + explicit IfcShapeRepresentation (const std::weak_ptr& data) : IfcShapeModel(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcShapeRepresentation (IfcEntityInstanceData&& e); - IfcShapeRepresentation (::Ifc4x3_add2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr v4_Items); - typedef aggregate_of< IfcShapeRepresentation > list; + // IfcShapeRepresentation (::Ifc4x3_add2::IfcRepresentationContext v1_ContextOfItems, std::optional< std::string > v2_RepresentationIdentifier, std::optional< std::string > v3_RepresentationType, std::vector< ::Ifc4x3_add2::IfcRepresentationItem > v4_Items); }; /// Definition from IAI: Describe more rarely needed connection properties. /// /// HISTORY: New entity in IFC 2x2. -class IFC_PARSE_API IfcStructuralConnectionCondition : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcStructuralConnectionCondition : public express::Entity { public: + IfcStructuralConnectionCondition() {} + explicit IfcStructuralConnectionCondition (const std::weak_ptr& data) : express::Entity(data) {} + /// Optionally defines a name for this connection condition. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Name() const; + void setName(const std::optional< 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 aggregate_of< IfcStructuralConnectionCondition > list; + // IfcStructuralConnectionCondition (std::optional< std::string > v1_Name); }; /// Definition from IAI: The abstract entity IfcStructuralLoadOrResult is the supertype of all loads (actions or reactions) or of certain requirements resulting from structural analysis, or certain provisions which influence structural analysis. /// /// HISTORY: New entity in IFC 2x2. -class IFC_PARSE_API IfcStructuralLoad : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcStructuralLoad : public express::Entity { public: + IfcStructuralLoad() {} + explicit IfcStructuralLoad (const std::weak_ptr& data) : express::Entity(data) {} + /// Optionally defines a name for this load. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Name() const; + void setName(const std::optional< 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 aggregate_of< IfcStructuralLoad > list; + // IfcStructuralLoad (std::optional< std::string > v1_Name); }; /// Definition from IAI: This class combines one or more load or result values in a 1- or 2-dimensional configuration. /// @@ -12983,82 +16990,87 @@ public: /// If the loads or results comprise a surface activity, 2-dimensional locations shall be given, measured in the surface activity's local x and y directions. The location shall not exceed the bounds of the surface activity. /// /// NOTE  There are no ordering requirements in the 2-dimensional case, but the 1-dimensional case shall be spatially ordered for simplicity. -class IFC_PARSE_API IfcStructuralLoadConfiguration : public IfcStructuralLoad { +class IFC_PARSE_API IfcStructuralLoadConfiguration : public IfcStructuralLoad { public: + IfcStructuralLoadConfiguration() {} + explicit IfcStructuralLoadConfiguration (const std::weak_ptr& data) : IfcStructuralLoad(data) {} + /// List of load or result values. - aggregate_of< ::Ifc4x3_add2::IfcStructuralLoadOrResult >::ptr Values() const; - void setValues(aggregate_of< ::Ifc4x3_add2::IfcStructuralLoadOrResult >::ptr v); + std::vector< ::Ifc4x3_add2::IfcStructuralLoadOrResult > Values() const; + void setValues(const std::vector< ::Ifc4x3_add2::IfcStructuralLoadOrResult >& v); /// Locations of the load samples or result samples, given within the local coordinate system defined by the instance which uses this resource object. Each item in the list of locations pertains to the values list item at the same list index. This attribute is optional for configurations in which the locations are implicitly known from higher-level definitions. - boost::optional< std::vector< std::vector< double > > > Locations() const; - void setLocations(boost::optional< std::vector< std::vector< double > > > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< std::vector< double > > > Locations() const; + void setLocations(const std::optional< std::vector< std::vector< double > > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralLoadConfiguration (IfcEntityInstanceData&& e); - IfcStructuralLoadConfiguration (boost::optional< std::string > v1_Name, aggregate_of< ::Ifc4x3_add2::IfcStructuralLoadOrResult >::ptr v2_Values, boost::optional< std::vector< std::vector< double > > > v3_Locations); - typedef aggregate_of< IfcStructuralLoadConfiguration > list; + // IfcStructuralLoadConfiguration (std::optional< std::string > v1_Name, std::vector< ::Ifc4x3_add2::IfcStructuralLoadOrResult > v2_Values, std::optional< std::vector< std::vector< double > > > v3_Locations); }; /// Definition from IAI: Abstract superclass of simple load or result classes. /// /// HISTORY: New abstract superclass in IFC 2x4, upwards compatibility of all subtypes is preserved. -class IFC_PARSE_API IfcStructuralLoadOrResult : public IfcStructuralLoad { +class IFC_PARSE_API IfcStructuralLoadOrResult : public IfcStructuralLoad { public: - virtual const IfcParse::entity& declaration() const; + IfcStructuralLoadOrResult() {} + explicit IfcStructuralLoadOrResult (const std::weak_ptr& data) : IfcStructuralLoad(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralLoadOrResult (IfcEntityInstanceData&& e); - IfcStructuralLoadOrResult (boost::optional< std::string > v1_Name); - typedef aggregate_of< IfcStructuralLoadOrResult > list; + // IfcStructuralLoadOrResult (std::optional< std::string > v1_Name); }; /// Definition from IAI: The abstract entity IfcStructuralLoadStatic is the supertype of all static loads (actions or reactions) which can be defined. Within scope are single i.e. concentrated forces and moments, linear i.e. one-dimensionally distributed forces and moments, planar i.e. two-dimensionally distributed forces, furthermore displacements and temperature loads. /// /// HISTORY: New entity in IFC 2x2. -class IFC_PARSE_API IfcStructuralLoadStatic : public IfcStructuralLoadOrResult { +class IFC_PARSE_API IfcStructuralLoadStatic : public IfcStructuralLoadOrResult { public: - virtual const IfcParse::entity& declaration() const; + IfcStructuralLoadStatic() {} + explicit IfcStructuralLoadStatic (const std::weak_ptr& data) : IfcStructuralLoadOrResult(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralLoadStatic (IfcEntityInstanceData&& e); - IfcStructuralLoadStatic (boost::optional< std::string > v1_Name); - typedef aggregate_of< IfcStructuralLoadStatic > list; + // IfcStructuralLoadStatic (std::optional< std::string > v1_Name); }; /// An instance of the entity IfcStructuralLoadTemperature shall be used to define actions which are caused by a temperature change. As shown in Figure 332, the change of temperature is given with a constant value which is applied to the complete section and values for temperature differences between outer fibres of the section. /// /// HISTORY  New entity in IFC2x2. /// /// Figure 332 — Structural load temperature -class IFC_PARSE_API IfcStructuralLoadTemperature : public IfcStructuralLoadStatic { +class IFC_PARSE_API IfcStructuralLoadTemperature : public IfcStructuralLoadStatic { public: + IfcStructuralLoadTemperature() {} + explicit IfcStructuralLoadTemperature (const std::weak_ptr& data) : IfcStructuralLoadStatic(data) {} + /// Temperature change which affects the complete section of the structural member, or the uniform portion of a non-uniform temperature change. /// /// A positive value describes an increase in temperature. I.e. a positive constant temperature change causes elongation of a member, or compression in the member if there are respective restraints. - boost::optional< double > DeltaTConstant() const; - void setDeltaTConstant(boost::optional< double > v); + std::optional< double > DeltaTConstant() const; + void setDeltaTConstant(const std::optional< double >& v); /// Non-uniform temperature change, specified as the difference of the temperature change at the outer fibre of the positive y direction minus the temperature change at the outer fibre of the negative y direction of the analysis member. /// /// I.e. a positive non-uniform temperature change in y induces a negative curvature of the member about z, or a positive bending moment about z if there are respective restraints. y and z are local member axes. - boost::optional< double > DeltaTY() const; - void setDeltaTY(boost::optional< double > v); + std::optional< double > DeltaTY() const; + void setDeltaTY(const std::optional< double >& v); /// Non-uniform temperature change, specified as the difference of the temperature change at the outer fibre of the positive z direction minus the temperature change at the outer fibre of the negative z direction of the analysis member. /// /// I.e. a positive non-uniform temperature change in z induces a positive curvature of the member about y, or a negative bending moment about y if there are respective restraints. y and z are local member axes. - boost::optional< double > DeltaTZ() const; - void setDeltaTZ(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > DeltaTZ() const; + void setDeltaTZ(const std::optional< 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_DeltaTConstant, boost::optional< double > v3_DeltaTY, boost::optional< double > v4_DeltaTZ); - typedef aggregate_of< IfcStructuralLoadTemperature > list; + // IfcStructuralLoadTemperature (std::optional< std::string > v1_Name, std::optional< double > v2_DeltaTConstant, std::optional< double > v3_DeltaTY, std::optional< double > v4_DeltaTZ); }; /// IfcStyleModel represents the concept of a particular presentation style defined for a material (or other characteristic) of a product or a product component within a representation context. This representation context may (but has not to be) a geometric representation context. /// /// IfcStyleModel can be a style representation (presentation style) of a material (via IfcMaterialDefinitionRepresentation), potentially differentiated for different representation contexts (for example, different material hatching depending on the scale of the target representation context). /// /// HISTORY  New entity in IFC2x3. -class IFC_PARSE_API IfcStyleModel : public IfcRepresentation { +class IFC_PARSE_API IfcStyleModel : public IfcRepresentation { public: - virtual const IfcParse::entity& declaration() const; + IfcStyleModel() {} + explicit IfcStyleModel (const std::weak_ptr& data) : IfcRepresentation(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStyleModel (IfcEntityInstanceData&& e); - IfcStyleModel (::Ifc4x3_add2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr v4_Items); - typedef aggregate_of< IfcStyleModel > list; + // IfcStyleModel (::Ifc4x3_add2::IfcRepresentationContext v1_ContextOfItems, std::optional< std::string > v2_RepresentationIdentifier, std::optional< std::string > v3_RepresentationType, std::vector< ::Ifc4x3_add2::IfcRepresentationItem > v4_Items); }; /// Definition from ISO/CD 10303-46:1992: The styled item is an assignment of style for presentation to a geometric representation item as it is used in a representation. /// @@ -13088,29 +17100,30 @@ public: /// NOTE  The new IfcStyleAssignmentSelect allows the direct assignment styles, such as IfcCurveStyle, IfcSurfaceStyle without using the intermediate IfcPresentationStyleAssignment /// /// Figure 293 — Styled item -class IFC_PARSE_API IfcStyledItem : public IfcRepresentationItem { +class IFC_PARSE_API IfcStyledItem : public IfcRepresentationItem { public: + IfcStyledItem() {} + explicit IfcStyledItem (const std::weak_ptr& data) : IfcRepresentationItem(data) {} + /// A geometric representation item to which the style is assigned. /// /// IFC2x Edition 2 Addendum 2 CHANGE The attribute Item has been made optional. Upward compatibility for file based exchange is guaranteed. - ::Ifc4x3_add2::IfcRepresentationItem* Item() const; - void setItem(::Ifc4x3_add2::IfcRepresentationItem* v); + ::Ifc4x3_add2::IfcRepresentationItem Item() const; + void setItem(const ::Ifc4x3_add2::IfcRepresentationItem& v); /// Representation styles which are assigned, either to an geometric representation item, or to a material definition. /// /// IFC2x4 CHANGE The data type has been changed to IfcStyleAssignmentSelect with upward compatibility /// for file based exchange. /// /// NOTE Only the select item IfcPresentationStyle shall be used from IFC2x4 onwards, the IfcPresentationStyleAssignment has been deprecated. - aggregate_of< ::Ifc4x3_add2::IfcPresentationStyle >::ptr Styles() const; - void setStyles(aggregate_of< ::Ifc4x3_add2::IfcPresentationStyle >::ptr v); + std::vector< ::Ifc4x3_add2::IfcPresentationStyle > Styles() const; + void setStyles(const std::vector< ::Ifc4x3_add2::IfcPresentationStyle >& v); /// The word, or group of words, by which the styled item is referred to. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStyledItem (IfcEntityInstanceData&& e); - IfcStyledItem (::Ifc4x3_add2::IfcRepresentationItem* v1_Item, aggregate_of< ::Ifc4x3_add2::IfcPresentationStyle >::ptr v2_Styles, boost::optional< std::string > v3_Name); - typedef aggregate_of< IfcStyledItem > list; + // IfcStyledItem (::Ifc4x3_add2::IfcRepresentationItem v1_Item, std::vector< ::Ifc4x3_add2::IfcPresentationStyle > v2_Styles, std::optional< std::string > v3_Name); }; /// The IfcStyledRepresentation represents the concept of a styled presentation being a representation of a product or a product component, like material. within a representation context. This representation context does not need to be (but may be) a geometric representation context. /// @@ -13119,35 +17132,37 @@ public: /// A styled representation has to include one or several styled items with the associated style information (curve, symbol, text, fill area, or surface styles). It shall not contain the geometric representation items that are styled. /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcStyledRepresentation : public IfcStyleModel { +class IFC_PARSE_API IfcStyledRepresentation : public IfcStyleModel { public: - virtual const IfcParse::entity& declaration() const; + IfcStyledRepresentation() {} + explicit IfcStyledRepresentation (const std::weak_ptr& data) : IfcStyleModel(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStyledRepresentation (IfcEntityInstanceData&& e); - IfcStyledRepresentation (::Ifc4x3_add2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr v4_Items); - typedef aggregate_of< IfcStyledRepresentation > list; + // IfcStyledRepresentation (::Ifc4x3_add2::IfcRepresentationContext v1_ContextOfItems, std::optional< std::string > v2_RepresentationIdentifier, std::optional< std::string > v3_RepresentationType, std::vector< ::Ifc4x3_add2::IfcRepresentationItem > v4_Items); }; /// Definition from IAI: Describes required or provided reinforcement area of surface members. /// /// NOTE  Member design parameters like concrete cover, effective depth, orientation of meshes or rebars (two, optionally three directions) etc. are not specified in IfcStructuralLoadResource schema. They shall be specified at the level of structural members. /// /// HISTORY: New entity in IFC 2x4. -class IFC_PARSE_API IfcSurfaceReinforcementArea : public IfcStructuralLoadOrResult { +class IFC_PARSE_API IfcSurfaceReinforcementArea : public IfcStructuralLoadOrResult { public: + IfcSurfaceReinforcementArea() {} + explicit IfcSurfaceReinforcementArea (const std::weak_ptr& data) : IfcStructuralLoadOrResult(data) {} + /// Reinforcement at the face of the member which is located at the side of the positive local z direction of the surface member. Specified as area per length, e.g. square metre per metre (hence length measure, e.g. metre). The reinforcement area may be specified for two or three directions of reinforcement bars. - boost::optional< std::vector< double > /*[2:3]*/ > SurfaceReinforcement1() const; - void setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v); + std::optional< std::vector< double > /*[2:3]*/ > SurfaceReinforcement1() const; + void setSurfaceReinforcement1(const std::optional< std::vector< double > /*[2:3]*/ >& v); /// Reinforcement at the face of the member which is located at the side of the negative local z direction of the surface member. Specified as area per length, e.g. square metre per metre (hence length measure, e.g. metre). The reinforcement area may be specified for two or three directions of reinforcement bars. - boost::optional< std::vector< double > /*[2:3]*/ > SurfaceReinforcement2() const; - void setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v); + std::optional< std::vector< double > /*[2:3]*/ > SurfaceReinforcement2() const; + void setSurfaceReinforcement2(const std::optional< std::vector< double > /*[2:3]*/ >& v); /// Shear reinforcement. Specified as area per area, e.g. square metre per square metre (hence ratio measure, i.e. unitless). - boost::optional< double > ShearReinforcement() const; - void setShearReinforcement(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > ShearReinforcement() const; + void setShearReinforcement(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSurfaceReinforcementArea (IfcEntityInstanceData&& e); - IfcSurfaceReinforcementArea (boost::optional< std::string > v1_Name, boost::optional< std::vector< double > /*[2:3]*/ > v2_SurfaceReinforcement1, boost::optional< std::vector< double > /*[2:3]*/ > v3_SurfaceReinforcement2, boost::optional< double > v4_ShearReinforcement); - typedef aggregate_of< IfcSurfaceReinforcementArea > list; + // IfcSurfaceReinforcementArea (std::optional< std::string > v1_Name, std::optional< std::vector< double > /*[2:3]*/ > v2_SurfaceReinforcement1, std::optional< std::vector< double > /*[2:3]*/ > v3_SurfaceReinforcement2, std::optional< double > v4_ShearReinforcement); }; /// IfcSurfaceStyle is an assignment of one or many surface style elements to a surface, defined by subtypes of IfcSurface, IfcFaceBasedSurfaceModel, IfcShellBasedSurfaceModel, or by subtypes of IfcSolidModel. The positive direction of the surface normal relates to the positive side. In case of solids the outside of the solid is to be taken as positive side. /// @@ -13156,19 +17171,20 @@ public: /// NOTE Corresponding ISO 10303 entity: surface_style_usage and surface_side_style. Please refer to ISO/IS 10303-46:1994 for the final definition of the formal standard. The surface style definition in regard to support of rendering has been greatly expanded beyond the scope of ISO/IS 10303-46. /// /// HISTORY New Entity in IFC 2.x. -class IFC_PARSE_API IfcSurfaceStyle : public IfcPresentationStyle { +class IFC_PARSE_API IfcSurfaceStyle : public IfcPresentationStyle { public: + IfcSurfaceStyle() {} + explicit IfcSurfaceStyle (const std::weak_ptr& data) : IfcPresentationStyle(data) {} + /// An indication of which side of the surface to apply the style. ::Ifc4x3_add2::IfcSurfaceSide::Value Side() const; - void setSide(::Ifc4x3_add2::IfcSurfaceSide::Value v); + void setSide(const ::Ifc4x3_add2::IfcSurfaceSide::Value& v); /// A collection of different surface styles. - aggregate_of< ::Ifc4x3_add2::IfcSurfaceStyleElementSelect >::ptr Styles() const; - void setStyles(aggregate_of< ::Ifc4x3_add2::IfcSurfaceStyleElementSelect >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcSurfaceStyleElementSelect > Styles() const; + void setStyles(const std::vector< ::Ifc4x3_add2::IfcSurfaceStyleElementSelect >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSurfaceStyle (IfcEntityInstanceData&& e); - IfcSurfaceStyle (boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcSurfaceSide::Value v2_Side, aggregate_of< ::Ifc4x3_add2::IfcSurfaceStyleElementSelect >::ptr v3_Styles); - typedef aggregate_of< IfcSurfaceStyle > list; + // IfcSurfaceStyle (std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcSurfaceSide::Value v2_Side, std::vector< ::Ifc4x3_add2::IfcSurfaceStyleElementSelect > v3_Styles); }; /// IfcSurfaceStyleLighting is a container class for properties for calculation of physically exact illuminance related to a particular surface style. /// @@ -13181,48 +17197,50 @@ public: /// EXAMPLE  A green glass transmits only green light, so its transmission factor is 0.0 for red, between 0.0 and 1.0 for green and 0.0 for blue. A green surface reflects only green light, so the reflectance factor is 0.0 for red, between 0.0 and 1.0 for green and 0.0 for blue. /// /// HISTORY  New entity in IFC 2x2. -class IFC_PARSE_API IfcSurfaceStyleLighting : public IfcPresentationItem, public IfcSurfaceStyleElementSelect { +class IFC_PARSE_API IfcSurfaceStyleLighting : public IfcPresentationItem { public: + IfcSurfaceStyleLighting() {} + explicit IfcSurfaceStyleLighting (const std::weak_ptr& data) : IfcPresentationItem(data) {} + /// The degree of diffusion of the transmitted light. In the case of completely transparent materials there is no diffusion. The greater the diffusing power, the smaller the direct component of the transmitted light, up to the point where only diffuse light is produced.A value of 1 means totally diffuse for that colour part of the light. /// The factor can be measured physically and has three ratios for the red, green and blue part of the light. - ::Ifc4x3_add2::IfcColourRgb* DiffuseTransmissionColour() const; - void setDiffuseTransmissionColour(::Ifc4x3_add2::IfcColourRgb* v); + ::Ifc4x3_add2::IfcColourRgb DiffuseTransmissionColour() const; + void setDiffuseTransmissionColour(const ::Ifc4x3_add2::IfcColourRgb& v); /// The degree of diffusion of the reflected light. In the case of specular surfaces there is no diffusion. The greater the diffusing power of the reflecting surface, the smaller the specular component of the reflected light, up to the point where only diffuse light is produced. A value of 1 means totally diffuse for that colour part of the light. /// The factor can be measured physically and has three ratios for the red, green and blue part of the light. - ::Ifc4x3_add2::IfcColourRgb* DiffuseReflectionColour() const; - void setDiffuseReflectionColour(::Ifc4x3_add2::IfcColourRgb* v); + ::Ifc4x3_add2::IfcColourRgb DiffuseReflectionColour() const; + void setDiffuseReflectionColour(const ::Ifc4x3_add2::IfcColourRgb& v); /// Describes how the light falling on a body is totally or partially transmitted. /// The factor can be measured physically and has three ratios for the red, green and blue part of the light. - ::Ifc4x3_add2::IfcColourRgb* TransmissionColour() const; - void setTransmissionColour(::Ifc4x3_add2::IfcColourRgb* v); + ::Ifc4x3_add2::IfcColourRgb TransmissionColour() const; + void setTransmissionColour(const ::Ifc4x3_add2::IfcColourRgb& v); /// A coefficient that determines the extent that the light falling onto a surface is fully or partially reflected. /// The factor can be measured physically and has three ratios for the red, green and blue part of the light. - ::Ifc4x3_add2::IfcColourRgb* ReflectanceColour() const; - void setReflectanceColour(::Ifc4x3_add2::IfcColourRgb* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcColourRgb ReflectanceColour() const; + void setReflectanceColour(const ::Ifc4x3_add2::IfcColourRgb& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSurfaceStyleLighting (IfcEntityInstanceData&& e); - IfcSurfaceStyleLighting (::Ifc4x3_add2::IfcColourRgb* v1_DiffuseTransmissionColour, ::Ifc4x3_add2::IfcColourRgb* v2_DiffuseReflectionColour, ::Ifc4x3_add2::IfcColourRgb* v3_TransmissionColour, ::Ifc4x3_add2::IfcColourRgb* v4_ReflectanceColour); - typedef aggregate_of< IfcSurfaceStyleLighting > list; + // IfcSurfaceStyleLighting (::Ifc4x3_add2::IfcColourRgb v1_DiffuseTransmissionColour, ::Ifc4x3_add2::IfcColourRgb v2_DiffuseReflectionColour, ::Ifc4x3_add2::IfcColourRgb v3_TransmissionColour, ::Ifc4x3_add2::IfcColourRgb v4_ReflectanceColour); }; /// IfcSurfaceStyleRefraction extends the surface style lighting, or the surface style rendering definition for properties for calculation of physically exact illuminance by adding seldomly used properties. Currently this includes the refraction index (by which the light ray refracts when passing through a prism) and the dispersion factor (or Abbe constant) which takes into account the wavelength dependency of the refraction. /// /// NOTE: If such refraction properties are used, the IfcSurfaceStyle should include within its set of Styles (depending on whether rendering or lighting is used) an instance of IfcSurfaceStyleLighting and IfcSurfaceStyleRefraction, or an instance of IfcSurfaceStyleRendering and IfcSurfaceStyleRefraction. /// /// HISTORY: New entity in IFC 2x2. -class IFC_PARSE_API IfcSurfaceStyleRefraction : public IfcPresentationItem, public IfcSurfaceStyleElementSelect { +class IFC_PARSE_API IfcSurfaceStyleRefraction : public IfcPresentationItem { public: + IfcSurfaceStyleRefraction() {} + explicit IfcSurfaceStyleRefraction (const std::weak_ptr& data) : IfcPresentationItem(data) {} + /// The index of refraction for all wave lengths of light. The refraction index is the ratio between the speed of light in a vacuum and the speed of light in the medium. E.g. glass has a refraction index of 1.5, whereas water has an index of 1.33 - boost::optional< double > RefractionIndex() const; - void setRefractionIndex(boost::optional< double > v); + std::optional< double > RefractionIndex() const; + void setRefractionIndex(const std::optional< double >& v); /// The Abbe constant given as a fixed ratio between the refractive indices of the material at different wavelengths. A low Abbe number means a high dispersive power. In general this translates to a greater angular spread of the emergent spectrum. - boost::optional< double > DispersionFactor() const; - void setDispersionFactor(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > DispersionFactor() const; + void setDispersionFactor(const std::optional< 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 aggregate_of< IfcSurfaceStyleRefraction > list; + // IfcSurfaceStyleRefraction (std::optional< double > v1_RefractionIndex, std::optional< double > v2_DispersionFactor); }; /// Definition from ISO/CD 10303-46:1992: The surface style rendering allows the realistic visualization of surfaces referring to rendering techniques based on the laws of physics and mathematics. /// @@ -13231,18 +17249,19 @@ public: /// NOTE Corresponding ISO 10303 entity: surface_style_rendering. Please refer to ISO/IS 10303-46:1994 for the final definition of the formal standard. No rendering method is defined for each surface style (such as constant, colour, dot or normal shading), therefore the attribute rendering_method has been omitted. /// /// HISTORY: New entity in IFC 2x. -class IFC_PARSE_API IfcSurfaceStyleShading : public IfcPresentationItem, public IfcSurfaceStyleElementSelect { +class IFC_PARSE_API IfcSurfaceStyleShading : public IfcPresentationItem { public: + IfcSurfaceStyleShading() {} + explicit IfcSurfaceStyleShading (const std::weak_ptr& data) : IfcPresentationItem(data) {} + /// The colour used to render the surface. The surface colour for visualisation is defined by specifying the intensity of red, green and blue. - ::Ifc4x3_add2::IfcColourRgb* SurfaceColour() const; - void setSurfaceColour(::Ifc4x3_add2::IfcColourRgb* v); - boost::optional< double > Transparency() const; - void setTransparency(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcColourRgb SurfaceColour() const; + void setSurfaceColour(const ::Ifc4x3_add2::IfcColourRgb& v); + std::optional< double > Transparency() const; + void setTransparency(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSurfaceStyleShading (IfcEntityInstanceData&& e); - IfcSurfaceStyleShading (::Ifc4x3_add2::IfcColourRgb* v1_SurfaceColour, boost::optional< double > v2_Transparency); - typedef aggregate_of< IfcSurfaceStyleShading > list; + // IfcSurfaceStyleShading (::Ifc4x3_add2::IfcColourRgb v1_SurfaceColour, std::optional< double > v2_Transparency); }; /// The entity IfcSurfaceStyleWithTextures allows to include image textures in surface styles. These image textures can be applied repeating across the surface or mapped with a particular scale upon the surface. /// @@ -13262,16 +17281,17 @@ public: /// HISTORY  New entity in IFC2x2. /// /// IFC2x3 CHANGE  inverse attribute HasTextureCoordinates deleted. -class IFC_PARSE_API IfcSurfaceStyleWithTextures : public IfcPresentationItem, public IfcSurfaceStyleElementSelect { +class IFC_PARSE_API IfcSurfaceStyleWithTextures : public IfcPresentationItem { public: + IfcSurfaceStyleWithTextures() {} + explicit IfcSurfaceStyleWithTextures (const std::weak_ptr& data) : IfcPresentationItem(data) {} + /// The textures applied to the surface. In case of more than one surface texture is included, the IfcSurfaceStyleWithTexture defines a multi texture. - aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr Textures() const; - void setTextures(aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > Textures() const; + void setTextures(const std::vector< ::Ifc4x3_add2::IfcSurfaceTexture >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSurfaceStyleWithTextures (IfcEntityInstanceData&& e); - IfcSurfaceStyleWithTextures (aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v1_Textures); - typedef aggregate_of< IfcSurfaceStyleWithTextures > list; + // IfcSurfaceStyleWithTextures (std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > v1_Textures); }; /// An IfcSurfaceTexture provides a 2-dimensional /// image-based texture map. It can either be given by referencing an @@ -13365,41 +17385,42 @@ public: /// HISTORY  New entity in IFC 2x2. /// /// IFC2x4 CHANGE  Attribute TextureType replaces by Mode, attributes Parameter and MapsTo aded, new inverse attribute UsedInStyle. -class IFC_PARSE_API IfcSurfaceTexture : public IfcPresentationItem { +class IFC_PARSE_API IfcSurfaceTexture : public IfcPresentationItem { public: + IfcSurfaceTexture() {} + explicit IfcSurfaceTexture (const std::weak_ptr& data) : IfcPresentationItem(data) {} + /// The RepeatS field specifies how the texture wraps in the S direction. If RepeatS is TRUE (the default), the texture map is repeated outside the [0.0, 1.0] texture coordinate range in the S direction so that it fills the shape. If RepeatS is FALSE, the texture coordinates are clamped in the S direction to lie within the [0.0, 1.0] range. bool RepeatS() const; - void setRepeatS(bool v); + void setRepeatS(const bool& v); /// The RepeatT field specifies how the texture wraps in the T direction. If RepeatT is TRUE (the default), the texture map is repeated outside the [0.0, 1.0] texture coordinate range in the T direction so that it fills the shape. If RepeatT is FALSE, the texture coordinates are clamped in the T direction to lie within the [0.0, 1.0] range. bool RepeatT() const; - void setRepeatT(bool v); + void setRepeatT(const bool& v); /// The Mode attribute is provided to control the appearance of a multi textures. The mode then controls the type of blending operation. The mode includes a MODULATE for a lit appearance, a REPLACE for a unlit appearance, and variations of the two. /// /// NOTE  The applicable values for the Mode attribute are determined by view definitions or implementer agreements. It is recommended to use the modes described in ISO/IES 19775-1.2:2008 X3D Architecture and base components Edition 2, Part 1. See 18.4.3 MultiTexture for recommended values. /// /// IFC2x4 CHANGE  New attribute replacing previous TextureType. - boost::optional< std::string > Mode() const; - void setMode(boost::optional< std::string > v); + std::optional< std::string > Mode() const; + void setMode(const std::optional< std::string >& v); /// The TextureTransform defines a 2D transformation that is applied to the texture coordinates. It affects the way texture coordinates are applied to the surfaces of geometric representation itesm. The 2D transformation supports changes to the size, orientation, and position of textures on shapes. /// /// Mirroring is not allowed to be used in the IfcCarteesianTransformationOperator - ::Ifc4x3_add2::IfcCartesianTransformationOperator2D* TextureTransform() const; - void setTextureTransform(::Ifc4x3_add2::IfcCartesianTransformationOperator2D* v); + ::Ifc4x3_add2::IfcCartesianTransformationOperator2D TextureTransform() const; + void setTextureTransform(const ::Ifc4x3_add2::IfcCartesianTransformationOperator2D& v); /// The Parameter attribute is provided to control the appearance of a multi textures. The applicable parameters depend on the value of the Mode attribute. /// /// NOTE  The applicable values for the list of Parameter attributes are determined by view definitions or implementer agreements. It is recommended to use the source and the function fields described in ISO/IES 19775-1.2:2008 X3D Architecture and base components Edition 2, Part 1. See 18.4.3 MultiTexture for recommended values. /// By convention, Parameter[1] shall then hold the source value, Parameter[2] the function value, Parameter[3] the base RGB color for select operations, and Parameter[4] the alpha value for select operations. /// /// IFC2x4 CHANGE  New attribute added at the end of the attribute list. - boost::optional< std::vector< std::string > /*[1:?]*/ > Parameter() const; - void setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v); - aggregate_of< IfcTextureCoordinate >::ptr IsMappedBy() const; // INVERSE IfcTextureCoordinate::Maps - aggregate_of< IfcSurfaceStyleWithTextures >::ptr UsedInStyles() const; // INVERSE IfcSurfaceStyleWithTextures::Textures - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< std::string > /*[1:?]*/ > Parameter() const; + void setParameter(const std::optional< std::vector< std::string > /*[1:?]*/ >& v); + std::vector< IfcTextureCoordinate > IsMappedBy() const; // INVERSE IfcTextureCoordinate::Maps + std::vector< IfcSurfaceStyleWithTextures > UsedInStyles() const; // INVERSE IfcSurfaceStyleWithTextures::Textures + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSurfaceTexture (IfcEntityInstanceData&& e); - IfcSurfaceTexture (bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter); - typedef aggregate_of< IfcSurfaceTexture > list; + // IfcSurfaceTexture (bool v1_RepeatS, bool v2_RepeatT, std::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D v4_TextureTransform, std::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter); }; /// An IfcTable is a data structure for the provision of information in the form of rows and columns. Each instance may have IfcTableColumn instances that define the name, description and units for each column. The rows of information are stored as a list of IfcTableRow objects. /// @@ -13416,49 +17437,51 @@ public: /// HISTORY  New entity in IFC R1.5. /// /// IFC2x4 CHANGE  Columns attribute added. -class IFC_PARSE_API IfcTable : public IfcUtil::IfcBaseEntity, public IfcMetricValueSelect, public IfcObjectReferenceSelect { +class IFC_PARSE_API IfcTable : public express::Entity { public: + IfcTable() {} + explicit IfcTable (const std::weak_ptr& data) : express::Entity(data) {} + /// A unique name which is intended to describe the usage of the Table. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// Reference to information content of rows. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTableRow >::ptr > Rows() const; - void setRows(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTableRow >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcTableRow > > Rows() const; + void setRows(const std::optional< std::vector< ::Ifc4x3_add2::IfcTableRow > >& v); /// The column information associated with this table. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTableColumn >::ptr > Columns() const; - void setColumns(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTableColumn >::ptr > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< ::Ifc4x3_add2::IfcTableColumn > > Columns() const; + void setColumns(const std::optional< std::vector< ::Ifc4x3_add2::IfcTableColumn > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTable (IfcEntityInstanceData&& e); - IfcTable (boost::optional< std::string > v1_Name, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTableRow >::ptr > v2_Rows, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcTableColumn >::ptr > v3_Columns); - typedef aggregate_of< IfcTable > list; + // IfcTable (std::optional< std::string > v1_Name, std::optional< std::vector< ::Ifc4x3_add2::IfcTableRow > > v2_Rows, std::optional< std::vector< ::Ifc4x3_add2::IfcTableColumn > > v3_Columns); }; /// An IfcTableColumn is a data structure that captures column information for use in an IfcTable. Each instance defines the name, description, identifier, and units of measure that are applicable to the columnar data associated with the IfcTableRow objects. /// /// The use of IfcTableColumn supercedes the IsHeading flag associated with IfcTableRow. /// /// HISTORY  New entity in IFC2x4. -class IFC_PARSE_API IfcTableColumn : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcTableColumn : public express::Entity { public: + IfcTableColumn() {} + explicit IfcTableColumn (const std::weak_ptr& data) : express::Entity(data) {} + /// Table column identifier. - boost::optional< std::string > Identifier() const; - void setIdentifier(boost::optional< std::string > v); + std::optional< std::string > Identifier() const; + void setIdentifier(const std::optional< std::string >& v); /// The table column display name. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// Descriptive text for the table column. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// The unit of measure to be used for this column's data. - ::Ifc4x3_add2::IfcUnit* Unit() const; - void setUnit(::Ifc4x3_add2::IfcUnit* v); - ::Ifc4x3_add2::IfcReference* ReferencePath() const; - void setReferencePath(::Ifc4x3_add2::IfcReference* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcUnit Unit() const; + void setUnit(const ::Ifc4x3_add2::IfcUnit& v); + ::Ifc4x3_add2::IfcReference ReferencePath() const; + void setReferencePath(const ::Ifc4x3_add2::IfcReference& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTableColumn (IfcEntityInstanceData&& e); - IfcTableColumn (boost::optional< std::string > v1_Identifier, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, ::Ifc4x3_add2::IfcUnit* v4_Unit, ::Ifc4x3_add2::IfcReference* v5_ReferencePath); - typedef aggregate_of< IfcTableColumn > list; + // IfcTableColumn (std::optional< std::string > v1_Identifier, std::optional< std::string > v2_Name, std::optional< std::string > v3_Description, ::Ifc4x3_add2::IfcUnit v4_Unit, ::Ifc4x3_add2::IfcReference v5_ReferencePath); }; /// IfcTableRow contains data for a single row within an IfcTable. /// @@ -13473,19 +17496,20 @@ public: /// Figure 338 — Table row use alternative /// /// HISTORY  New entity in IFC R1.5. -class IFC_PARSE_API IfcTableRow : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcTableRow : public express::Entity { public: + IfcTableRow() {} + explicit IfcTableRow (const std::weak_ptr& data) : express::Entity(data) {} + /// The data value of the table cell.. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > RowCells() const; - void setRowCells(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > RowCells() const; + void setRowCells(const std::optional< std::vector< ::Ifc4x3_add2::IfcValue > >& v); /// Flag which identifies if the row is a heading row or a row which contains row values. NOTE - If the row is a heading, the flag takes the value = TRUE. - boost::optional< bool > IsHeading() const; - void setIsHeading(boost::optional< bool > v); - virtual const IfcParse::entity& declaration() const; + std::optional< bool > IsHeading() const; + void setIsHeading(const std::optional< bool >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTableRow (IfcEntityInstanceData&& e); - IfcTableRow (boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v1_RowCells, boost::optional< bool > v2_IsHeading); - typedef aggregate_of< IfcTableRow > list; + // IfcTableRow (std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > v1_RowCells, std::optional< bool > v2_IsHeading); }; /// IfcTaskTime captures the time-related information about a task including the different types (actual or scheduled) of starting and ending times. /// @@ -13495,12 +17519,15 @@ public: /// All given values should be provided by the application; the IFC schema does not deal with dependencies between task time values. There is also no consistency check through where rules that guarantee a meaningful population of time values. Thus, an application is responsible to provide reasonable values and, if an application receives task times, has to make consistency checks by their own. /// /// IfcTaskTime furthermore provides a generic mechanism to differentiate between user given time values and time values derived from user given time values and other constraints such as work calendars and assigned resources. -class IFC_PARSE_API IfcTaskTime : public IfcSchedulingTime { +class IFC_PARSE_API IfcTaskTime : public IfcSchedulingTime { public: + IfcTaskTime() {} + explicit IfcTaskTime (const std::weak_ptr& data) : IfcSchedulingTime(data) {} + /// Enables to specify the type of duration values for ScheduleDuration, ActualDuration and RemainingTime. The duration type is either /// work time or elapsed time. - boost::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value > DurationType() const; - void setDurationType(boost::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value > DurationType() const; + void setDurationType(const std::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value >& v); /// The amount of time which is scheduled for completion of a /// task. /// The value might be measured or somehow calculated, which is defined by @@ -13510,41 +17537,41 @@ public: /// /// NOTE: Scheduled Duration may be calculated as the /// time from scheduled start date to scheduled finish date. - boost::optional< std::string > ScheduleDuration() const; - void setScheduleDuration(boost::optional< std::string > v); + std::optional< std::string > ScheduleDuration() const; + void setScheduleDuration(const std::optional< std::string >& v); /// The date on which a task is scheduled to be started. /// The value might be measured or somehow calculated, which is defined by /// ScheduleDataOrigin. /// /// NOTE: The scheduled start date must be greater than /// or equal to the earliest start date. - boost::optional< std::string > ScheduleStart() const; - void setScheduleStart(boost::optional< std::string > v); + std::optional< std::string > ScheduleStart() const; + void setScheduleStart(const std::optional< std::string >& v); /// The date on which a task is scheduled to be finished. /// The value might be measured or somehow calculated, which is defined by /// ScheduleDataOrigin. /// /// NOTE: The scheduled finish date must be greater than /// or equal to the earliest finish date. - boost::optional< std::string > ScheduleFinish() const; - void setScheduleFinish(boost::optional< std::string > v); + std::optional< std::string > ScheduleFinish() const; + void setScheduleFinish(const std::optional< std::string >& v); /// The earliest date on which a task can be started. It is a calculated value. - boost::optional< std::string > EarlyStart() const; - void setEarlyStart(boost::optional< std::string > v); + std::optional< std::string > EarlyStart() const; + void setEarlyStart(const std::optional< std::string >& v); /// The earliest date on which a task can be finished. It is a calculated value. - boost::optional< std::string > EarlyFinish() const; - void setEarlyFinish(boost::optional< std::string > v); + std::optional< std::string > EarlyFinish() const; + void setEarlyFinish(const std::optional< std::string >& v); /// The latest date on which a task can be started. It is a calculated value. - boost::optional< std::string > LateStart() const; - void setLateStart(boost::optional< std::string > v); + std::optional< std::string > LateStart() const; + void setLateStart(const std::optional< std::string >& v); /// The latest date on which a task can be finished. It is a calculated value. - boost::optional< std::string > LateFinish() const; - void setLateFinish(boost::optional< std::string > v); + std::optional< std::string > LateFinish() const; + void setLateFinish(const std::optional< std::string >& v); /// The amount of time during which the start or finish of a /// task may be varied without any effect on the overall /// programme of work. It is a calculated elapsed time value. - boost::optional< std::string > FreeFloat() const; - void setFreeFloat(boost::optional< std::string > v); + std::optional< std::string > FreeFloat() const; + void setFreeFloat(const std::optional< std::string >& v); /// The difference between the duration available to carry out /// a task and the scheduled duration of the task. It is a calculated /// elapsed time value. @@ -13555,24 +17582,24 @@ public: /// finish. Float time may be either positive, zero or /// negative. Where it is zero or negative, the task becomes /// critical. - boost::optional< std::string > TotalFloat() const; - void setTotalFloat(boost::optional< std::string > v); + std::optional< std::string > TotalFloat() const; + void setTotalFloat(const std::optional< std::string >& v); /// A flag which identifies whether a scheduled task is a /// critical item within the programme. /// /// NOTE: A task becomes critical when the float time /// becomes zero or negative. - boost::optional< bool > IsCritical() const; - void setIsCritical(boost::optional< bool > v); + std::optional< bool > IsCritical() const; + void setIsCritical(const std::optional< bool >& v); /// The date or time at which the status of the tasks within /// the schedule is analyzed. - boost::optional< std::string > StatusTime() const; - void setStatusTime(boost::optional< std::string > v); + std::optional< std::string > StatusTime() const; + void setStatusTime(const std::optional< std::string >& v); /// The actual duration of the task. It is a measured value. /// The value is either given as elapsed time or work time, which is defined by /// DurationType. - boost::optional< std::string > ActualDuration() const; - void setActualDuration(boost::optional< std::string > v); + std::optional< std::string > ActualDuration() const; + void setActualDuration(const std::optional< std::string >& v); /// The date on which a task is actually started. It is a measured value. /// /// NOTE: The scheduled start date must be greater than @@ -13580,11 +17607,11 @@ public: /// applied to the actual start date with respect to the /// scheduled start date since a task may be started earlier /// than had originally been scheduled if circumstances allow. - boost::optional< std::string > ActualStart() const; - void setActualStart(boost::optional< std::string > v); + std::optional< std::string > ActualStart() const; + void setActualStart(const std::optional< std::string >& v); /// The date on which a task is actually finished. - boost::optional< std::string > ActualFinish() const; - void setActualFinish(boost::optional< std::string > v); + std::optional< std::string > ActualFinish() const; + void setActualFinish(const std::optional< std::string >& v); /// The amount of time remaining to complete a task. It is a predicted value. /// The value is either given as elapsed time or work time, which is defined by /// DurationType. @@ -13596,30 +17623,29 @@ public: /// task already started, remaining time is calculated as the /// difference between the scheduled finish and the point of /// analysis. - boost::optional< std::string > RemainingTime() const; - void setRemainingTime(boost::optional< std::string > v); + std::optional< std::string > RemainingTime() const; + void setRemainingTime(const std::optional< std::string >& v); /// The extent of completion expressed as a ratio or percentage. /// It is a measured value. - boost::optional< double > Completion() const; - void setCompletion(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > Completion() const; + void setCompletion(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTaskTime (IfcEntityInstanceData&& e); - IfcTaskTime (boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value > v4_DurationType, boost::optional< std::string > v5_ScheduleDuration, boost::optional< std::string > v6_ScheduleStart, boost::optional< std::string > v7_ScheduleFinish, boost::optional< std::string > v8_EarlyStart, boost::optional< std::string > v9_EarlyFinish, boost::optional< std::string > v10_LateStart, boost::optional< std::string > v11_LateFinish, boost::optional< std::string > v12_FreeFloat, boost::optional< std::string > v13_TotalFloat, boost::optional< bool > v14_IsCritical, boost::optional< std::string > v15_StatusTime, boost::optional< std::string > v16_ActualDuration, boost::optional< std::string > v17_ActualStart, boost::optional< std::string > v18_ActualFinish, boost::optional< std::string > v19_RemainingTime, boost::optional< double > v20_Completion); - typedef aggregate_of< IfcTaskTime > list; + // IfcTaskTime (std::optional< std::string > v1_Name, std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, std::optional< std::string > v3_UserDefinedDataOrigin, std::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value > v4_DurationType, std::optional< std::string > v5_ScheduleDuration, std::optional< std::string > v6_ScheduleStart, std::optional< std::string > v7_ScheduleFinish, std::optional< std::string > v8_EarlyStart, std::optional< std::string > v9_EarlyFinish, std::optional< std::string > v10_LateStart, std::optional< std::string > v11_LateFinish, std::optional< std::string > v12_FreeFloat, std::optional< std::string > v13_TotalFloat, std::optional< bool > v14_IsCritical, std::optional< std::string > v15_StatusTime, std::optional< std::string > v16_ActualDuration, std::optional< std::string > v17_ActualStart, std::optional< std::string > v18_ActualFinish, std::optional< std::string > v19_RemainingTime, std::optional< double > v20_Completion); }; /// IfcTaskTimeRecurring is a recurring instance of IfcTaskTime for handling regularly scheduled or repetitive tasks. /// /// HISTORY: New entity in IFC2x4. -class IFC_PARSE_API IfcTaskTimeRecurring : public IfcTaskTime { +class IFC_PARSE_API IfcTaskTimeRecurring : public IfcTaskTime { public: - ::Ifc4x3_add2::IfcRecurrencePattern* Recurrence() const; - void setRecurrence(::Ifc4x3_add2::IfcRecurrencePattern* v); - virtual const IfcParse::entity& declaration() const; + IfcTaskTimeRecurring() {} + explicit IfcTaskTimeRecurring (const std::weak_ptr& data) : IfcTaskTime(data) {} + + ::Ifc4x3_add2::IfcRecurrencePattern Recurrence() const; + void setRecurrence(const ::Ifc4x3_add2::IfcRecurrencePattern& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTaskTimeRecurring (IfcEntityInstanceData&& e); - IfcTaskTimeRecurring (boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value > v4_DurationType, boost::optional< std::string > v5_ScheduleDuration, boost::optional< std::string > v6_ScheduleStart, boost::optional< std::string > v7_ScheduleFinish, boost::optional< std::string > v8_EarlyStart, boost::optional< std::string > v9_EarlyFinish, boost::optional< std::string > v10_LateStart, boost::optional< std::string > v11_LateFinish, boost::optional< std::string > v12_FreeFloat, boost::optional< std::string > v13_TotalFloat, boost::optional< bool > v14_IsCritical, boost::optional< std::string > v15_StatusTime, boost::optional< std::string > v16_ActualDuration, boost::optional< std::string > v17_ActualStart, boost::optional< std::string > v18_ActualFinish, boost::optional< std::string > v19_RemainingTime, boost::optional< double > v20_Completion, ::Ifc4x3_add2::IfcRecurrencePattern* v21_Recurrence); - typedef aggregate_of< IfcTaskTimeRecurring > list; + // IfcTaskTimeRecurring (std::optional< std::string > v1_Name, std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, std::optional< std::string > v3_UserDefinedDataOrigin, std::optional< ::Ifc4x3_add2::IfcTaskDurationEnum::Value > v4_DurationType, std::optional< std::string > v5_ScheduleDuration, std::optional< std::string > v6_ScheduleStart, std::optional< std::string > v7_ScheduleFinish, std::optional< std::string > v8_EarlyStart, std::optional< std::string > v9_EarlyFinish, std::optional< std::string > v10_LateStart, std::optional< std::string > v11_LateFinish, std::optional< std::string > v12_FreeFloat, std::optional< std::string > v13_TotalFloat, std::optional< bool > v14_IsCritical, std::optional< std::string > v15_StatusTime, std::optional< std::string > v16_ActualDuration, std::optional< std::string > v17_ActualStart, std::optional< std::string > v18_ActualFinish, std::optional< std::string > v19_RemainingTime, std::optional< double > v20_Completion, ::Ifc4x3_add2::IfcRecurrencePattern v21_Recurrence); }; /// Definition: Address to which telephone, electronic mail and other forms of telecommunications should be addressed. /// @@ -13627,34 +17653,35 @@ public: /// /// IFC 2x4 change: Added attribute MessagingIDs. /// Type of attribute WWWHomePageURL compatibly changed from IfcLabel to IfcURIReference. -class IFC_PARSE_API IfcTelecomAddress : public IfcAddress { +class IFC_PARSE_API IfcTelecomAddress : public IfcAddress { public: + IfcTelecomAddress() {} + explicit IfcTelecomAddress (const std::weak_ptr& data) : IfcAddress(data) {} + /// The list of telephone numbers at which telephone messages may be received. - boost::optional< std::vector< std::string > /*[1:?]*/ > TelephoneNumbers() const; - void setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v); + std::optional< std::vector< std::string > /*[1:?]*/ > TelephoneNumbers() const; + void setTelephoneNumbers(const std::optional< std::vector< std::string > /*[1:?]*/ >& v); /// The list of fax numbers at which fax messages may be received. - boost::optional< std::vector< std::string > /*[1:?]*/ > FacsimileNumbers() const; - void setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v); + std::optional< std::vector< std::string > /*[1:?]*/ > FacsimileNumbers() const; + void setFacsimileNumbers(const std::optional< std::vector< std::string > /*[1:?]*/ >& v); /// The pager number at which paging messages may be received. - boost::optional< std::string > PagerNumber() const; - void setPagerNumber(boost::optional< std::string > v); + std::optional< std::string > PagerNumber() const; + void setPagerNumber(const std::optional< std::string >& v); /// The list of Email addresses at which Email messages may be received. - boost::optional< std::vector< std::string > /*[1:?]*/ > ElectronicMailAddresses() const; - void setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v); + std::optional< std::vector< std::string > /*[1:?]*/ > ElectronicMailAddresses() const; + void setElectronicMailAddresses(const std::optional< std::vector< std::string > /*[1:?]*/ >& v); /// The world wide web address at which the preliminary page of information for the person or organization can be located. /// NOTE: Information on the world wide web for a person or organization may be separated /// into a number of pages and across a number of host sites, all of which may be linked together. It is assumed that /// all such information may be referenced from a single page that is termed the home page for that person or organization. - boost::optional< std::string > WWWHomePageURL() const; - void setWWWHomePageURL(boost::optional< std::string > v); + std::optional< std::string > WWWHomePageURL() const; + void setWWWHomePageURL(const std::optional< std::string >& v); /// IDs or addresses for any other means of telecommunication, for example instant messaging, voice-over-IP, or file transfer protocols. The communication protocol is indicated by the URI value with scheme designations such as irc:, sip:, or ftp:. - boost::optional< std::vector< std::string > /*[1:?]*/ > MessagingIDs() const; - void setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< std::string > /*[1:?]*/ > MessagingIDs() const; + void setMessagingIDs(const std::optional< std::vector< std::string > /*[1:?]*/ >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTelecomAddress (IfcEntityInstanceData&& e); - IfcTelecomAddress (boost::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose, boost::optional< std::vector< std::string > /*[1:?]*/ > v4_TelephoneNumbers, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_FacsimileNumbers, boost::optional< std::string > v6_PagerNumber, boost::optional< std::vector< std::string > /*[1:?]*/ > v7_ElectronicMailAddresses, boost::optional< std::string > v8_WWWHomePageURL, boost::optional< std::vector< std::string > /*[1:?]*/ > v9_MessagingIDs); - typedef aggregate_of< IfcTelecomAddress > list; + // IfcTelecomAddress (std::optional< ::Ifc4x3_add2::IfcAddressTypeEnum::Value > v1_Purpose, std::optional< std::string > v2_Description, std::optional< std::string > v3_UserDefinedPurpose, std::optional< std::vector< std::string > /*[1:?]*/ > v4_TelephoneNumbers, std::optional< std::vector< std::string > /*[1:?]*/ > v5_FacsimileNumbers, std::optional< std::string > v6_PagerNumber, std::optional< std::vector< std::string > /*[1:?]*/ > v7_ElectronicMailAddresses, std::optional< std::string > v8_WWWHomePageURL, std::optional< std::vector< std::string > /*[1:?]*/ > v9_MessagingIDs); }; /// Definition from ISO/CD 10303-46:1992: The text style is a presentation style for annotation text. /// @@ -13684,30 +17711,31 @@ public: /// HISTORY  New entity in IFC2x2. /// /// IFC2x3 CHANGE  The IfcTextStyle has been changed by adding TextFontStyle and different data types for TextStyle and IfcCharacterStyleSelect. -class IFC_PARSE_API IfcTextStyle : public IfcPresentationStyle { +class IFC_PARSE_API IfcTextStyle : public IfcPresentationStyle { public: + IfcTextStyle() {} + explicit IfcTextStyle (const std::weak_ptr& data) : IfcPresentationStyle(data) {} + /// A character style to be used for presented text. - ::Ifc4x3_add2::IfcTextStyleForDefinedFont* TextCharacterAppearance() const; - void setTextCharacterAppearance(::Ifc4x3_add2::IfcTextStyleForDefinedFont* v); + ::Ifc4x3_add2::IfcTextStyleForDefinedFont TextCharacterAppearance() const; + void setTextCharacterAppearance(const ::Ifc4x3_add2::IfcTextStyleForDefinedFont& v); /// The style applied to the text block for its visual appearance. /// It defines the text block characteristics, either for vector based or monospace text fonts (see select item IfcTextStyleWithBoxCharacteristics), or for true type text fonts (see select item IfcTextStyleTextModel. /// /// IFC2x Edition 3 CHANGE  The attribute TextBlockStyle has been changed from SET[1:?] to a non-aggregated optional, it has been renamed from TextStyles. - ::Ifc4x3_add2::IfcTextStyleTextModel* TextStyle() const; - void setTextStyle(::Ifc4x3_add2::IfcTextStyleTextModel* v); + ::Ifc4x3_add2::IfcTextStyleTextModel TextStyle() const; + void setTextStyle(const ::Ifc4x3_add2::IfcTextStyleTextModel& v); /// The style applied to the text font for its visual appearance. /// It defines the font family, font style, weight and size. /// /// IFC2x Edition 2 Addendum 2 CHANGE The attribute TextFontStyle is a new attribute attached to IfcTextStyle. - ::Ifc4x3_add2::IfcTextFontSelect* TextFontStyle() const; - void setTextFontStyle(::Ifc4x3_add2::IfcTextFontSelect* v); - boost::optional< bool > ModelOrDraughting() const; - void setModelOrDraughting(boost::optional< bool > v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcTextFontSelect TextFontStyle() const; + void setTextFontStyle(const ::Ifc4x3_add2::IfcTextFontSelect& v); + std::optional< bool > ModelOrDraughting() const; + void setModelOrDraughting(const std::optional< bool >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTextStyle (IfcEntityInstanceData&& e); - IfcTextStyle (boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcTextStyleForDefinedFont* v2_TextCharacterAppearance, ::Ifc4x3_add2::IfcTextStyleTextModel* v3_TextStyle, ::Ifc4x3_add2::IfcTextFontSelect* v4_TextFontStyle, boost::optional< bool > v5_ModelOrDraughting); - typedef aggregate_of< IfcTextStyle > list; + // IfcTextStyle (std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcTextStyleForDefinedFont v2_TextCharacterAppearance, ::Ifc4x3_add2::IfcTextStyleTextModel v3_TextStyle, ::Ifc4x3_add2::IfcTextFontSelect v4_TextFontStyle, std::optional< bool > v5_ModelOrDraughting); }; /// Definition from ISO/CD 10303-46:1992: A text style for defined font is a character glyph style for pre-defined or externally defined text fonts. /// @@ -13726,19 +17754,20 @@ public: /// HISTORY  New entity in IFC2x3. /// /// IFC2x3 CHANGE  The IfcTextStyleForDefinedFont has been added and replaces IfcColour at the IfcCharacterStyleSelect. -class IFC_PARSE_API IfcTextStyleForDefinedFont : public IfcPresentationItem { +class IFC_PARSE_API IfcTextStyleForDefinedFont : public IfcPresentationItem { public: + IfcTextStyleForDefinedFont() {} + explicit IfcTextStyleForDefinedFont (const std::weak_ptr& data) : IfcPresentationItem(data) {} + /// This property describes the text color of an element (often referred to as the foreground color). - ::Ifc4x3_add2::IfcColour* Colour() const; - void setColour(::Ifc4x3_add2::IfcColour* v); + ::Ifc4x3_add2::IfcColour Colour() const; + void setColour(const ::Ifc4x3_add2::IfcColour& v); /// This property sets the background color of an element. - ::Ifc4x3_add2::IfcColour* BackgroundColour() const; - void setBackgroundColour(::Ifc4x3_add2::IfcColour* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcColour BackgroundColour() const; + void setBackgroundColour(const ::Ifc4x3_add2::IfcColour& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTextStyleForDefinedFont (IfcEntityInstanceData&& e); - IfcTextStyleForDefinedFont (::Ifc4x3_add2::IfcColour* v1_Colour, ::Ifc4x3_add2::IfcColour* v2_BackgroundColour); - typedef aggregate_of< IfcTextStyleForDefinedFont > list; + // IfcTextStyleForDefinedFont (::Ifc4x3_add2::IfcColour v1_Colour, ::Ifc4x3_add2::IfcColour v2_BackgroundColour); }; /// Definition from CSS1 (W3C Recommendation): The properties defined in the text model affect the visual presentation of characters, spaces, words, and paragraphs. /// @@ -13747,41 +17776,42 @@ public: /// NOTE  Corresponding CSS1 definitions are Text properties (word-spacing, letter-spacing, text-decoration, vertical-align, text-transform, text-align, text-indent, line-height). /// /// HISTORY  New entity in IFC2x3. -class IFC_PARSE_API IfcTextStyleTextModel : public IfcPresentationItem { +class IFC_PARSE_API IfcTextStyleTextModel : public IfcPresentationItem { public: + IfcTextStyleTextModel() {} + explicit IfcTextStyleTextModel (const std::weak_ptr& data) : IfcPresentationItem(data) {} + /// The property specifies the indentation that appears before the first formatted line. /// NOTE  It has been introduced for later compliance to full CSS1 support. - ::Ifc4x3_add2::IfcSizeSelect* TextIndent() const; - void setTextIndent(::Ifc4x3_add2::IfcSizeSelect* v); + ::Ifc4x3_add2::IfcSizeSelect TextIndent() const; + void setTextIndent(const ::Ifc4x3_add2::IfcSizeSelect& v); /// This property describes how text is aligned horizontally within the element. The actual justification algorithm used is dependent on the rendering algorithm. - boost::optional< std::string > TextAlign() const; - void setTextAlign(boost::optional< std::string > v); + std::optional< std::string > TextAlign() const; + void setTextAlign(const std::optional< std::string >& v); /// This property describes decorations that are added to the text of an element. - boost::optional< std::string > TextDecoration() const; - void setTextDecoration(boost::optional< std::string > v); + std::optional< std::string > TextDecoration() const; + void setTextDecoration(const std::optional< std::string >& v); /// The length unit indicates an addition to the default space between characters. Values can be negative, but there may be implementation-specific limits. The user agent is free to select the exact spacing algorithm. The letter spacing may also be influenced by justification (which is a value of the 'align' property). /// NOTE  The following values are allowed, IfcDescriptiveMeasure with value='normal', or IfcLengthMeasure, the length unit is globally defined at IfcUnitAssignment. - ::Ifc4x3_add2::IfcSizeSelect* LetterSpacing() const; - void setLetterSpacing(::Ifc4x3_add2::IfcSizeSelect* v); + ::Ifc4x3_add2::IfcSizeSelect LetterSpacing() const; + void setLetterSpacing(const ::Ifc4x3_add2::IfcSizeSelect& v); /// The length unit indicates an addition to the default space between words. Values can be negative, but there may be implementation-specific limits. The user agent is free to select the exact spacing algorithm. The word spacing may also be influenced by justification (which is a value of the 'text-align' property). /// NOTE  It has been introduced for later compliance to full CSS1 support. - ::Ifc4x3_add2::IfcSizeSelect* WordSpacing() const; - void setWordSpacing(::Ifc4x3_add2::IfcSizeSelect* v); + ::Ifc4x3_add2::IfcSizeSelect WordSpacing() const; + void setWordSpacing(const ::Ifc4x3_add2::IfcSizeSelect& v); /// This property describes how text characters may transform to upper case, lower case, or capitalized case, independent of the character case used in the text literal. /// NOTE  It has been introduced for later compliance to full CSS1 support. - boost::optional< std::string > TextTransform() const; - void setTextTransform(boost::optional< std::string > v); + std::optional< std::string > TextTransform() const; + void setTextTransform(const std::optional< std::string >& v); /// The property sets the distance between two adjacent lines' baselines. /// When a ratio value is specified, the line height is given by the font size of the current element multiplied with the numerical value. A value of 'normal' sets the line height to a reasonable value for the element's font. It is suggested that user agents set the 'normal' value to be a ratio number in the range of 1.0 to 1.2. /// NOTE  The following values are allowed: IfcDescriptiveMeasure with value='normal', or /// IfcLengthMeasure, with non-negative values, the length unit is globally defined at IfcUnitAssignment, or IfcRatioMeasure. - ::Ifc4x3_add2::IfcSizeSelect* LineHeight() const; - void setLineHeight(::Ifc4x3_add2::IfcSizeSelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcSizeSelect LineHeight() const; + void setLineHeight(const ::Ifc4x3_add2::IfcSizeSelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTextStyleTextModel (IfcEntityInstanceData&& e); - IfcTextStyleTextModel (::Ifc4x3_add2::IfcSizeSelect* v1_TextIndent, boost::optional< std::string > v2_TextAlign, boost::optional< std::string > v3_TextDecoration, ::Ifc4x3_add2::IfcSizeSelect* v4_LetterSpacing, ::Ifc4x3_add2::IfcSizeSelect* v5_WordSpacing, boost::optional< std::string > v6_TextTransform, ::Ifc4x3_add2::IfcSizeSelect* v7_LineHeight); - typedef aggregate_of< IfcTextStyleTextModel > list; + // IfcTextStyleTextModel (::Ifc4x3_add2::IfcSizeSelect v1_TextIndent, std::optional< std::string > v2_TextAlign, std::optional< std::string > v3_TextDecoration, ::Ifc4x3_add2::IfcSizeSelect v4_LetterSpacing, ::Ifc4x3_add2::IfcSizeSelect v5_WordSpacing, std::optional< std::string > v6_TextTransform, ::Ifc4x3_add2::IfcSizeSelect v7_LineHeight); }; /// The IfcTextureCoordinate a an abstract supertype of the different kinds to apply texture coordinates to geometries. For vertex based geometries an explicit assignment of 2D texture vertices to the 3D geometry points is supported by the subtype IfcTextureMap, in addition there can be a procedural description of how texture coordinates shall be applied to geometric items. If no IfcTextureCoordinate is provided for the IfcSurfaceTexture, the default mapping shall be used. /// @@ -13794,15 +17824,16 @@ public: /// IFC2x3 CHANGE  The attribute Texture is deleted. /// /// IFC2x4 CHANGE  The inverse attribute AnnotatedSurface is deleted, and the inverse AppliesTextures is added. -class IFC_PARSE_API IfcTextureCoordinate : public IfcPresentationItem { +class IFC_PARSE_API IfcTextureCoordinate : public IfcPresentationItem { public: - aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr Maps() const; - void setMaps(aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v); - virtual const IfcParse::entity& declaration() const; + IfcTextureCoordinate() {} + explicit IfcTextureCoordinate (const std::weak_ptr& data) : IfcPresentationItem(data) {} + + std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > Maps() const; + void setMaps(const std::vector< ::Ifc4x3_add2::IfcSurfaceTexture >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTextureCoordinate (IfcEntityInstanceData&& e); - IfcTextureCoordinate (aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v1_Maps); - typedef aggregate_of< IfcTextureCoordinate > list; + // IfcTextureCoordinate (std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > v1_Maps); }; /// The IfcTextureCoordinateGenerator describes a procedurally defined mapping function with input parameter to map 2D texture coordinates to 3D geometry vertices. The allowable Mode values and input Parameter need to be agreed upon in view definitions and implementer agreements. /// @@ -13830,48 +17861,51 @@ public: /// HISTORY New entity in IFC2x2. /// /// IFC2x2 Addendum 2 CHANGE  The attribute Texturehas been deleted. -class IFC_PARSE_API IfcTextureCoordinateGenerator : public IfcTextureCoordinate { +class IFC_PARSE_API IfcTextureCoordinateGenerator : public IfcTextureCoordinate { public: + IfcTextureCoordinateGenerator() {} + explicit IfcTextureCoordinateGenerator (const std::weak_ptr& data) : IfcTextureCoordinate(data) {} + /// The Mode attribute describes the algorithm used to compute texture coordinates. /// /// NOTE  The applicable values for the Mode attribute are determined by view definitions or implementer agreements. It is recommended to use the modes described in ISO/IES 19775-1.2:2008 X3D Architecture and base components Edition 2, Part 1. See 18.4.8 TextureCoordinateGenerator for recommended values. std::string Mode() const; - void setMode(std::string v); + void setMode(const std::string& v); /// The parameters used as arguments by the function as specified by Mode. /// /// IFC2x4 CHANGE  Made optional data type restricted to REAL. - boost::optional< std::vector< double > /*[1:?]*/ > Parameter() const; - void setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< double > /*[1:?]*/ > Parameter() const; + void setParameter(const std::optional< std::vector< double > /*[1:?]*/ >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTextureCoordinateGenerator (IfcEntityInstanceData&& e); - IfcTextureCoordinateGenerator (aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v1_Maps, std::string v2_Mode, boost::optional< std::vector< double > /*[1:?]*/ > v3_Parameter); - typedef aggregate_of< IfcTextureCoordinateGenerator > list; + // IfcTextureCoordinateGenerator (std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > v1_Maps, std::string v2_Mode, std::optional< std::vector< double > /*[1:?]*/ > v3_Parameter); }; -class IFC_PARSE_API IfcTextureCoordinateIndices : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcTextureCoordinateIndices : public express::Entity { public: + IfcTextureCoordinateIndices() {} + explicit IfcTextureCoordinateIndices (const std::weak_ptr& data) : express::Entity(data) {} + std::vector< int > /*[3:?]*/ TexCoordIndex() const; - void setTexCoordIndex(std::vector< int > /*[3:?]*/ v); - ::Ifc4x3_add2::IfcIndexedPolygonalFace* TexCoordsOf() const; - void setTexCoordsOf(::Ifc4x3_add2::IfcIndexedPolygonalFace* v); - aggregate_of< IfcIndexedPolygonalTextureMap >::ptr ToTexMap() const; // INVERSE IfcIndexedPolygonalTextureMap::TexCoordIndices - virtual const IfcParse::entity& declaration() const; + void setTexCoordIndex(const std::vector< int > /*[3:?]*/& v); + ::Ifc4x3_add2::IfcIndexedPolygonalFace TexCoordsOf() const; + void setTexCoordsOf(const ::Ifc4x3_add2::IfcIndexedPolygonalFace& v); + std::vector< IfcIndexedPolygonalTextureMap > ToTexMap() const; // INVERSE IfcIndexedPolygonalTextureMap::TexCoordIndices + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTextureCoordinateIndices (IfcEntityInstanceData&& e); - IfcTextureCoordinateIndices (std::vector< int > /*[3:?]*/ v1_TexCoordIndex, ::Ifc4x3_add2::IfcIndexedPolygonalFace* v2_TexCoordsOf); - typedef aggregate_of< IfcTextureCoordinateIndices > list; + // IfcTextureCoordinateIndices (std::vector< int > /*[3:?]*/ v1_TexCoordIndex, ::Ifc4x3_add2::IfcIndexedPolygonalFace v2_TexCoordsOf); }; -class IFC_PARSE_API IfcTextureCoordinateIndicesWithVoids : public IfcTextureCoordinateIndices { +class IFC_PARSE_API IfcTextureCoordinateIndicesWithVoids : public IfcTextureCoordinateIndices { public: + IfcTextureCoordinateIndicesWithVoids() {} + explicit IfcTextureCoordinateIndicesWithVoids (const std::weak_ptr& data) : IfcTextureCoordinateIndices(data) {} + std::vector< std::vector< int > > InnerTexCoordIndices() const; - void setInnerTexCoordIndices(std::vector< std::vector< int > > v); - virtual const IfcParse::entity& declaration() const; + void setInnerTexCoordIndices(const std::vector< std::vector< int > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTextureCoordinateIndicesWithVoids (IfcEntityInstanceData&& e); - IfcTextureCoordinateIndicesWithVoids (std::vector< int > /*[3:?]*/ v1_TexCoordIndex, ::Ifc4x3_add2::IfcIndexedPolygonalFace* v2_TexCoordsOf, std::vector< std::vector< int > > v3_InnerTexCoordIndices); - typedef aggregate_of< IfcTextureCoordinateIndicesWithVoids > list; + // IfcTextureCoordinateIndicesWithVoids (std::vector< int > /*[3:?]*/ v1_TexCoordIndex, ::Ifc4x3_add2::IfcIndexedPolygonalFace v2_TexCoordsOf, std::vector< std::vector< int > > v3_InnerTexCoordIndices); }; /// An IfcTextureMap provides the mapping of the /// 2-dimensional texture coordinates to the surface onto which it is @@ -13924,20 +17958,21 @@ public: /// Informal propositions: /// /// The FaceBound referenced in AppliedTo shall be used by the vertex based geometry, to which this texture map is assigned to by through the IfcStyledItem. -class IFC_PARSE_API IfcTextureMap : public IfcTextureCoordinate { +class IFC_PARSE_API IfcTextureMap : public IfcTextureCoordinate { public: + IfcTextureMap() {} + explicit IfcTextureMap (const std::weak_ptr& data) : IfcTextureCoordinate(data) {} + /// List of texture coordinate vertices that are applied to the corresponding points of the polyloop defining a face bound. /// /// NOTE  The corresponding face bound may be an inner loop. - aggregate_of< ::Ifc4x3_add2::IfcTextureVertex >::ptr Vertices() const; - void setVertices(aggregate_of< ::Ifc4x3_add2::IfcTextureVertex >::ptr v); - ::Ifc4x3_add2::IfcFace* MappedTo() const; - void setMappedTo(::Ifc4x3_add2::IfcFace* v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcTextureVertex > Vertices() const; + void setVertices(const std::vector< ::Ifc4x3_add2::IfcTextureVertex >& v); + ::Ifc4x3_add2::IfcFace MappedTo() const; + void setMappedTo(const ::Ifc4x3_add2::IfcFace& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTextureMap (IfcEntityInstanceData&& e); - IfcTextureMap (aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v1_Maps, aggregate_of< ::Ifc4x3_add2::IfcTextureVertex >::ptr v2_Vertices, ::Ifc4x3_add2::IfcFace* v3_MappedTo); - typedef aggregate_of< IfcTextureMap > list; + // IfcTextureMap (std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > v1_Maps, std::vector< ::Ifc4x3_add2::IfcTextureVertex > v2_Vertices, ::Ifc4x3_add2::IfcFace v3_MappedTo); }; /// An IfcTextureVertex is a list of 2 (S, T) texture coordinates. /// @@ -13966,27 +18001,29 @@ public: /// Texture coordinates may be transformed (scaled, rotated, translated) by supplying a TextureTransform as a component of the texture's definition. /// /// HISTORY: New entity in IFC 2x2. -class IFC_PARSE_API IfcTextureVertex : public IfcPresentationItem { +class IFC_PARSE_API IfcTextureVertex : public IfcPresentationItem { public: + IfcTextureVertex() {} + explicit IfcTextureVertex (const std::weak_ptr& data) : IfcPresentationItem(data) {} + /// The first coordinate[1] is the S, the second coordinate[2] is the T parameter value. std::vector< double > /*[2:2]*/ Coordinates() const; - void setCoordinates(std::vector< double > /*[2:2]*/ v); - virtual const IfcParse::entity& declaration() const; + void setCoordinates(const 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 aggregate_of< IfcTextureVertex > list; + // IfcTextureVertex (std::vector< double > /*[2:2]*/ v1_Coordinates); }; -class IFC_PARSE_API IfcTextureVertexList : public IfcPresentationItem { +class IFC_PARSE_API IfcTextureVertexList : public IfcPresentationItem { public: + IfcTextureVertexList() {} + explicit IfcTextureVertexList (const std::weak_ptr& data) : IfcPresentationItem(data) {} + std::vector< std::vector< double > > TexCoordsList() const; - void setTexCoordsList(std::vector< std::vector< double > > v); - virtual const IfcParse::entity& declaration() const; + void setTexCoordsList(const std::vector< std::vector< double > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTextureVertexList (IfcEntityInstanceData&& e); - IfcTextureVertexList (std::vector< std::vector< double > > v1_TexCoordsList); - typedef aggregate_of< IfcTextureVertexList > list; + // IfcTextureVertexList (std::vector< std::vector< double > > v1_TexCoordsList); }; /// IfcTimePeriod defines a time period given by a start and end time. Both time definitions consider the time zone and allow for the daylight savings offset. /// @@ -13994,57 +18031,59 @@ public: /// /// Use definitions /// A time period is defined by a start and an end time, which is defined by IfcTime. The given time period should be within reasonable values (for example, the start time must be before the end time). It is furthermore expected that both time definitions use the same time zone and, if given, the same daylight saving offset. -class IFC_PARSE_API IfcTimePeriod : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcTimePeriod : public express::Entity { public: + IfcTimePeriod() {} + explicit IfcTimePeriod (const std::weak_ptr& data) : express::Entity(data) {} + /// Start time of the time period. std::string StartTime() const; - void setStartTime(std::string v); + void setStartTime(const std::string& v); /// End time of the time period. std::string EndTime() const; - void setEndTime(std::string v); - virtual const IfcParse::entity& declaration() const; + void setEndTime(const std::string& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTimePeriod (IfcEntityInstanceData&& e); - IfcTimePeriod (std::string v1_StartTime, std::string v2_EndTime); - typedef aggregate_of< IfcTimePeriod > list; + // IfcTimePeriod (std::string v1_StartTime, std::string v2_EndTime); }; /// A time series is a set of a time-stamped data entries. It allows a natural association of data collected over intervals of time. Time series can be regular or irregular. In regular time series data arrive predictably at predefined intervals. In irregular time series some or all time stamps do not follow a repetitive pattern and unpredictable bursts of data may arrive at unspecified points in time. /// /// The modeling of buildings and their performance involves data that are generated and recorded over a period of time. Such data cover a large spectrum, from weather data to schedules of all kinds to status measurements to reporting to everything else that has a time related aspect. Their correct placement in time is essential for their proper understanding and use, and the IfcTimeSeries subtypes provide the appropriate data structures to accommodate these types of data. /// /// HISTORY: New entity in IFC 2x2. -class IFC_PARSE_API IfcTimeSeries : public IfcUtil::IfcBaseEntity, public IfcMetricValueSelect, public IfcObjectReferenceSelect, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcTimeSeries : public express::Entity { public: + IfcTimeSeries() {} + explicit IfcTimeSeries (const std::weak_ptr& data) : express::Entity(data) {} + /// An unique name for the time series. std::string Name() const; - void setName(std::string v); + void setName(const std::string& v); /// A text description of the data that the series represents. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// The start time of a time series. std::string StartTime() const; - void setStartTime(std::string v); + void setStartTime(const std::string& v); /// The end time of a time series. std::string EndTime() const; - void setEndTime(std::string v); + void setEndTime(const std::string& v); /// The time series data type. ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value TimeSeriesDataType() const; - void setTimeSeriesDataType(::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value v); + void setTimeSeriesDataType(const ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value& v); /// The orgin of a time series data. ::Ifc4x3_add2::IfcDataOriginEnum::Value DataOrigin() const; - void setDataOrigin(::Ifc4x3_add2::IfcDataOriginEnum::Value v); + void setDataOrigin(const ::Ifc4x3_add2::IfcDataOriginEnum::Value& v); /// Value of the data origin if DataOrigin attribute is USERDEFINED. - boost::optional< std::string > UserDefinedDataOrigin() const; - void setUserDefinedDataOrigin(boost::optional< std::string > v); + std::optional< std::string > UserDefinedDataOrigin() const; + void setUserDefinedDataOrigin(const std::optional< std::string >& v); /// The unit to be assigned to all values within the time series. Note that mixing units is not allowed. If the value is not given, the global unit for the type of IfcValue, as defined at IfcProject.UnitsInContext is used. - ::Ifc4x3_add2::IfcUnit* Unit() const; - void setUnit(::Ifc4x3_add2::IfcUnit* v); - aggregate_of< IfcExternalReferenceRelationship >::ptr HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcUnit Unit() const; + void setUnit(const ::Ifc4x3_add2::IfcUnit& v); + std::vector< IfcExternalReferenceRelationship > HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects + // 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, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_add2::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcUnit* v8_Unit); - typedef aggregate_of< IfcTimeSeries > list; + // IfcTimeSeries (std::string v1_Name, std::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_add2::IfcDataOriginEnum::Value v6_DataOrigin, std::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcUnit v8_Unit); }; /// A time series value is a list of values that comprise the time series. At least one value must be supplied. Applications are expected to normalize values by applying the following three rules: /// @@ -14055,29 +18094,31 @@ public: /// Figure 241 — Time series value /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcTimeSeriesValue : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcTimeSeriesValue : public express::Entity { public: + IfcTimeSeriesValue() {} + explicit IfcTimeSeriesValue (const std::weak_ptr& data) : express::Entity(data) {} + /// A list of time-series values. At least one value is required. - aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr ListValues() const; - void setListValues(aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcValue > ListValues() const; + void setListValues(const std::vector< ::Ifc4x3_add2::IfcValue >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTimeSeriesValue (IfcEntityInstanceData&& e); - IfcTimeSeriesValue (aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr v1_ListValues); - typedef aggregate_of< IfcTimeSeriesValue > list; + // IfcTimeSeriesValue (std::vector< ::Ifc4x3_add2::IfcValue > v1_ListValues); }; /// Definition from ISO/CD 10303-42:1992: The topological representation item is the supertype for all the topological representation items in the geometry resource. /// /// NOTE  Corresponding ISO 10303 entity: topological_representation_item. Please refer to ISO/IS 10303-42:1994, p.129 for the final definition of the formal standard. /// /// HISTORY: New entity in IFC Release 1.5 -class IFC_PARSE_API IfcTopologicalRepresentationItem : public IfcRepresentationItem { +class IFC_PARSE_API IfcTopologicalRepresentationItem : public IfcRepresentationItem { public: - virtual const IfcParse::entity& declaration() const; + IfcTopologicalRepresentationItem() {} + explicit IfcTopologicalRepresentationItem (const std::weak_ptr& data) : IfcRepresentationItem(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTopologicalRepresentationItem (IfcEntityInstanceData&& e); - IfcTopologicalRepresentationItem (); - typedef aggregate_of< IfcTopologicalRepresentationItem > list; + // IfcTopologicalRepresentationItem (); }; /// IfcTopologyRepresentation /// represents the concept of a particular topological representation of a @@ -14113,29 +18154,31 @@ public: /// given as a string value at the inherited attribute 'RepresentationType'. /// /// HISTORY: New entity in IFC 2x2. -class IFC_PARSE_API IfcTopologyRepresentation : public IfcShapeModel { +class IFC_PARSE_API IfcTopologyRepresentation : public IfcShapeModel { public: - virtual const IfcParse::entity& declaration() const; + IfcTopologyRepresentation() {} + explicit IfcTopologyRepresentation (const std::weak_ptr& data) : IfcShapeModel(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTopologyRepresentation (IfcEntityInstanceData&& e); - IfcTopologyRepresentation (::Ifc4x3_add2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_add2::IfcRepresentationItem >::ptr v4_Items); - typedef aggregate_of< IfcTopologyRepresentation > list; + // IfcTopologyRepresentation (::Ifc4x3_add2::IfcRepresentationContext v1_ContextOfItems, std::optional< std::string > v2_RepresentationIdentifier, std::optional< std::string > v3_RepresentationType, std::vector< ::Ifc4x3_add2::IfcRepresentationItem > v4_Items); }; /// IfcUnitAssignment indicates a set of units which may be assigned. Within an IfcUnitAssigment each unit definition shall be unique; that is, there shall be no redundant unit definitions for the same unit type such as length unit or area unit. For currencies, there shall be only a single IfcMonetaryUnit within an IfcUnitAssignment. /// /// NOTE  A project (IfcProject) has a unit assignment which establishes a set of units which will be used globally within the project, if not otherwise defined. Other objects may have local unit assignments if there is a requirement for them to make use of units which do not fall within the project unit assignment. /// /// HISTORY  New entity in IFC Release 1.5.1. -class IFC_PARSE_API IfcUnitAssignment : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcUnitAssignment : public express::Entity { public: + IfcUnitAssignment() {} + explicit IfcUnitAssignment (const std::weak_ptr& data) : express::Entity(data) {} + /// Units to be included within a unit assignment. - aggregate_of< ::Ifc4x3_add2::IfcUnit >::ptr Units() const; - void setUnits(aggregate_of< ::Ifc4x3_add2::IfcUnit >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcUnit > Units() const; + void setUnits(const std::vector< ::Ifc4x3_add2::IfcUnit >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcUnitAssignment (IfcEntityInstanceData&& e); - IfcUnitAssignment (aggregate_of< ::Ifc4x3_add2::IfcUnit >::ptr v1_Units); - typedef aggregate_of< IfcUnitAssignment > list; + // IfcUnitAssignment (std::vector< ::Ifc4x3_add2::IfcUnit > v1_Units); }; /// Definition from ISO/CD 10303-42:1992: A vertex is the topological construct corresponding to a point. It has dimensionality 0 and extent 0. The domain of a vertex, if present, is a point in m dimensional real space RM; this is represented by the vertex point subtype. /// @@ -14147,13 +18190,14 @@ public: /// /// The vertex has dimensionality 0. This is a fundamental property of the vertex. /// The extent of a vertex is defined to be zero. -class IFC_PARSE_API IfcVertex : public IfcTopologicalRepresentationItem { +class IFC_PARSE_API IfcVertex : public IfcTopologicalRepresentationItem { public: - virtual const IfcParse::entity& declaration() const; + IfcVertex() {} + explicit IfcVertex (const std::weak_ptr& data) : IfcTopologicalRepresentationItem(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcVertex (IfcEntityInstanceData&& e); - IfcVertex (); - typedef aggregate_of< IfcVertex > list; + // IfcVertex (); }; /// Definition from ISO/CD 10303-42:1992: A vertex point is a vertex which has its geometry defined as a point. /// @@ -14164,16 +18208,17 @@ public: /// Informal proposition: /// /// The domain of the vertex is formally defined to be the domain of its vertex point. -class IFC_PARSE_API IfcVertexPoint : public IfcVertex, public IfcPointOrVertexPoint { +class IFC_PARSE_API IfcVertexPoint : public IfcVertex { public: + IfcVertexPoint() {} + explicit IfcVertexPoint (const std::weak_ptr& data) : IfcVertex(data) {} + /// The geometric point, which defines the position in geometric space of the vertex. - ::Ifc4x3_add2::IfcPoint* VertexGeometry() const; - void setVertexGeometry(::Ifc4x3_add2::IfcPoint* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcPoint VertexGeometry() const; + void setVertexGeometry(const ::Ifc4x3_add2::IfcPoint& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcVertexPoint (IfcEntityInstanceData&& e); - IfcVertexPoint (::Ifc4x3_add2::IfcPoint* v1_VertexGeometry); - typedef aggregate_of< IfcVertexPoint > list; + // IfcVertexPoint (::Ifc4x3_add2::IfcPoint v1_VertexGeometry); }; /// IfcVirtualGridIntersection defines the derived location of the intersection between two grid axes. Offset values may be given to set an offset distance to the grid axis for the calculation of the virtual grid intersection. /// @@ -14234,32 +18279,34 @@ public: /// OffsetDistances[1] is a negative length measure /// /// Figure 248 — Virtual grid intersection negative offset -class IFC_PARSE_API IfcVirtualGridIntersection : public IfcUtil::IfcBaseEntity, public IfcGridPlacementDirectionSelect { +class IFC_PARSE_API IfcVirtualGridIntersection : public express::Entity { public: + IfcVirtualGridIntersection() {} + explicit IfcVirtualGridIntersection (const std::weak_ptr& data) : express::Entity(data) {} + /// Two grid axes which intersects at exactly one intersection (see also informal proposition at IfcGrid). If attribute OffsetDistances is omitted, the intersection defines the placement or ref direction of a grid placement directly. If OffsetDistances are given, the intersection is defined by the offset curves to the grid axes. - aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr IntersectingAxes() const; - void setIntersectingAxes(aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr v); + std::vector< ::Ifc4x3_add2::IfcGridAxis > IntersectingAxes() const; + void setIntersectingAxes(const std::vector< ::Ifc4x3_add2::IfcGridAxis >& v); /// Offset distances to the grid axes. If given, it defines virtual offset curves to the grid axes. The intersection of the offset curves specify the virtual grid intersection. std::vector< double > /*[2:3]*/ OffsetDistances() const; - void setOffsetDistances(std::vector< double > /*[2:3]*/ v); - virtual const IfcParse::entity& declaration() const; + void setOffsetDistances(const std::vector< double > /*[2:3]*/& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcVirtualGridIntersection (IfcEntityInstanceData&& e); - IfcVirtualGridIntersection (aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr v1_IntersectingAxes, std::vector< double > /*[2:3]*/ v2_OffsetDistances); - typedef aggregate_of< IfcVirtualGridIntersection > list; + // IfcVirtualGridIntersection (std::vector< ::Ifc4x3_add2::IfcGridAxis > v1_IntersectingAxes, std::vector< double > /*[2:3]*/ v2_OffsetDistances); }; -class IFC_PARSE_API IfcWellKnownText : public IfcUtil::IfcBaseEntity { +class IFC_PARSE_API IfcWellKnownText : public express::Entity { public: + IfcWellKnownText() {} + explicit IfcWellKnownText (const std::weak_ptr& data) : express::Entity(data) {} + std::string WellKnownText() const; - void setWellKnownText(std::string v); - ::Ifc4x3_add2::IfcCoordinateReferenceSystem* CoordinateReferenceSystem() const; - void setCoordinateReferenceSystem(::Ifc4x3_add2::IfcCoordinateReferenceSystem* v); - virtual const IfcParse::entity& declaration() const; + void setWellKnownText(const std::string& v); + ::Ifc4x3_add2::IfcCoordinateReferenceSystem CoordinateReferenceSystem() const; + void setCoordinateReferenceSystem(const ::Ifc4x3_add2::IfcCoordinateReferenceSystem& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcWellKnownText (IfcEntityInstanceData&& e); - IfcWellKnownText (std::string v1_WellKnownText, ::Ifc4x3_add2::IfcCoordinateReferenceSystem* v2_CoordinateReferenceSystem); - typedef aggregate_of< IfcWellKnownText > list; + // IfcWellKnownText (std::string v1_WellKnownText, ::Ifc4x3_add2::IfcCoordinateReferenceSystem v2_CoordinateReferenceSystem); }; /// IfcWorkTime defines time periods that are used by IfcWorkCalendar for either describing working times or non-working exception times. Besides start and finish dates, a set of time periods can be given by various types of recurrence patterns. /// @@ -14269,68 +18316,71 @@ public: /// A work time should have a meaningful name that describes the time periods (for example, working week, holiday name). Non-recurring time periods should have a start date (IfcWorkTime.Start) and a finish date (IfcWorkTime.Finish). In that case it is assumed that the time period begins at 0:00 on the start date and ends at 24:00 on the finish date. /// /// The start and finish date is optional if a recurrence pattern is given (IfcWorkTime.RecurrencePattern). They then restrict never-ending recurrence patterns. -class IFC_PARSE_API IfcWorkTime : public IfcSchedulingTime { +class IFC_PARSE_API IfcWorkTime : public IfcSchedulingTime { public: + IfcWorkTime() {} + explicit IfcWorkTime (const std::weak_ptr& data) : IfcSchedulingTime(data) {} + /// Recurrence pattern that defines a time period, which, if given, is /// valid within the time period defined by /// IfcWorkTime.Start and IfcWorkTime.Finish. - ::Ifc4x3_add2::IfcRecurrencePattern* RecurrencePattern() const; - void setRecurrencePattern(::Ifc4x3_add2::IfcRecurrencePattern* v); - boost::optional< std::string > StartDate() const; - void setStartDate(boost::optional< std::string > v); - boost::optional< std::string > FinishDate() const; - void setFinishDate(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcRecurrencePattern RecurrencePattern() const; + void setRecurrencePattern(const ::Ifc4x3_add2::IfcRecurrencePattern& v); + std::optional< std::string > StartDate() const; + void setStartDate(const std::optional< std::string >& v); + std::optional< std::string > FinishDate() const; + void setFinishDate(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcWorkTime (IfcEntityInstanceData&& e); - IfcWorkTime (boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcRecurrencePattern* v4_RecurrencePattern, boost::optional< std::string > v5_StartDate, boost::optional< std::string > v6_FinishDate); - typedef aggregate_of< IfcWorkTime > list; + // IfcWorkTime (std::optional< std::string > v1_Name, std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, std::optional< std::string > v3_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcRecurrencePattern v4_RecurrencePattern, std::optional< std::string > v5_StartDate, std::optional< std::string > v6_FinishDate); }; -class IFC_PARSE_API IfcAlignmentCantSegment : public IfcAlignmentParameterSegment { +class IFC_PARSE_API IfcAlignmentCantSegment : public IfcAlignmentParameterSegment { public: + IfcAlignmentCantSegment() {} + explicit IfcAlignmentCantSegment (const std::weak_ptr& data) : IfcAlignmentParameterSegment(data) {} + double StartDistAlong() const; - void setStartDistAlong(double v); + void setStartDistAlong(const double& v); double HorizontalLength() const; - void setHorizontalLength(double v); + void setHorizontalLength(const double& v); double StartCantLeft() const; - void setStartCantLeft(double v); - boost::optional< double > EndCantLeft() const; - void setEndCantLeft(boost::optional< double > v); + void setStartCantLeft(const double& v); + std::optional< double > EndCantLeft() const; + void setEndCantLeft(const std::optional< double >& v); double StartCantRight() const; - void setStartCantRight(double v); - boost::optional< double > EndCantRight() const; - void setEndCantRight(boost::optional< double > v); + void setStartCantRight(const double& v); + std::optional< double > EndCantRight() const; + void setEndCantRight(const std::optional< double >& v); ::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAlignmentCantSegment (IfcEntityInstanceData&& e); - IfcAlignmentCantSegment (boost::optional< std::string > v1_StartTag, boost::optional< std::string > v2_EndTag, double v3_StartDistAlong, double v4_HorizontalLength, double v5_StartCantLeft, boost::optional< double > v6_EndCantLeft, double v7_StartCantRight, boost::optional< double > v8_EndCantRight, ::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Value v9_PredefinedType); - typedef aggregate_of< IfcAlignmentCantSegment > list; + // IfcAlignmentCantSegment (std::optional< std::string > v1_StartTag, std::optional< std::string > v2_EndTag, double v3_StartDistAlong, double v4_HorizontalLength, double v5_StartCantLeft, std::optional< double > v6_EndCantLeft, double v7_StartCantRight, std::optional< double > v8_EndCantRight, ::Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::Value v9_PredefinedType); }; -class IFC_PARSE_API IfcAlignmentHorizontalSegment : public IfcAlignmentParameterSegment { +class IFC_PARSE_API IfcAlignmentHorizontalSegment : public IfcAlignmentParameterSegment { public: - ::Ifc4x3_add2::IfcCartesianPoint* StartPoint() const; - void setStartPoint(::Ifc4x3_add2::IfcCartesianPoint* v); + IfcAlignmentHorizontalSegment() {} + explicit IfcAlignmentHorizontalSegment (const std::weak_ptr& data) : IfcAlignmentParameterSegment(data) {} + + ::Ifc4x3_add2::IfcCartesianPoint StartPoint() const; + void setStartPoint(const ::Ifc4x3_add2::IfcCartesianPoint& v); double StartDirection() const; - void setStartDirection(double v); + void setStartDirection(const double& v); double StartRadiusOfCurvature() const; - void setStartRadiusOfCurvature(double v); + void setStartRadiusOfCurvature(const double& v); double EndRadiusOfCurvature() const; - void setEndRadiusOfCurvature(double v); + void setEndRadiusOfCurvature(const double& v); double SegmentLength() const; - void setSegmentLength(double v); - boost::optional< double > GravityCenterLineHeight() const; - void setGravityCenterLineHeight(boost::optional< double > v); + void setSegmentLength(const double& v); + std::optional< double > GravityCenterLineHeight() const; + void setGravityCenterLineHeight(const std::optional< double >& v); ::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAlignmentHorizontalSegment (IfcEntityInstanceData&& e); - IfcAlignmentHorizontalSegment (boost::optional< std::string > v1_StartTag, boost::optional< std::string > v2_EndTag, ::Ifc4x3_add2::IfcCartesianPoint* v3_StartPoint, double v4_StartDirection, double v5_StartRadiusOfCurvature, double v6_EndRadiusOfCurvature, double v7_SegmentLength, boost::optional< double > v8_GravityCenterLineHeight, ::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Value v9_PredefinedType); - typedef aggregate_of< IfcAlignmentHorizontalSegment > list; + // IfcAlignmentHorizontalSegment (std::optional< std::string > v1_StartTag, std::optional< std::string > v2_EndTag, ::Ifc4x3_add2::IfcCartesianPoint v3_StartPoint, double v4_StartDirection, double v5_StartRadiusOfCurvature, double v6_EndRadiusOfCurvature, double v7_SegmentLength, std::optional< double > v8_GravityCenterLineHeight, ::Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::Value v9_PredefinedType); }; /// An IfcApprovalRelationship associates approvals (one /// relating approval and one or more related approvals), each having different status or level as the approval process or the approved @@ -14339,19 +18389,20 @@ public: /// HISTORY: New entity in Release IFC2x2. /// /// IFC2x4 CHANGE  Subtyped from IfcResourceLevelRelationship, order of attributes changed. -class IFC_PARSE_API IfcApprovalRelationship : public IfcResourceLevelRelationship { +class IFC_PARSE_API IfcApprovalRelationship : public IfcResourceLevelRelationship { public: + IfcApprovalRelationship() {} + explicit IfcApprovalRelationship (const std::weak_ptr& data) : IfcResourceLevelRelationship(data) {} + /// The approval that other approval is related to. - ::Ifc4x3_add2::IfcApproval* RelatingApproval() const; - void setRelatingApproval(::Ifc4x3_add2::IfcApproval* v); + ::Ifc4x3_add2::IfcApproval RelatingApproval() const; + void setRelatingApproval(const ::Ifc4x3_add2::IfcApproval& v); /// The approvals that are related to another (relating) approval.IFC2x Edition 4 CHANGE The cardinality of this attribute has been changed to SET. - aggregate_of< ::Ifc4x3_add2::IfcApproval >::ptr RelatedApprovals() const; - void setRelatedApprovals(aggregate_of< ::Ifc4x3_add2::IfcApproval >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcApproval > RelatedApprovals() const; + void setRelatedApprovals(const std::vector< ::Ifc4x3_add2::IfcApproval >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcApprovalRelationship (IfcEntityInstanceData&& e); - IfcApprovalRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcApproval* v3_RelatingApproval, aggregate_of< ::Ifc4x3_add2::IfcApproval >::ptr v4_RelatedApprovals); - typedef aggregate_of< IfcApprovalRelationship > list; + // IfcApprovalRelationship (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcApproval v3_RelatingApproval, std::vector< ::Ifc4x3_add2::IfcApproval > v4_RelatedApprovals); }; /// The closed profile IfcArbitraryClosedProfileDef defines an arbitrary two-dimensional profile for the use within the swept surface geometry, the swept area solid or a sectioned spine. It is given by an outer boundary from which the surface or solid can be constructed. /// @@ -14371,16 +18422,17 @@ public: /// attribute defines a two dimensional closed bounded curve. /// /// Figure 307 — Arbitrary closed profile -class IFC_PARSE_API IfcArbitraryClosedProfileDef : public IfcProfileDef { +class IFC_PARSE_API IfcArbitraryClosedProfileDef : public IfcProfileDef { public: + IfcArbitraryClosedProfileDef() {} + explicit IfcArbitraryClosedProfileDef (const std::weak_ptr& data) : IfcProfileDef(data) {} + /// Bounded curve, defining the outer boundaries of the arbitrary profile. - ::Ifc4x3_add2::IfcCurve* OuterCurve() const; - void setOuterCurve(::Ifc4x3_add2::IfcCurve* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcCurve OuterCurve() const; + void setOuterCurve(const ::Ifc4x3_add2::IfcCurve& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcArbitraryClosedProfileDef (IfcEntityInstanceData&& e); - IfcArbitraryClosedProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcCurve* v3_OuterCurve); - typedef aggregate_of< IfcArbitraryClosedProfileDef > list; + // IfcArbitraryClosedProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcCurve v3_OuterCurve); }; /// The open profile IfcArbitraryOpenProfileDef defines an arbitrary two-dimensional open profile for the use within the swept surface geometry. It is given by an open boundary from with the surface can be constructed. /// @@ -14397,16 +18449,17 @@ public: /// The Curve attribute defines a two dimensional open bounded curve. /// /// Figure 308 — Arbitrary open profile -class IFC_PARSE_API IfcArbitraryOpenProfileDef : public IfcProfileDef { +class IFC_PARSE_API IfcArbitraryOpenProfileDef : public IfcProfileDef { public: + IfcArbitraryOpenProfileDef() {} + explicit IfcArbitraryOpenProfileDef (const std::weak_ptr& data) : IfcProfileDef(data) {} + /// Open bounded curve defining the profile. - ::Ifc4x3_add2::IfcBoundedCurve* Curve() const; - void setCurve(::Ifc4x3_add2::IfcBoundedCurve* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcBoundedCurve Curve() const; + void setCurve(const ::Ifc4x3_add2::IfcBoundedCurve& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcArbitraryOpenProfileDef (IfcEntityInstanceData&& e); - IfcArbitraryOpenProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcBoundedCurve* v3_Curve); - typedef aggregate_of< IfcArbitraryOpenProfileDef > list; + // IfcArbitraryOpenProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcBoundedCurve v3_Curve); }; /// The IfcArbitraryProfileDefWithVoids defines an arbitrary closed two-dimensional profile with holes defined for the use for the swept area solid or a sectioned spine. It is given by an outer boundary and inner boundaries from with the solid the can be constructed. /// @@ -14427,16 +18480,17 @@ public: /// or in case of sectioned spines the xy plane of each list member of IfcSectionedSpine.CrossSectionPositions. The OuterCurve attribute defines a two dimensional closed bounded curve, the InnerCurves define a set of two dimensional closed bounded curves. /// /// Figure 309 — Arbitrary profile with voids -class IFC_PARSE_API IfcArbitraryProfileDefWithVoids : public IfcArbitraryClosedProfileDef { +class IFC_PARSE_API IfcArbitraryProfileDefWithVoids : public IfcArbitraryClosedProfileDef { public: + IfcArbitraryProfileDefWithVoids() {} + explicit IfcArbitraryProfileDefWithVoids (const std::weak_ptr& data) : IfcArbitraryClosedProfileDef(data) {} + /// Set of bounded curves, defining the inner boundaries of the arbitrary profile. - aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr InnerCurves() const; - void setInnerCurves(aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcCurve > InnerCurves() const; + void setInnerCurves(const std::vector< ::Ifc4x3_add2::IfcCurve >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcArbitraryProfileDefWithVoids (IfcEntityInstanceData&& e); - IfcArbitraryProfileDefWithVoids (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcCurve* v3_OuterCurve, aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr v4_InnerCurves); - typedef aggregate_of< IfcArbitraryProfileDefWithVoids > list; + // IfcArbitraryProfileDefWithVoids (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcCurve v3_OuterCurve, std::vector< ::Ifc4x3_add2::IfcCurve > v4_InnerCurves); }; /// An IfcBlobTexture provides a 2-dimensional distribution of the lighting parameters of a surface onto which it is mapped. The texture itself is given as a single binary blob, representing the content of a pixel format file. The file format of the pixel file is given by the RasterFormat attribute and allowable formats are guided by where rule SupportedRasterFormat. /// @@ -14447,19 +18501,20 @@ public: /// HISTORY  New class in IFC2x3. /// /// IFC2x4 CHANGE  Data type of RasterCode has been corrected to BINARY. -class IFC_PARSE_API IfcBlobTexture : public IfcSurfaceTexture { +class IFC_PARSE_API IfcBlobTexture : public IfcSurfaceTexture { public: + IfcBlobTexture() {} + explicit IfcBlobTexture (const std::weak_ptr& data) : IfcSurfaceTexture(data) {} + /// The format of the RasterCode often using a compression. std::string RasterFormat() const; - void setRasterFormat(std::string v); + void setRasterFormat(const std::string& v); /// Blob, given as a single binary, to capture the texture within one popular file (compression) format. The file format is provided by the RasterFormat attribute. boost::dynamic_bitset<> RasterCode() const; - void setRasterCode(boost::dynamic_bitset<> v); - virtual const IfcParse::entity& declaration() const; + void setRasterCode(const boost::dynamic_bitset<>& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBlobTexture (IfcEntityInstanceData&& e); - IfcBlobTexture (bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, std::string v6_RasterFormat, boost::dynamic_bitset<> v7_RasterCode); - typedef aggregate_of< IfcBlobTexture > list; + // IfcBlobTexture (bool v1_RepeatS, bool v2_RepeatT, std::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D v4_TextureTransform, std::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, std::string v6_RasterFormat, boost::dynamic_bitset<> v7_RasterCode); }; /// The profile IfcCenterLineProfileDef defines an arbitrary two-dimensional open, not self intersecting profile for the use within the swept solid geometry. It is given by an area defined by applying a constant thickness to a centerline, generating an area from which the solid can be constructed. /// @@ -14490,16 +18545,17 @@ public: /// The Curve attribute defines a two dimensional open bounded curve. The Thickness attribute defines a constant thickness along the curve. /// /// Figure 311 — Centerline profile -class IFC_PARSE_API IfcCenterLineProfileDef : public IfcArbitraryOpenProfileDef { +class IFC_PARSE_API IfcCenterLineProfileDef : public IfcArbitraryOpenProfileDef { public: + IfcCenterLineProfileDef() {} + explicit IfcCenterLineProfileDef (const std::weak_ptr& data) : IfcArbitraryOpenProfileDef(data) {} + /// Constant thickness applied along the center line. double Thickness() const; - void setThickness(double v); - virtual const IfcParse::entity& declaration() const; + void setThickness(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCenterLineProfileDef (IfcEntityInstanceData&& e); - IfcCenterLineProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcBoundedCurve* v3_Curve, double v4_Thickness); - typedef aggregate_of< IfcCenterLineProfileDef > list; + // IfcCenterLineProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcBoundedCurve v3_Curve, double v4_Thickness); }; /// An IfcClassification is used for the arrangement of objects into a class or category according to a common purpose or their possession of common /// characteristics. A classification in the sense of IfcClassification is taxonomy, or taxonomic scheme, arranged in a hierarchical structure. A category of objects relates to other categories in a generalization-specialization relationship. Therefore the classification items in an @@ -14516,39 +18572,42 @@ public: /// /// Including the classification system structure within the dataset: Here a hierarchical tree of IfcClassificationItem's is included that defines the classification system including the relationship between the classification items. An IfcClassificationNotation is used to classify an object. /// Referencing the classification system by a classification key or id: Here the IfcClassificationReference is used to assign a classification id or key to each classified object. -class IFC_PARSE_API IfcClassification : public IfcExternalInformation, public IfcClassificationReferenceSelect, public IfcClassificationSelect { +class IFC_PARSE_API IfcClassification : public IfcExternalInformation { public: + IfcClassification() {} + explicit IfcClassification (const std::weak_ptr& data) : IfcExternalInformation(data) {} + /// Source (or publisher) for this classification. /// /// NOTE that the source of the classification means the person or organization that was the original author or the person or organization currently acting as the publisher. - boost::optional< std::string > Source() const; - void setSource(boost::optional< std::string > v); + std::optional< std::string > Source() const; + void setSource(const std::optional< std::string >& v); /// The edition or version of the classification system from which the classification notation is derived. /// /// NOTE the version labeling system is specific to the classification system. /// /// IFC2x4 CHANGE The attribute has been changed to be optional. - boost::optional< std::string > Edition() const; - void setEdition(boost::optional< std::string > v); + std::optional< std::string > Edition() const; + void setEdition(const std::optional< std::string >& v); /// The date on which the edition of the classification used became valid. /// /// NOTE The indication of edition may be sufficient to identify the classification source uniquely but the edition date is provided as an optional attribute to enable more precise identification where required. /// /// IFC2x4 CHANGE The data type has been changed to IfcDate, the date string according to ISO8601. - boost::optional< std::string > EditionDate() const; - void setEditionDate(boost::optional< std::string > v); + std::optional< std::string > EditionDate() const; + void setEditionDate(const std::optional< std::string >& v); /// The name or label by which the classification used is normally known. /// /// NOTE Examples of names include CI/SfB, Masterformat, BSAB, Uniclass, STABU, DIN276, DIN277 etc. std::string Name() const; - void setName(std::string v); + void setName(const std::string& v); /// Additional description provided for the classification. /// /// IFC2x4 CHANGE  New attribute added at the end of the attribute list. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); - boost::optional< std::string > Specification() const; - void setSpecification(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); + std::optional< std::string > Specification() const; + void setSpecification(const std::optional< std::string >& v); /// The delimiter tokens that are used to mark the boundaries of individual facets (substrings) in a classification reference. /// /// This typically applies then the IfcClassification is used in @@ -14561,15 +18620,13 @@ public: /// EXAMPLE 2  The use of ReferenceTokens can also be extended to include masks. The use need to be agreed in view definitions or implementer agreements that stipulates a "mask syntax" that should be used. /// /// IFC2x4 CHANGE  New attribute added at the end of the attribute list. - boost::optional< std::vector< std::string > /*[1:?]*/ > ReferenceTokens() const; - void setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v); - aggregate_of< IfcRelAssociatesClassification >::ptr ClassificationForObjects() const; // INVERSE IfcRelAssociatesClassification::RelatingClassification - aggregate_of< IfcClassificationReference >::ptr HasReferences() const; // INVERSE IfcClassificationReference::ReferencedSource - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< std::string > /*[1:?]*/ > ReferenceTokens() const; + void setReferenceTokens(const std::optional< std::vector< std::string > /*[1:?]*/ >& v); + std::vector< IfcRelAssociatesClassification > ClassificationForObjects() const; // INVERSE IfcRelAssociatesClassification::RelatingClassification + std::vector< IfcClassificationReference > HasReferences() const; // INVERSE IfcClassificationReference::ReferencedSource + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcClassification (IfcEntityInstanceData&& e); - IfcClassification (boost::optional< std::string > v1_Source, boost::optional< std::string > v2_Edition, boost::optional< std::string > v3_EditionDate, std::string v4_Name, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Specification, boost::optional< std::vector< std::string > /*[1:?]*/ > v7_ReferenceTokens); - typedef aggregate_of< IfcClassification > list; + // IfcClassification (std::optional< std::string > v1_Source, std::optional< std::string > v2_Edition, std::optional< std::string > v3_EditionDate, std::string v4_Name, std::optional< std::string > v5_Description, std::optional< std::string > v6_Specification, std::optional< std::vector< std::string > /*[1:?]*/ > v7_ReferenceTokens); }; /// An IfcClassificationReference is a reference into a classification system or source (see IfcClassification) for a specific classification key (or notation). /// @@ -14592,55 +18649,58 @@ public: /// The IfcClassificationReference can be used to only assign classification keys to objects, or to hold a fully classification hierarchy. The first is refered to as "lightweight classification", and the second as "full classification" /// /// The IfcClassificationReference can be used as a form of 'lightweight' classification through the 'Identification' attribute inherited from the abstract IfcExternalReference class. In this case, the 'Identification' could take (for instance) the Uniclass notation "L6814" which, if the classification was well understood by all parties and was known to be taken from a particular classification source, would be sufficient. The Name attribute could be the title "Tanking". This would remove the need for the overhead of the more complete classification structure of the model. -class IFC_PARSE_API IfcClassificationReference : public IfcExternalReference, public IfcClassificationReferenceSelect, public IfcClassificationSelect { +class IFC_PARSE_API IfcClassificationReference : public IfcExternalReference { public: + IfcClassificationReference() {} + explicit IfcClassificationReference (const std::weak_ptr& data) : IfcExternalReference(data) {} + /// The classification system or source that is referenced. - ::Ifc4x3_add2::IfcClassificationReferenceSelect* ReferencedSource() const; - void setReferencedSource(::Ifc4x3_add2::IfcClassificationReferenceSelect* v); + ::Ifc4x3_add2::IfcClassificationReferenceSelect ReferencedSource() const; + void setReferencedSource(const ::Ifc4x3_add2::IfcClassificationReferenceSelect& v); /// Description of the classification reference for informational purposes. /// /// IFC2x4 CHANGE  New attribute added at the end of the attribute list. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); - boost::optional< std::string > Sort() const; - void setSort(boost::optional< std::string > v); - aggregate_of< IfcRelAssociatesClassification >::ptr ClassificationRefForObjects() const; // INVERSE IfcRelAssociatesClassification::RelatingClassification - aggregate_of< IfcClassificationReference >::ptr HasReferences() const; // INVERSE IfcClassificationReference::ReferencedSource - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); + std::optional< std::string > Sort() const; + void setSort(const std::optional< std::string >& v); + std::vector< IfcRelAssociatesClassification > ClassificationRefForObjects() const; // INVERSE IfcRelAssociatesClassification::RelatingClassification + std::vector< IfcClassificationReference > HasReferences() const; // INVERSE IfcClassificationReference::ReferencedSource + // 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_Identification, boost::optional< std::string > v3_Name, ::Ifc4x3_add2::IfcClassificationReferenceSelect* v4_ReferencedSource, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Sort); - typedef aggregate_of< IfcClassificationReference > list; + // IfcClassificationReference (std::optional< std::string > v1_Location, std::optional< std::string > v2_Identification, std::optional< std::string > v3_Name, ::Ifc4x3_add2::IfcClassificationReferenceSelect v4_ReferencedSource, std::optional< std::string > v5_Description, std::optional< std::string > v6_Sort); }; -class IFC_PARSE_API IfcColourRgbList : public IfcPresentationItem { +class IFC_PARSE_API IfcColourRgbList : public IfcPresentationItem { public: + IfcColourRgbList() {} + explicit IfcColourRgbList (const std::weak_ptr& data) : IfcPresentationItem(data) {} + std::vector< std::vector< double > > ColourList() const; - void setColourList(std::vector< std::vector< double > > v); - virtual const IfcParse::entity& declaration() const; + void setColourList(const std::vector< std::vector< double > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcColourRgbList (IfcEntityInstanceData&& e); - IfcColourRgbList (std::vector< std::vector< double > > v1_ColourList); - typedef aggregate_of< IfcColourRgbList > list; + // IfcColourRgbList (std::vector< std::vector< double > > v1_ColourList); }; /// Definition from ISO/CD 10303-46:1992: The colour specification entity contains a direct colour definition. Colour component values refer directly to a specific colour space. /// /// NOTE  Corresponding ISO 10303 name: colour_specification. It has been made into an abstract entity in IFC. Please refer to ISO/IS 10303-46:1994, p. 138 for the final definition of the formal standard. /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcColourSpecification : public IfcPresentationItem, public IfcColour, public IfcFillStyleSelect { +class IFC_PARSE_API IfcColourSpecification : public IfcPresentationItem { public: + IfcColourSpecification() {} + explicit IfcColourSpecification (const std::weak_ptr& data) : IfcPresentationItem(data) {} + /// Optional name given to a particular colour specification in addition to the colour components (like the RGB values). /// /// NOTE  Examples are the names of a industry colour classification, such as RAL. /// IFC2x Edition 3 CHANGE  Attribute added. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Name() const; + void setName(const std::optional< 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 aggregate_of< IfcColourSpecification > list; + // IfcColourSpecification (std::optional< std::string > v1_Name); }; /// The IfcCompositeProfileDef /// defines the profile by composition of other profiles. The composition @@ -14678,19 +18738,20 @@ public: ///   /// double_L : IfcCompositeProfileDef := IfcCompositeProfileDef(AREA, 'double angle', ///     (single_L, IfcMirroredProfileDef(AREA, ?, single_L, ?)), 'twin profile'); -class IFC_PARSE_API IfcCompositeProfileDef : public IfcProfileDef { +class IFC_PARSE_API IfcCompositeProfileDef : public IfcProfileDef { public: + IfcCompositeProfileDef() {} + explicit IfcCompositeProfileDef (const std::weak_ptr& data) : IfcProfileDef(data) {} + /// The profiles which are used to define the composite profile. - aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr Profiles() const; - void setProfiles(aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v); + std::vector< ::Ifc4x3_add2::IfcProfileDef > Profiles() const; + void setProfiles(const std::vector< ::Ifc4x3_add2::IfcProfileDef >& v); /// The name by which the composition may be referred to. The actual meaning of the name has to be defined in the context of applications. - boost::optional< std::string > Label() const; - void setLabel(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Label() const; + void setLabel(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCompositeProfileDef (IfcEntityInstanceData&& e); - IfcCompositeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v3_Profiles, boost::optional< std::string > v4_Label); - typedef aggregate_of< IfcCompositeProfileDef > list; + // IfcCompositeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, std::vector< ::Ifc4x3_add2::IfcProfileDef > v3_Profiles, std::optional< std::string > v4_Label); }; /// Definition from ISO/CD 10303-42:1992: A connected_face_set is a set of faces such that the domain of faces together with their bounding edges and vertices is connected. /// @@ -14701,16 +18762,17 @@ public: /// Informal proposition: /// /// The union of the domains of the faces and their bounding loops shall be arcwise connected. -class IFC_PARSE_API IfcConnectedFaceSet : public IfcTopologicalRepresentationItem { +class IFC_PARSE_API IfcConnectedFaceSet : public IfcTopologicalRepresentationItem { public: + IfcConnectedFaceSet() {} + explicit IfcConnectedFaceSet (const std::weak_ptr& data) : IfcTopologicalRepresentationItem(data) {} + /// The set of faces arcwise connected along common edges or vertices. - aggregate_of< ::Ifc4x3_add2::IfcFace >::ptr CfsFaces() const; - void setCfsFaces(aggregate_of< ::Ifc4x3_add2::IfcFace >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcFace > CfsFaces() const; + void setCfsFaces(const std::vector< ::Ifc4x3_add2::IfcFace >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConnectedFaceSet (IfcEntityInstanceData&& e); - IfcConnectedFaceSet (aggregate_of< ::Ifc4x3_add2::IfcFace >::ptr v1_CfsFaces); - typedef aggregate_of< IfcConnectedFaceSet > list; + // IfcConnectedFaceSet (std::vector< ::Ifc4x3_add2::IfcFace > v1_CfsFaces); }; /// IfcConnectionCurveGeometry is used to describe the geometric constraints that facilitate the physical connection of two objects at a curve or at an edge with curve geometry associated. It is envisioned as a control that applies to the element connection relationships. /// @@ -14725,19 +18787,20 @@ public: /// /// Geometry use definitions /// The IfcCurve (or the IfcEdgeCurve with an associated IfcCurve) at the CurveOnRelatingElement attribute defines the curve where the basic geometry items of the connected elements connects. The curve geometry and coordinates are provided within the local coordinate system of the RelatingElement, as specified at the IfcRelConnects Subtype that utilizes the IfcConnectionCurveGeometry. Optionally, the same curve geometry and coordinates can also be provided within the local coordinate system of the RelatedElement by using the CurveOnRelatedElement attribute. -class IFC_PARSE_API IfcConnectionCurveGeometry : public IfcConnectionGeometry { +class IFC_PARSE_API IfcConnectionCurveGeometry : public IfcConnectionGeometry { public: + IfcConnectionCurveGeometry() {} + explicit IfcConnectionCurveGeometry (const std::weak_ptr& data) : IfcConnectionGeometry(data) {} + /// The bounded curve at which the connected objects are aligned at the relating element, given in the LCS of the relating element. - ::Ifc4x3_add2::IfcCurveOrEdgeCurve* CurveOnRelatingElement() const; - void setCurveOnRelatingElement(::Ifc4x3_add2::IfcCurveOrEdgeCurve* v); + ::Ifc4x3_add2::IfcCurveOrEdgeCurve CurveOnRelatingElement() const; + void setCurveOnRelatingElement(const ::Ifc4x3_add2::IfcCurveOrEdgeCurve& v); /// The bounded curve at which the connected objects are aligned at the related element, given in the LCS of the related element. If the information is omitted, then the origin of the related element is used. - ::Ifc4x3_add2::IfcCurveOrEdgeCurve* CurveOnRelatedElement() const; - void setCurveOnRelatedElement(::Ifc4x3_add2::IfcCurveOrEdgeCurve* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcCurveOrEdgeCurve CurveOnRelatedElement() const; + void setCurveOnRelatedElement(const ::Ifc4x3_add2::IfcCurveOrEdgeCurve& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConnectionCurveGeometry (IfcEntityInstanceData&& e); - IfcConnectionCurveGeometry (::Ifc4x3_add2::IfcCurveOrEdgeCurve* v1_CurveOnRelatingElement, ::Ifc4x3_add2::IfcCurveOrEdgeCurve* v2_CurveOnRelatedElement); - typedef aggregate_of< IfcConnectionCurveGeometry > list; + // IfcConnectionCurveGeometry (::Ifc4x3_add2::IfcCurveOrEdgeCurve v1_CurveOnRelatingElement, ::Ifc4x3_add2::IfcCurveOrEdgeCurve v2_CurveOnRelatedElement); }; /// IfcConnectionPointEccentricity is used to describe the geometric constraints that facilitate the physical connection of two objects at a point or vertex point with associated point coordinates. There is a physical distance, or eccentricity, etween the connection points of both object. The eccentricity can be either given by: /// @@ -14758,22 +18821,23 @@ public: /// /// Geometry use definitions /// The IfcPoint (or the IfcVertexPoint with an associated IfcPoint) at the PointOnRelatingElement attribute defines the point where the basic geometry items of the connected elements connects. The point coordinates are provided within the local coordinate system of the RelatingElement, as specified at the IfcRelConnects subtype that utilizes the IfcConnectionPointGeometry. Optionally, the same point coordinates can also be provided within the local coordinate system of the RelatedElement by using the PointOnRelatedElement attribute, otherwise the distance to the point at the RelatedElement has to be given by the three eccentricity values. -class IFC_PARSE_API IfcConnectionPointEccentricity : public IfcConnectionPointGeometry { +class IFC_PARSE_API IfcConnectionPointEccentricity : public IfcConnectionPointGeometry { public: + IfcConnectionPointEccentricity() {} + explicit IfcConnectionPointEccentricity (const std::weak_ptr& data) : IfcConnectionPointGeometry(data) {} + /// Distance in x direction between the two points (or vertex points) engaged in the point connection. - boost::optional< double > EccentricityInX() const; - void setEccentricityInX(boost::optional< double > v); + std::optional< double > EccentricityInX() const; + void setEccentricityInX(const std::optional< double >& v); /// Distance in y direction between the two points (or vertex points) engaged in the point connection. - boost::optional< double > EccentricityInY() const; - void setEccentricityInY(boost::optional< double > v); + std::optional< double > EccentricityInY() const; + void setEccentricityInY(const std::optional< double >& v); /// Distance in z direction between the two points (or vertex points) engaged in the point connection. - boost::optional< double > EccentricityInZ() const; - void setEccentricityInZ(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > EccentricityInZ() const; + void setEccentricityInZ(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConnectionPointEccentricity (IfcEntityInstanceData&& e); - IfcConnectionPointEccentricity (::Ifc4x3_add2::IfcPointOrVertexPoint* v1_PointOnRelatingElement, ::Ifc4x3_add2::IfcPointOrVertexPoint* v2_PointOnRelatedElement, boost::optional< double > v3_EccentricityInX, boost::optional< double > v4_EccentricityInY, boost::optional< double > v5_EccentricityInZ); - typedef aggregate_of< IfcConnectionPointEccentricity > list; + // IfcConnectionPointEccentricity (::Ifc4x3_add2::IfcPointOrVertexPoint v1_PointOnRelatingElement, ::Ifc4x3_add2::IfcPointOrVertexPoint v2_PointOnRelatedElement, std::optional< double > v3_EccentricityInX, std::optional< double > v4_EccentricityInY, std::optional< double > v5_EccentricityInZ); }; /// Definition from ISO/CD 10303-41:1992: A context dependent unit is a unit which is not related to the SI system. /// @@ -14782,17 +18846,18 @@ public: /// NOTE Corresponding ISO 10303 name: context_dependent_unit, please refer to ISO/IS 10303-41 for the final definition of the formal standard. /// /// HISTORY New entity in IFC Release 1.5.1. -class IFC_PARSE_API IfcContextDependentUnit : public IfcNamedUnit, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcContextDependentUnit : public IfcNamedUnit { public: + IfcContextDependentUnit() {} + explicit IfcContextDependentUnit (const std::weak_ptr& data) : IfcNamedUnit(data) {} + /// The word, or group of words, by which the context dependent unit is referred to. std::string Name() const; - void setName(std::string v); - aggregate_of< IfcExternalReferenceRelationship >::ptr HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects - virtual const IfcParse::entity& declaration() const; + void setName(const std::string& v); + std::vector< IfcExternalReferenceRelationship > HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcContextDependentUnit (IfcEntityInstanceData&& e); - IfcContextDependentUnit (::Ifc4x3_add2::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, std::string v3_Name); - typedef aggregate_of< IfcContextDependentUnit > list; + // IfcContextDependentUnit (::Ifc4x3_add2::IfcDimensionalExponents v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, std::string v3_Name); }; /// Definition from ISO/CD 10303-41:1992: A conversion based unit is a unit that is defined based on a measure with unit. /// @@ -14841,20 +18906,21 @@ public: /// 'hour' Time measure equal to 3600 s /// 'day' Time measure equal to 86400 s /// 'btu' Energy measure equal to 1055.056 J, British Thermal Unit -class IFC_PARSE_API IfcConversionBasedUnit : public IfcNamedUnit, public IfcResourceObjectSelect { +class IFC_PARSE_API IfcConversionBasedUnit : public IfcNamedUnit { public: + IfcConversionBasedUnit() {} + explicit IfcConversionBasedUnit (const std::weak_ptr& data) : IfcNamedUnit(data) {} + /// The word, or group of words, by which the conversion based unit is referred to. std::string Name() const; - void setName(std::string v); + void setName(const std::string& v); /// The physical quantity from which the converted unit is derived. - ::Ifc4x3_add2::IfcMeasureWithUnit* ConversionFactor() const; - void setConversionFactor(::Ifc4x3_add2::IfcMeasureWithUnit* v); - aggregate_of< IfcExternalReferenceRelationship >::ptr HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcMeasureWithUnit ConversionFactor() const; + void setConversionFactor(const ::Ifc4x3_add2::IfcMeasureWithUnit& v); + std::vector< IfcExternalReferenceRelationship > HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConversionBasedUnit (IfcEntityInstanceData&& e); - IfcConversionBasedUnit (::Ifc4x3_add2::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, std::string v3_Name, ::Ifc4x3_add2::IfcMeasureWithUnit* v4_ConversionFactor); - typedef aggregate_of< IfcConversionBasedUnit > list; + // IfcConversionBasedUnit (::Ifc4x3_add2::IfcDimensionalExponents v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, std::string v3_Name, ::Ifc4x3_add2::IfcMeasureWithUnit v4_ConversionFactor); }; /// IfcConversionBasedUnitWithOffset is a unit which is converted from another unit by applying a conversion factor and an offset. /// @@ -14874,16 +18940,17 @@ public: ///         IfcThermodynamicTemperatureMeasure(1.8), ///         IfcSiUnit(THERMODYNAMICTEMPERATUREUNIT, ?, KELVIN)), ///     -459.67); -class IFC_PARSE_API IfcConversionBasedUnitWithOffset : public IfcConversionBasedUnit { +class IFC_PARSE_API IfcConversionBasedUnitWithOffset : public IfcConversionBasedUnit { public: + IfcConversionBasedUnitWithOffset() {} + explicit IfcConversionBasedUnitWithOffset (const std::weak_ptr& data) : IfcConversionBasedUnit(data) {} + /// A positive or negative offset to add after the inherited ConversionFactor was applied. double ConversionOffset() const; - void setConversionOffset(double v); - virtual const IfcParse::entity& declaration() const; + void setConversionOffset(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConversionBasedUnitWithOffset (IfcEntityInstanceData&& e); - IfcConversionBasedUnitWithOffset (::Ifc4x3_add2::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, std::string v3_Name, ::Ifc4x3_add2::IfcMeasureWithUnit* v4_ConversionFactor, double v5_ConversionOffset); - typedef aggregate_of< IfcConversionBasedUnitWithOffset > list; + // IfcConversionBasedUnitWithOffset (::Ifc4x3_add2::IfcDimensionalExponents v1_Dimensions, ::Ifc4x3_add2::IfcUnitEnum::Value v2_UnitType, std::string v3_Name, ::Ifc4x3_add2::IfcMeasureWithUnit v4_ConversionFactor, double v5_ConversionOffset); }; /// IfcCurrencyRelationship defines the rate of exchange /// that applies between two designated currencies at a particular time @@ -14896,30 +18963,31 @@ public: /// Use definitions /// An IfcCurrencyRelationship is used where there may be a need to reference an IfcCostValue in one currency to an IfcCostValue in another currency. It takes account of fact that currency exchange rates may vary by requiring the recording the date and time of the currency exchange rate used and the source that publishes the rate. There may be many sources and there are different strategies for currency conversion (spot rate, forward buying of currency at a fixed rate). /// The source for the currency exchange is defined as an instance of IfcLibraryInformation that includes a name and a URL. -class IFC_PARSE_API IfcCurrencyRelationship : public IfcResourceLevelRelationship { +class IFC_PARSE_API IfcCurrencyRelationship : public IfcResourceLevelRelationship { public: + IfcCurrencyRelationship() {} + explicit IfcCurrencyRelationship (const std::weak_ptr& data) : IfcResourceLevelRelationship(data) {} + /// The monetary unit from which an exchange is derived. For instance, in the case of a conversion from GBP to USD, the relating monetary unit is GBP. - ::Ifc4x3_add2::IfcMonetaryUnit* RelatingMonetaryUnit() const; - void setRelatingMonetaryUnit(::Ifc4x3_add2::IfcMonetaryUnit* v); + ::Ifc4x3_add2::IfcMonetaryUnit RelatingMonetaryUnit() const; + void setRelatingMonetaryUnit(const ::Ifc4x3_add2::IfcMonetaryUnit& v); /// The monetary unit to which an exchange results. For instance, in the case of a conversion from GBP to USD, the related monetary unit is USD. - ::Ifc4x3_add2::IfcMonetaryUnit* RelatedMonetaryUnit() const; - void setRelatedMonetaryUnit(::Ifc4x3_add2::IfcMonetaryUnit* v); + ::Ifc4x3_add2::IfcMonetaryUnit RelatedMonetaryUnit() const; + void setRelatedMonetaryUnit(const ::Ifc4x3_add2::IfcMonetaryUnit& v); /// The currently agreed ratio of the amount of a related monetary unit that is equivalent to a unit amount of the relating monetary unit in a currency relationship. For instance, in the case of a conversion from GBP to USD, the value of the exchange rate may be 1.486 (USD) : 1 (GBP). double ExchangeRate() const; - void setExchangeRate(double v); + void setExchangeRate(const double& v); /// The date and time at which an exchange rate applies. /// /// IFC2x4 CHANGE Type changed from IfcDateTimeSelect. Attribute made optional. - boost::optional< std::string > RateDateTime() const; - void setRateDateTime(boost::optional< std::string > v); + std::optional< std::string > RateDateTime() const; + void setRateDateTime(const std::optional< std::string >& v); /// The source from which an exchange rate is obtained. - ::Ifc4x3_add2::IfcLibraryInformation* RateSource() const; - void setRateSource(::Ifc4x3_add2::IfcLibraryInformation* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcLibraryInformation RateSource() const; + void setRateSource(const ::Ifc4x3_add2::IfcLibraryInformation& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCurrencyRelationship (IfcEntityInstanceData&& e); - IfcCurrencyRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMonetaryUnit* v3_RelatingMonetaryUnit, ::Ifc4x3_add2::IfcMonetaryUnit* v4_RelatedMonetaryUnit, double v5_ExchangeRate, boost::optional< std::string > v6_RateDateTime, ::Ifc4x3_add2::IfcLibraryInformation* v7_RateSource); - typedef aggregate_of< IfcCurrencyRelationship > list; + // IfcCurrencyRelationship (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMonetaryUnit v3_RelatingMonetaryUnit, ::Ifc4x3_add2::IfcMonetaryUnit v4_RelatedMonetaryUnit, double v5_ExchangeRate, std::optional< std::string > v6_RateDateTime, ::Ifc4x3_add2::IfcLibraryInformation v7_RateSource); }; /// Definition from ISO/CD 10303-46:1992: A curve style specifies the visual appearance of curves. /// @@ -14938,43 +19006,45 @@ public: /// NOTE  Corresponding ISO 10303 name: curve_style. Please refer to ISO/IS 10303-46:1994 for the final definition of the formal standard. /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcCurveStyle : public IfcPresentationStyle { +class IFC_PARSE_API IfcCurveStyle : public IfcPresentationStyle { public: + IfcCurveStyle() {} + explicit IfcCurveStyle (const std::weak_ptr& data) : IfcPresentationStyle(data) {} + /// A curve style font which is used to present a curve. It can either be a predefined curve font, or an explicitly defined curve font. Both may be scaled. If not given, then the curve font should be taken from the layer assignment with style, if that is not given either, then the default curve font applies. - ::Ifc4x3_add2::IfcCurveFontOrScaledCurveFontSelect* CurveFont() const; - void setCurveFont(::Ifc4x3_add2::IfcCurveFontOrScaledCurveFontSelect* v); + ::Ifc4x3_add2::IfcCurveFontOrScaledCurveFontSelect CurveFont() const; + void setCurveFont(const ::Ifc4x3_add2::IfcCurveFontOrScaledCurveFontSelect& v); /// A positive length measure in units of the presentation area for the width of a presented curve. If not given, then the style should be taken from the layer assignment with style, if that is not given either, then the default style applies. - ::Ifc4x3_add2::IfcSizeSelect* CurveWidth() const; - void setCurveWidth(::Ifc4x3_add2::IfcSizeSelect* v); + ::Ifc4x3_add2::IfcSizeSelect CurveWidth() const; + void setCurveWidth(const ::Ifc4x3_add2::IfcSizeSelect& v); /// The colour of the visible part of the curve. If not given, then the colour should be taken from the layer assignment with style, if that is not given either, then the default colour applies. - ::Ifc4x3_add2::IfcColour* CurveColour() const; - void setCurveColour(::Ifc4x3_add2::IfcColour* v); - boost::optional< bool > ModelOrDraughting() const; - void setModelOrDraughting(boost::optional< bool > v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcColour CurveColour() const; + void setCurveColour(const ::Ifc4x3_add2::IfcColour& v); + std::optional< bool > ModelOrDraughting() const; + void setModelOrDraughting(const std::optional< bool >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCurveStyle (IfcEntityInstanceData&& e); - IfcCurveStyle (boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcCurveFontOrScaledCurveFontSelect* v2_CurveFont, ::Ifc4x3_add2::IfcSizeSelect* v3_CurveWidth, ::Ifc4x3_add2::IfcColour* v4_CurveColour, boost::optional< bool > v5_ModelOrDraughting); - typedef aggregate_of< IfcCurveStyle > list; + // IfcCurveStyle (std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcCurveFontOrScaledCurveFontSelect v2_CurveFont, ::Ifc4x3_add2::IfcSizeSelect v3_CurveWidth, ::Ifc4x3_add2::IfcColour v4_CurveColour, std::optional< bool > v5_ModelOrDraughting); }; /// Definition from ISO/CD 10303-46:1992: A curve style font combines several curve style font pattern entities into a more complex pattern. The resulting pattern is repeated along the curve. /// /// NOTE: Corresponding ISO 10303 name: curve_style_font. Please refer to ISO/IS 10303-46:1994 for the final definition of the formal standard. /// /// HISTORY: New entity in IFC2x2. -class IFC_PARSE_API IfcCurveStyleFont : public IfcPresentationItem, public IfcCurveFontOrScaledCurveFontSelect, public IfcCurveStyleFontSelect { +class IFC_PARSE_API IfcCurveStyleFont : public IfcPresentationItem { public: + IfcCurveStyleFont() {} + explicit IfcCurveStyleFont (const std::weak_ptr& data) : IfcPresentationItem(data) {} + /// Name that may be assigned with the curve font. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// A list of curve font pattern entities, that contains the simple patterns used for drawing curves. The patterns are applied in the order they occur in the list. - aggregate_of< ::Ifc4x3_add2::IfcCurveStyleFontPattern >::ptr PatternList() const; - void setPatternList(aggregate_of< ::Ifc4x3_add2::IfcCurveStyleFontPattern >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcCurveStyleFontPattern > PatternList() const; + void setPatternList(const std::vector< ::Ifc4x3_add2::IfcCurveStyleFontPattern >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCurveStyleFont (IfcEntityInstanceData&& e); - IfcCurveStyleFont (boost::optional< std::string > v1_Name, aggregate_of< ::Ifc4x3_add2::IfcCurveStyleFontPattern >::ptr v2_PatternList); - typedef aggregate_of< IfcCurveStyleFont > list; + // IfcCurveStyleFont (std::optional< std::string > v1_Name, std::vector< ::Ifc4x3_add2::IfcCurveStyleFontPattern > v2_PatternList); }; /// Definition from ISO/CD 10303-46:1992: A curve style font and scaling is a curve style font and a scalar factor for that font, so that a given curve style font may be applied at various scales. /// @@ -14987,44 +19057,46 @@ public: /// NOTE  Corresponding ISO 10303 name: curve_style_font_and_scaling. Please refer to ISO/IS 10303-46:1994 for the final definition of the formal standard. /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcCurveStyleFontAndScaling : public IfcPresentationItem, public IfcCurveFontOrScaledCurveFontSelect { +class IFC_PARSE_API IfcCurveStyleFontAndScaling : public IfcPresentationItem { public: + IfcCurveStyleFontAndScaling() {} + explicit IfcCurveStyleFontAndScaling (const std::weak_ptr& data) : IfcPresentationItem(data) {} + /// Name that may be assigned with the scaling of a curve font. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); - ::Ifc4x3_add2::IfcCurveStyleFontSelect* CurveStyleFont() const; - void setCurveStyleFont(::Ifc4x3_add2::IfcCurveStyleFontSelect* v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); + ::Ifc4x3_add2::IfcCurveStyleFontSelect CurveStyleFont() const; + void setCurveStyleFont(const ::Ifc4x3_add2::IfcCurveStyleFontSelect& v); /// The scale factor. double CurveFontScaling() const; - void setCurveFontScaling(double v); - virtual const IfcParse::entity& declaration() const; + void setCurveFontScaling(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCurveStyleFontAndScaling (IfcEntityInstanceData&& e); - IfcCurveStyleFontAndScaling (boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcCurveStyleFontSelect* v2_CurveStyleFont, double v3_CurveFontScaling); - typedef aggregate_of< IfcCurveStyleFontAndScaling > list; + // IfcCurveStyleFontAndScaling (std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcCurveStyleFontSelect v2_CurveStyleFont, double v3_CurveFontScaling); }; /// Definition from ISO/CD 10303-46:1992: A curve style font pattern is a pair of visible and invisible curve segment length measures in presentation area units. /// /// NOTE Corresponding ISO 10303 name: curve_style_font_pattern. Please refer to ISO/IS 10303-46:1994 for the final definition of the formal standard. /// /// HISTORY New entity in IFC2x2. -class IFC_PARSE_API IfcCurveStyleFontPattern : public IfcPresentationItem { +class IFC_PARSE_API IfcCurveStyleFontPattern : public IfcPresentationItem { public: + IfcCurveStyleFontPattern() {} + explicit IfcCurveStyleFontPattern (const std::weak_ptr& data) : IfcPresentationItem(data) {} + /// The length of the visible segment in the pattern definition. /// /// NOTE  For a visible segment representing a point, the value 0. should be assigned. /// /// IFC2x Edition 3 CHANGE  The datatype has been changed to IfcLengthMeasure with upward compatibility for file-based exchange. double VisibleSegmentLength() const; - void setVisibleSegmentLength(double v); + void setVisibleSegmentLength(const double& v); /// The length of the invisible segment in the pattern definition. double InvisibleSegmentLength() const; - void setInvisibleSegmentLength(double v); - virtual const IfcParse::entity& declaration() const; + void setInvisibleSegmentLength(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCurveStyleFontPattern (IfcEntityInstanceData&& e); - IfcCurveStyleFontPattern (double v1_VisibleSegmentLength, double v2_InvisibleSegmentLength); - typedef aggregate_of< IfcCurveStyleFontPattern > list; + // IfcCurveStyleFontPattern (double v1_VisibleSegmentLength, double v2_InvisibleSegmentLength); }; /// IfcDerivedProfileDef defines the profile by transformation from the parent profile. The transformation is given by a two dimensional transformation operator. Transformation includes translation, rotation, mirror and scaling. The latter can be uniform or non uniform. The derived profiles may be used to define swept surfaces, swept area solids or sectioned spines. /// @@ -15110,101 +19182,103 @@ public: /// show the position coordinate system of the derived profile /// /// Figure 316 — Derived profile -class IFC_PARSE_API IfcDerivedProfileDef : public IfcProfileDef { +class IFC_PARSE_API IfcDerivedProfileDef : public IfcProfileDef { public: + IfcDerivedProfileDef() {} + explicit IfcDerivedProfileDef (const std::weak_ptr& data) : IfcProfileDef(data) {} + /// The parent profile provides the origin of the transformation. - ::Ifc4x3_add2::IfcProfileDef* ParentProfile() const; - void setParentProfile(::Ifc4x3_add2::IfcProfileDef* v); + ::Ifc4x3_add2::IfcProfileDef ParentProfile() const; + void setParentProfile(const ::Ifc4x3_add2::IfcProfileDef& v); /// Transformation operator applied to the parent profile. - ::Ifc4x3_add2::IfcCartesianTransformationOperator2D* Operator() const; - void setOperator(::Ifc4x3_add2::IfcCartesianTransformationOperator2D* v); + ::Ifc4x3_add2::IfcCartesianTransformationOperator2D Operator() const; + void setOperator(const ::Ifc4x3_add2::IfcCartesianTransformationOperator2D& v); /// The name by which the transformation may be referred to. The actual meaning of the name has to be defined in the context of applications. - boost::optional< std::string > Label() const; - void setLabel(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Label() const; + void setLabel(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDerivedProfileDef (IfcEntityInstanceData&& e); - IfcDerivedProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcProfileDef* v3_ParentProfile, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D* v4_Operator, boost::optional< std::string > v5_Label); - typedef aggregate_of< IfcDerivedProfileDef > list; + // IfcDerivedProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcProfileDef v3_ParentProfile, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D v4_Operator, std::optional< std::string > v5_Label); }; /// IfcDocumentInformation captures "metadata" of an external document. The actual content of the document is not defined in IFC; instead, it can be found following the reference given to IfcDocumentReference. /// /// HISTORY: New entity in IFC 2x. -class IFC_PARSE_API IfcDocumentInformation : public IfcExternalInformation, public IfcDocumentSelect { +class IFC_PARSE_API IfcDocumentInformation : public IfcExternalInformation { public: + IfcDocumentInformation() {} + explicit IfcDocumentInformation (const std::weak_ptr& data) : IfcExternalInformation(data) {} + std::string Identification() const; - void setIdentification(std::string v); + void setIdentification(const std::string& v); /// File name or document name assigned by owner. std::string Name() const; - void setName(std::string v); + void setName(const std::string& v); /// Description of document and its content. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// Resource identifier or locator, provided as URI, URN or URL, of the document information for online references. /// /// IFC2x4 CHANGE  New attribute added at end of attribute list. - boost::optional< std::string > Location() const; - void setLocation(boost::optional< std::string > v); + std::optional< std::string > Location() const; + void setLocation(const std::optional< std::string >& v); /// Purpose for this document. - boost::optional< std::string > Purpose() const; - void setPurpose(boost::optional< std::string > v); + std::optional< std::string > Purpose() const; + void setPurpose(const std::optional< std::string >& v); /// Intended use for this document. - boost::optional< std::string > IntendedUse() const; - void setIntendedUse(boost::optional< std::string > v); + std::optional< std::string > IntendedUse() const; + void setIntendedUse(const std::optional< std::string >& v); /// Scope for this document. - boost::optional< std::string > Scope() const; - void setScope(boost::optional< std::string > v); + std::optional< std::string > Scope() const; + void setScope(const std::optional< std::string >& v); /// Document revision designation. - boost::optional< std::string > Revision() const; - void setRevision(boost::optional< std::string > v); + std::optional< std::string > Revision() const; + void setRevision(const std::optional< std::string >& v); /// Information about the person and/or organization acknowledged as the 'owner' of this document. In some contexts, the document owner determines who has access to or editing right to the document. - ::Ifc4x3_add2::IfcActorSelect* DocumentOwner() const; - void setDocumentOwner(::Ifc4x3_add2::IfcActorSelect* v); + ::Ifc4x3_add2::IfcActorSelect DocumentOwner() const; + void setDocumentOwner(const ::Ifc4x3_add2::IfcActorSelect& v); /// The persons and/or organizations who have created this document or contributed to it. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorSelect >::ptr > Editors() const; - void setEditors(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorSelect >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcActorSelect > > Editors() const; + void setEditors(const std::optional< std::vector< ::Ifc4x3_add2::IfcActorSelect > >& v); /// Date and time stamp when the document was originally created. /// /// IFC2x4 CHANGE The data type has been changed to IfcDateTime, the date time string according to ISO8601. - boost::optional< std::string > CreationTime() const; - void setCreationTime(boost::optional< std::string > v); + std::optional< std::string > CreationTime() const; + void setCreationTime(const std::optional< std::string >& v); /// Date and time stamp when this document version was created. /// /// IFC2x4 CHANGE The data type has been changed to IfcDateTime, the date time string according to ISO8601. - boost::optional< std::string > LastRevisionTime() const; - void setLastRevisionTime(boost::optional< std::string > v); + std::optional< std::string > LastRevisionTime() const; + void setLastRevisionTime(const std::optional< std::string >& v); /// Describes the electronic format of the document being referenced, providing the file extension and the manner in which the content is provided. - boost::optional< std::string > ElectronicFormat() const; - void setElectronicFormat(boost::optional< std::string > v); + std::optional< std::string > ElectronicFormat() const; + void setElectronicFormat(const std::optional< std::string >& v); /// Date when the document becomes valid. /// /// IFC2x4 CHANGE The data type has been changed to IfcDate, the date string according to ISO8601. - boost::optional< std::string > ValidFrom() const; - void setValidFrom(boost::optional< std::string > v); + std::optional< std::string > ValidFrom() const; + void setValidFrom(const std::optional< std::string >& v); /// Date until which the document remains valid. /// /// IFC2x4 CHANGE The data type has been changed to IfcDate, the date string according to ISO8601. - boost::optional< std::string > ValidUntil() const; - void setValidUntil(boost::optional< std::string > v); + std::optional< std::string > ValidUntil() const; + void setValidUntil(const std::optional< std::string >& v); /// The level of confidentiality of the document. - boost::optional< ::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Value > Confidentiality() const; - void setConfidentiality(boost::optional< ::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Value > Confidentiality() const; + void setConfidentiality(const std::optional< ::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Value >& v); /// The current status of the document. Examples of status values that might be used for a document information status include: /// - DRAFT /// - FINAL DRAFT /// - FINAL /// - REVISION - boost::optional< ::Ifc4x3_add2::IfcDocumentStatusEnum::Value > Status() const; - void setStatus(boost::optional< ::Ifc4x3_add2::IfcDocumentStatusEnum::Value > v); - aggregate_of< IfcRelAssociatesDocument >::ptr DocumentInfoForObjects() const; // INVERSE IfcRelAssociatesDocument::RelatingDocument - aggregate_of< IfcDocumentReference >::ptr HasDocumentReferences() const; // INVERSE IfcDocumentReference::ReferencedDocument - aggregate_of< IfcDocumentInformationRelationship >::ptr IsPointedTo() const; // INVERSE IfcDocumentInformationRelationship::RelatedDocuments - aggregate_of< IfcDocumentInformationRelationship >::ptr IsPointer() const; // INVERSE IfcDocumentInformationRelationship::RelatingDocument - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcDocumentStatusEnum::Value > Status() const; + void setStatus(const std::optional< ::Ifc4x3_add2::IfcDocumentStatusEnum::Value >& v); + std::vector< IfcRelAssociatesDocument > DocumentInfoForObjects() const; // INVERSE IfcRelAssociatesDocument::RelatingDocument + std::vector< IfcDocumentReference > HasDocumentReferences() const; // INVERSE IfcDocumentReference::ReferencedDocument + std::vector< IfcDocumentInformationRelationship > IsPointedTo() const; // INVERSE IfcDocumentInformationRelationship::RelatedDocuments + std::vector< IfcDocumentInformationRelationship > IsPointer() const; // INVERSE IfcDocumentInformationRelationship::RelatingDocument + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDocumentInformation (IfcEntityInstanceData&& e); - IfcDocumentInformation (std::string v1_Identification, std::string v2_Name, boost::optional< std::string > v3_Description, boost::optional< std::string > v4_Location, boost::optional< std::string > v5_Purpose, boost::optional< std::string > v6_IntendedUse, boost::optional< std::string > v7_Scope, boost::optional< std::string > v8_Revision, ::Ifc4x3_add2::IfcActorSelect* v9_DocumentOwner, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcActorSelect >::ptr > v10_Editors, boost::optional< std::string > v11_CreationTime, boost::optional< std::string > v12_LastRevisionTime, boost::optional< std::string > v13_ElectronicFormat, boost::optional< std::string > v14_ValidFrom, boost::optional< std::string > v15_ValidUntil, boost::optional< ::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Value > v16_Confidentiality, boost::optional< ::Ifc4x3_add2::IfcDocumentStatusEnum::Value > v17_Status); - typedef aggregate_of< IfcDocumentInformation > list; + // IfcDocumentInformation (std::string v1_Identification, std::string v2_Name, std::optional< std::string > v3_Description, std::optional< std::string > v4_Location, std::optional< std::string > v5_Purpose, std::optional< std::string > v6_IntendedUse, std::optional< std::string > v7_Scope, std::optional< std::string > v8_Revision, ::Ifc4x3_add2::IfcActorSelect v9_DocumentOwner, std::optional< std::vector< ::Ifc4x3_add2::IfcActorSelect > > v10_Editors, std::optional< std::string > v11_CreationTime, std::optional< std::string > v12_LastRevisionTime, std::optional< std::string > v13_ElectronicFormat, std::optional< std::string > v14_ValidFrom, std::optional< std::string > v15_ValidUntil, std::optional< ::Ifc4x3_add2::IfcDocumentConfidentialityEnum::Value > v16_Confidentiality, std::optional< ::Ifc4x3_add2::IfcDocumentStatusEnum::Value > v17_Status); }; /// An IfcDocumentInformationRelationship is a relationship class that enables a document to have the ability to reference other documents. /// @@ -15214,22 +19288,23 @@ public: /// /// Use definitions /// This class can be used to describe relationships in which one document may reference one or more other sub documents or where a document is used as a replacement for another document (but where both the original and the replacing document need to be retained). -class IFC_PARSE_API IfcDocumentInformationRelationship : public IfcResourceLevelRelationship { +class IFC_PARSE_API IfcDocumentInformationRelationship : public IfcResourceLevelRelationship { public: + IfcDocumentInformationRelationship() {} + explicit IfcDocumentInformationRelationship (const std::weak_ptr& data) : IfcResourceLevelRelationship(data) {} + /// The document that acts as the parent, referencing or original document in a relationship. - ::Ifc4x3_add2::IfcDocumentInformation* RelatingDocument() const; - void setRelatingDocument(::Ifc4x3_add2::IfcDocumentInformation* v); + ::Ifc4x3_add2::IfcDocumentInformation RelatingDocument() const; + void setRelatingDocument(const ::Ifc4x3_add2::IfcDocumentInformation& v); /// The document that acts as the child, referenced or replacing document in a relationship. - aggregate_of< ::Ifc4x3_add2::IfcDocumentInformation >::ptr RelatedDocuments() const; - void setRelatedDocuments(aggregate_of< ::Ifc4x3_add2::IfcDocumentInformation >::ptr v); + std::vector< ::Ifc4x3_add2::IfcDocumentInformation > RelatedDocuments() const; + void setRelatedDocuments(const std::vector< ::Ifc4x3_add2::IfcDocumentInformation >& v); /// Describes the type of relationship between documents. This could be sub-document, replacement etc. The interpretation has to be established in an application context. - boost::optional< std::string > RelationshipType() const; - void setRelationshipType(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > RelationshipType() const; + void setRelationshipType(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDocumentInformationRelationship (IfcEntityInstanceData&& e); - IfcDocumentInformationRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcDocumentInformation* v3_RelatingDocument, aggregate_of< ::Ifc4x3_add2::IfcDocumentInformation >::ptr v4_RelatedDocuments, boost::optional< std::string > v5_RelationshipType); - typedef aggregate_of< IfcDocumentInformationRelationship > list; + // IfcDocumentInformationRelationship (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcDocumentInformation v3_RelatingDocument, std::vector< ::Ifc4x3_add2::IfcDocumentInformation > v4_RelatedDocuments, std::optional< std::string > v5_RelationshipType); }; /// An IfcDocumentReference is a reference /// to the location of a document. The reference is given by a system @@ -15242,22 +19317,23 @@ public: /// /// HISTORY: New Entity in IFC Release 2.0. /// Modified in IFC 2x. -class IFC_PARSE_API IfcDocumentReference : public IfcExternalReference, public IfcDocumentSelect { +class IFC_PARSE_API IfcDocumentReference : public IfcExternalReference { public: + IfcDocumentReference() {} + explicit IfcDocumentReference (const std::weak_ptr& data) : IfcExternalReference(data) {} + /// Description of the document reference for informational purposes. /// /// IFC2x4 CHANGE  New attribute added at the end of the attribute list. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// The document that is referenced. - ::Ifc4x3_add2::IfcDocumentInformation* ReferencedDocument() const; - void setReferencedDocument(::Ifc4x3_add2::IfcDocumentInformation* v); - aggregate_of< IfcRelAssociatesDocument >::ptr DocumentRefForObjects() const; // INVERSE IfcRelAssociatesDocument::RelatingDocument - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcDocumentInformation ReferencedDocument() const; + void setReferencedDocument(const ::Ifc4x3_add2::IfcDocumentInformation& v); + std::vector< IfcRelAssociatesDocument > DocumentRefForObjects() const; // INVERSE IfcRelAssociatesDocument::RelatingDocument + // 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_Identification, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcDocumentInformation* v5_ReferencedDocument); - typedef aggregate_of< IfcDocumentReference > list; + // IfcDocumentReference (std::optional< std::string > v1_Location, std::optional< std::string > v2_Identification, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcDocumentInformation v5_ReferencedDocument); }; /// Definition from ISO/CD 10303-42:1992: An edge is the /// topological construct corresponding to the connection of two @@ -15308,19 +19384,20 @@ public: /// /// The edge has dimensionality 1. /// The extend of an edge shall be finite and nonzero. -class IFC_PARSE_API IfcEdge : public IfcTopologicalRepresentationItem { +class IFC_PARSE_API IfcEdge : public IfcTopologicalRepresentationItem { public: + IfcEdge() {} + explicit IfcEdge (const std::weak_ptr& data) : IfcTopologicalRepresentationItem(data) {} + /// Start point (vertex) of the edge. - ::Ifc4x3_add2::IfcVertex* EdgeStart() const; - void setEdgeStart(::Ifc4x3_add2::IfcVertex* v); + ::Ifc4x3_add2::IfcVertex EdgeStart() const; + void setEdgeStart(const ::Ifc4x3_add2::IfcVertex& v); /// End point (vertex) of the edge. The same vertex can be used for both EdgeStart and EdgeEnd. - ::Ifc4x3_add2::IfcVertex* EdgeEnd() const; - void setEdgeEnd(::Ifc4x3_add2::IfcVertex* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcVertex EdgeEnd() const; + void setEdgeEnd(const ::Ifc4x3_add2::IfcVertex& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEdge (IfcEntityInstanceData&& e); - IfcEdge (::Ifc4x3_add2::IfcVertex* v1_EdgeStart, ::Ifc4x3_add2::IfcVertex* v2_EdgeEnd); - typedef aggregate_of< IfcEdge > list; + // IfcEdge (::Ifc4x3_add2::IfcVertex v1_EdgeStart, ::Ifc4x3_add2::IfcVertex v2_EdgeEnd); }; /// Definition from ISO/CD 10303-42:1992: An edge curve is /// a special subtype of edge which has its geometry fully defined. @@ -15355,19 +19432,20 @@ public: /// The edge start is not a part of the edge domain. /// The edge end is not a part of the edge domain. /// Vertex geometry shall be consistent with edge geometry. -class IFC_PARSE_API IfcEdgeCurve : public IfcEdge, public IfcCurveOrEdgeCurve { +class IFC_PARSE_API IfcEdgeCurve : public IfcEdge { public: + IfcEdgeCurve() {} + explicit IfcEdgeCurve (const std::weak_ptr& data) : IfcEdge(data) {} + /// The curve which defines the shape and spatial location of the edge. This curve may be unbounded and is implicitly trimmed by the vertices of the edge; this defines the edge domain. Multiple edges can reference the same curve. - ::Ifc4x3_add2::IfcCurve* EdgeGeometry() const; - void setEdgeGeometry(::Ifc4x3_add2::IfcCurve* v); + ::Ifc4x3_add2::IfcCurve EdgeGeometry() const; + void setEdgeGeometry(const ::Ifc4x3_add2::IfcCurve& v); /// This logical flag indicates whether (TRUE), or not (FALSE) the senses of the edge and the curve defining the edge geometry are the same. The sense of an edge is from the edge start vertex to the edge end vertex; the sense of a curve is in the direction of increasing parameter. bool SameSense() const; - void setSameSense(bool v); - virtual const IfcParse::entity& declaration() const; + void setSameSense(const bool& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEdgeCurve (IfcEntityInstanceData&& e); - IfcEdgeCurve (::Ifc4x3_add2::IfcVertex* v1_EdgeStart, ::Ifc4x3_add2::IfcVertex* v2_EdgeEnd, ::Ifc4x3_add2::IfcCurve* v3_EdgeGeometry, bool v4_SameSense); - typedef aggregate_of< IfcEdgeCurve > list; + // IfcEdgeCurve (::Ifc4x3_add2::IfcVertex v1_EdgeStart, ::Ifc4x3_add2::IfcVertex v2_EdgeEnd, ::Ifc4x3_add2::IfcCurve v3_EdgeGeometry, bool v4_SameSense); }; /// IfcEventTime captures the time-related information about an event /// including the different types of event dates (i.e. actual, @@ -15392,42 +19470,44 @@ public: /// resources (derived from the process graph). The data origin flag /// is provided as a single attribute applying to all date time related attributes /// of IfcEventTime. -class IFC_PARSE_API IfcEventTime : public IfcSchedulingTime { +class IFC_PARSE_API IfcEventTime : public IfcSchedulingTime { public: + IfcEventTime() {} + explicit IfcEventTime (const std::weak_ptr& data) : IfcSchedulingTime(data) {} + /// The date on which an event actually occurs. It is a measured value. - boost::optional< std::string > ActualDate() const; - void setActualDate(boost::optional< std::string > v); + std::optional< std::string > ActualDate() const; + void setActualDate(const std::optional< std::string >& v); /// The earliest date on which an event can occur. It is a calculated value. - boost::optional< std::string > EarlyDate() const; - void setEarlyDate(boost::optional< std::string > v); + std::optional< std::string > EarlyDate() const; + void setEarlyDate(const std::optional< std::string >& v); /// The latest date on which an event can occur. It is a calculated value. - boost::optional< std::string > LateDate() const; - void setLateDate(boost::optional< std::string > v); + std::optional< std::string > LateDate() const; + void setLateDate(const std::optional< std::string >& v); /// The date on which an event is scheduled to occur. /// The value might be measured or somehow calculated, which is defined by /// ScheduleDataOrigin. - boost::optional< std::string > ScheduleDate() const; - void setScheduleDate(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > ScheduleDate() const; + void setScheduleDate(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEventTime (IfcEntityInstanceData&& e); - IfcEventTime (boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< std::string > v4_ActualDate, boost::optional< std::string > v5_EarlyDate, boost::optional< std::string > v6_LateDate, boost::optional< std::string > v7_ScheduleDate); - typedef aggregate_of< IfcEventTime > list; + // IfcEventTime (std::optional< std::string > v1_Name, std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, std::optional< std::string > v3_UserDefinedDataOrigin, std::optional< std::string > v4_ActualDate, std::optional< std::string > v5_EarlyDate, std::optional< std::string > v6_LateDate, std::optional< std::string > v7_ScheduleDate); }; -class IFC_PARSE_API IfcExtendedProperties : public IfcPropertyAbstraction { +class IFC_PARSE_API IfcExtendedProperties : public IfcPropertyAbstraction { public: - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); - aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr Properties() const; - void setProperties(aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v); - virtual const IfcParse::entity& declaration() const; + IfcExtendedProperties() {} + explicit IfcExtendedProperties (const std::weak_ptr& data) : IfcPropertyAbstraction(data) {} + + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); + std::vector< ::Ifc4x3_add2::IfcProperty > Properties() const; + void setProperties(const std::vector< ::Ifc4x3_add2::IfcProperty >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcExtendedProperties (IfcEntityInstanceData&& e); - IfcExtendedProperties (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v3_Properties); - typedef aggregate_of< IfcExtendedProperties > list; + // IfcExtendedProperties (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcProperty > v3_Properties); }; /// IfcExternalReferenceRelationship is a relationship entity that enables objects from the /// IfcResourceObjectSelect to have the ability to be tagged by external references. @@ -15436,21 +19516,22 @@ public: /// do not inherit from IfcRoot. It has a similar functionality as the subtypes of IfcRelAssociates. /// /// HISTORY New Entity in IFC 2x4 -class IFC_PARSE_API IfcExternalReferenceRelationship : public IfcResourceLevelRelationship { +class IFC_PARSE_API IfcExternalReferenceRelationship : public IfcResourceLevelRelationship { public: + IfcExternalReferenceRelationship() {} + explicit IfcExternalReferenceRelationship (const std::weak_ptr& data) : IfcResourceLevelRelationship(data) {} + /// An external reference that can be used to tag an object within the range of IfcResourceObjectSelect. /// /// NOTE  External references can be a library reference (for example a dictionary or a catalogue reference), a classification reference, or a documentation reference. - ::Ifc4x3_add2::IfcExternalReference* RelatingReference() const; - void setRelatingReference(::Ifc4x3_add2::IfcExternalReference* v); + ::Ifc4x3_add2::IfcExternalReference RelatingReference() const; + void setRelatingReference(const ::Ifc4x3_add2::IfcExternalReference& v); /// Objects within the list of IfcResourceObjectSelect that can be tagged by an external reference to a dictionary, library, catalogue, classification or documentation. - aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr RelatedResourceObjects() const; - void setRelatedResourceObjects(aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect > RelatedResourceObjects() const; + void setRelatedResourceObjects(const std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcExternalReferenceRelationship (IfcEntityInstanceData&& e); - IfcExternalReferenceRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcExternalReference* v3_RelatingReference, aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr v4_RelatedResourceObjects); - typedef aggregate_of< IfcExternalReferenceRelationship > list; + // IfcExternalReferenceRelationship (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcExternalReference v3_RelatingReference, std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect > v4_RelatedResourceObjects); }; /// Definition from ISO/CD 10303-42:1992: A face is a topological /// entity of dimensionality 2 corresponding to the intuitive notion of a piece of @@ -15496,49 +19577,52 @@ public: /// intersect. /// The face shall satisfy the Euler Equation: (number of vertices) - /// (number of edges) - (number of loops) + (sum of genus for loops) = 0. -class IFC_PARSE_API IfcFace : public IfcTopologicalRepresentationItem { +class IFC_PARSE_API IfcFace : public IfcTopologicalRepresentationItem { public: + IfcFace() {} + explicit IfcFace (const std::weak_ptr& data) : IfcTopologicalRepresentationItem(data) {} + /// Boundaries of the face. - aggregate_of< ::Ifc4x3_add2::IfcFaceBound >::ptr Bounds() const; - void setBounds(aggregate_of< ::Ifc4x3_add2::IfcFaceBound >::ptr v); - aggregate_of< IfcTextureMap >::ptr HasTextureMaps() const; // INVERSE IfcTextureMap::MappedTo - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcFaceBound > Bounds() const; + void setBounds(const std::vector< ::Ifc4x3_add2::IfcFaceBound >& v); + std::vector< IfcTextureMap > HasTextureMaps() const; // INVERSE IfcTextureMap::MappedTo + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFace (IfcEntityInstanceData&& e); - IfcFace (aggregate_of< ::Ifc4x3_add2::IfcFaceBound >::ptr v1_Bounds); - typedef aggregate_of< IfcFace > list; + // IfcFace (std::vector< ::Ifc4x3_add2::IfcFaceBound > v1_Bounds); }; /// Definition from ISO/CD 10303-42:1992: A face bound is a loop which is intended to be used for bounding a face. /// /// NOTE  Corresponding ISO 10303 entity: face_bound. Please refer to ISO/IS 10303-42:1994, p. 139 for the final definition of the formal standard. /// /// HISTORY  New class in IFC Release 1.0 -class IFC_PARSE_API IfcFaceBound : public IfcTopologicalRepresentationItem { +class IFC_PARSE_API IfcFaceBound : public IfcTopologicalRepresentationItem { public: + IfcFaceBound() {} + explicit IfcFaceBound (const std::weak_ptr& data) : IfcTopologicalRepresentationItem(data) {} + /// The loop which will be used as a face boundary. - ::Ifc4x3_add2::IfcLoop* Bound() const; - void setBound(::Ifc4x3_add2::IfcLoop* v); + ::Ifc4x3_add2::IfcLoop Bound() const; + void setBound(const ::Ifc4x3_add2::IfcLoop& v); /// This indicated whether (TRUE) or not (FALSE) the loop has the same sense when used to bound the face as when first defined. If sense is FALSE the senses of all its component oriented edges are implicitly reversed when used in the face. bool Orientation() const; - void setOrientation(bool v); - virtual const IfcParse::entity& declaration() const; + void setOrientation(const bool& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFaceBound (IfcEntityInstanceData&& e); - IfcFaceBound (::Ifc4x3_add2::IfcLoop* v1_Bound, bool v2_Orientation); - typedef aggregate_of< IfcFaceBound > list; + // IfcFaceBound (::Ifc4x3_add2::IfcLoop v1_Bound, bool v2_Orientation); }; /// Definition from ISO/CD 10303-42:1992: A face outer bound is a special subtype of face bound which carries the additional semantics of defining an outer boundary on the face. No more than one boundary of a face shall be of this type. /// /// NOTE Corresponding ISO 10303 entity: face_outer_bound. Please refer to ISO/IS 10303-42:1994, p. 139 for the final definition of the formal standard. /// /// HISTORY New class in IFC Release 1.0 -class IFC_PARSE_API IfcFaceOuterBound : public IfcFaceBound { +class IFC_PARSE_API IfcFaceOuterBound : public IfcFaceBound { public: - virtual const IfcParse::entity& declaration() const; + IfcFaceOuterBound() {} + explicit IfcFaceOuterBound (const std::weak_ptr& data) : IfcFaceBound(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFaceOuterBound (IfcEntityInstanceData&& e); - IfcFaceOuterBound (::Ifc4x3_add2::IfcLoop* v1_Bound, bool v2_Orientation); - typedef aggregate_of< IfcFaceOuterBound > list; + // IfcFaceOuterBound (::Ifc4x3_add2::IfcLoop v1_Bound, bool v2_Orientation); }; /// Definition from ISO/CD 10303-42:1992: A face surface /// (IfcFaceSurface) is a subtype of face in which the geometry is defined by an @@ -15576,19 +19660,20 @@ public: /// that any edge - curves or vertex points used in defining the loops bounding the /// face surface shall lie on the face geometry. /// The loops of the face shall not intersect. -class IFC_PARSE_API IfcFaceSurface : public IfcFace, public IfcSurfaceOrFaceSurface { +class IFC_PARSE_API IfcFaceSurface : public IfcFace { public: + IfcFaceSurface() {} + explicit IfcFaceSurface (const std::weak_ptr& data) : IfcFace(data) {} + /// The surface which defines the internal shape of the face. This surface may be unbounded. The domain of the face is defined by this surface and the bounding loops in the inherited attribute SELF\FaceBounds. - ::Ifc4x3_add2::IfcSurface* FaceSurface() const; - void setFaceSurface(::Ifc4x3_add2::IfcSurface* v); + ::Ifc4x3_add2::IfcSurface FaceSurface() const; + void setFaceSurface(const ::Ifc4x3_add2::IfcSurface& v); /// This flag indicates whether the sense of the surface normal agrees with (TRUE), or opposes (FALSE), the sense of the topological normal to the face. bool SameSense() const; - void setSameSense(bool v); - virtual const IfcParse::entity& declaration() const; + void setSameSense(const bool& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFaceSurface (IfcEntityInstanceData&& e); - IfcFaceSurface (aggregate_of< ::Ifc4x3_add2::IfcFaceBound >::ptr v1_Bounds, ::Ifc4x3_add2::IfcSurface* v2_FaceSurface, bool v3_SameSense); - typedef aggregate_of< IfcFaceSurface > list; + // IfcFaceSurface (std::vector< ::Ifc4x3_add2::IfcFaceBound > v1_Bounds, ::Ifc4x3_add2::IfcSurface v2_FaceSurface, bool v3_SameSense); }; /// Definition from IAI: Defines forces at which a support or connection fails. /// @@ -15597,31 +19682,32 @@ public: /// Point supports and connections. /// /// HISTORY: New entity in IFC 2x2. -class IFC_PARSE_API IfcFailureConnectionCondition : public IfcStructuralConnectionCondition { +class IFC_PARSE_API IfcFailureConnectionCondition : public IfcStructuralConnectionCondition { public: + IfcFailureConnectionCondition() {} + explicit IfcFailureConnectionCondition (const std::weak_ptr& data) : IfcStructuralConnectionCondition(data) {} + /// Tension force in x-direction leading to failure of the connection. - boost::optional< double > TensionFailureX() const; - void setTensionFailureX(boost::optional< double > v); + std::optional< double > TensionFailureX() const; + void setTensionFailureX(const std::optional< double >& v); /// Tension force in y-direction leading to failure of the connection. - boost::optional< double > TensionFailureY() const; - void setTensionFailureY(boost::optional< double > v); + std::optional< double > TensionFailureY() const; + void setTensionFailureY(const std::optional< double >& v); /// Tension force in z-direction leading to failure of the connection. - boost::optional< double > TensionFailureZ() const; - void setTensionFailureZ(boost::optional< double > v); + std::optional< double > TensionFailureZ() const; + void setTensionFailureZ(const std::optional< double >& v); /// Compression force in x-direction leading to failure of the connection. - boost::optional< double > CompressionFailureX() const; - void setCompressionFailureX(boost::optional< double > v); + std::optional< double > CompressionFailureX() const; + void setCompressionFailureX(const std::optional< double >& v); /// Compression force in y-direction leading to failure of the connection. - boost::optional< double > CompressionFailureY() const; - void setCompressionFailureY(boost::optional< double > v); + std::optional< double > CompressionFailureY() const; + void setCompressionFailureY(const std::optional< double >& v); /// Compression force in z-direction leading to failure of the connection. - boost::optional< double > CompressionFailureZ() const; - void setCompressionFailureZ(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > CompressionFailureZ() const; + void setCompressionFailureZ(const std::optional< 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 aggregate_of< IfcFailureConnectionCondition > list; + // IfcFailureConnectionCondition (std::optional< std::string > v1_Name, std::optional< double > v2_TensionFailureX, std::optional< double > v3_TensionFailureY, std::optional< double > v4_TensionFailureZ, std::optional< double > v5_CompressionFailureX, std::optional< double > v6_CompressionFailureY, std::optional< double > v7_CompressionFailureZ); }; /// Definition from ISO/CD 10303-46:1992: The style for filling visible curve segments, annotation fill areas or surfaces with tiles or hatches. /// @@ -15657,18 +19743,19 @@ public: /// NOTE  Corresponding ISO 10303 name: fill_area_style. Please refer to ISO/IS 10303-46:1994 for the final definition of the formal standard. /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcFillAreaStyle : public IfcPresentationStyle { +class IFC_PARSE_API IfcFillAreaStyle : public IfcPresentationStyle { public: + IfcFillAreaStyle() {} + explicit IfcFillAreaStyle (const std::weak_ptr& data) : IfcPresentationStyle(data) {} + /// The set of fill area styles to use in presenting visible curve segments, annotation fill areas or surfaces. - aggregate_of< ::Ifc4x3_add2::IfcFillStyleSelect >::ptr FillStyles() const; - void setFillStyles(aggregate_of< ::Ifc4x3_add2::IfcFillStyleSelect >::ptr v); - boost::optional< bool > ModelOrDraughting() const; - void setModelOrDraughting(boost::optional< bool > v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcFillStyleSelect > FillStyles() const; + void setFillStyles(const std::vector< ::Ifc4x3_add2::IfcFillStyleSelect >& v); + std::optional< bool > ModelOrDraughting() const; + void setModelOrDraughting(const std::optional< bool >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFillAreaStyle (IfcEntityInstanceData&& e); - IfcFillAreaStyle (boost::optional< std::string > v1_Name, aggregate_of< ::Ifc4x3_add2::IfcFillStyleSelect >::ptr v2_FillStyles, boost::optional< bool > v3_ModelOrDraughting); - typedef aggregate_of< IfcFillAreaStyle > list; + // IfcFillAreaStyle (std::optional< std::string > v1_Name, std::vector< ::Ifc4x3_add2::IfcFillStyleSelect > v2_FillStyles, std::optional< bool > v3_ModelOrDraughting); }; /// Definition from ISO/CD 10303-42:1992: A geometric /// representation context is a representation context in which the @@ -15717,29 +19804,30 @@ public: /// HISTORY New Entity in IFC Release 2.0 /// /// IFC2x3 CHANGE Applicable values for ContextType are only 'Model', 'Plan', and'NotDefined'. All other sub contexts are now handled by the new subtype in IFC2x Edition 2 IfcGeometricRepresentationSubContext. Upward compatibility for file based exchange is guaranteed. -class IFC_PARSE_API IfcGeometricRepresentationContext : public IfcRepresentationContext, public IfcCoordinateReferenceSystemSelect { +class IFC_PARSE_API IfcGeometricRepresentationContext : public IfcRepresentationContext { public: + IfcGeometricRepresentationContext() {} + explicit IfcGeometricRepresentationContext (const std::weak_ptr& data) : IfcRepresentationContext(data) {} + /// The integer dimension count of the coordinate space modeled in a geometric representation context. int CoordinateSpaceDimension() const; - void setCoordinateSpaceDimension(int v); + void setCoordinateSpaceDimension(const int& v); /// Value of the model precision for geometric models. It is a double value (REAL), typically in 1E-5 to 1E-8 range, that indicates the tolerance under which two given points are still assumed to be identical. The value can be used e.g. to sets the maximum distance from an edge curve to the underlying face surface in brep models. - boost::optional< double > Precision() const; - void setPrecision(boost::optional< double > v); + std::optional< double > Precision() const; + void setPrecision(const std::optional< double >& v); /// Establishment of the engineering coordinate system (often referred to as the world coordinate system in CAD) for all representation contexts used by the project. /// /// Note  it can be used to provide better numeric stability if the placement of the building(s) is far away from the origin. In most cases however it would be set to origin: (0.,0.,0.) and directions x(1.,0.,0.), y(0.,1.,0.), z(0.,0.,1.). - ::Ifc4x3_add2::IfcAxis2Placement* WorldCoordinateSystem() const; - void setWorldCoordinateSystem(::Ifc4x3_add2::IfcAxis2Placement* v); + ::Ifc4x3_add2::IfcAxis2Placement WorldCoordinateSystem() const; + void setWorldCoordinateSystem(const ::Ifc4x3_add2::IfcAxis2Placement& v); /// Direction of the true north, or geographic northing direction, relative to the underlying project coordinate system. It is given by a 2 dimensional direction within the xy-plane of the project coordinate system. If not resent, it defaults to 0. 1. - i.e. the positive Y axis of the project coordinate system equals the geographic northing direction. - ::Ifc4x3_add2::IfcDirection* TrueNorth() const; - void setTrueNorth(::Ifc4x3_add2::IfcDirection* v); - aggregate_of< IfcGeometricRepresentationSubContext >::ptr HasSubContexts() const; // INVERSE IfcGeometricRepresentationSubContext::ParentContext - aggregate_of< IfcCoordinateOperation >::ptr HasCoordinateOperation() const; // INVERSE IfcCoordinateOperation::SourceCRS - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcDirection TrueNorth() const; + void setTrueNorth(const ::Ifc4x3_add2::IfcDirection& v); + std::vector< IfcGeometricRepresentationSubContext > HasSubContexts() const; // INVERSE IfcGeometricRepresentationSubContext::ParentContext + std::vector< IfcCoordinateOperation > HasCoordinateOperation() const; // INVERSE IfcCoordinateOperation::SourceCRS + // 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, ::Ifc4x3_add2::IfcAxis2Placement* v5_WorldCoordinateSystem, ::Ifc4x3_add2::IfcDirection* v6_TrueNorth); - typedef aggregate_of< IfcGeometricRepresentationContext > list; + // IfcGeometricRepresentationContext (std::optional< std::string > v1_ContextIdentifier, std::optional< std::string > v2_ContextType, int v3_CoordinateSpaceDimension, std::optional< double > v4_Precision, ::Ifc4x3_add2::IfcAxis2Placement v5_WorldCoordinateSystem, ::Ifc4x3_add2::IfcDirection v6_TrueNorth); }; /// Definition from ISO/CD 10303-43:1992: An geometric representation item is a representation item that has the additional meaning of having geometric position or orientation or both. This meaning is present by virtue of: /// @@ -15760,13 +19848,14 @@ public: /// NOTE: Corresponding ISO 10303 entity: geometric_representation_item. Please refer to ISO/IS 10303-42:1994, p. 22 for the final definition of the formal standard. The following changes have been made: It does not inherit from ISO/IS 10303-43:1994 entity representation_item. The derived attribute Dim is demoted to the appropriate subtypes. The WR1 has not been incorporated. Not all subtypes that are in ISO/IS 10303-42:1994 have been added to the current IFC Release. /// /// HISTORY: New entity in IFC Release 1.5 -class IFC_PARSE_API IfcGeometricRepresentationItem : public IfcRepresentationItem { +class IFC_PARSE_API IfcGeometricRepresentationItem : public IfcRepresentationItem { public: - virtual const IfcParse::entity& declaration() const; + IfcGeometricRepresentationItem() {} + explicit IfcGeometricRepresentationItem (const std::weak_ptr& data) : IfcRepresentationItem(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcGeometricRepresentationItem (IfcEntityInstanceData&& e); - IfcGeometricRepresentationItem (); - typedef aggregate_of< IfcGeometricRepresentationItem > list; + // IfcGeometricRepresentationItem (); }; /// IfcGeometricRepresentationSubContext defines the context that applies to several shape representations of a product being a sub context, sharing the WorldCoordinateSystem, CoordinateSpaceDimension, Precision and TrueNorth attributes with the parent IfcGeometricRepresentationContext. /// @@ -15781,11 +19870,14 @@ public: /// EXAMPLE  Instances of IfcGeometricRepresentationSubContext can be used to handle the multi-view blocks or macros, which are used in CAD programs to store several scale and/or view dependent geometric representations of the same object. /// /// HISTORY  New entity in Release IFC 2x2. -class IFC_PARSE_API IfcGeometricRepresentationSubContext : public IfcGeometricRepresentationContext { +class IFC_PARSE_API IfcGeometricRepresentationSubContext : public IfcGeometricRepresentationContext { public: + IfcGeometricRepresentationSubContext() {} + explicit IfcGeometricRepresentationSubContext (const std::weak_ptr& data) : IfcGeometricRepresentationContext(data) {} + /// Parent context from which the sub context derives its world coordinate system, precision, space coordinate dimension and true north. - ::Ifc4x3_add2::IfcGeometricRepresentationContext* ParentContext() const; - void setParentContext(::Ifc4x3_add2::IfcGeometricRepresentationContext* v); + ::Ifc4x3_add2::IfcGeometricRepresentationContext ParentContext() const; + void setParentContext(const ::Ifc4x3_add2::IfcGeometricRepresentationContext& v); /// The target plot scale of the representation /// to which this representation context applies. /// Scale indicates the target plot scale for @@ -15797,19 +19889,17 @@ public: /// /// Note: Scale 1:100 (given as 0.01 within TargetScale) /// is bigger then 1:200 (given as 0.005 within TargetScale). - boost::optional< double > TargetScale() const; - void setTargetScale(boost::optional< double > v); + std::optional< double > TargetScale() const; + void setTargetScale(const std::optional< double >& v); /// Target view of the representation to which this representation context applies. ::Ifc4x3_add2::IfcGeometricProjectionEnum::Value TargetView() const; - void setTargetView(::Ifc4x3_add2::IfcGeometricProjectionEnum::Value v); + void setTargetView(const ::Ifc4x3_add2::IfcGeometricProjectionEnum::Value& v); /// User defined target view, this attribute value shall be given, if the TargetView attribute is set to USERDEFINED. - boost::optional< std::string > UserDefinedTargetView() const; - void setUserDefinedTargetView(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > UserDefinedTargetView() const; + void setUserDefinedTargetView(const std::optional< 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, ::Ifc4x3_add2::IfcGeometricRepresentationContext* v7_ParentContext, boost::optional< double > v8_TargetScale, ::Ifc4x3_add2::IfcGeometricProjectionEnum::Value v9_TargetView, boost::optional< std::string > v10_UserDefinedTargetView); - typedef aggregate_of< IfcGeometricRepresentationSubContext > list; + // IfcGeometricRepresentationSubContext (std::optional< std::string > v1_ContextIdentifier, std::optional< std::string > v2_ContextType, ::Ifc4x3_add2::IfcGeometricRepresentationContext v7_ParentContext, std::optional< double > v8_TargetScale, ::Ifc4x3_add2::IfcGeometricProjectionEnum::Value v9_TargetView, std::optional< std::string > v10_UserDefinedTargetView); }; /// Definition from ISO/CD 10303-42:1992: This entity is intended for the transfer of models when a topological structure is not available. /// @@ -15818,16 +19908,17 @@ public: /// NOTE: Corresponding ISO 10303-42 entity: geometric_set. The derived attribute Dim has been added at this level and was therefore demoted from the geometric_representation_item. Please refer to ISO/IS 10303-42:1994, p. 190 for the final definition of the formal standard. /// /// HISTORY: New entity in IFC Release 2x. -class IFC_PARSE_API IfcGeometricSet : public IfcGeometricRepresentationItem { +class IFC_PARSE_API IfcGeometricSet : public IfcGeometricRepresentationItem { public: + IfcGeometricSet() {} + explicit IfcGeometricSet (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// The geometric elements which make up the geometric set, these may be points, curves or surfaces; but are required to be of the same coordinate space dimensionality. - aggregate_of< ::Ifc4x3_add2::IfcGeometricSetSelect >::ptr Elements() const; - void setElements(aggregate_of< ::Ifc4x3_add2::IfcGeometricSetSelect >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcGeometricSetSelect > Elements() const; + void setElements(const std::vector< ::Ifc4x3_add2::IfcGeometricSetSelect >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcGeometricSet (IfcEntityInstanceData&& e); - IfcGeometricSet (aggregate_of< ::Ifc4x3_add2::IfcGeometricSetSelect >::ptr v1_Elements); - typedef aggregate_of< IfcGeometricSet > list; + // IfcGeometricSet (std::vector< ::Ifc4x3_add2::IfcGeometricSetSelect > v1_Elements); }; /// IfcGridPlacement provides a specialization of IfcObjectPlacement in which /// the placement and axis direction of the object coordinate system is defined by a reference to the design grid as defined in IfcGrid. @@ -15874,21 +19965,22 @@ public: /// its x-axis direction: given by the tangent of the line between the virtual grid intersection of the PlacementLocation and the virtual grid intersection of the PlacementRefDirection. /// /// Figure 245 — Grid placement with intersection -class IFC_PARSE_API IfcGridPlacement : public IfcObjectPlacement { +class IFC_PARSE_API IfcGridPlacement : public IfcObjectPlacement { public: + IfcGridPlacement() {} + explicit IfcGridPlacement (const std::weak_ptr& data) : IfcObjectPlacement(data) {} + /// Placement of the object coordinate system defined by the intersection of two grid axes. - ::Ifc4x3_add2::IfcVirtualGridIntersection* PlacementLocation() const; - void setPlacementLocation(::Ifc4x3_add2::IfcVirtualGridIntersection* v); + ::Ifc4x3_add2::IfcVirtualGridIntersection PlacementLocation() const; + void setPlacementLocation(const ::Ifc4x3_add2::IfcVirtualGridIntersection& v); /// Reference to either an explicit direction, or a second grid axis intersection, which defines the orientation of the grid placement. /// /// IFC2x4 CHANGE The select of an explict direction has been added. - ::Ifc4x3_add2::IfcGridPlacementDirectionSelect* PlacementRefDirection() const; - void setPlacementRefDirection(::Ifc4x3_add2::IfcGridPlacementDirectionSelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcGridPlacementDirectionSelect PlacementRefDirection() const; + void setPlacementRefDirection(const ::Ifc4x3_add2::IfcGridPlacementDirectionSelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcGridPlacement (IfcEntityInstanceData&& e); - IfcGridPlacement (::Ifc4x3_add2::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_add2::IfcVirtualGridIntersection* v2_PlacementLocation, ::Ifc4x3_add2::IfcGridPlacementDirectionSelect* v3_PlacementRefDirection); - typedef aggregate_of< IfcGridPlacement > list; + // IfcGridPlacement (::Ifc4x3_add2::IfcObjectPlacement v1_PlacementRelTo, ::Ifc4x3_add2::IfcVirtualGridIntersection v2_PlacementLocation, ::Ifc4x3_add2::IfcGridPlacementDirectionSelect v3_PlacementRefDirection); }; /// Definition from ISO/CD 10303-42:1992: A half space solid is defined by the half space which is the regular subset of the domain which lies on one side of an unbounded surface. The side of the surface which is in the half space is determined by the surface normal and the agreement flag. If the agreement flag is TRUE, then the subset is the one the normal points away from. If the agreement flag is FALSE, then the subset is the one the normal points into. For a valid half space solid the surface shall divide the domain into exactly two subsets. Also, within the domain the surface shall be manifold and all surface normals shall point into the same subset. /// @@ -15905,19 +19997,20 @@ public: /// Figure 258 illustrates the definition of the IfcHalfSpaceSolid within a given coordinate system. The base surface is given by an unbounded plane, the red boundary is shown for visualization purposes only. /// /// Figure 258 — Half space solid geometry -class IFC_PARSE_API IfcHalfSpaceSolid : public IfcGeometricRepresentationItem, public IfcBooleanOperand { +class IFC_PARSE_API IfcHalfSpaceSolid : public IfcGeometricRepresentationItem { public: + IfcHalfSpaceSolid() {} + explicit IfcHalfSpaceSolid (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// Surface defining side of half space. - ::Ifc4x3_add2::IfcSurface* BaseSurface() const; - void setBaseSurface(::Ifc4x3_add2::IfcSurface* v); + ::Ifc4x3_add2::IfcSurface BaseSurface() const; + void setBaseSurface(const ::Ifc4x3_add2::IfcSurface& v); /// The agreement flag is TRUE if the normal to the BaseSurface points away from the material of the IfcHalfSpaceSolid. Otherwise it is FALSE. bool AgreementFlag() const; - void setAgreementFlag(bool v); - virtual const IfcParse::entity& declaration() const; + void setAgreementFlag(const bool& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcHalfSpaceSolid (IfcEntityInstanceData&& e); - IfcHalfSpaceSolid (::Ifc4x3_add2::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag); - typedef aggregate_of< IfcHalfSpaceSolid > list; + // IfcHalfSpaceSolid (::Ifc4x3_add2::IfcSurface v1_BaseSurface, bool v2_AgreementFlag); }; /// An IfcImageTexture provides a 2-dimensional texture that can be applied to a surface of an geometric item and that provides lighting parameters of a surface onto which it is mapped. The texture is provided as an image file at an external location for which an URL is provided. /// @@ -15954,73 +20047,78 @@ public: /// NOTE  The definitions of texturing within this standard have been developed in dependence on the texture component of X3D. See ISO/IEC 19775-1.2:2008 X3D Architecture and base components Edition 2, Part 1, 18 Texturing component for the definitions in the international standard. /// /// HISTORY  New entity in Release IFC2x2. -class IFC_PARSE_API IfcImageTexture : public IfcSurfaceTexture { +class IFC_PARSE_API IfcImageTexture : public IfcSurfaceTexture { public: + IfcImageTexture() {} + explicit IfcImageTexture (const std::weak_ptr& data) : IfcSurfaceTexture(data) {} + /// Location, provided as an URI, at which the image texture is electronically published. std::string URLReference() const; - void setURLReference(std::string v); - virtual const IfcParse::entity& declaration() const; + void setURLReference(const std::string& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcImageTexture (IfcEntityInstanceData&& e); - IfcImageTexture (bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, std::string v6_URLReference); - typedef aggregate_of< IfcImageTexture > list; + // IfcImageTexture (bool v1_RepeatS, bool v2_RepeatT, std::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D v4_TextureTransform, std::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, std::string v6_URLReference); }; -class IFC_PARSE_API IfcIndexedColourMap : public IfcPresentationItem { +class IFC_PARSE_API IfcIndexedColourMap : public IfcPresentationItem { public: - ::Ifc4x3_add2::IfcTessellatedFaceSet* MappedTo() const; - void setMappedTo(::Ifc4x3_add2::IfcTessellatedFaceSet* v); - boost::optional< double > Opacity() const; - void setOpacity(boost::optional< double > v); - ::Ifc4x3_add2::IfcColourRgbList* Colours() const; - void setColours(::Ifc4x3_add2::IfcColourRgbList* v); + IfcIndexedColourMap() {} + explicit IfcIndexedColourMap (const std::weak_ptr& data) : IfcPresentationItem(data) {} + + ::Ifc4x3_add2::IfcTessellatedFaceSet MappedTo() const; + void setMappedTo(const ::Ifc4x3_add2::IfcTessellatedFaceSet& v); + std::optional< double > Opacity() const; + void setOpacity(const std::optional< double >& v); + ::Ifc4x3_add2::IfcColourRgbList Colours() const; + void setColours(const ::Ifc4x3_add2::IfcColourRgbList& v); std::vector< int > /*[1:?]*/ ColourIndex() const; - void setColourIndex(std::vector< int > /*[1:?]*/ v); - virtual const IfcParse::entity& declaration() const; + void setColourIndex(const std::vector< int > /*[1:?]*/& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcIndexedColourMap (IfcEntityInstanceData&& e); - IfcIndexedColourMap (::Ifc4x3_add2::IfcTessellatedFaceSet* v1_MappedTo, boost::optional< double > v2_Opacity, ::Ifc4x3_add2::IfcColourRgbList* v3_Colours, std::vector< int > /*[1:?]*/ v4_ColourIndex); - typedef aggregate_of< IfcIndexedColourMap > list; + // IfcIndexedColourMap (::Ifc4x3_add2::IfcTessellatedFaceSet v1_MappedTo, std::optional< double > v2_Opacity, ::Ifc4x3_add2::IfcColourRgbList v3_Colours, std::vector< int > /*[1:?]*/ v4_ColourIndex); }; -class IFC_PARSE_API IfcIndexedTextureMap : public IfcTextureCoordinate { +class IFC_PARSE_API IfcIndexedTextureMap : public IfcTextureCoordinate { public: - ::Ifc4x3_add2::IfcTessellatedFaceSet* MappedTo() const; - void setMappedTo(::Ifc4x3_add2::IfcTessellatedFaceSet* v); - ::Ifc4x3_add2::IfcTextureVertexList* TexCoords() const; - void setTexCoords(::Ifc4x3_add2::IfcTextureVertexList* v); - virtual const IfcParse::entity& declaration() const; + IfcIndexedTextureMap() {} + explicit IfcIndexedTextureMap (const std::weak_ptr& data) : IfcTextureCoordinate(data) {} + + ::Ifc4x3_add2::IfcTessellatedFaceSet MappedTo() const; + void setMappedTo(const ::Ifc4x3_add2::IfcTessellatedFaceSet& v); + ::Ifc4x3_add2::IfcTextureVertexList TexCoords() const; + void setTexCoords(const ::Ifc4x3_add2::IfcTextureVertexList& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcIndexedTextureMap (IfcEntityInstanceData&& e); - IfcIndexedTextureMap (aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v1_Maps, ::Ifc4x3_add2::IfcTessellatedFaceSet* v2_MappedTo, ::Ifc4x3_add2::IfcTextureVertexList* v3_TexCoords); - typedef aggregate_of< IfcIndexedTextureMap > list; + // IfcIndexedTextureMap (std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > v1_Maps, ::Ifc4x3_add2::IfcTessellatedFaceSet v2_MappedTo, ::Ifc4x3_add2::IfcTextureVertexList v3_TexCoords); }; -class IFC_PARSE_API IfcIndexedTriangleTextureMap : public IfcIndexedTextureMap { +class IFC_PARSE_API IfcIndexedTriangleTextureMap : public IfcIndexedTextureMap { public: - boost::optional< std::vector< std::vector< int > > > TexCoordIndex() const; - void setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v); - virtual const IfcParse::entity& declaration() const; + IfcIndexedTriangleTextureMap() {} + explicit IfcIndexedTriangleTextureMap (const std::weak_ptr& data) : IfcIndexedTextureMap(data) {} + + std::optional< std::vector< std::vector< int > > > TexCoordIndex() const; + void setTexCoordIndex(const std::optional< std::vector< std::vector< int > > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcIndexedTriangleTextureMap (IfcEntityInstanceData&& e); - IfcIndexedTriangleTextureMap (aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v1_Maps, ::Ifc4x3_add2::IfcTessellatedFaceSet* v2_MappedTo, ::Ifc4x3_add2::IfcTextureVertexList* v3_TexCoords, boost::optional< std::vector< std::vector< int > > > v4_TexCoordIndex); - typedef aggregate_of< IfcIndexedTriangleTextureMap > list; + // IfcIndexedTriangleTextureMap (std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > v1_Maps, ::Ifc4x3_add2::IfcTessellatedFaceSet v2_MappedTo, ::Ifc4x3_add2::IfcTextureVertexList v3_TexCoords, std::optional< std::vector< std::vector< int > > > v4_TexCoordIndex); }; /// In an irregular time series, unpredictable bursts of data arrive at unspecified points in time, or most time stamps cannot be characterized by a repeating pattern. /// /// EXAMPLE: A circulating pump cycles on and off at unpredictable times as dictated by the demands on the piping system; the amount of light in a classroom varies depending on when the lights are manually switched on and off and and how many lamps are controlled by each switch. /// /// HISTORY: New entity in IFC 2x2. -class IFC_PARSE_API IfcIrregularTimeSeries : public IfcTimeSeries { +class IFC_PARSE_API IfcIrregularTimeSeries : public IfcTimeSeries { public: + IfcIrregularTimeSeries() {} + explicit IfcIrregularTimeSeries (const std::weak_ptr& data) : IfcTimeSeries(data) {} + /// The collection of time series values. - aggregate_of< ::Ifc4x3_add2::IfcIrregularTimeSeriesValue >::ptr Values() const; - void setValues(aggregate_of< ::Ifc4x3_add2::IfcIrregularTimeSeriesValue >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcIrregularTimeSeriesValue > Values() const; + void setValues(const std::vector< ::Ifc4x3_add2::IfcIrregularTimeSeriesValue >& 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, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_add2::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcUnit* v8_Unit, aggregate_of< ::Ifc4x3_add2::IfcIrregularTimeSeriesValue >::ptr v9_Values); - typedef aggregate_of< IfcIrregularTimeSeries > list; + // IfcIrregularTimeSeries (std::string v1_Name, std::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_add2::IfcDataOriginEnum::Value v6_DataOrigin, std::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcUnit v8_Unit, std::vector< ::Ifc4x3_add2::IfcIrregularTimeSeriesValue > v9_Values); }; /// IfcLagTime describes the time parameters that may exist within a sequence relationship between two processes. /// @@ -16059,21 +20157,22 @@ public: /// /// The time unit for the task duration may also be set and /// this may be set to any allowed unit of time measure. -class IFC_PARSE_API IfcLagTime : public IfcSchedulingTime { +class IFC_PARSE_API IfcLagTime : public IfcSchedulingTime { public: + IfcLagTime() {} + explicit IfcLagTime (const std::weak_ptr& data) : IfcSchedulingTime(data) {} + /// Value of the time lag selected as being either a ratio or a /// time measure. - ::Ifc4x3_add2::IfcTimeOrRatioSelect* LagValue() const; - void setLagValue(::Ifc4x3_add2::IfcTimeOrRatioSelect* v); + ::Ifc4x3_add2::IfcTimeOrRatioSelect LagValue() const; + void setLagValue(const ::Ifc4x3_add2::IfcTimeOrRatioSelect& v); /// The allowed types of task duration that specify the lag time /// measurement (work time or elapsed time). ::Ifc4x3_add2::IfcTaskDurationEnum::Value DurationType() const; - void setDurationType(::Ifc4x3_add2::IfcTaskDurationEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setDurationType(const ::Ifc4x3_add2::IfcTaskDurationEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLagTime (IfcEntityInstanceData&& e); - IfcLagTime (boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcTimeOrRatioSelect* v4_LagValue, ::Ifc4x3_add2::IfcTaskDurationEnum::Value v5_DurationType); - typedef aggregate_of< IfcLagTime > list; + // IfcLagTime (std::optional< std::string > v1_Name, std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, std::optional< std::string > v3_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcTimeOrRatioSelect v4_LagValue, ::Ifc4x3_add2::IfcTaskDurationEnum::Value v5_DurationType); }; /// Definition from ISO/CD 10303-46:1992: The light source entity is determined by the reflectance specified in the surface style rendering. Lighting is applied on a surface by surface basis: no interactions between surfaces such as shadows or reflections are defined. /// @@ -16082,26 +20181,27 @@ public: /// NOTE: In addition to the attributes as defined in ISO10303-46 the following additional properties from ISO/IEC 14772-1:1997 (VRML) are added: ambientIntensity and Intensity. The attribute Name has been added as well (as it is not inherited via representation_item). /// /// HISTORY: This is a new Entity in IFC 2x, renamed and enhanced in IFC2x2. -class IFC_PARSE_API IfcLightSource : public IfcGeometricRepresentationItem { +class IFC_PARSE_API IfcLightSource : public IfcGeometricRepresentationItem { public: + IfcLightSource() {} + explicit IfcLightSource (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// The name given to the light source in presentation. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// Definition from ISO/CD 10303-46:1992: Based on the current lighting model, the colour of the light to be used for shading. /// Definition from VRML97 - ISO/IEC 14772-1:1997: The color field specifies the spectral color properties of both the direct and ambient light emission as an RGB value. - ::Ifc4x3_add2::IfcColourRgb* LightColour() const; - void setLightColour(::Ifc4x3_add2::IfcColourRgb* v); + ::Ifc4x3_add2::IfcColourRgb LightColour() const; + void setLightColour(const ::Ifc4x3_add2::IfcColourRgb& v); /// Definition from VRML97 - ISO/IEC 14772-1:1997: The ambientIntensity specifies the intensity of the ambient emission from the light. Light intensity may range from 0.0 (no light emission) to 1.0 (full intensity). - boost::optional< double > AmbientIntensity() const; - void setAmbientIntensity(boost::optional< double > v); + std::optional< double > AmbientIntensity() const; + void setAmbientIntensity(const std::optional< double >& v); /// Definition from VRML97 - ISO/IEC 14772-1:1997: The intensity field specifies the brightness of the direct emission from the ligth. Light intensity may range from 0.0 (no light emission) to 1.0 (full intensity). - boost::optional< double > Intensity() const; - void setIntensity(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > Intensity() const; + void setIntensity(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLightSource (IfcEntityInstanceData&& e); - IfcLightSource (boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity); - typedef aggregate_of< IfcLightSource > list; + // IfcLightSource (std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb v2_LightColour, std::optional< double > v3_AmbientIntensity, std::optional< double > v4_Intensity); }; /// Definition from ISO/CD 10303-46:1992: The light source ambient entity is a subtype of light source. It lights a surface independent of the surface's orientation and position. /// @@ -16110,13 +20210,14 @@ public: /// NOTE: In addition to the attributes as defined in ISO 10303-46 the additional property from ISO/IEC 14772-1:1997 (VRML) AmbientIntensity is inherited from the supertype. /// /// HISTORY: This is a new entity in IFC 2x, renamed and enhanced in IFC2x2. -class IFC_PARSE_API IfcLightSourceAmbient : public IfcLightSource { +class IFC_PARSE_API IfcLightSourceAmbient : public IfcLightSource { public: - virtual const IfcParse::entity& declaration() const; + IfcLightSourceAmbient() {} + explicit IfcLightSourceAmbient (const std::weak_ptr& data) : IfcLightSource(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLightSourceAmbient (IfcEntityInstanceData&& e); - IfcLightSourceAmbient (boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity); - typedef aggregate_of< IfcLightSourceAmbient > list; + // IfcLightSourceAmbient (std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb v2_LightColour, std::optional< double > v3_AmbientIntensity, std::optional< double > v4_Intensity); }; /// Definition from ISO/CD 10303-46:1992: The light source directional is a subtype of light source. This entity has a light source direction. With a conceptual origin at infinity, all the rays of the light are parallel to this direction. This kind of light source lights a surface based on the surface's orientation, but not position. /// @@ -16127,17 +20228,18 @@ public: /// NOTE: In addition to the attributes as defined in ISO 10303-46 the additional property from ISO/IEC 14772-1:1997 (VRML) AmbientIntensity and Intensity are inherited from the supertype. /// /// HISTORY: This is a new entity in IFC 2x, renamed and enhanced in IFC2x2. -class IFC_PARSE_API IfcLightSourceDirectional : public IfcLightSource { +class IFC_PARSE_API IfcLightSourceDirectional : public IfcLightSource { public: + IfcLightSourceDirectional() {} + explicit IfcLightSourceDirectional (const std::weak_ptr& data) : IfcLightSource(data) {} + /// Definition from ISO/CD 10303-46:1992: This direction is the direction of the light source. /// Definition from VRML97 - ISO/IEC 14772-1:1997: The direction field specifies the direction vector of the illumination emanating from the light source in the local coordinate system. Light is emitted along parallel rays from an infinite distance away. - ::Ifc4x3_add2::IfcDirection* Orientation() const; - void setOrientation(::Ifc4x3_add2::IfcDirection* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcDirection Orientation() const; + void setOrientation(const ::Ifc4x3_add2::IfcDirection& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLightSourceDirectional (IfcEntityInstanceData&& e); - IfcLightSourceDirectional (boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcDirection* v5_Orientation); - typedef aggregate_of< IfcLightSourceDirectional > list; + // IfcLightSourceDirectional (std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb v2_LightColour, std::optional< double > v3_AmbientIntensity, std::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcDirection v5_Orientation); }; /// IfcLightSourceGoniometric defines a light source for which exact lighting data is available. It specifies the type of a light emitter, defines the position and orientation of a light distribution curve and the data concerning lamp and photometric information. /// @@ -16146,31 +20248,32 @@ public: /// Figure 303 — Light source goniometric /// /// HISTORY: New entity in IFC2x2. -class IFC_PARSE_API IfcLightSourceGoniometric : public IfcLightSource { +class IFC_PARSE_API IfcLightSourceGoniometric : public IfcLightSource { public: + IfcLightSourceGoniometric() {} + explicit IfcLightSourceGoniometric (const std::weak_ptr& data) : IfcLightSource(data) {} + /// The position of the light source. It is used to orientate the light distribution curves. - ::Ifc4x3_add2::IfcAxis2Placement3D* Position() const; - void setPosition(::Ifc4x3_add2::IfcAxis2Placement3D* v); + ::Ifc4x3_add2::IfcAxis2Placement3D Position() const; + void setPosition(const ::Ifc4x3_add2::IfcAxis2Placement3D& v); /// Artificial light sources are classified in terms of their color appearance. To the human eye they all appear to be white; the difference can only be detected by direct comparison. Visual performance is not directly affected by differences in color appearance. - ::Ifc4x3_add2::IfcColourRgb* ColourAppearance() const; - void setColourAppearance(::Ifc4x3_add2::IfcColourRgb* v); + ::Ifc4x3_add2::IfcColourRgb ColourAppearance() const; + void setColourAppearance(const ::Ifc4x3_add2::IfcColourRgb& v); /// The color temperature of any source of radiation is defined as the temperature (in Kelvin) of a black-body or Planckian radiator whose radiation has the same chromaticity as the source of radiation. Often the values are only approximate color temperatures as the black-body radiator cannot emit radiation of every chromaticity value. The color temperatures of the commonest artificial light sources range from less than 3000K (warm white) to 4000K (intermediate) and over 5000K (daylight). double ColourTemperature() const; - void setColourTemperature(double v); + void setColourTemperature(const double& v); /// Luminous flux is a photometric measure of radiant flux, i.e. the volume of light emitted from a light source. Luminous flux is measured either for the interior as a whole or for a part of the interior (partial luminous flux for a solid angle). All other photometric parameters are derivatives of luminous flux. Luminous flux is measured in lumens (lm). The luminous flux is given as a nominal value for each lamp. double LuminousFlux() const; - void setLuminousFlux(double v); + void setLuminousFlux(const double& v); /// Identifies the types of light emitter from which the type required may be set. ::Ifc4x3_add2::IfcLightEmissionSourceEnum::Value LightEmissionSource() const; - void setLightEmissionSource(::Ifc4x3_add2::IfcLightEmissionSourceEnum::Value v); + void setLightEmissionSource(const ::Ifc4x3_add2::IfcLightEmissionSourceEnum::Value& v); /// The data source from which light distribution data is obtained. - ::Ifc4x3_add2::IfcLightDistributionDataSourceSelect* LightDistributionDataSource() const; - void setLightDistributionDataSource(::Ifc4x3_add2::IfcLightDistributionDataSourceSelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcLightDistributionDataSourceSelect LightDistributionDataSource() const; + void setLightDistributionDataSource(const ::Ifc4x3_add2::IfcLightDistributionDataSourceSelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLightSourceGoniometric (IfcEntityInstanceData&& e); - IfcLightSourceGoniometric (boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcAxis2Placement3D* v5_Position, ::Ifc4x3_add2::IfcColourRgb* v6_ColourAppearance, double v7_ColourTemperature, double v8_LuminousFlux, ::Ifc4x3_add2::IfcLightEmissionSourceEnum::Value v9_LightEmissionSource, ::Ifc4x3_add2::IfcLightDistributionDataSourceSelect* v10_LightDistributionDataSource); - typedef aggregate_of< IfcLightSourceGoniometric > list; + // IfcLightSourceGoniometric (std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb v2_LightColour, std::optional< double > v3_AmbientIntensity, std::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcAxis2Placement3D v5_Position, ::Ifc4x3_add2::IfcColourRgb v6_ColourAppearance, double v7_ColourTemperature, double v8_LuminousFlux, ::Ifc4x3_add2::IfcLightEmissionSourceEnum::Value v9_LightEmissionSource, ::Ifc4x3_add2::IfcLightDistributionDataSourceSelect v10_LightDistributionDataSource); }; /// Definition from ISO/CD 10303-46:1992: The light source positional entity is a subtype of light source. This entity has a light source position and attenuation coefficients. A positional light source affects a surface based on the surface's orientation and position. /// @@ -16187,30 +20290,31 @@ public: /// NOTE: In addition to the attributes as defined in ISO10303-46 the additional property from ISO/IEC 14772-1:1997 (VRML) Radius and QuadricAttenuation are added to this subtype and the AmbientIntensity and Intensity are inherited from the supertype. /// /// HISTORY: This is a new entity in IFC 2x, renamed and enhanced in IFC2x2. -class IFC_PARSE_API IfcLightSourcePositional : public IfcLightSource { +class IFC_PARSE_API IfcLightSourcePositional : public IfcLightSource { public: + IfcLightSourcePositional() {} + explicit IfcLightSourcePositional (const std::weak_ptr& data) : IfcLightSource(data) {} + /// Definition from ISO/CD 10303-46:1992: The Cartesian point indicates the position of the light source. /// Definition from VRML97 - ISO/IEC 14772-1:1997: A Point light node illuminates geometry within radius of its location. - ::Ifc4x3_add2::IfcCartesianPoint* Position() const; - void setPosition(::Ifc4x3_add2::IfcCartesianPoint* v); + ::Ifc4x3_add2::IfcCartesianPoint Position() const; + void setPosition(const ::Ifc4x3_add2::IfcCartesianPoint& v); /// Definition from IAI: The maximum distance from the light source for a surface still to be illuminated. /// Definition from VRML97 - ISO/IEC 14772-1:1997: A Point light node illuminates geometry within radius of its location. double Radius() const; - void setRadius(double v); + void setRadius(const double& v); /// Definition from ISO/CD 10303-46:1992: This real indicates the value of the attenuation in the lighting equation that is constant. double ConstantAttenuation() const; - void setConstantAttenuation(double v); + void setConstantAttenuation(const double& v); /// Definition from ISO/CD 10303-46:1992: This real indicates the value of the attenuation in the lighting equation that proportional to the distance from the light source. double DistanceAttenuation() const; - void setDistanceAttenuation(double v); + void setDistanceAttenuation(const double& v); /// Definition from the IAI: This real indicates the value of the attenuation in the lighting equation that proportional to the square value of the distance from the light source. double QuadricAttenuation() const; - void setQuadricAttenuation(double v); - virtual const IfcParse::entity& declaration() const; + void setQuadricAttenuation(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLightSourcePositional (IfcEntityInstanceData&& e); - IfcLightSourcePositional (boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation); - typedef aggregate_of< IfcLightSourcePositional > list; + // IfcLightSourcePositional (std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb v2_LightColour, std::optional< double > v3_AmbientIntensity, std::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcCartesianPoint v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation); }; /// Definition from ISO/CD 10303-46:1992: The light source spot entity is a subtype of light source. Spot light source entities have a light source colour, position, direction, attenuation coefficients, concentration exponent, and spread angle. If a point lies outside the cone of influence of a light source of this type as determined by the light source position, direction and spread angle its colour is not affected by that light source. /// @@ -16227,41 +20331,43 @@ public: /// NOTE  In addition to the attributes as defined in ISO10303-46 the additional property from ISO/IEC 14772-1:1997 (VRML) Radius, BeamWidth, and QuadricAttenuation are added to this subtype and the AmbientIntensity and Intensity are inherited from the supertype. /// /// HISTORY  This is a new entity in IFC 2x, renamed and enhanced in IFC2x2. -class IFC_PARSE_API IfcLightSourceSpot : public IfcLightSourcePositional { +class IFC_PARSE_API IfcLightSourceSpot : public IfcLightSourcePositional { public: + IfcLightSourceSpot() {} + explicit IfcLightSourceSpot (const std::weak_ptr& data) : IfcLightSourcePositional(data) {} + /// Definition from ISO/CD 10303-46:1992: This is the direction of the axis of the cone of the light source specified in the coordinate space of the representation being projected.. /// Definition from VRML97 - ISO/IEC 14772-1:1997: The direction field specifies the direction vector of the light's central axis defined in the local coordinate system. - ::Ifc4x3_add2::IfcDirection* Orientation() const; - void setOrientation(::Ifc4x3_add2::IfcDirection* v); + ::Ifc4x3_add2::IfcDirection Orientation() const; + void setOrientation(const ::Ifc4x3_add2::IfcDirection& v); /// Definition from ISO/CD 10303-46:1992: This real is the exponent on the cosine of the angle between the line that starts at the position of the spot light source and is in the direction of the orientation of the spot light source and a line that starts at the position of the spot light source and goes through a point on the surface being shaded. /// NOTE: This attribute does not exists in ISO/IEC 14772-1:1997. - boost::optional< double > ConcentrationExponent() const; - void setConcentrationExponent(boost::optional< double > v); + std::optional< double > ConcentrationExponent() const; + void setConcentrationExponent(const std::optional< double >& v); /// Definition from ISO/CD 10303-46:1992: This planar angle measure is the angle between the line that starts at the position of the spot light source and is in the direction of the spot light source and any line on the boundary of the cone of influence. /// Definition from VRML97 - ISO/IEC 14772-1:1997: The cutOffAngle (name of spread angle in VRML) field specifies the outer bound of the solid angle. The light source does not emit light outside of this solid angle. double SpreadAngle() const; - void setSpreadAngle(double v); + void setSpreadAngle(const double& v); /// Definition from VRML97 - ISO/IEC 14772-1:1997: The beamWidth field specifies an inner solid angle in which the light source emits light at uniform full intensity. The light source's emission intensity drops off from the inner solid angle (beamWidthAngle) to the outer solid angle (spreadAngle). double BeamWidthAngle() const; - void setBeamWidthAngle(double v); - virtual const IfcParse::entity& declaration() const; + void setBeamWidthAngle(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLightSourceSpot (IfcEntityInstanceData&& e); - IfcLightSourceSpot (boost::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation, ::Ifc4x3_add2::IfcDirection* v10_Orientation, boost::optional< double > v11_ConcentrationExponent, double v12_SpreadAngle, double v13_BeamWidthAngle); - typedef aggregate_of< IfcLightSourceSpot > list; + // IfcLightSourceSpot (std::optional< std::string > v1_Name, ::Ifc4x3_add2::IfcColourRgb v2_LightColour, std::optional< double > v3_AmbientIntensity, std::optional< double > v4_Intensity, ::Ifc4x3_add2::IfcCartesianPoint v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation, ::Ifc4x3_add2::IfcDirection v10_Orientation, std::optional< double > v11_ConcentrationExponent, double v12_SpreadAngle, double v13_BeamWidthAngle); }; -class IFC_PARSE_API IfcLinearPlacement : public IfcObjectPlacement { +class IFC_PARSE_API IfcLinearPlacement : public IfcObjectPlacement { public: - ::Ifc4x3_add2::IfcAxis2PlacementLinear* RelativePlacement() const; - void setRelativePlacement(::Ifc4x3_add2::IfcAxis2PlacementLinear* v); - ::Ifc4x3_add2::IfcAxis2Placement3D* CartesianPosition() const; - void setCartesianPosition(::Ifc4x3_add2::IfcAxis2Placement3D* v); - virtual const IfcParse::entity& declaration() const; + IfcLinearPlacement() {} + explicit IfcLinearPlacement (const std::weak_ptr& data) : IfcObjectPlacement(data) {} + + ::Ifc4x3_add2::IfcAxis2PlacementLinear RelativePlacement() const; + void setRelativePlacement(const ::Ifc4x3_add2::IfcAxis2PlacementLinear& v); + ::Ifc4x3_add2::IfcAxis2Placement3D CartesianPosition() const; + void setCartesianPosition(const ::Ifc4x3_add2::IfcAxis2Placement3D& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLinearPlacement (IfcEntityInstanceData&& e); - IfcLinearPlacement (::Ifc4x3_add2::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_add2::IfcAxis2PlacementLinear* v2_RelativePlacement, ::Ifc4x3_add2::IfcAxis2Placement3D* v3_CartesianPosition); - typedef aggregate_of< IfcLinearPlacement > list; + // IfcLinearPlacement (::Ifc4x3_add2::IfcObjectPlacement v1_PlacementRelTo, ::Ifc4x3_add2::IfcAxis2PlacementLinear v2_RelativePlacement, ::Ifc4x3_add2::IfcAxis2Placement3D v3_CartesianPosition); }; /// IfcLocalPlacement defines the relative placement of a product in relation to the /// placement of another product or the absolute placement of a product within the geometric representation context of the project. @@ -16315,16 +20421,17 @@ public: /// /// If the PlacementRelTo relationship is not given, then it defaults to an absolute placement within the world /// coordinate system established by the referenced geometric representation context within the project. -class IFC_PARSE_API IfcLocalPlacement : public IfcObjectPlacement { +class IFC_PARSE_API IfcLocalPlacement : public IfcObjectPlacement { public: + IfcLocalPlacement() {} + explicit IfcLocalPlacement (const std::weak_ptr& data) : IfcObjectPlacement(data) {} + /// Geometric placement that defines the transformation from the related coordinate system into the relating. The placement can be either 2D or 3D, depending on the dimension count of the coordinate system. - ::Ifc4x3_add2::IfcAxis2Placement* RelativePlacement() const; - void setRelativePlacement(::Ifc4x3_add2::IfcAxis2Placement* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcAxis2Placement RelativePlacement() const; + void setRelativePlacement(const ::Ifc4x3_add2::IfcAxis2Placement& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLocalPlacement (IfcEntityInstanceData&& e); - IfcLocalPlacement (::Ifc4x3_add2::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_add2::IfcAxis2Placement* v2_RelativePlacement); - typedef aggregate_of< IfcLocalPlacement > list; + // IfcLocalPlacement (::Ifc4x3_add2::IfcObjectPlacement v1_PlacementRelTo, ::Ifc4x3_add2::IfcAxis2Placement v2_RelativePlacement); }; /// Definition from ISO/CD 10303-42:1992: A loop is a topological /// entity constructed from a single vertex, or by stringing together connected @@ -16352,13 +20459,14 @@ public: /// A loop has a finite extent. /// A loop describes a closed (topological) curve with coincident start /// and end vertices. -class IFC_PARSE_API IfcLoop : public IfcTopologicalRepresentationItem { +class IFC_PARSE_API IfcLoop : public IfcTopologicalRepresentationItem { public: - virtual const IfcParse::entity& declaration() const; + IfcLoop() {} + explicit IfcLoop (const std::weak_ptr& data) : IfcTopologicalRepresentationItem(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLoop (IfcEntityInstanceData&& e); - IfcLoop (); - typedef aggregate_of< IfcLoop > list; + // IfcLoop (); }; /// Definition from ISO/CD 10303-43:1992: A mapped item is the use of an existing representation (the mapping source - mapped representation) as a representation item in a second representation. /// @@ -16379,19 +20487,20 @@ public: /// /// A mapped item shall not be self-defining by participating in the definition of the representation being mapped. /// The dimensionality of the mapping source and the mapping target has to be the same, if the mapping source is a geometric representation item. -class IFC_PARSE_API IfcMappedItem : public IfcRepresentationItem { +class IFC_PARSE_API IfcMappedItem : public IfcRepresentationItem { public: + IfcMappedItem() {} + explicit IfcMappedItem (const std::weak_ptr& data) : IfcRepresentationItem(data) {} + /// A representation map that is the source of the mapped item. It can be seen as a block (or cell or marco) definition. - ::Ifc4x3_add2::IfcRepresentationMap* MappingSource() const; - void setMappingSource(::Ifc4x3_add2::IfcRepresentationMap* v); + ::Ifc4x3_add2::IfcRepresentationMap MappingSource() const; + void setMappingSource(const ::Ifc4x3_add2::IfcRepresentationMap& v); /// A representation item that is the target onto which the mapping source is mapped. It is constraint to be a Cartesian transformation operator. - ::Ifc4x3_add2::IfcCartesianTransformationOperator* MappingTarget() const; - void setMappingTarget(::Ifc4x3_add2::IfcCartesianTransformationOperator* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcCartesianTransformationOperator MappingTarget() const; + void setMappingTarget(const ::Ifc4x3_add2::IfcCartesianTransformationOperator& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMappedItem (IfcEntityInstanceData&& e); - IfcMappedItem (::Ifc4x3_add2::IfcRepresentationMap* v1_MappingSource, ::Ifc4x3_add2::IfcCartesianTransformationOperator* v2_MappingTarget); - typedef aggregate_of< IfcMappedItem > list; + // IfcMappedItem (::Ifc4x3_add2::IfcRepresentationMap v1_MappingSource, ::Ifc4x3_add2::IfcCartesianTransformationOperator v2_MappingTarget); }; /// IfcMaterial is a homogeneous or inhomogeneous /// substance that can be used to form elements (physical products or @@ -16420,64 +20529,66 @@ public: /// HISTORYNew entity in IFC2x4 /// /// IFC2x4 CHANGE The attributes Description and Category have been added. -class IFC_PARSE_API IfcMaterial : public IfcMaterialDefinition { +class IFC_PARSE_API IfcMaterial : public IfcMaterialDefinition { public: + IfcMaterial() {} + explicit IfcMaterial (const std::weak_ptr& data) : IfcMaterialDefinition(data) {} + /// Name of the material. /// /// EXAMPLE A view definition may require Material.Name to uniquely specify e.g. concrete or steel grade, in which case the attribute Material.Category could take the value 'Concrete' or 'Steel'. /// /// NOTE Material grade may have diffenrent meaning in different view definitions, e.g. strength grade for structural design and analysis, or visible appearance grade in architectural application. Also, more elaborate material grade definition may be associated as classification via inverse attribute HasExternalReferences. std::string Name() const; - void setName(std::string v); + void setName(const std::string& v); /// Definition of the material in more descriptive terms than given by attributes Name or Category. /// /// IFC2x4 CHANGE  The attribute has been added at the end of attribute list. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// Definition of the category (group or type) of material, in more general terms than given by attribute Name. /// /// EXAMPLE A view definition may require each Material.Name to be unique, e.g. for each concrete or steel grade used in a project, in which case Material.Category could take the values 'Concrete' or 'Steel'. /// /// IFC2x4 CHANGE  The attribute has been added at the end of attribute list. - boost::optional< std::string > Category() const; - void setCategory(boost::optional< std::string > v); - aggregate_of< IfcMaterialDefinitionRepresentation >::ptr HasRepresentation() const; // INVERSE IfcMaterialDefinitionRepresentation::RepresentedMaterial - aggregate_of< IfcMaterialRelationship >::ptr IsRelatedWith() const; // INVERSE IfcMaterialRelationship::RelatedMaterials - aggregate_of< IfcMaterialRelationship >::ptr RelatesTo() const; // INVERSE IfcMaterialRelationship::RelatingMaterial - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Category() const; + void setCategory(const std::optional< std::string >& v); + std::vector< IfcMaterialDefinitionRepresentation > HasRepresentation() const; // INVERSE IfcMaterialDefinitionRepresentation::RepresentedMaterial + std::vector< IfcMaterialRelationship > IsRelatedWith() const; // INVERSE IfcMaterialRelationship::RelatedMaterials + std::vector< IfcMaterialRelationship > RelatesTo() const; // INVERSE IfcMaterialRelationship::RelatingMaterial + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterial (IfcEntityInstanceData&& e); - IfcMaterial (std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_Category); - typedef aggregate_of< IfcMaterial > list; + // IfcMaterial (std::string v1_Name, std::optional< std::string > v2_Description, std::optional< std::string > v3_Category); }; /// IfcMaterialConstituent is a single and identifiable part of an element which is constructed of a number of part (one or more) each having an individual material. The association of the material constituent to the part is provided by a keyword as value of the Name attribute. /// /// NOTE See the "Material Use Definition" at the individual element to which an IfcMaterialConstituentSet may apply for a required or recommended definition of such keywords as value for IfcMaterialConstituent.Name. /// /// HISTORYNew Entity in IFC2x4 -class IFC_PARSE_API IfcMaterialConstituent : public IfcMaterialDefinition { +class IFC_PARSE_API IfcMaterialConstituent : public IfcMaterialDefinition { public: + IfcMaterialConstituent() {} + explicit IfcMaterialConstituent (const std::weak_ptr& data) : IfcMaterialDefinition(data) {} + /// The name by which the material constituent is known. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// Definition of the material constituent in descriptive terms. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// Reference to the material from which the constituent is constructed. - ::Ifc4x3_add2::IfcMaterial* Material() const; - void setMaterial(::Ifc4x3_add2::IfcMaterial* v); + ::Ifc4x3_add2::IfcMaterial Material() const; + void setMaterial(const ::Ifc4x3_add2::IfcMaterial& v); /// Optional provision of a fraction of the total amount (volume or weight) that applies to the IfcMaterialConstituentSet that is contributed by this IfcMaterialConstituent. - boost::optional< double > Fraction() const; - void setFraction(boost::optional< double > v); + std::optional< double > Fraction() const; + void setFraction(const std::optional< double >& v); /// Category of the material constituent, e.g. the role it has in the constituent set it belongs to. - boost::optional< std::string > Category() const; - void setCategory(boost::optional< std::string > v); - aggregate_of< IfcMaterialConstituentSet >::ptr ToMaterialConstituentSet() const; // INVERSE IfcMaterialConstituentSet::MaterialConstituents - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Category() const; + void setCategory(const std::optional< std::string >& v); + std::vector< IfcMaterialConstituentSet > ToMaterialConstituentSet() const; // INVERSE IfcMaterialConstituentSet::MaterialConstituents + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialConstituent (IfcEntityInstanceData&& e); - IfcMaterialConstituent (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial* v3_Material, boost::optional< double > v4_Fraction, boost::optional< std::string > v5_Category); - typedef aggregate_of< IfcMaterialConstituent > list; + // IfcMaterialConstituent (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial v3_Material, std::optional< double > v4_Fraction, std::optional< std::string > v5_Category); }; /// IfcMaterialConstituentSet is a collection of individual material constituents, each assigning a material to a part of an element. The parts are only identified by a keyword (as opposed to an IfcMaterialLayerSet or IfcMaterialProfileSet where each part has an individual shape parameter (layer thickness or layer profile). /// @@ -16493,22 +20604,23 @@ public: /// keywords. /// /// HISTORYNew Entity in IFC2x4. -class IFC_PARSE_API IfcMaterialConstituentSet : public IfcMaterialDefinition { +class IFC_PARSE_API IfcMaterialConstituentSet : public IfcMaterialDefinition { public: + IfcMaterialConstituentSet() {} + explicit IfcMaterialConstituentSet (const std::weak_ptr& data) : IfcMaterialDefinition(data) {} + /// The name by which the constituent set is known. - boost::optional< std::string > Name() const; - void setName(boost::optional< std::string > v); + std::optional< std::string > Name() const; + void setName(const std::optional< std::string >& v); /// Definition of the material constituent set in descriptive terms. - boost::optional< std::string > Description() const; - void setDescription(boost::optional< std::string > v); + std::optional< std::string > Description() const; + void setDescription(const std::optional< std::string >& v); /// Identification of the constituents from which the material constituent set is composed. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcMaterialConstituent >::ptr > MaterialConstituents() const; - void setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcMaterialConstituent >::ptr > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< ::Ifc4x3_add2::IfcMaterialConstituent > > MaterialConstituents() const; + void setMaterialConstituents(const std::optional< std::vector< ::Ifc4x3_add2::IfcMaterialConstituent > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialConstituentSet (IfcEntityInstanceData&& e); - IfcMaterialConstituentSet (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcMaterialConstituent >::ptr > v3_MaterialConstituents); - typedef aggregate_of< IfcMaterialConstituentSet > list; + // IfcMaterialConstituentSet (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::optional< std::vector< ::Ifc4x3_add2::IfcMaterialConstituent > > v3_MaterialConstituents); }; /// IfcMaterialDefinitionRepresentation defines presentation information relating to IfcMaterial. It allows for multiple presentations of the same material for different geometric representation contexts. /// @@ -16540,16 +20652,17 @@ public: /// As shown in Figure 331, the presentation assignment can be specific to a representation context by adding one and more IfcStyledRepresentation's. Each of them includes a single IfcStyledItem with exactly zero or one style for either curve, fill area, surface, text or symbol style that is applicable. /// /// Figure 331 — Material definition representation -class IFC_PARSE_API IfcMaterialDefinitionRepresentation : public IfcProductRepresentation { +class IFC_PARSE_API IfcMaterialDefinitionRepresentation : public IfcProductRepresentation { public: + IfcMaterialDefinitionRepresentation() {} + explicit IfcMaterialDefinitionRepresentation (const std::weak_ptr& data) : IfcProductRepresentation(data) {} + /// Reference to the material to which the representation applies. - ::Ifc4x3_add2::IfcMaterial* RepresentedMaterial() const; - void setRepresentedMaterial(::Ifc4x3_add2::IfcMaterial* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcMaterial RepresentedMaterial() const; + void setRepresentedMaterial(const ::Ifc4x3_add2::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, aggregate_of< ::Ifc4x3_add2::IfcRepresentation >::ptr v3_Representations, ::Ifc4x3_add2::IfcMaterial* v4_RepresentedMaterial); - typedef aggregate_of< IfcMaterialDefinitionRepresentation > list; + // IfcMaterialDefinitionRepresentation (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcRepresentation > v3_Representations, ::Ifc4x3_add2::IfcMaterial v4_RepresentedMaterial); }; /// IfcMaterialLayerSetUsage determines the usage of /// IfcMaterialLayerSet in terms of its location and @@ -16651,25 +20764,28 @@ public: /// geometry. /// /// Figure 288 — Material layer set usage for roof slab -class IFC_PARSE_API IfcMaterialLayerSetUsage : public IfcMaterialUsageDefinition { +class IFC_PARSE_API IfcMaterialLayerSetUsage : public IfcMaterialUsageDefinition { public: + IfcMaterialLayerSetUsage() {} + explicit IfcMaterialLayerSetUsage (const std::weak_ptr& data) : IfcMaterialUsageDefinition(data) {} + /// The IfcMaterialLayerSet set to which the usage is applied. - ::Ifc4x3_add2::IfcMaterialLayerSet* ForLayerSet() const; - void setForLayerSet(::Ifc4x3_add2::IfcMaterialLayerSet* v); + ::Ifc4x3_add2::IfcMaterialLayerSet ForLayerSet() const; + void setForLayerSet(const ::Ifc4x3_add2::IfcMaterialLayerSet& v); /// Orientation of the material layer set relative to element reference geometry. The meaning of the value of this attribute shall be specified in the geometry use section for each element. For extruded shape representation, direction can be given along the extrusion path (e.g. for slabs) or perpendicular to it (e.g. for walls). /// /// NOTE  the LayerSetDirection for IfcWallStandardCase shall be AXIS2 (i.e. the y-axis) and for IfcSlabStandardCase and IfcPlateStandardCase it shall be AXIS3 (i.e. the z-axis). /// /// Whether the material layers of the set being used shall 'grow' into the positive or negative direction of the given axis, shall be deifned by DirectionSense attribute. ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value LayerSetDirection() const; - void setLayerSetDirection(::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value v); + void setLayerSetDirection(const ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value& v); /// Denotion whether the material layer set is oriented in positive or negative sense along the specified axis (defined by LayerSetDirection). "Positive" means that the consecutive layers (the IfcMaterialLayer instances in the list of IfcMaterialLayerSet.MaterialLayers) are placed face-by-face in the direction of the positive axis as established by LayerSetDirection: for AXIS2 it would be in +y, for AXIS3 it would be +z. "Negative" means that the layers are placed face-by-face in the direction of the negative LayerSetDirection. In both cases, starting at the material layer set base line. /// NOTE  the material layer set base line (MlsBase) is located by OffsetFromReferenceLine, and may be on the positive or negative side of the element reference line (or plane); positive or negative for MlsBase placement does not depend on the DirectionSense attribute, but on the relevant element axis. ::Ifc4x3_add2::IfcDirectionSenseEnum::Value DirectionSense() const; - void setDirectionSense(::Ifc4x3_add2::IfcDirectionSenseEnum::Value v); + void setDirectionSense(const ::Ifc4x3_add2::IfcDirectionSenseEnum::Value& v); /// Offset of the material layer set base line (MlsBase) from reference geometry (line or plane) of element. The offset can be positive or negative, unless restricted for a particular building element type in its use definition or by implementer agreement. A positive value means, that the MlsBase is placed on the positive side of the reference line or plane, on the axis established by LayerSetDirection (in case of AXIS2 into the direction of +y, or in case of AXIS2 into the direction of +z). A negative value means that the MlsBase is placed on the negative side, as established by LayerSetDirection (in case of AXIS2 into the direction of -y). NOTE  the positive or negative sign in the offset only affects the MlsBase placement, it does not have any effect on the application of DirectionSense for orientation of the material layers; also DirectionSense does not change the MlsBase placement. double OffsetFromReferenceLine() const; - void setOffsetFromReferenceLine(double v); + void setOffsetFromReferenceLine(const double& v); /// EPM-HTML> /// Extent of the extrusion of the elements body shape representation to which the IfcMaterialLayerSetUsage applies. It is used as the reference value for the upper OffsetValues[2] provided by the IfcMaterialLayerSetWithOffsets subtype for included material layers. /// @@ -16678,13 +20794,11 @@ public: /// NOTE 1  The attribute ReferenceExtent shall be asserted, if an IfcMaterialLayerSetWithOffsets is included in the ForLayerSet.MaterialLayers list of maerial layers. /// /// NOTE 2  The ReferenceExtent for IfcWallStandardCase is the reference height starting at z=0 being the XY plane of the object coordinate system. - boost::optional< double > ReferenceExtent() const; - void setReferenceExtent(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > ReferenceExtent() const; + void setReferenceExtent(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialLayerSetUsage (IfcEntityInstanceData&& e); - IfcMaterialLayerSetUsage (::Ifc4x3_add2::IfcMaterialLayerSet* v1_ForLayerSet, ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value v2_LayerSetDirection, ::Ifc4x3_add2::IfcDirectionSenseEnum::Value v3_DirectionSense, double v4_OffsetFromReferenceLine, boost::optional< double > v5_ReferenceExtent); - typedef aggregate_of< IfcMaterialLayerSetUsage > list; + // IfcMaterialLayerSetUsage (::Ifc4x3_add2::IfcMaterialLayerSet v1_ForLayerSet, ::Ifc4x3_add2::IfcLayerSetDirectionEnum::Value v2_LayerSetDirection, ::Ifc4x3_add2::IfcDirectionSenseEnum::Value v3_DirectionSense, double v4_OffsetFromReferenceLine, std::optional< double > v5_ReferenceExtent); }; /// IfcMaterialProfileSetUsage determines the usage of IfcMaterialProfileSet in terms of its location relative to the associated element geometry. The location of a material profile set shall be compatible with the building element geometry (that is, material profiles shall fit inside the element geometry). The rules to ensure the compatibility depend on the type of the building element. For building elements with shape representations which are based on extruded solids, this is accomplished by referring to the identical profile definition in the shape model as in the material profile set. /// @@ -16693,27 +20807,28 @@ public: /// profile, or a composite profile with two or more material profiles. /// /// HISTORYNew Entity in IFC2x4. -class IFC_PARSE_API IfcMaterialProfileSetUsage : public IfcMaterialUsageDefinition { +class IFC_PARSE_API IfcMaterialProfileSetUsage : public IfcMaterialUsageDefinition { public: + IfcMaterialProfileSetUsage() {} + explicit IfcMaterialProfileSetUsage (const std::weak_ptr& data) : IfcMaterialUsageDefinition(data) {} + /// The IfcMaterialProfileSet set to which the usage is applied. - ::Ifc4x3_add2::IfcMaterialProfileSet* ForProfileSet() const; - void setForProfileSet(::Ifc4x3_add2::IfcMaterialProfileSet* v); + ::Ifc4x3_add2::IfcMaterialProfileSet ForProfileSet() const; + void setForProfileSet(const ::Ifc4x3_add2::IfcMaterialProfileSet& v); /// Index reference to a significant point in the section profile. Describes how the section is aligned relative to the (longitudinal) axis of the member it is associated with. This parametric specification of profile alignment can be provided redundantly to the explicit alignment defined by ForProfileSet.MaterialProfiles[*].Profile. - boost::optional< int > CardinalPoint() const; - void setCardinalPoint(boost::optional< int > v); + std::optional< int > CardinalPoint() const; + void setCardinalPoint(const std::optional< int >& v); /// EPM-HTML> /// Extent of the extrusion of the elements body shape representation to which the IfcMaterialProfileSetUsage applies. It is used as the reference value for the upper OffsetValues[2] provided by the IfcMaterialProfileSetWithOffsets subtype for included material profiles. /// /// NOTE 1  The attribute ReferenceExtent shall be asserted, if an IfcMaterialProfileSetWithOffsets is included in the ForProfileSet.MaterialProfiles list of maerial layers. /// /// NOTE 2  The ReferenceExtent for IfcBeamStandardCase, IfcColumnStandardCase, and IfcMemberStandardCase is the reference length starting at z=0 being the XY plane of the object coordinate system. - boost::optional< double > ReferenceExtent() const; - void setReferenceExtent(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > ReferenceExtent() const; + void setReferenceExtent(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialProfileSetUsage (IfcEntityInstanceData&& e); - IfcMaterialProfileSetUsage (::Ifc4x3_add2::IfcMaterialProfileSet* v1_ForProfileSet, boost::optional< int > v2_CardinalPoint, boost::optional< double > v3_ReferenceExtent); - typedef aggregate_of< IfcMaterialProfileSetUsage > list; + // IfcMaterialProfileSetUsage (::Ifc4x3_add2::IfcMaterialProfileSet v1_ForProfileSet, std::optional< int > v2_CardinalPoint, std::optional< double > v3_ReferenceExtent); }; /// IfcMaterialProfileSetUsageTapering specifies dual material profile sets in association with tapered prismatic (beam- or column-like) elements. /// @@ -16740,19 +20855,20 @@ public: /// ForProfileEndSet at its end. Start and end correspond to /// the edge direction in the topological representation of the curve /// member. -class IFC_PARSE_API IfcMaterialProfileSetUsageTapering : public IfcMaterialProfileSetUsage { +class IFC_PARSE_API IfcMaterialProfileSetUsageTapering : public IfcMaterialProfileSetUsage { public: + IfcMaterialProfileSetUsageTapering() {} + explicit IfcMaterialProfileSetUsageTapering (const std::weak_ptr& data) : IfcMaterialProfileSetUsage(data) {} + /// The second IfcMaterialProfileSet set to which the usage is applied. - ::Ifc4x3_add2::IfcMaterialProfileSet* ForProfileEndSet() const; - void setForProfileEndSet(::Ifc4x3_add2::IfcMaterialProfileSet* v); + ::Ifc4x3_add2::IfcMaterialProfileSet ForProfileEndSet() const; + void setForProfileEndSet(const ::Ifc4x3_add2::IfcMaterialProfileSet& v); /// Index reference to a significant point in the second section profile. Describes how this section is aligned relative to the axis of the member it is associated with. This parametric specification of profile alignment can be provided redundantly to the explicit alignment defined by ForProfileSet.MaterialProfiles[*].Profile. - boost::optional< int > CardinalEndPoint() const; - void setCardinalEndPoint(boost::optional< int > v); - virtual const IfcParse::entity& declaration() const; + std::optional< int > CardinalEndPoint() const; + void setCardinalEndPoint(const std::optional< int >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialProfileSetUsageTapering (IfcEntityInstanceData&& e); - IfcMaterialProfileSetUsageTapering (::Ifc4x3_add2::IfcMaterialProfileSet* v1_ForProfileSet, boost::optional< int > v2_CardinalPoint, boost::optional< double > v3_ReferenceExtent, ::Ifc4x3_add2::IfcMaterialProfileSet* v4_ForProfileEndSet, boost::optional< int > v5_CardinalEndPoint); - typedef aggregate_of< IfcMaterialProfileSetUsageTapering > list; + // IfcMaterialProfileSetUsageTapering (::Ifc4x3_add2::IfcMaterialProfileSet v1_ForProfileSet, std::optional< int > v2_CardinalPoint, std::optional< double > v3_ReferenceExtent, ::Ifc4x3_add2::IfcMaterialProfileSet v4_ForProfileEndSet, std::optional< int > v5_CardinalEndPoint); }; /// IfcMaterialProperties is defined as an abstract /// supertype for entities that apply material properties to material @@ -16776,37 +20892,39 @@ public: /// HISTORY  New Entity in IFC 2x. /// /// IFC2x4 CHANGE  The subtypes that represented a fixed list of statically defined material properties, IfcMechanicalMaterialProperties, IfcThermalMaterialProperties, IfcHygroscopicMaterialProperties, IfcGeneralMaterialProperties, IfcOpticalMaterialProperties, IfcWaterProperties, IfcFuelProperties, IfcProductsOfCombustionProperties have been deleted, use the generic IfcExtendedMaterialProperties instead. -class IFC_PARSE_API IfcMaterialProperties : public IfcExtendedProperties { +class IFC_PARSE_API IfcMaterialProperties : public IfcExtendedProperties { public: + IfcMaterialProperties() {} + explicit IfcMaterialProperties (const std::weak_ptr& data) : IfcExtendedProperties(data) {} + /// Reference to the material definition to which the set of properties is assigned. /// /// IFC2x4 CHANGE The datatype has been changed to supertype IfcMaterialDefinition. - ::Ifc4x3_add2::IfcMaterialDefinition* Material() const; - void setMaterial(::Ifc4x3_add2::IfcMaterialDefinition* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcMaterialDefinition Material() const; + void setMaterial(const ::Ifc4x3_add2::IfcMaterialDefinition& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialProperties (IfcEntityInstanceData&& e); - IfcMaterialProperties (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v3_Properties, ::Ifc4x3_add2::IfcMaterialDefinition* v4_Material); - typedef aggregate_of< IfcMaterialProperties > list; + // IfcMaterialProperties (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcProperty > v3_Properties, ::Ifc4x3_add2::IfcMaterialDefinition v4_Material); }; /// IfcMaterialRelationship defines a relationship between part and whole in material definitions (as in composite materials). The parts, expressed by the set of RelatedMaterials, are material constituents of which a single material aggregate is composed. /// /// HISTORYNew Entity in IFC2x4 -class IFC_PARSE_API IfcMaterialRelationship : public IfcResourceLevelRelationship { +class IFC_PARSE_API IfcMaterialRelationship : public IfcResourceLevelRelationship { public: + IfcMaterialRelationship() {} + explicit IfcMaterialRelationship (const std::weak_ptr& data) : IfcResourceLevelRelationship(data) {} + /// Reference to the relating material (the composite). - ::Ifc4x3_add2::IfcMaterial* RelatingMaterial() const; - void setRelatingMaterial(::Ifc4x3_add2::IfcMaterial* v); + ::Ifc4x3_add2::IfcMaterial RelatingMaterial() const; + void setRelatingMaterial(const ::Ifc4x3_add2::IfcMaterial& v); /// Reference to related materials (as constituents of composite material). - aggregate_of< ::Ifc4x3_add2::IfcMaterial >::ptr RelatedMaterials() const; - void setRelatedMaterials(aggregate_of< ::Ifc4x3_add2::IfcMaterial >::ptr v); - boost::optional< std::string > MaterialExpression() const; - void setMaterialExpression(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcMaterial > RelatedMaterials() const; + void setRelatedMaterials(const std::vector< ::Ifc4x3_add2::IfcMaterial >& v); + std::optional< std::string > MaterialExpression() const; + void setMaterialExpression(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMaterialRelationship (IfcEntityInstanceData&& e); - IfcMaterialRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial* v3_RelatingMaterial, aggregate_of< ::Ifc4x3_add2::IfcMaterial >::ptr v4_RelatedMaterials, boost::optional< std::string > v5_MaterialExpression); - typedef aggregate_of< IfcMaterialRelationship > list; + // IfcMaterialRelationship (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcMaterial v3_RelatingMaterial, std::vector< ::Ifc4x3_add2::IfcMaterial > v4_RelatedMaterials, std::optional< std::string > v5_MaterialExpression); }; /// The IfcMirroredProfileDef defines the profile by mirroring the parent profile about the y axis of the parent profile coordinate system. That is, left and right of the parent profile are swapped. /// @@ -16835,13 +20953,14 @@ public: /// was performed. /// /// HISTORY  New entity in IFC2x4. -class IFC_PARSE_API IfcMirroredProfileDef : public IfcDerivedProfileDef { +class IFC_PARSE_API IfcMirroredProfileDef : public IfcDerivedProfileDef { public: - virtual const IfcParse::entity& declaration() const; + IfcMirroredProfileDef() {} + explicit IfcMirroredProfileDef (const std::weak_ptr& data) : IfcDerivedProfileDef(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMirroredProfileDef (IfcEntityInstanceData&& e); - IfcMirroredProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcProfileDef* v3_ParentProfile, boost::optional< std::string > v5_Label); - typedef aggregate_of< IfcMirroredProfileDef > list; + // IfcMirroredProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcProfileDef v3_ParentProfile, std::optional< std::string > v5_Label); }; /// An IfcObjectDefinition is the generalization of any /// semantically treated thing or process, either being a type or an @@ -16893,39 +21012,41 @@ public: /// HISTORY New abstract entity in IFC2x3. /// /// IFC2x4 CHANGE The new subtype IfcContext and the relationship to context HasContext has been added . The decomposition relationship is split into ordered nesting (Nests, IsNestedBy) and un-ordered aggregating (Decomposes, IsDecomposedBy). -class IFC_PARSE_API IfcObjectDefinition : public IfcRoot, public IfcDefinitionSelect { +class IFC_PARSE_API IfcObjectDefinition : public IfcRoot { public: - aggregate_of< IfcRelAssigns >::ptr HasAssignments() const; // INVERSE IfcRelAssigns::RelatedObjects - aggregate_of< IfcRelNests >::ptr Nests() const; // INVERSE IfcRelNests::RelatedObjects - aggregate_of< IfcRelNests >::ptr IsNestedBy() const; // INVERSE IfcRelNests::RelatingObject - aggregate_of< IfcRelDeclares >::ptr HasContext() const; // INVERSE IfcRelDeclares::RelatedDefinitions - aggregate_of< IfcRelAggregates >::ptr IsDecomposedBy() const; // INVERSE IfcRelAggregates::RelatingObject - aggregate_of< IfcRelAggregates >::ptr Decomposes() const; // INVERSE IfcRelAggregates::RelatedObjects - aggregate_of< IfcRelAssociates >::ptr HasAssociations() const; // INVERSE IfcRelAssociates::RelatedObjects - virtual const IfcParse::entity& declaration() const; + IfcObjectDefinition() {} + explicit IfcObjectDefinition (const std::weak_ptr& data) : IfcRoot(data) {} + + std::vector< IfcRelAssigns > HasAssignments() const; // INVERSE IfcRelAssigns::RelatedObjects + std::vector< IfcRelNests > Nests() const; // INVERSE IfcRelNests::RelatedObjects + std::vector< IfcRelNests > IsNestedBy() const; // INVERSE IfcRelNests::RelatingObject + std::vector< IfcRelDeclares > HasContext() const; // INVERSE IfcRelDeclares::RelatedDefinitions + std::vector< IfcRelAggregates > IsDecomposedBy() const; // INVERSE IfcRelAggregates::RelatingObject + std::vector< IfcRelAggregates > Decomposes() const; // INVERSE IfcRelAggregates::RelatedObjects + std::vector< IfcRelAssociates > HasAssociations() const; // INVERSE IfcRelAssociates::RelatedObjects + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcObjectDefinition (IfcEntityInstanceData&& e); - IfcObjectDefinition (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description); - typedef aggregate_of< IfcObjectDefinition > list; + // IfcObjectDefinition (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description); }; -class IFC_PARSE_API IfcOpenCrossProfileDef : public IfcProfileDef { +class IFC_PARSE_API IfcOpenCrossProfileDef : public IfcProfileDef { public: + IfcOpenCrossProfileDef() {} + explicit IfcOpenCrossProfileDef (const std::weak_ptr& data) : IfcProfileDef(data) {} + bool HorizontalWidths() const; - void setHorizontalWidths(bool v); + void setHorizontalWidths(const bool& v); std::vector< double > /*[1:?]*/ Widths() const; - void setWidths(std::vector< double > /*[1:?]*/ v); + void setWidths(const std::vector< double > /*[1:?]*/& v); std::vector< double > /*[1:?]*/ Slopes() const; - void setSlopes(std::vector< double > /*[1:?]*/ v); - boost::optional< std::vector< std::string > /*[2:?]*/ > Tags() const; - void setTags(boost::optional< std::vector< std::string > /*[2:?]*/ > v); - ::Ifc4x3_add2::IfcCartesianPoint* OffsetPoint() const; - void setOffsetPoint(::Ifc4x3_add2::IfcCartesianPoint* v); - virtual const IfcParse::entity& declaration() const; + void setSlopes(const std::vector< double > /*[1:?]*/& v); + std::optional< std::vector< std::string > /*[2:?]*/ > Tags() const; + void setTags(const std::optional< std::vector< std::string > /*[2:?]*/ >& v); + ::Ifc4x3_add2::IfcCartesianPoint OffsetPoint() const; + void setOffsetPoint(const ::Ifc4x3_add2::IfcCartesianPoint& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcOpenCrossProfileDef (IfcEntityInstanceData&& e); - IfcOpenCrossProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, bool v3_HorizontalWidths, std::vector< double > /*[1:?]*/ v4_Widths, std::vector< double > /*[1:?]*/ v5_Slopes, boost::optional< std::vector< std::string > /*[2:?]*/ > v6_Tags, ::Ifc4x3_add2::IfcCartesianPoint* v7_OffsetPoint); - typedef aggregate_of< IfcOpenCrossProfileDef > list; + // IfcOpenCrossProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, bool v3_HorizontalWidths, std::vector< double > /*[1:?]*/ v4_Widths, std::vector< double > /*[1:?]*/ v5_Slopes, std::optional< std::vector< std::string > /*[2:?]*/ > v6_Tags, ::Ifc4x3_add2::IfcCartesianPoint v7_OffsetPoint); }; /// Definition from ISO/CD 10303-42:1992: An open shell is a shell of /// the dimensionality 2. Its domain, if present, is a finite, connected, oriented, @@ -16986,13 +21107,14 @@ public: /// /// The Euler equation shall be satisfied. Note: Please refer to ISO/IS /// 10303-42:1994, p.148 for the equation. -class IFC_PARSE_API IfcOpenShell : public IfcConnectedFaceSet, public IfcShell { +class IFC_PARSE_API IfcOpenShell : public IfcConnectedFaceSet { public: - virtual const IfcParse::entity& declaration() const; + IfcOpenShell() {} + explicit IfcOpenShell (const std::weak_ptr& data) : IfcConnectedFaceSet(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcOpenShell (IfcEntityInstanceData&& e); - IfcOpenShell (aggregate_of< ::Ifc4x3_add2::IfcFace >::ptr v1_CfsFaces); - typedef aggregate_of< IfcOpenShell > list; + // IfcOpenShell (std::vector< ::Ifc4x3_add2::IfcFace > v1_CfsFaces); }; /// Definition: establishes an association between one relating organization and one or more related organizations. /// @@ -17000,19 +21122,20 @@ public: /// /// HISTORY New entity in IFC Release 2x. /// IFC 2x4 change: attribute Name made optional. -class IFC_PARSE_API IfcOrganizationRelationship : public IfcResourceLevelRelationship { +class IFC_PARSE_API IfcOrganizationRelationship : public IfcResourceLevelRelationship { public: + IfcOrganizationRelationship() {} + explicit IfcOrganizationRelationship (const std::weak_ptr& data) : IfcResourceLevelRelationship(data) {} + /// Organization which is the relating part of the relationship between organizations. - ::Ifc4x3_add2::IfcOrganization* RelatingOrganization() const; - void setRelatingOrganization(::Ifc4x3_add2::IfcOrganization* v); + ::Ifc4x3_add2::IfcOrganization RelatingOrganization() const; + void setRelatingOrganization(const ::Ifc4x3_add2::IfcOrganization& v); /// The other, possibly dependent, organizations which are the related parts of the relationship between organizations. - aggregate_of< ::Ifc4x3_add2::IfcOrganization >::ptr RelatedOrganizations() const; - void setRelatedOrganizations(aggregate_of< ::Ifc4x3_add2::IfcOrganization >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcOrganization > RelatedOrganizations() const; + void setRelatedOrganizations(const std::vector< ::Ifc4x3_add2::IfcOrganization >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcOrganizationRelationship (IfcEntityInstanceData&& e); - IfcOrganizationRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcOrganization* v3_RelatingOrganization, aggregate_of< ::Ifc4x3_add2::IfcOrganization >::ptr v4_RelatedOrganizations); - typedef aggregate_of< IfcOrganizationRelationship > list; + // IfcOrganizationRelationship (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcOrganization v3_RelatingOrganization, std::vector< ::Ifc4x3_add2::IfcOrganization > v4_RelatedOrganizations); }; /// Definition from ISO/CD 10303-42:1992: An oriented edge is an edge constructed from another edge and contains a BOOLEAN direction flag to indicate whether or not the orientation of the constructed edge agrees with the orientation of the original edge. Except for perhaps orientation, the oriented edge is equivalent to the original edge. /// @@ -17021,19 +21144,20 @@ public: /// NOTE  Corresponding ISO 10303 entity: oriented_edge. Please refer to ISO/IS 10303-42:1994, p. 133 for the final definition of the formal standard. /// /// HISTORY  New Entity in IFC Release 2.0. -class IFC_PARSE_API IfcOrientedEdge : public IfcEdge { +class IFC_PARSE_API IfcOrientedEdge : public IfcEdge { public: + IfcOrientedEdge() {} + explicit IfcOrientedEdge (const std::weak_ptr& data) : IfcEdge(data) {} + /// Edge entity used to construct this oriented edge. - ::Ifc4x3_add2::IfcEdge* EdgeElement() const; - void setEdgeElement(::Ifc4x3_add2::IfcEdge* v); + ::Ifc4x3_add2::IfcEdge EdgeElement() const; + void setEdgeElement(const ::Ifc4x3_add2::IfcEdge& v); /// BOOLEAN, If TRUE the topological orientation as used coincides with the orientation from start vertex to end vertex of the edge element. If FALSE otherwise. bool Orientation() const; - void setOrientation(bool v); - virtual const IfcParse::entity& declaration() const; + void setOrientation(const bool& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcOrientedEdge (IfcEntityInstanceData&& e); - IfcOrientedEdge (::Ifc4x3_add2::IfcEdge* v3_EdgeElement, bool v4_Orientation); - typedef aggregate_of< IfcOrientedEdge > list; + // IfcOrientedEdge (::Ifc4x3_add2::IfcEdge v3_EdgeElement, bool v4_Orientation); }; /// The parameterized profile definition /// defines a 2D position coordinate system to which the parameters of the @@ -17077,16 +21201,17 @@ public: /// IFC2x4 CHANGE  Position attribute made optional (default: identity transformation). /// Several radius parameters in subtypes have been changed from optional IfcPositiveLengthMeasure (assumed default: 0.) to optional IfcNonNegativeLengthMeasure (default: unspecified). This change allows to explicitly specify zero radius. Sending systems shall export 0. values if parameters are known to be 0. /// Subtypes IfcCraneRailAShapeProfileDef and IfcCraneRailFShapeProfileDef deleted. Rail profiles shall be modeled as IfcArbitraryClosedProfileDef or as IfcAsymmetricIShapeProfileDef together with appropriate external reference. -class IFC_PARSE_API IfcParameterizedProfileDef : public IfcProfileDef { +class IFC_PARSE_API IfcParameterizedProfileDef : public IfcProfileDef { public: + IfcParameterizedProfileDef() {} + explicit IfcParameterizedProfileDef (const std::weak_ptr& data) : IfcProfileDef(data) {} + /// Position coordinate system of the parameterized profile definition. If unspecified, no translation and no rotation is applied. - ::Ifc4x3_add2::IfcAxis2Placement2D* Position() const; - void setPosition(::Ifc4x3_add2::IfcAxis2Placement2D* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcAxis2Placement2D Position() const; + void setPosition(const ::Ifc4x3_add2::IfcAxis2Placement2D& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcParameterizedProfileDef (IfcEntityInstanceData&& e); - IfcParameterizedProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position); - typedef aggregate_of< IfcParameterizedProfileDef > list; + // IfcParameterizedProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position); }; /// Definition from ISO/CD 10303-42:1992: A path is a topological entity consisting of an ordered collection of oriented edges, such that the edge start vertex of each edge coincides with the edge end of its predecessor. The path is ordered from the edge start of the first oriented edge to the edge end of the last edge. The BOOLEAN value sense in the oriented edge indicates whether the edge direction agrees with the direction of the path (TRUE) or is the opposite direction (FALSE). /// @@ -17102,16 +21227,17 @@ public: /// A path is arcwise connected. /// The edges of the path do not intersect except at common vertices. /// A path has a finite, non-zero extent. -class IFC_PARSE_API IfcPath : public IfcTopologicalRepresentationItem { +class IFC_PARSE_API IfcPath : public IfcTopologicalRepresentationItem { public: + IfcPath() {} + explicit IfcPath (const std::weak_ptr& data) : IfcTopologicalRepresentationItem(data) {} + /// The list of oriented edges which are concatenated together to form this path. - aggregate_of< ::Ifc4x3_add2::IfcOrientedEdge >::ptr EdgeList() const; - void setEdgeList(aggregate_of< ::Ifc4x3_add2::IfcOrientedEdge >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcOrientedEdge > EdgeList() const; + void setEdgeList(const std::vector< ::Ifc4x3_add2::IfcOrientedEdge >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPath (IfcEntityInstanceData&& e); - IfcPath (aggregate_of< ::Ifc4x3_add2::IfcOrientedEdge >::ptr v1_EdgeList); - typedef aggregate_of< IfcPath > list; + // IfcPath (std::vector< ::Ifc4x3_add2::IfcOrientedEdge > v1_EdgeList); }; /// The complex physical quantity, IfcPhysicalComplexQuantity, is an entity that holds a set of single quantity measure value (as defined at the subtypes of IfcPhysicalSimpleQuantity), that all apply to a given component or aspect of the element. /// @@ -17122,25 +21248,26 @@ public: /// HISTORY  New entity in IFC2x2 Addendum 1. /// /// IFC2x2 ADDENDUM 1 CHANGE  The entity IfcPhysicalComplexQuantity has been added. Upward compatibility for file based exchange is guaranteed. -class IFC_PARSE_API IfcPhysicalComplexQuantity : public IfcPhysicalQuantity { +class IFC_PARSE_API IfcPhysicalComplexQuantity : public IfcPhysicalQuantity { public: + IfcPhysicalComplexQuantity() {} + explicit IfcPhysicalComplexQuantity (const std::weak_ptr& data) : IfcPhysicalQuantity(data) {} + /// Set of physical quantities that are grouped by this complex physical quantity according to a given discrimination. - aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr HasQuantities() const; - void setHasQuantities(aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr v); + std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity > HasQuantities() const; + void setHasQuantities(const std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity >& v); /// Identification of the discrimination by which this physical complex property is distinguished. Examples of discriminations are 'layer', 'steel bar diameter', etc. std::string Discrimination() const; - void setDiscrimination(std::string v); + void setDiscrimination(const std::string& v); /// Additional indication of a quality of the quantities that are grouped under this physical complex quantity. - boost::optional< std::string > Quality() const; - void setQuality(boost::optional< std::string > v); + std::optional< std::string > Quality() const; + void setQuality(const std::optional< std::string >& v); /// Additional indication of a usage type of the quantities that are grouped under this physical complex quantity. - boost::optional< std::string > Usage() const; - void setUsage(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Usage() const; + void setUsage(const std::optional< 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, aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr v3_HasQuantities, std::string v4_Discrimination, boost::optional< std::string > v5_Quality, boost::optional< std::string > v6_Usage); - typedef aggregate_of< IfcPhysicalComplexQuantity > list; + // IfcPhysicalComplexQuantity (std::string v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity > v3_HasQuantities, std::string v4_Discrimination, std::optional< std::string > v5_Quality, std::optional< std::string > v6_Usage); }; /// An IfcPixelTexture provides a 2D image-based texture map as an explicit array of pixel values (list of Pixel binary attributes). In contrary to the IfcImageTexture the IfcPixelTexture holds a 2 dimensional list of pixel color /// (and opacity) directly, instead of referencing to an URL. @@ -17160,27 +21287,28 @@ public: /// Note that alpha equals (1.0 -transparency), if alpha and transparency each range from 0.0 to 1.0. /// /// HISTORY: New class in IFC2x2. -class IFC_PARSE_API IfcPixelTexture : public IfcSurfaceTexture { +class IFC_PARSE_API IfcPixelTexture : public IfcSurfaceTexture { public: + IfcPixelTexture() {} + explicit IfcPixelTexture (const std::weak_ptr& data) : IfcSurfaceTexture(data) {} + /// The number of pixels in width (S) direction. int Width() const; - void setWidth(int v); + void setWidth(const int& v); /// The number of pixels in height (T) direction. int Height() const; - void setHeight(int v); + void setHeight(const int& v); /// Indication whether the pixel values contain a 1, 2, 3, or 4 colour component. int ColourComponents() const; - void setColourComponents(int v); + void setColourComponents(const int& v); /// Flat list of hexadecimal values, each describing one pixel by 1, 2, 3, or 4 components. /// /// IFC2x Edition 3 CHANGE  The data type has been changed from STRING to BINARY. std::vector< boost::dynamic_bitset<> > /*[1:?]*/ Pixel() const; - void setPixel(std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v); - virtual const IfcParse::entity& declaration() const; + void setPixel(const 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, boost::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, int v6_Width, int v7_Height, int v8_ColourComponents, std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v9_Pixel); - typedef aggregate_of< IfcPixelTexture > list; + // IfcPixelTexture (bool v1_RepeatS, bool v2_RepeatT, std::optional< std::string > v3_Mode, ::Ifc4x3_add2::IfcCartesianTransformationOperator2D v4_TextureTransform, std::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, int v6_Width, int v7_Height, int v8_ColourComponents, std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v9_Pixel); }; /// Definition from ISO/CD 10303-42:1992: A placement entity defines the local environment for the definition of a geometry item. It locates the item to be defined and, in the case of the axis placement subtypes, gives its orientation. /// @@ -17191,67 +21319,71 @@ public: /// NOTE: Corresponding ISO 10303 entity: placement. Please refer to ISO/IS 10303-42:1994, p. 27 for the final definition of the formal standard. /// /// HISTORY: New entity in IFC Release 1.0 -class IFC_PARSE_API IfcPlacement : public IfcGeometricRepresentationItem { +class IFC_PARSE_API IfcPlacement : public IfcGeometricRepresentationItem { public: + IfcPlacement() {} + explicit IfcPlacement (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// The geometric position of a reference point, such as the center of a circle, of the item to be located. - ::Ifc4x3_add2::IfcPoint* Location() const; - void setLocation(::Ifc4x3_add2::IfcPoint* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcPoint Location() const; + void setLocation(const ::Ifc4x3_add2::IfcPoint& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPlacement (IfcEntityInstanceData&& e); - IfcPlacement (::Ifc4x3_add2::IfcPoint* v1_Location); - typedef aggregate_of< IfcPlacement > list; + // IfcPlacement (::Ifc4x3_add2::IfcPoint v1_Location); }; /// The planar extent defines the extent along the two axes of the two-dimensional coordinate system, independently of its position. /// /// NOTE  Corresponding ISO 10303 name: planar_extent. Please refer to ISO/IS 10303-46:1994, p. 141 for the final definition of the formal standard. /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcPlanarExtent : public IfcGeometricRepresentationItem { +class IFC_PARSE_API IfcPlanarExtent : public IfcGeometricRepresentationItem { public: + IfcPlanarExtent() {} + explicit IfcPlanarExtent (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// The extent in the direction of the x-axis. double SizeInX() const; - void setSizeInX(double v); + void setSizeInX(const double& v); /// The extent in the direction of the y-axis. double SizeInY() const; - void setSizeInY(double v); - virtual const IfcParse::entity& declaration() const; + void setSizeInY(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPlanarExtent (IfcEntityInstanceData&& e); - IfcPlanarExtent (double v1_SizeInX, double v2_SizeInY); - typedef aggregate_of< IfcPlanarExtent > list; + // IfcPlanarExtent (double v1_SizeInX, double v2_SizeInY); }; /// Definition from ISO/CD 10303-42:1992: A point is a location in some real Cartesian coordinate space Rm, for m = 1, 2 or 3. /// /// NOTE: Corresponding ISO 10303 entity: point. Only the subtypes cartesian_point, point_on_curve, point_on_surface have been incorporated in the current release of IFC. Please refer to ISO/IS 10303-42:1994, p. 22 for the final definition of the formal standard. /// /// HISTORY: New entity in IFC Release 1.5 -class IFC_PARSE_API IfcPoint : public IfcGeometricRepresentationItem, public IfcGeometricSetSelect, public IfcPointOrVertexPoint { +class IFC_PARSE_API IfcPoint : public IfcGeometricRepresentationItem { public: - virtual const IfcParse::entity& declaration() const; + IfcPoint() {} + explicit IfcPoint (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPoint (IfcEntityInstanceData&& e); - IfcPoint (); - typedef aggregate_of< IfcPoint > list; + // IfcPoint (); }; -class IFC_PARSE_API IfcPointByDistanceExpression : public IfcPoint { +class IFC_PARSE_API IfcPointByDistanceExpression : public IfcPoint { public: - ::Ifc4x3_add2::IfcCurveMeasureSelect* DistanceAlong() const; - void setDistanceAlong(::Ifc4x3_add2::IfcCurveMeasureSelect* v); - boost::optional< double > OffsetLateral() const; - void setOffsetLateral(boost::optional< double > v); - boost::optional< double > OffsetVertical() const; - void setOffsetVertical(boost::optional< double > v); - boost::optional< double > OffsetLongitudinal() const; - void setOffsetLongitudinal(boost::optional< double > v); - ::Ifc4x3_add2::IfcCurve* BasisCurve() const; - void setBasisCurve(::Ifc4x3_add2::IfcCurve* v); - virtual const IfcParse::entity& declaration() const; + IfcPointByDistanceExpression() {} + explicit IfcPointByDistanceExpression (const std::weak_ptr& data) : IfcPoint(data) {} + + ::Ifc4x3_add2::IfcCurveMeasureSelect DistanceAlong() const; + void setDistanceAlong(const ::Ifc4x3_add2::IfcCurveMeasureSelect& v); + std::optional< double > OffsetLateral() const; + void setOffsetLateral(const std::optional< double >& v); + std::optional< double > OffsetVertical() const; + void setOffsetVertical(const std::optional< double >& v); + std::optional< double > OffsetLongitudinal() const; + void setOffsetLongitudinal(const std::optional< double >& v); + ::Ifc4x3_add2::IfcCurve BasisCurve() const; + void setBasisCurve(const ::Ifc4x3_add2::IfcCurve& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPointByDistanceExpression (IfcEntityInstanceData&& e); - IfcPointByDistanceExpression (::Ifc4x3_add2::IfcCurveMeasureSelect* v1_DistanceAlong, boost::optional< double > v2_OffsetLateral, boost::optional< double > v3_OffsetVertical, boost::optional< double > v4_OffsetLongitudinal, ::Ifc4x3_add2::IfcCurve* v5_BasisCurve); - typedef aggregate_of< IfcPointByDistanceExpression > list; + // IfcPointByDistanceExpression (::Ifc4x3_add2::IfcCurveMeasureSelect v1_DistanceAlong, std::optional< double > v2_OffsetLateral, std::optional< double > v3_OffsetVertical, std::optional< double > v4_OffsetLongitudinal, ::Ifc4x3_add2::IfcCurve v5_BasisCurve); }; /// Definition from ISO/CD 10303-42:1992: A point on curve is a point which lies on a curve. The point is determined by evaluating the curve at a specific parameter value. The coordinate space dimensionality of the point is that of the basis curve. /// @@ -17262,19 +21394,20 @@ public: /// Informal Propositions: /// /// The value of the point parameter shall not be outside the parametric range of the curve. -class IFC_PARSE_API IfcPointOnCurve : public IfcPoint { +class IFC_PARSE_API IfcPointOnCurve : public IfcPoint { public: + IfcPointOnCurve() {} + explicit IfcPointOnCurve (const std::weak_ptr& data) : IfcPoint(data) {} + /// The curve to which point parameter relates. - ::Ifc4x3_add2::IfcCurve* BasisCurve() const; - void setBasisCurve(::Ifc4x3_add2::IfcCurve* v); + ::Ifc4x3_add2::IfcCurve BasisCurve() const; + void setBasisCurve(const ::Ifc4x3_add2::IfcCurve& v); /// The parameter value of the point location. double PointParameter() const; - void setPointParameter(double v); - virtual const IfcParse::entity& declaration() const; + void setPointParameter(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPointOnCurve (IfcEntityInstanceData&& e); - IfcPointOnCurve (::Ifc4x3_add2::IfcCurve* v1_BasisCurve, double v2_PointParameter); - typedef aggregate_of< IfcPointOnCurve > list; + // IfcPointOnCurve (::Ifc4x3_add2::IfcCurve v1_BasisCurve, double v2_PointParameter); }; /// Definition from ISO/CD 10303-42:1992: A point on surface is a point which lies on a parametric surface. The point is determined by evaluating the surface at a particular pair of parameter values. /// @@ -17285,22 +21418,23 @@ public: /// Informal Propositions: /// /// The parametric values specified for u and v shall not be outside the parametric range of the basis surface. -class IFC_PARSE_API IfcPointOnSurface : public IfcPoint { +class IFC_PARSE_API IfcPointOnSurface : public IfcPoint { public: + IfcPointOnSurface() {} + explicit IfcPointOnSurface (const std::weak_ptr& data) : IfcPoint(data) {} + /// The surface to which the parameter values relate. - ::Ifc4x3_add2::IfcSurface* BasisSurface() const; - void setBasisSurface(::Ifc4x3_add2::IfcSurface* v); + ::Ifc4x3_add2::IfcSurface BasisSurface() const; + void setBasisSurface(const ::Ifc4x3_add2::IfcSurface& v); /// The first parameter value of the point location. double PointParameterU() const; - void setPointParameterU(double v); + void setPointParameterU(const double& v); /// The second parameter value of the point location. double PointParameterV() const; - void setPointParameterV(double v); - virtual const IfcParse::entity& declaration() const; + void setPointParameterV(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPointOnSurface (IfcEntityInstanceData&& e); - IfcPointOnSurface (::Ifc4x3_add2::IfcSurface* v1_BasisSurface, double v2_PointParameterU, double v3_PointParameterV); - typedef aggregate_of< IfcPointOnSurface > list; + // IfcPointOnSurface (::Ifc4x3_add2::IfcSurface v1_BasisSurface, double v2_PointParameterU, double v3_PointParameterV); }; /// Definition from ISO/CD 10303-42:1992: A /// poly loop is a loop with straight edges bounding a planar region in @@ -17341,16 +21475,17 @@ public: /// /// All the points in the polygon defining the poly loop shall be coplanar. /// The first and the last Polygon shall be different by value. -class IFC_PARSE_API IfcPolyLoop : public IfcLoop { +class IFC_PARSE_API IfcPolyLoop : public IfcLoop { public: + IfcPolyLoop() {} + explicit IfcPolyLoop (const std::weak_ptr& data) : IfcLoop(data) {} + /// List of points defining the loop. There are no repeated points in the list. - aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr Polygon() const; - void setPolygon(aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcCartesianPoint > Polygon() const; + void setPolygon(const std::vector< ::Ifc4x3_add2::IfcCartesianPoint >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPolyLoop (IfcEntityInstanceData&& e); - IfcPolyLoop (aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v1_Polygon); - typedef aggregate_of< IfcPolyLoop > list; + // IfcPolyLoop (std::vector< ::Ifc4x3_add2::IfcCartesianPoint > v1_Polygon); }; /// The polygonal bounded /// half space is a special subtype of a half space solid, where the @@ -17408,21 +21543,22 @@ public: /// bounds the effectiveness of the half space in Boolean expressions. The BaseSurface /// is defined by a plane, and the normal of the plane together with the AgreementFlag /// defines the side of the material of the half space. -class IFC_PARSE_API IfcPolygonalBoundedHalfSpace : public IfcHalfSpaceSolid { +class IFC_PARSE_API IfcPolygonalBoundedHalfSpace : public IfcHalfSpaceSolid { public: + IfcPolygonalBoundedHalfSpace() {} + explicit IfcPolygonalBoundedHalfSpace (const std::weak_ptr& data) : IfcHalfSpaceSolid(data) {} + /// Definition of the position coordinate system for the bounding polyline and the base surface. - ::Ifc4x3_add2::IfcAxis2Placement3D* Position() const; - void setPosition(::Ifc4x3_add2::IfcAxis2Placement3D* v); + ::Ifc4x3_add2::IfcAxis2Placement3D Position() const; + void setPosition(const ::Ifc4x3_add2::IfcAxis2Placement3D& v); /// Two-dimensional polyline bounded curve, defined in the xy plane of the position coordinate system. /// /// IFC2x Edition 3 CHANGE  The attribute type has been changed from IfcPolyline to its supertype IfcBoundedCurve with upward compatibility for file based exchange. - ::Ifc4x3_add2::IfcBoundedCurve* PolygonalBoundary() const; - void setPolygonalBoundary(::Ifc4x3_add2::IfcBoundedCurve* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcBoundedCurve PolygonalBoundary() const; + void setPolygonalBoundary(const ::Ifc4x3_add2::IfcBoundedCurve& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPolygonalBoundedHalfSpace (IfcEntityInstanceData&& e); - IfcPolygonalBoundedHalfSpace (::Ifc4x3_add2::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag, ::Ifc4x3_add2::IfcAxis2Placement3D* v3_Position, ::Ifc4x3_add2::IfcBoundedCurve* v4_PolygonalBoundary); - typedef aggregate_of< IfcPolygonalBoundedHalfSpace > list; + // IfcPolygonalBoundedHalfSpace (::Ifc4x3_add2::IfcSurface v1_BaseSurface, bool v2_AgreementFlag, ::Ifc4x3_add2::IfcAxis2Placement3D v3_Position, ::Ifc4x3_add2::IfcBoundedCurve v4_PolygonalBoundary); }; /// A pre defined item is a qualified name given to a style or font which is determined within the data exchange specification by convention on using the Name attribute value (in contrary to externally defined items, which are agreed by an external source). /// @@ -17431,25 +21567,27 @@ public: /// NOTE  Corresponding ISO 10303 name: pre_defined_item. Please refer to ISO/IS 10303-41:1994, page 137 for the final definition of the formal standard. /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcPreDefinedItem : public IfcPresentationItem { +class IFC_PARSE_API IfcPreDefinedItem : public IfcPresentationItem { public: + IfcPreDefinedItem() {} + explicit IfcPreDefinedItem (const std::weak_ptr& data) : IfcPresentationItem(data) {} + /// The string by which the pre defined item is identified. Allowable values for the string are declared at the level of subtypes. std::string Name() const; - void setName(std::string v); - virtual const IfcParse::entity& declaration() const; + void setName(const std::string& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPreDefinedItem (IfcEntityInstanceData&& e); - IfcPreDefinedItem (std::string v1_Name); - typedef aggregate_of< IfcPreDefinedItem > list; + // IfcPreDefinedItem (std::string v1_Name); }; -class IFC_PARSE_API IfcPreDefinedProperties : public IfcPropertyAbstraction { +class IFC_PARSE_API IfcPreDefinedProperties : public IfcPropertyAbstraction { public: - virtual const IfcParse::entity& declaration() const; + IfcPreDefinedProperties() {} + explicit IfcPreDefinedProperties (const std::weak_ptr& data) : IfcPropertyAbstraction(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPreDefinedProperties (IfcEntityInstanceData&& e); - IfcPreDefinedProperties (); - typedef aggregate_of< IfcPreDefinedProperties > list; + // IfcPreDefinedProperties (); }; /// The pre defined text font determines those qualified names which can be used for fonts that are in scope of the current data exchange specification (in contrary to externally defined text fonts). There are two choices: /// @@ -17462,13 +21600,14 @@ public: /// HISTORY  New entity in IFC2x2. /// /// IFC2x3 CHANGE  The IfcTextStyleFontModel has been added as new subtype. -class IFC_PARSE_API IfcPreDefinedTextFont : public IfcPreDefinedItem, public IfcTextFontSelect { +class IFC_PARSE_API IfcPreDefinedTextFont : public IfcPreDefinedItem { public: - virtual const IfcParse::entity& declaration() const; + IfcPreDefinedTextFont() {} + explicit IfcPreDefinedTextFont (const std::weak_ptr& data) : IfcPreDefinedItem(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPreDefinedTextFont (IfcEntityInstanceData&& e); - IfcPreDefinedTextFont (std::string v1_Name); - typedef aggregate_of< IfcPreDefinedTextFont > list; + // IfcPreDefinedTextFont (std::string v1_Name); }; /// The IfcProductDefinitionShape defines all shape relevant information about an IfcProduct. It allows for multiple geometric shape representations of the same product. The shape relevant information includes: /// @@ -17482,15 +21621,16 @@ public: /// NOTE  The definition of this entity relates to the ISO 10303 entity product_definition_shape. Please refer to ISO/IS 10303-41:1994 for the final definition of the formal standard. /// /// HISTORY  New Entity in IFC Release 1.5 -class IFC_PARSE_API IfcProductDefinitionShape : public IfcProductRepresentation, public IfcProductRepresentationSelect { +class IFC_PARSE_API IfcProductDefinitionShape : public IfcProductRepresentation { public: - aggregate_of< IfcProduct >::ptr ShapeOfProduct() const; // INVERSE IfcProduct::Representation - aggregate_of< IfcShapeAspect >::ptr HasShapeAspects() const; // INVERSE IfcShapeAspect::PartOfProductDefinitionShape - virtual const IfcParse::entity& declaration() const; + IfcProductDefinitionShape() {} + explicit IfcProductDefinitionShape (const std::weak_ptr& data) : IfcProductRepresentation(data) {} + + std::vector< IfcProduct > ShapeOfProduct() const; // INVERSE IfcProduct::Representation + std::vector< IfcShapeAspect > 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, aggregate_of< ::Ifc4x3_add2::IfcRepresentation >::ptr v3_Representations); - typedef aggregate_of< IfcProductDefinitionShape > list; + // IfcProductDefinitionShape (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcRepresentation > v3_Representations); }; /// This is a collection of properties applicable to section profile definitions. /// @@ -17503,38 +21643,40 @@ public: /// HISTORY  New entity in IFC2x2. /// /// IFC2x4 CHANGE  Entity made non-abstract. Subtypes IfcGeneralProfileProperties, IfcStructuralProfileProperties, and IfcStructuralSteelProfileProperties deleted. Attribute ProfileName deleted, use ProfileDefinition.ProfileName instead. Attribute ProfileDefinition made mandatory. Attributes Name, Description, and HasProperties added. -class IFC_PARSE_API IfcProfileProperties : public IfcExtendedProperties { +class IFC_PARSE_API IfcProfileProperties : public IfcExtendedProperties { public: + IfcProfileProperties() {} + explicit IfcProfileProperties (const std::weak_ptr& data) : IfcExtendedProperties(data) {} + /// Profile definition which is qualified by these properties. - ::Ifc4x3_add2::IfcProfileDef* ProfileDefinition() const; - void setProfileDefinition(::Ifc4x3_add2::IfcProfileDef* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcProfileDef ProfileDefinition() const; + void setProfileDefinition(const ::Ifc4x3_add2::IfcProfileDef& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProfileProperties (IfcEntityInstanceData&& e); - IfcProfileProperties (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v3_Properties, ::Ifc4x3_add2::IfcProfileDef* v4_ProfileDefinition); - typedef aggregate_of< IfcProfileProperties > list; + // IfcProfileProperties (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcProperty > v3_Properties, ::Ifc4x3_add2::IfcProfileDef v4_ProfileDefinition); }; /// IfcProperty is an abstract generalization for all types of properties that can be associated with IFC objects through the property set mechanism. /// /// HISTORY  New entity in IFC Release 1.0. -class IFC_PARSE_API IfcProperty : public IfcPropertyAbstraction { +class IFC_PARSE_API IfcProperty : public IfcPropertyAbstraction { public: + IfcProperty() {} + explicit IfcProperty (const std::weak_ptr& data) : IfcPropertyAbstraction(data) {} + /// Name for this property. This label is the significant name string that defines the semantic meaning for the property. std::string Name() const; - void setName(std::string v); - boost::optional< std::string > Specification() const; - void setSpecification(boost::optional< std::string > v); - aggregate_of< IfcPropertySet >::ptr PartOfPset() const; // INVERSE IfcPropertySet::HasProperties - aggregate_of< IfcPropertyDependencyRelationship >::ptr PropertyForDependance() const; // INVERSE IfcPropertyDependencyRelationship::DependingProperty - aggregate_of< IfcPropertyDependencyRelationship >::ptr PropertyDependsOn() const; // INVERSE IfcPropertyDependencyRelationship::DependantProperty - aggregate_of< IfcComplexProperty >::ptr PartOfComplex() const; // INVERSE IfcComplexProperty::HasProperties - aggregate_of< IfcResourceConstraintRelationship >::ptr HasConstraints() const; // INVERSE IfcResourceConstraintRelationship::RelatedResourceObjects - aggregate_of< IfcResourceApprovalRelationship >::ptr HasApprovals() const; // INVERSE IfcResourceApprovalRelationship::RelatedResourceObjects - virtual const IfcParse::entity& declaration() const; + void setName(const std::string& v); + std::optional< std::string > Specification() const; + void setSpecification(const std::optional< std::string >& v); + std::vector< IfcPropertySet > PartOfPset() const; // INVERSE IfcPropertySet::HasProperties + std::vector< IfcPropertyDependencyRelationship > PropertyForDependance() const; // INVERSE IfcPropertyDependencyRelationship::DependingProperty + std::vector< IfcPropertyDependencyRelationship > PropertyDependsOn() const; // INVERSE IfcPropertyDependencyRelationship::DependantProperty + std::vector< IfcComplexProperty > PartOfComplex() const; // INVERSE IfcComplexProperty::HasProperties + std::vector< IfcResourceConstraintRelationship > HasConstraints() const; // INVERSE IfcResourceConstraintRelationship::RelatedResourceObjects + std::vector< IfcResourceApprovalRelationship > HasApprovals() const; // INVERSE IfcResourceApprovalRelationship::RelatedResourceObjects + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProperty (IfcEntityInstanceData&& e); - IfcProperty (std::string v1_Name, boost::optional< std::string > v2_Specification); - typedef aggregate_of< IfcProperty > list; + // IfcProperty (std::string v1_Name, std::optional< std::string > v2_Specification); }; /// IfcPropertyDefinition defines the generalization of /// all characteristics (i.e. a grouping of individual properties), @@ -17586,15 +21728,16 @@ public: /// Subtypes are included in more specific relationships, see /// IfcPropertySetDefinition and /// IfcPropertyTemplateDefinition for details. -class IFC_PARSE_API IfcPropertyDefinition : public IfcRoot, public IfcDefinitionSelect { +class IFC_PARSE_API IfcPropertyDefinition : public IfcRoot { public: - aggregate_of< IfcRelDeclares >::ptr HasContext() const; // INVERSE IfcRelDeclares::RelatedDefinitions - aggregate_of< IfcRelAssociates >::ptr HasAssociations() const; // INVERSE IfcRelAssociates::RelatedObjects - virtual const IfcParse::entity& declaration() const; + IfcPropertyDefinition() {} + explicit IfcPropertyDefinition (const std::weak_ptr& data) : IfcRoot(data) {} + + std::vector< IfcRelDeclares > HasContext() const; // INVERSE IfcRelDeclares::RelatedDefinitions + std::vector< IfcRelAssociates > HasAssociations() const; // INVERSE IfcRelAssociates::RelatedObjects + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPropertyDefinition (IfcEntityInstanceData&& e); - IfcPropertyDefinition (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description); - typedef aggregate_of< IfcPropertyDefinition > list; + // IfcPropertyDefinition (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description); }; /// An IfcPropertyDependencyRelationship describes an identified dependency between the value of one property and that of another. /// @@ -17604,22 +21747,23 @@ public: /// /// Use Definition /// Whilst the IfcPropertyDependencyRelationship may be used to describe the dependency, and it may do so in terms of the expression of how the dependency operates, it is not possible through the current IFC model for the value of the related property to be actually derived from the value of the relating property. The determination of value according to the dependency is required to be performed by an application that can then use the Expression attribute to flag the form of the dependency. -class IFC_PARSE_API IfcPropertyDependencyRelationship : public IfcResourceLevelRelationship { +class IFC_PARSE_API IfcPropertyDependencyRelationship : public IfcResourceLevelRelationship { public: + IfcPropertyDependencyRelationship() {} + explicit IfcPropertyDependencyRelationship (const std::weak_ptr& data) : IfcResourceLevelRelationship(data) {} + /// The property on which the relationship depends. - ::Ifc4x3_add2::IfcProperty* DependingProperty() const; - void setDependingProperty(::Ifc4x3_add2::IfcProperty* v); + ::Ifc4x3_add2::IfcProperty DependingProperty() const; + void setDependingProperty(const ::Ifc4x3_add2::IfcProperty& v); /// The dependant property. - ::Ifc4x3_add2::IfcProperty* DependantProperty() const; - void setDependantProperty(::Ifc4x3_add2::IfcProperty* v); + ::Ifc4x3_add2::IfcProperty DependantProperty() const; + void setDependantProperty(const ::Ifc4x3_add2::IfcProperty& v); /// Expression that further describes the nature of the dependency relation. - boost::optional< std::string > Expression() const; - void setExpression(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Expression() const; + void setExpression(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPropertyDependencyRelationship (IfcEntityInstanceData&& e); - IfcPropertyDependencyRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcProperty* v3_DependingProperty, ::Ifc4x3_add2::IfcProperty* v4_DependantProperty, boost::optional< std::string > v5_Expression); - typedef aggregate_of< IfcPropertyDependencyRelationship > list; + // IfcPropertyDependencyRelationship (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcProperty v3_DependingProperty, ::Ifc4x3_add2::IfcProperty v4_DependantProperty, std::optional< std::string > v5_Expression); }; /// IfcPropertySetDefinition is a generalization of all /// individual property sets that can be assigned to an object or type @@ -17663,16 +21807,17 @@ public: /// with all included properties, to the object occurrence. /// /// NOTE  Properties assigned to object occurrences may override properties assigned to the object type. See IfcRelDefinesByType for further information. -class IFC_PARSE_API IfcPropertySetDefinition : public IfcPropertyDefinition, public IfcPropertySetDefinitionSelect { +class IFC_PARSE_API IfcPropertySetDefinition : public IfcPropertyDefinition { public: - aggregate_of< IfcTypeObject >::ptr DefinesType() const; // INVERSE IfcTypeObject::HasPropertySets - aggregate_of< IfcRelDefinesByTemplate >::ptr IsDefinedBy() const; // INVERSE IfcRelDefinesByTemplate::RelatedPropertySets - aggregate_of< IfcRelDefinesByProperties >::ptr DefinesOccurrence() const; // INVERSE IfcRelDefinesByProperties::RelatingPropertyDefinition - virtual const IfcParse::entity& declaration() const; + IfcPropertySetDefinition() {} + explicit IfcPropertySetDefinition (const std::weak_ptr& data) : IfcPropertyDefinition(data) {} + + std::vector< IfcTypeObject > DefinesType() const; // INVERSE IfcTypeObject::HasPropertySets + std::vector< IfcRelDefinesByTemplate > IsDefinedBy() const; // INVERSE IfcRelDefinesByTemplate::RelatedPropertySets + std::vector< IfcRelDefinesByProperties > DefinesOccurrence() const; // INVERSE IfcRelDefinesByProperties::RelatingPropertyDefinition + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPropertySetDefinition (IfcEntityInstanceData&& e); - IfcPropertySetDefinition (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description); - typedef aggregate_of< IfcPropertySetDefinition > list; + // IfcPropertySetDefinition (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description); }; /// IfcPropertyTemplateDefinition is a generalization of /// all property and property set templates. Templates define the @@ -17699,22 +21844,24 @@ public: /// using the inherited HasContext inverse attribute. /// /// HISTORY  New Entity in IFC2x4. -class IFC_PARSE_API IfcPropertyTemplateDefinition : public IfcPropertyDefinition { +class IFC_PARSE_API IfcPropertyTemplateDefinition : public IfcPropertyDefinition { public: - virtual const IfcParse::entity& declaration() const; + IfcPropertyTemplateDefinition() {} + explicit IfcPropertyTemplateDefinition (const std::weak_ptr& data) : IfcPropertyDefinition(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPropertyTemplateDefinition (IfcEntityInstanceData&& e); - IfcPropertyTemplateDefinition (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description); - typedef aggregate_of< IfcPropertyTemplateDefinition > list; + // IfcPropertyTemplateDefinition (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description); }; -class IFC_PARSE_API IfcQuantitySet : public IfcPropertySetDefinition { +class IFC_PARSE_API IfcQuantitySet : public IfcPropertySetDefinition { public: - virtual const IfcParse::entity& declaration() const; + IfcQuantitySet() {} + explicit IfcQuantitySet (const std::weak_ptr& data) : IfcPropertySetDefinition(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcQuantitySet (IfcEntityInstanceData&& e); - IfcQuantitySet (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description); - typedef aggregate_of< IfcQuantitySet > list; + // IfcQuantitySet (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description); }; /// IfcRectangleProfileDef defines a rectangle as the profile definition used by the swept surface geometry or the swept area solid. It is given by its X extent and its Y extent, and placed within the 2D position coordinate system, established by the Position attribute. It is placed centric within the position coordinate system. /// @@ -17750,69 +21897,72 @@ public: /// rectangle (half along the positive y-axis). /// /// Figure 323 — Rectangle profile -class IFC_PARSE_API IfcRectangleProfileDef : public IfcParameterizedProfileDef { +class IFC_PARSE_API IfcRectangleProfileDef : public IfcParameterizedProfileDef { public: + IfcRectangleProfileDef() {} + explicit IfcRectangleProfileDef (const std::weak_ptr& data) : IfcParameterizedProfileDef(data) {} + /// The extent of the rectangle in the direction of the x-axis. double XDim() const; - void setXDim(double v); + void setXDim(const double& v); /// The extent of the rectangle in the direction of the y-axis. double YDim() const; - void setYDim(double v); - virtual const IfcParse::entity& declaration() const; + void setYDim(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRectangleProfileDef (IfcEntityInstanceData&& e); - IfcRectangleProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim); - typedef aggregate_of< IfcRectangleProfileDef > list; + // IfcRectangleProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_XDim, double v5_YDim); }; /// In a regular time series, the data arrives predictably at predefined intervals. In a regular time series there is no need to store multiple time stamps and the algorithms for analyzing the time series are therefore significantly simpler. Using the start time provided in the supertype, the time step is used to identify the frequency of the occurrences of the list of values. /// /// EXAMPLE: A smoke detector samples the concentration of particulates in a space at a fixed rate (for example, every six seconds); a control system measures the outside air temperature every hour. /// /// HISTORY: New entity in IFC 2x2. -class IFC_PARSE_API IfcRegularTimeSeries : public IfcTimeSeries { +class IFC_PARSE_API IfcRegularTimeSeries : public IfcTimeSeries { public: + IfcRegularTimeSeries() {} + explicit IfcRegularTimeSeries (const std::weak_ptr& data) : IfcTimeSeries(data) {} + /// A duration of time intervals between values. double TimeStep() const; - void setTimeStep(double v); + void setTimeStep(const double& v); /// The collection of time series values. - aggregate_of< ::Ifc4x3_add2::IfcTimeSeriesValue >::ptr Values() const; - void setValues(aggregate_of< ::Ifc4x3_add2::IfcTimeSeriesValue >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcTimeSeriesValue > Values() const; + void setValues(const std::vector< ::Ifc4x3_add2::IfcTimeSeriesValue >& 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, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_add2::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcUnit* v8_Unit, double v9_TimeStep, aggregate_of< ::Ifc4x3_add2::IfcTimeSeriesValue >::ptr v10_Values); - typedef aggregate_of< IfcRegularTimeSeries > list; + // IfcRegularTimeSeries (std::string v1_Name, std::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_add2::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_add2::IfcDataOriginEnum::Value v6_DataOrigin, std::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_add2::IfcUnit v8_Unit, double v9_TimeStep, std::vector< ::Ifc4x3_add2::IfcTimeSeriesValue > v10_Values); }; /// IfcReinforcementProperties defines the set of properties for a specific combination of reinforcement bar steel grade, bar type and effective depth. /// /// HISTORY  New entity in IFC2x2. /// /// The total cross section area for the specific steel grade is always provided. Additionally also general reinforcing bar configurations as a count of bars may be provided as defined in attribute BarCount. In this case the nominal bar diameter should be identical for all given bars as defined in attribute NominalBarDiameter. -class IFC_PARSE_API IfcReinforcementBarProperties : public IfcPreDefinedProperties { +class IFC_PARSE_API IfcReinforcementBarProperties : public IfcPreDefinedProperties { public: + IfcReinforcementBarProperties() {} + explicit IfcReinforcementBarProperties (const std::weak_ptr& data) : IfcPreDefinedProperties(data) {} + /// The total effective cross-section area of the reinforcement of a specific steel grade. double TotalCrossSectionArea() const; - void setTotalCrossSectionArea(double v); + void setTotalCrossSectionArea(const double& v); /// The nominal steel grade defined according to local standards. std::string SteelGrade() const; - void setSteelGrade(std::string v); + void setSteelGrade(const std::string& v); /// Indicator for whether the bar surface is plain or textured. - boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > BarSurface() const; - void setBarSurface(boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > BarSurface() const; + void setBarSurface(const std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value >& v); /// The effective depth, i.e. the distance of the specific reinforcement cross section area or reinforcement configuration in a row, counted from a common specific reference point. Usually the reference point is the upper surface (for beams and slabs) or a similar projection in a plane (for columns). - boost::optional< double > EffectiveDepth() const; - void setEffectiveDepth(boost::optional< double > v); + std::optional< double > EffectiveDepth() const; + void setEffectiveDepth(const std::optional< double >& v); /// The nominal diameter defining the cross-section size of the reinforcing bar. The bar diameter should be identical for all bars included in the specific reinforcement configuration. - boost::optional< double > NominalBarDiameter() const; - void setNominalBarDiameter(boost::optional< double > v); + std::optional< double > NominalBarDiameter() const; + void setNominalBarDiameter(const std::optional< double >& v); /// The number of bars with identical nominal diameter and steel grade included in the specific reinforcement configuration. - boost::optional< int > BarCount() const; - void setBarCount(boost::optional< int > v); - virtual const IfcParse::entity& declaration() const; + std::optional< int > BarCount() const; + void setBarCount(const std::optional< int >& 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< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v3_BarSurface, boost::optional< double > v4_EffectiveDepth, boost::optional< double > v5_NominalBarDiameter, boost::optional< int > v6_BarCount); - typedef aggregate_of< IfcReinforcementBarProperties > list; + // IfcReinforcementBarProperties (double v1_TotalCrossSectionArea, std::string v2_SteelGrade, std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v3_BarSurface, std::optional< double > v4_EffectiveDepth, std::optional< double > v5_NominalBarDiameter, std::optional< int > v6_BarCount); }; /// IfcRelationship is the abstract generalization of all objectified relationships in IFC. Objectified relationships are the preferred way to handle relationships among objects. This allows to keep relationship specific properties directly at the relationship and opens the possibility to later handle relationship specific behavior. /// @@ -17822,13 +21972,14 @@ public: /// In case of the 1-to-many relationship, the related side of the relationship shall be an aggregate SET 1:N /// /// HISTORY: New entity in IFC Release 1.0. -class IFC_PARSE_API IfcRelationship : public IfcRoot { +class IFC_PARSE_API IfcRelationship : public IfcRoot { public: - virtual const IfcParse::entity& declaration() const; + IfcRelationship() {} + explicit IfcRelationship (const std::weak_ptr& data) : IfcRoot(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelationship (IfcEntityInstanceData&& e); - IfcRelationship (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description); - typedef aggregate_of< IfcRelationship > list; + // IfcRelationship (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description); }; /// An IfcResourceApprovalRelationship is used for /// associating an approval to resource objects. A single approval @@ -17836,19 +21987,20 @@ public: /// /// HISTORY  New /// Entity in IFC Release 2x4 -class IFC_PARSE_API IfcResourceApprovalRelationship : public IfcResourceLevelRelationship { +class IFC_PARSE_API IfcResourceApprovalRelationship : public IfcResourceLevelRelationship { public: + IfcResourceApprovalRelationship() {} + explicit IfcResourceApprovalRelationship (const std::weak_ptr& data) : IfcResourceLevelRelationship(data) {} + /// Resource objects that are approved. - aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr RelatedResourceObjects() const; - void setRelatedResourceObjects(aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr v); + std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect > RelatedResourceObjects() const; + void setRelatedResourceObjects(const std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect >& v); /// The approval for the resource objects selected. - ::Ifc4x3_add2::IfcApproval* RelatingApproval() const; - void setRelatingApproval(::Ifc4x3_add2::IfcApproval* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcApproval RelatingApproval() const; + void setRelatingApproval(const ::Ifc4x3_add2::IfcApproval& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcResourceApprovalRelationship (IfcEntityInstanceData&& e); - IfcResourceApprovalRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr v3_RelatedResourceObjects, ::Ifc4x3_add2::IfcApproval* v4_RelatingApproval); - typedef aggregate_of< IfcResourceApprovalRelationship > list; + // IfcResourceApprovalRelationship (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect > v3_RelatedResourceObjects, ::Ifc4x3_add2::IfcApproval v4_RelatingApproval); }; /// An IfcResourceConstraintRelationship is a relationship /// entity that enables a constraint to be related to one or more @@ -17870,74 +22022,76 @@ public: /// Figure 238 shows how a constraint may be applied to a property within a property set. For simplicity, only the mandatory attributes are shown as asserted. It shows how a property 'ThingWeight' which has a nominal value of 19.5 kg has two constraints that are logically aggregated by an AND connection. One of the constraints has a benchmark of 'GREATERTHANOREQUALTO' whilst the second has a benchmark of 'LESSTHANOREQUALTO'. This means that the constraint must lie between these two bounding values. The relating constraint is instantiated as an objective named as 'Weight Constraint' and qualified as a SPECIFICATION constraint. The two related constraints are both specified as metrics since they can have specific values. /// /// Figure 238 — Resource constraint relationship -class IFC_PARSE_API IfcResourceConstraintRelationship : public IfcResourceLevelRelationship { +class IFC_PARSE_API IfcResourceConstraintRelationship : public IfcResourceLevelRelationship { public: + IfcResourceConstraintRelationship() {} + explicit IfcResourceConstraintRelationship (const std::weak_ptr& data) : IfcResourceLevelRelationship(data) {} + /// The constraint that is to be related. - ::Ifc4x3_add2::IfcConstraint* RelatingConstraint() const; - void setRelatingConstraint(::Ifc4x3_add2::IfcConstraint* v); + ::Ifc4x3_add2::IfcConstraint RelatingConstraint() const; + void setRelatingConstraint(const ::Ifc4x3_add2::IfcConstraint& v); /// The properties to which a constraint is to be related. - aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr RelatedResourceObjects() const; - void setRelatedResourceObjects(aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect > RelatedResourceObjects() const; + void setRelatedResourceObjects(const std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcResourceConstraintRelationship (IfcEntityInstanceData&& e); - IfcResourceConstraintRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcConstraint* v3_RelatingConstraint, aggregate_of< ::Ifc4x3_add2::IfcResourceObjectSelect >::ptr v4_RelatedResourceObjects); - typedef aggregate_of< IfcResourceConstraintRelationship > list; + // IfcResourceConstraintRelationship (std::optional< std::string > v1_Name, std::optional< std::string > v2_Description, ::Ifc4x3_add2::IfcConstraint v3_RelatingConstraint, std::vector< ::Ifc4x3_add2::IfcResourceObjectSelect > v4_RelatedResourceObjects); }; /// IfcResourceTime captures the time-related information about a construction resource. /// HISTORY: New entity in IFC2x4. -class IFC_PARSE_API IfcResourceTime : public IfcSchedulingTime { +class IFC_PARSE_API IfcResourceTime : public IfcSchedulingTime { public: + IfcResourceTime() {} + explicit IfcResourceTime (const std::weak_ptr& data) : IfcSchedulingTime(data) {} + /// Indicates the total work (e.g. person-hours) allocated to the task on behalf of the resource. /// Note: this is not necessarily the same as the task duration (IfcTaskTime.ScheduleDuration); it may vary according to the resource usage ratio and other resources assigned to the task. - boost::optional< std::string > ScheduleWork() const; - void setScheduleWork(boost::optional< std::string > v); + std::optional< std::string > ScheduleWork() const; + void setScheduleWork(const std::optional< std::string >& v); /// Indicates the amount of the resource used concurrently. For example, 100% means 1 worker, 300% means 3 workers, 50% means half of 1 worker's time for scenarios where multitasking is feasible. If not provided, then the usage ratio is considered to be 100%. - boost::optional< double > ScheduleUsage() const; - void setScheduleUsage(boost::optional< double > v); + std::optional< double > ScheduleUsage() const; + void setScheduleUsage(const std::optional< double >& v); /// Indicates the time when the resource is scheduled to start working. - boost::optional< std::string > ScheduleStart() const; - void setScheduleStart(boost::optional< std::string > v); + std::optional< std::string > ScheduleStart() const; + void setScheduleStart(const std::optional< std::string >& v); /// Indicates the time when the resource is scheduled to finish working. - boost::optional< std::string > ScheduleFinish() const; - void setScheduleFinish(boost::optional< std::string > v); + std::optional< std::string > ScheduleFinish() const; + void setScheduleFinish(const std::optional< std::string >& v); /// Indicates how a resource should be leveled over time by adjusting the resource usage according to a specified curve. Standard values include: 'Flat', 'BackLoaded', 'FrontLoaded', 'DoublePeak', 'EarlyPeak', 'LatePeak', 'Bell', and 'Turtle'. Custom values may specify a custom name or formula. - boost::optional< std::string > ScheduleContour() const; - void setScheduleContour(boost::optional< std::string > v); + std::optional< std::string > ScheduleContour() const; + void setScheduleContour(const std::optional< std::string >& v); /// Indicates a delay in the ScheduleStart caused by leveling. - boost::optional< std::string > LevelingDelay() const; - void setLevelingDelay(boost::optional< std::string > v); + std::optional< std::string > LevelingDelay() const; + void setLevelingDelay(const std::optional< std::string >& v); /// Indicates that the resource is scheduled in excess of its capacity. - boost::optional< bool > IsOverAllocated() const; - void setIsOverAllocated(boost::optional< bool > v); + std::optional< bool > IsOverAllocated() const; + void setIsOverAllocated(const std::optional< bool >& v); /// Indicates the date and time for which status values are applicable; particularly completion, actual, and remaining values. If values are time-phased (the referencing IfcConstructionResource has associated time series values for attributes), then the status values may be determined from such time-phased data as of the StatusTime. - boost::optional< std::string > StatusTime() const; - void setStatusTime(boost::optional< std::string > v); + std::optional< std::string > StatusTime() const; + void setStatusTime(const std::optional< std::string >& v); /// Indicates the actual work performed by the resource as of the StatusTime. - boost::optional< std::string > ActualWork() const; - void setActualWork(boost::optional< std::string > v); + std::optional< std::string > ActualWork() const; + void setActualWork(const std::optional< std::string >& v); /// Indicates the actual amount of the resource used concurrently. - boost::optional< double > ActualUsage() const; - void setActualUsage(boost::optional< double > v); + std::optional< double > ActualUsage() const; + void setActualUsage(const std::optional< double >& v); /// Indicates the time when the resource actually started working. - boost::optional< std::string > ActualStart() const; - void setActualStart(boost::optional< std::string > v); + std::optional< std::string > ActualStart() const; + void setActualStart(const std::optional< std::string >& v); /// Indicates the time when the resource actually finished working. - boost::optional< std::string > ActualFinish() const; - void setActualFinish(boost::optional< std::string > v); + std::optional< std::string > ActualFinish() const; + void setActualFinish(const std::optional< std::string >& v); /// Indicates the work remaining to be completed by the resource. - boost::optional< std::string > RemainingWork() const; - void setRemainingWork(boost::optional< std::string > v); - boost::optional< double > RemainingUsage() const; - void setRemainingUsage(boost::optional< double > v); + std::optional< std::string > RemainingWork() const; + void setRemainingWork(const std::optional< std::string >& v); + std::optional< double > RemainingUsage() const; + void setRemainingUsage(const std::optional< double >& v); /// Indicates the percent completion of this resource. If the resource is assigned to a task, then indicates completion of the task on behalf of the resource; if the resource is partitioned into sub-allocations, then indicates overall completion of sub-allocations. - boost::optional< double > Completion() const; - void setCompletion(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > Completion() const; + void setCompletion(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcResourceTime (IfcEntityInstanceData&& e); - IfcResourceTime (boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< std::string > v4_ScheduleWork, boost::optional< double > v5_ScheduleUsage, boost::optional< std::string > v6_ScheduleStart, boost::optional< std::string > v7_ScheduleFinish, boost::optional< std::string > v8_ScheduleContour, boost::optional< std::string > v9_LevelingDelay, boost::optional< bool > v10_IsOverAllocated, boost::optional< std::string > v11_StatusTime, boost::optional< std::string > v12_ActualWork, boost::optional< double > v13_ActualUsage, boost::optional< std::string > v14_ActualStart, boost::optional< std::string > v15_ActualFinish, boost::optional< std::string > v16_RemainingWork, boost::optional< double > v17_RemainingUsage, boost::optional< double > v18_Completion); - typedef aggregate_of< IfcResourceTime > list; + // IfcResourceTime (std::optional< std::string > v1_Name, std::optional< ::Ifc4x3_add2::IfcDataOriginEnum::Value > v2_DataOrigin, std::optional< std::string > v3_UserDefinedDataOrigin, std::optional< std::string > v4_ScheduleWork, std::optional< double > v5_ScheduleUsage, std::optional< std::string > v6_ScheduleStart, std::optional< std::string > v7_ScheduleFinish, std::optional< std::string > v8_ScheduleContour, std::optional< std::string > v9_LevelingDelay, std::optional< bool > v10_IsOverAllocated, std::optional< std::string > v11_StatusTime, std::optional< std::string > v12_ActualWork, std::optional< double > v13_ActualUsage, std::optional< std::string > v14_ActualStart, std::optional< std::string > v15_ActualFinish, std::optional< std::string > v16_RemainingWork, std::optional< double > v17_RemainingUsage, std::optional< double > v18_Completion); }; /// IfcRoundedRectangleProfileDef defines a rectangle with equally rounded corners as the profile definition used by the swept surface geometry or the swept area solid. It is given by the X extent, the Y extent, and the radius for the rounded corners, and placed within the 2D position coordinate system, established by the Position attribute. It is placed centric within the position coordinate system, that is, in the center of the bounding box. /// @@ -17976,38 +22130,40 @@ public: /// of curvature in all four corners of the rectangle. /// /// Figure 324 — Rounded rectangle profile -class IFC_PARSE_API IfcRoundedRectangleProfileDef : public IfcRectangleProfileDef { +class IFC_PARSE_API IfcRoundedRectangleProfileDef : public IfcRectangleProfileDef { public: + IfcRoundedRectangleProfileDef() {} + explicit IfcRoundedRectangleProfileDef (const std::weak_ptr& data) : IfcRectangleProfileDef(data) {} + /// Radius of the circular arcs by which all four corners of the rectangle are equally rounded. double RoundingRadius() const; - void setRoundingRadius(double v); - virtual const IfcParse::entity& declaration() const; + void setRoundingRadius(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRoundedRectangleProfileDef (IfcEntityInstanceData&& e); - IfcRoundedRectangleProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim, double v6_RoundingRadius); - typedef aggregate_of< IfcRoundedRectangleProfileDef > list; + // IfcRoundedRectangleProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_XDim, double v5_YDim, double v6_RoundingRadius); }; /// IfcSectionProperties defines the cross section properties for a single longitudinal piece of a cross section. It is a special-purpose helper class for IfcSectionReinforcementProperties. /// /// HISTORY  New entity in IFC2x2. /// /// The section piece may be either uniform or tapered. In the latter case an end profile should also be provided. The start and end profiles are assumed to be of the same profile type. Generally only rectangular or circular cross section profiles are assumed to be used. -class IFC_PARSE_API IfcSectionProperties : public IfcPreDefinedProperties { +class IFC_PARSE_API IfcSectionProperties : public IfcPreDefinedProperties { public: + IfcSectionProperties() {} + explicit IfcSectionProperties (const std::weak_ptr& data) : IfcPreDefinedProperties(data) {} + /// An indicator whether a specific piece of a cross section is uniform or tapered in longitudinal direction. ::Ifc4x3_add2::IfcSectionTypeEnum::Value SectionType() const; - void setSectionType(::Ifc4x3_add2::IfcSectionTypeEnum::Value v); + void setSectionType(const ::Ifc4x3_add2::IfcSectionTypeEnum::Value& v); /// The cross section profile at the start point of the longitudinal section. - ::Ifc4x3_add2::IfcProfileDef* StartProfile() const; - void setStartProfile(::Ifc4x3_add2::IfcProfileDef* v); + ::Ifc4x3_add2::IfcProfileDef StartProfile() const; + void setStartProfile(const ::Ifc4x3_add2::IfcProfileDef& v); /// The cross section profile at the end point of the longitudinal section. - ::Ifc4x3_add2::IfcProfileDef* EndProfile() const; - void setEndProfile(::Ifc4x3_add2::IfcProfileDef* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcProfileDef EndProfile() const; + void setEndProfile(const ::Ifc4x3_add2::IfcProfileDef& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSectionProperties (IfcEntityInstanceData&& e); - IfcSectionProperties (::Ifc4x3_add2::IfcSectionTypeEnum::Value v1_SectionType, ::Ifc4x3_add2::IfcProfileDef* v2_StartProfile, ::Ifc4x3_add2::IfcProfileDef* v3_EndProfile); - typedef aggregate_of< IfcSectionProperties > list; + // IfcSectionProperties (::Ifc4x3_add2::IfcSectionTypeEnum::Value v1_SectionType, ::Ifc4x3_add2::IfcProfileDef v2_StartProfile, ::Ifc4x3_add2::IfcProfileDef v3_EndProfile); }; /// IfcSectionReinforcementProperties defines the cross section properties of reinforcement for a single longitudinal piece of a cross section with a specific reinforcement usage type. /// @@ -18016,31 +22172,32 @@ public: /// Several sets of cross section reinforcement properties represented by instances of IfcReinforcementProperties may be attached to the section reinforcement properties /// (IfcReinforcementDefinitionProperties of IfcStructuralElementsDomain schema), /// one for each combination of steel grades and reinforcement bar types and sizes. -class IFC_PARSE_API IfcSectionReinforcementProperties : public IfcPreDefinedProperties { +class IFC_PARSE_API IfcSectionReinforcementProperties : public IfcPreDefinedProperties { public: + IfcSectionReinforcementProperties() {} + explicit IfcSectionReinforcementProperties (const std::weak_ptr& data) : IfcPreDefinedProperties(data) {} + /// The start position in longitudinal direction for the section reinforcement properties. double LongitudinalStartPosition() const; - void setLongitudinalStartPosition(double v); + void setLongitudinalStartPosition(const double& v); /// The end position in longitudinal direction for the section reinforcement properties. double LongitudinalEndPosition() const; - void setLongitudinalEndPosition(double v); + void setLongitudinalEndPosition(const double& v); /// The position for the section reinforcement properties in transverse direction. - boost::optional< double > TransversePosition() const; - void setTransversePosition(boost::optional< double > v); + std::optional< double > TransversePosition() const; + void setTransversePosition(const std::optional< double >& v); /// The role, purpose or usage of the reinforcement, i.e. the kind of loads and stresses it is intended to carry, defined for the section reinforcement properties. ::Ifc4x3_add2::IfcReinforcingBarRoleEnum::Value ReinforcementRole() const; - void setReinforcementRole(::Ifc4x3_add2::IfcReinforcingBarRoleEnum::Value v); + void setReinforcementRole(const ::Ifc4x3_add2::IfcReinforcingBarRoleEnum::Value& v); /// Definition of the cross section profile and longitudinal section type. - ::Ifc4x3_add2::IfcSectionProperties* SectionDefinition() const; - void setSectionDefinition(::Ifc4x3_add2::IfcSectionProperties* v); + ::Ifc4x3_add2::IfcSectionProperties SectionDefinition() const; + void setSectionDefinition(const ::Ifc4x3_add2::IfcSectionProperties& v); /// The set of reinforcment properties attached to a section reinforcement properties definition. - aggregate_of< ::Ifc4x3_add2::IfcReinforcementBarProperties >::ptr CrossSectionReinforcementDefinitions() const; - void setCrossSectionReinforcementDefinitions(aggregate_of< ::Ifc4x3_add2::IfcReinforcementBarProperties >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcReinforcementBarProperties > CrossSectionReinforcementDefinitions() const; + void setCrossSectionReinforcementDefinitions(const std::vector< ::Ifc4x3_add2::IfcReinforcementBarProperties >& 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, ::Ifc4x3_add2::IfcReinforcingBarRoleEnum::Value v4_ReinforcementRole, ::Ifc4x3_add2::IfcSectionProperties* v5_SectionDefinition, aggregate_of< ::Ifc4x3_add2::IfcReinforcementBarProperties >::ptr v6_CrossSectionReinforcementDefinitions); - typedef aggregate_of< IfcSectionReinforcementProperties > list; + // IfcSectionReinforcementProperties (double v1_LongitudinalStartPosition, double v2_LongitudinalEndPosition, std::optional< double > v3_TransversePosition, ::Ifc4x3_add2::IfcReinforcingBarRoleEnum::Value v4_ReinforcementRole, ::Ifc4x3_add2::IfcSectionProperties v5_SectionDefinition, std::vector< ::Ifc4x3_add2::IfcReinforcementBarProperties > v6_CrossSectionReinforcementDefinitions); }; /// Definition from ISO 10303-42:1999: A sectioned /// spine is a representation of the shape of a three dimensional @@ -18095,34 +22252,36 @@ public: /// none of the cross sections, after being placed by the cross section positions, shall intersect /// none of the cross sections, after being placed by the cross section positions, shall lie in the same plane /// the local origin of each cross section position shall lie at the beginning or end of a composite curve segment. -class IFC_PARSE_API IfcSectionedSpine : public IfcGeometricRepresentationItem { +class IFC_PARSE_API IfcSectionedSpine : public IfcGeometricRepresentationItem { public: + IfcSectionedSpine() {} + explicit IfcSectionedSpine (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// A single composite curve, that defines the spine curve. Each of the composite curve segments correspond to the part between two cross-sections. - ::Ifc4x3_add2::IfcCompositeCurve* SpineCurve() const; - void setSpineCurve(::Ifc4x3_add2::IfcCompositeCurve* v); + ::Ifc4x3_add2::IfcCompositeCurve SpineCurve() const; + void setSpineCurve(const ::Ifc4x3_add2::IfcCompositeCurve& v); /// A list of at least two cross sections, each defined within the xy plane of the position coordinate system of the cross section. The position coordinate system is given by the corresponding list CrossSectionPositions. - aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr CrossSections() const; - void setCrossSections(aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v); + std::vector< ::Ifc4x3_add2::IfcProfileDef > CrossSections() const; + void setCrossSections(const std::vector< ::Ifc4x3_add2::IfcProfileDef >& v); /// Position coordinate systems for the cross sections that form the sectioned spine. The profiles defining the cross sections are positioned within the xy plane of the corresponding position coordinate system. - aggregate_of< ::Ifc4x3_add2::IfcAxis2Placement3D >::ptr CrossSectionPositions() const; - void setCrossSectionPositions(aggregate_of< ::Ifc4x3_add2::IfcAxis2Placement3D >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcAxis2Placement3D > CrossSectionPositions() const; + void setCrossSectionPositions(const std::vector< ::Ifc4x3_add2::IfcAxis2Placement3D >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSectionedSpine (IfcEntityInstanceData&& e); - IfcSectionedSpine (::Ifc4x3_add2::IfcCompositeCurve* v1_SpineCurve, aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v2_CrossSections, aggregate_of< ::Ifc4x3_add2::IfcAxis2Placement3D >::ptr v3_CrossSectionPositions); - typedef aggregate_of< IfcSectionedSpine > list; + // IfcSectionedSpine (::Ifc4x3_add2::IfcCompositeCurve v1_SpineCurve, std::vector< ::Ifc4x3_add2::IfcProfileDef > v2_CrossSections, std::vector< ::Ifc4x3_add2::IfcAxis2Placement3D > v3_CrossSectionPositions); }; -class IFC_PARSE_API IfcSegment : public IfcGeometricRepresentationItem { +class IFC_PARSE_API IfcSegment : public IfcGeometricRepresentationItem { public: + IfcSegment() {} + explicit IfcSegment (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + ::Ifc4x3_add2::IfcTransitionCode::Value Transition() const; - void setTransition(::Ifc4x3_add2::IfcTransitionCode::Value v); - aggregate_of< IfcCompositeCurve >::ptr UsingCurves() const; // INVERSE IfcCompositeCurve::Segments - virtual const IfcParse::entity& declaration() const; + void setTransition(const ::Ifc4x3_add2::IfcTransitionCode::Value& v); + std::vector< IfcCompositeCurve > UsingCurves() const; // INVERSE IfcCompositeCurve::Segments + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSegment (IfcEntityInstanceData&& e); - IfcSegment (::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition); - typedef aggregate_of< IfcSegment > list; + // IfcSegment (::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition); }; /// Definition from ISO/CD 10303-42:1992: A shell based surface model is described by a set of open or closed shells of dimensionality 2. The shells shall not intersect except at edges and vertices. In particular, distinct faces may not intersect. A complete face of one shell may be shared with another shell. Coincident portions of shells shall both reference the same faces, edges and vertices defining the coincident region. There shall be at least one shell. /// @@ -18136,26 +22295,28 @@ public: /// /// The dimensionality of the shell based surface model is 2. /// The shells shall not overlap or intersect except at common faces, edges or vertices. -class IFC_PARSE_API IfcShellBasedSurfaceModel : public IfcGeometricRepresentationItem { +class IFC_PARSE_API IfcShellBasedSurfaceModel : public IfcGeometricRepresentationItem { public: - aggregate_of< ::Ifc4x3_add2::IfcShell >::ptr SbsmBoundary() const; - void setSbsmBoundary(aggregate_of< ::Ifc4x3_add2::IfcShell >::ptr v); - virtual const IfcParse::entity& declaration() const; + IfcShellBasedSurfaceModel() {} + explicit IfcShellBasedSurfaceModel (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + + std::vector< ::Ifc4x3_add2::IfcShell > SbsmBoundary() const; + void setSbsmBoundary(const std::vector< ::Ifc4x3_add2::IfcShell >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcShellBasedSurfaceModel (IfcEntityInstanceData&& e); - IfcShellBasedSurfaceModel (aggregate_of< ::Ifc4x3_add2::IfcShell >::ptr v1_SbsmBoundary); - typedef aggregate_of< IfcShellBasedSurfaceModel > list; + // IfcShellBasedSurfaceModel (std::vector< ::Ifc4x3_add2::IfcShell > v1_SbsmBoundary); }; /// IfcSimpleProperty is a generalization of a single property object. The various subtypes of IfcSimpleProperty establish different ways in which a property value can be set. /// /// HISTORY  New Entity in IFC Release 1.0, definition changed in IFC Release 2x. -class IFC_PARSE_API IfcSimpleProperty : public IfcProperty { +class IFC_PARSE_API IfcSimpleProperty : public IfcProperty { public: - virtual const IfcParse::entity& declaration() const; + IfcSimpleProperty() {} + explicit IfcSimpleProperty (const std::weak_ptr& data) : IfcProperty(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSimpleProperty (IfcEntityInstanceData&& e); - IfcSimpleProperty (std::string v1_Name, boost::optional< std::string > v2_Specification); - typedef aggregate_of< IfcSimpleProperty > list; + // IfcSimpleProperty (std::string v1_Name, std::optional< std::string > v2_Specification); }; /// Definition from IAI: Describes slippage in support conditions or connection conditions. Slippage means that a relative displacement may occur in a support or connection before support or connection reactions are awoken. /// @@ -18166,133 +22327,139 @@ public: /// surface supports and connections. /// /// HISTORY: New entity in IFC 2x2. -class IFC_PARSE_API IfcSlippageConnectionCondition : public IfcStructuralConnectionCondition { +class IFC_PARSE_API IfcSlippageConnectionCondition : public IfcStructuralConnectionCondition { public: + IfcSlippageConnectionCondition() {} + explicit IfcSlippageConnectionCondition (const std::weak_ptr& data) : IfcStructuralConnectionCondition(data) {} + /// Slippage in x-direction of the coordinate system defined by the instance which uses this resource object. - boost::optional< double > SlippageX() const; - void setSlippageX(boost::optional< double > v); + std::optional< double > SlippageX() const; + void setSlippageX(const std::optional< double >& v); /// Slippage in y-direction of the coordinate system defined by the instance which uses this resource object. - boost::optional< double > SlippageY() const; - void setSlippageY(boost::optional< double > v); + std::optional< double > SlippageY() const; + void setSlippageY(const std::optional< double >& v); /// Slippage in z-direction of the coordinate system defined by the instance which uses this resource object. - boost::optional< double > SlippageZ() const; - void setSlippageZ(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > SlippageZ() const; + void setSlippageZ(const std::optional< 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 aggregate_of< IfcSlippageConnectionCondition > list; + // IfcSlippageConnectionCondition (std::optional< std::string > v1_Name, std::optional< double > v2_SlippageX, std::optional< double > v3_SlippageY, std::optional< double > v4_SlippageZ); }; /// Definition from ISO/CD 10303-42:1992: A solid model is a complete representation of the nominal shape of a product such that all points in the interior are connected. Any point can be classified as being inside, outside, or on the boundary of a solid. There are several different types of solid model representations. /// /// NOTE: Corresponding ISO 10303-42 entity: solid_model, only three subtypes have been incorporated into the current IFC Release - subset of manifold_solid_brep (IfcManifoldSolidBrep, constraint to faceted B-rep), swept_area_solid (IfcSweptAreaSolid), the swept_disk_solid (IfcSweptDiskSolid) and subset of csg_solid (IfcCsgSolid). The derived attribute Dim has been added at this level and was therefore demoted from the geometric_representation_item. Please refer to ISO/IS 10303-42:1994, p. 170 for the final definition of the formal standard. /// /// HISTORY: New entity in IFC Release 1.5 -class IFC_PARSE_API IfcSolidModel : public IfcGeometricRepresentationItem, public IfcBooleanOperand, public IfcSolidOrShell { +class IFC_PARSE_API IfcSolidModel : public IfcGeometricRepresentationItem { public: - virtual const IfcParse::entity& declaration() const; + IfcSolidModel() {} + explicit IfcSolidModel (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSolidModel (IfcEntityInstanceData&& e); - IfcSolidModel (); - typedef aggregate_of< IfcSolidModel > list; + // IfcSolidModel (); }; /// Definition from IAI: An instance of the entity /// IfcStructuralLoadLinearForce shall be used to define actions on curves. /// /// HISTORY: New entity in Release IFC2x /// edition 2. -class IFC_PARSE_API IfcStructuralLoadLinearForce : public IfcStructuralLoadStatic { +class IFC_PARSE_API IfcStructuralLoadLinearForce : public IfcStructuralLoadStatic { public: + IfcStructuralLoadLinearForce() {} + explicit IfcStructuralLoadLinearForce (const std::weak_ptr& data) : IfcStructuralLoadStatic(data) {} + /// Linear force value in x-direction. - boost::optional< double > LinearForceX() const; - void setLinearForceX(boost::optional< double > v); + std::optional< double > LinearForceX() const; + void setLinearForceX(const std::optional< double >& v); /// Linear force value in y-direction. - boost::optional< double > LinearForceY() const; - void setLinearForceY(boost::optional< double > v); + std::optional< double > LinearForceY() const; + void setLinearForceY(const std::optional< double >& v); /// Linear force value in z-direction. - boost::optional< double > LinearForceZ() const; - void setLinearForceZ(boost::optional< double > v); + std::optional< double > LinearForceZ() const; + void setLinearForceZ(const std::optional< double >& v); /// Linear moment about the x-axis. - boost::optional< double > LinearMomentX() const; - void setLinearMomentX(boost::optional< double > v); + std::optional< double > LinearMomentX() const; + void setLinearMomentX(const std::optional< double >& v); /// Linear moment about the y-axis. - boost::optional< double > LinearMomentY() const; - void setLinearMomentY(boost::optional< double > v); + std::optional< double > LinearMomentY() const; + void setLinearMomentY(const std::optional< double >& v); /// Linear moment about the z-axis. - boost::optional< double > LinearMomentZ() const; - void setLinearMomentZ(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > LinearMomentZ() const; + void setLinearMomentZ(const std::optional< 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 aggregate_of< IfcStructuralLoadLinearForce > list; + // IfcStructuralLoadLinearForce (std::optional< std::string > v1_Name, std::optional< double > v2_LinearForceX, std::optional< double > v3_LinearForceY, std::optional< double > v4_LinearForceZ, std::optional< double > v5_LinearMomentX, std::optional< double > v6_LinearMomentY, std::optional< double > v7_LinearMomentZ); }; /// Definition from IAI: An instance of the entity /// IfcStructuralLoadPlanarForce shall be used to define actions on faces. /// /// HISTORY: New entity in Release IFC2x /// edition 2. -class IFC_PARSE_API IfcStructuralLoadPlanarForce : public IfcStructuralLoadStatic { +class IFC_PARSE_API IfcStructuralLoadPlanarForce : public IfcStructuralLoadStatic { public: + IfcStructuralLoadPlanarForce() {} + explicit IfcStructuralLoadPlanarForce (const std::weak_ptr& data) : IfcStructuralLoadStatic(data) {} + /// Planar force value in x-direction. - boost::optional< double > PlanarForceX() const; - void setPlanarForceX(boost::optional< double > v); + std::optional< double > PlanarForceX() const; + void setPlanarForceX(const std::optional< double >& v); /// Planar force value in y-direction. - boost::optional< double > PlanarForceY() const; - void setPlanarForceY(boost::optional< double > v); + std::optional< double > PlanarForceY() const; + void setPlanarForceY(const std::optional< double >& v); /// Planar force value in z-direction. - boost::optional< double > PlanarForceZ() const; - void setPlanarForceZ(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > PlanarForceZ() const; + void setPlanarForceZ(const std::optional< 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 aggregate_of< IfcStructuralLoadPlanarForce > list; + // IfcStructuralLoadPlanarForce (std::optional< std::string > v1_Name, std::optional< double > v2_PlanarForceX, std::optional< double > v3_PlanarForceY, std::optional< double > v4_PlanarForceZ); }; /// Definition from IAI: Instances of the entity /// IfcStructuralLoadSingleDisplacement shall be used to define displacements. /// /// HISTORY: New entity in Release IFC2x /// edition 2. -class IFC_PARSE_API IfcStructuralLoadSingleDisplacement : public IfcStructuralLoadStatic { +class IFC_PARSE_API IfcStructuralLoadSingleDisplacement : public IfcStructuralLoadStatic { public: + IfcStructuralLoadSingleDisplacement() {} + explicit IfcStructuralLoadSingleDisplacement (const std::weak_ptr& data) : IfcStructuralLoadStatic(data) {} + /// Displacement in x-direction. - boost::optional< double > DisplacementX() const; - void setDisplacementX(boost::optional< double > v); + std::optional< double > DisplacementX() const; + void setDisplacementX(const std::optional< double >& v); /// Displacement in y-direction. - boost::optional< double > DisplacementY() const; - void setDisplacementY(boost::optional< double > v); + std::optional< double > DisplacementY() const; + void setDisplacementY(const std::optional< double >& v); /// Displacement in z-direction. - boost::optional< double > DisplacementZ() const; - void setDisplacementZ(boost::optional< double > v); + std::optional< double > DisplacementZ() const; + void setDisplacementZ(const std::optional< double >& v); /// Rotation about the x-axis. - boost::optional< double > RotationalDisplacementRX() const; - void setRotationalDisplacementRX(boost::optional< double > v); + std::optional< double > RotationalDisplacementRX() const; + void setRotationalDisplacementRX(const std::optional< double >& v); /// Rotation about the y-axis. - boost::optional< double > RotationalDisplacementRY() const; - void setRotationalDisplacementRY(boost::optional< double > v); + std::optional< double > RotationalDisplacementRY() const; + void setRotationalDisplacementRY(const std::optional< double >& v); /// Rotation about the z-axis. - boost::optional< double > RotationalDisplacementRZ() const; - void setRotationalDisplacementRZ(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > RotationalDisplacementRZ() const; + void setRotationalDisplacementRZ(const std::optional< 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 aggregate_of< IfcStructuralLoadSingleDisplacement > list; + // IfcStructuralLoadSingleDisplacement (std::optional< std::string > v1_Name, std::optional< double > v2_DisplacementX, std::optional< double > v3_DisplacementY, std::optional< double > v4_DisplacementZ, std::optional< double > v5_RotationalDisplacementRX, std::optional< double > v6_RotationalDisplacementRY, std::optional< double > v7_RotationalDisplacementRZ); }; /// Definition from IAI: Defines a displacement with warping. /// /// HISTORY: New entity in IFC 2x2. -class IFC_PARSE_API IfcStructuralLoadSingleDisplacementDistortion : public IfcStructuralLoadSingleDisplacement { +class IFC_PARSE_API IfcStructuralLoadSingleDisplacementDistortion : public IfcStructuralLoadSingleDisplacement { public: + IfcStructuralLoadSingleDisplacementDistortion() {} + explicit IfcStructuralLoadSingleDisplacementDistortion (const std::weak_ptr& data) : IfcStructuralLoadSingleDisplacement(data) {} + /// The distortion curvature (warping, i.e. a cross-sectional deplanation) given to the displacement load. - boost::optional< double > Distortion() const; - void setDistortion(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > Distortion() const; + void setDistortion(const std::optional< 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 aggregate_of< IfcStructuralLoadSingleDisplacementDistortion > list; + // IfcStructuralLoadSingleDisplacementDistortion (std::optional< std::string > v1_Name, std::optional< double > v2_DisplacementX, std::optional< double > v3_DisplacementY, std::optional< double > v4_DisplacementZ, std::optional< double > v5_RotationalDisplacementRX, std::optional< double > v6_RotationalDisplacementRY, std::optional< double > v7_RotationalDisplacementRZ, std::optional< double > v8_Distortion); }; /// Definition from IAI: Instances of the entity /// IfcStructuralLoadSingleForce shall be used to define the forces and @@ -18300,31 +22467,32 @@ public: /// /// HISTORY: New entity in Release IFC2x /// edition 2. -class IFC_PARSE_API IfcStructuralLoadSingleForce : public IfcStructuralLoadStatic { +class IFC_PARSE_API IfcStructuralLoadSingleForce : public IfcStructuralLoadStatic { public: + IfcStructuralLoadSingleForce() {} + explicit IfcStructuralLoadSingleForce (const std::weak_ptr& data) : IfcStructuralLoadStatic(data) {} + /// Force value in x-direction. - boost::optional< double > ForceX() const; - void setForceX(boost::optional< double > v); + std::optional< double > ForceX() const; + void setForceX(const std::optional< double >& v); /// Force value in y-direction. - boost::optional< double > ForceY() const; - void setForceY(boost::optional< double > v); + std::optional< double > ForceY() const; + void setForceY(const std::optional< double >& v); /// Force value in z-direction. - boost::optional< double > ForceZ() const; - void setForceZ(boost::optional< double > v); + std::optional< double > ForceZ() const; + void setForceZ(const std::optional< double >& v); /// Moment about the x-axis. - boost::optional< double > MomentX() const; - void setMomentX(boost::optional< double > v); + std::optional< double > MomentX() const; + void setMomentX(const std::optional< double >& v); /// Moment about the y-axis. - boost::optional< double > MomentY() const; - void setMomentY(boost::optional< double > v); + std::optional< double > MomentY() const; + void setMomentY(const std::optional< double >& v); /// Moment about the z-axis. - boost::optional< double > MomentZ() const; - void setMomentZ(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > MomentZ() const; + void setMomentZ(const std::optional< 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 aggregate_of< IfcStructuralLoadSingleForce > list; + // IfcStructuralLoadSingleForce (std::optional< std::string > v1_Name, std::optional< double > v2_ForceX, std::optional< double > v3_ForceY, std::optional< double > v4_ForceZ, std::optional< double > v5_MomentX, std::optional< double > v6_MomentY, std::optional< double > v7_MomentZ); }; /// Definition from IAI: Instances of the entity /// IfcStructuralLoadSingleForceWarping, as a subtype of @@ -18334,16 +22502,17 @@ public: /// /// HISTORY: New entity in Release IFC2x /// edition 2. -class IFC_PARSE_API IfcStructuralLoadSingleForceWarping : public IfcStructuralLoadSingleForce { +class IFC_PARSE_API IfcStructuralLoadSingleForceWarping : public IfcStructuralLoadSingleForce { public: + IfcStructuralLoadSingleForceWarping() {} + explicit IfcStructuralLoadSingleForceWarping (const std::weak_ptr& data) : IfcStructuralLoadSingleForce(data) {} + /// The warping moment at the point load. - boost::optional< double > WarpingMoment() const; - void setWarpingMoment(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > WarpingMoment() const; + void setWarpingMoment(const std::optional< 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 aggregate_of< IfcStructuralLoadSingleForceWarping > list; + // IfcStructuralLoadSingleForceWarping (std::optional< std::string > v1_Name, std::optional< double > v2_ForceX, std::optional< double > v3_ForceY, std::optional< double > v4_ForceZ, std::optional< double > v5_MomentX, std::optional< double > v6_MomentY, std::optional< double > v7_MomentZ, std::optional< double > v8_WarpingMoment); }; /// Definition from ISO/DIS 10303-42:1999(E): A subedge is an edge whose domain is a connected portion of the domain of an existing edge. The topological constraints on a subedge are the same as those on an edge. /// @@ -18355,16 +22524,17 @@ public: /// NOTE  Corresponding ISO 10303 entity: subedge. Please refer to ISO/DIS 10303-42:1999(E), p. 194 for the final definition of the formal standard. /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcSubedge : public IfcEdge { +class IFC_PARSE_API IfcSubedge : public IfcEdge { public: + IfcSubedge() {} + explicit IfcSubedge (const std::weak_ptr& data) : IfcEdge(data) {} + /// The Edge, or Subedge, which contains the Subedge. - ::Ifc4x3_add2::IfcEdge* ParentEdge() const; - void setParentEdge(::Ifc4x3_add2::IfcEdge* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcEdge ParentEdge() const; + void setParentEdge(const ::Ifc4x3_add2::IfcEdge& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSubedge (IfcEntityInstanceData&& e); - IfcSubedge (::Ifc4x3_add2::IfcVertex* v1_EdgeStart, ::Ifc4x3_add2::IfcVertex* v2_EdgeEnd, ::Ifc4x3_add2::IfcEdge* v3_ParentEdge); - typedef aggregate_of< IfcSubedge > list; + // IfcSubedge (::Ifc4x3_add2::IfcVertex v1_EdgeStart, ::Ifc4x3_add2::IfcVertex v2_EdgeEnd, ::Ifc4x3_add2::IfcEdge v3_ParentEdge); }; /// Definition from ISO/CD 10303-42:1992: A surface can be envisioned as a set of connected points in 3-dimensional space which is always locally 2-dimensional, but need not be a manifold. /// @@ -18376,13 +22546,14 @@ public: /// /// A surface has non zero area. /// A surface is arcwise connected. -class IFC_PARSE_API IfcSurface : public IfcGeometricRepresentationItem, public IfcGeometricSetSelect, public IfcSurfaceOrFaceSurface { +class IFC_PARSE_API IfcSurface : public IfcGeometricRepresentationItem { public: - virtual const IfcParse::entity& declaration() const; + IfcSurface() {} + explicit IfcSurface (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSurface (IfcEntityInstanceData&& e); - IfcSurface (); - typedef aggregate_of< IfcSurface > list; + // IfcSurface (); }; /// IfcSurfaceStyleRendering holds the properties for visualization related to a particular surface side style. /// @@ -18429,44 +22600,45 @@ public: /// In addition to the attributes as defined in ISO 10303-46, (ambient_reflectance, diffuse_reflectance, specular_reflectance, specular_exponent, and specular_colour), the current IFC definition adds other colours, reflectance factors and specular roughness. /// /// HISTORY: New Entity in IFC 2x. -class IFC_PARSE_API IfcSurfaceStyleRendering : public IfcSurfaceStyleShading { +class IFC_PARSE_API IfcSurfaceStyleRendering : public IfcSurfaceStyleShading { public: + IfcSurfaceStyleRendering() {} + explicit IfcSurfaceStyleRendering (const std::weak_ptr& data) : IfcSurfaceStyleShading(data) {} + /// The diffuse part of the reflectance equation can be given as either a colour or a scalar factor. /// The diffuse colour field reflects all light sources depending on the angle of the surface with respect to the light source. The more directly the surface faces the light, the more diffuse light reflects. /// The diffuse factor field specifies how much diffuse light from light sources this surface shall reflect. Diffuse light depends on the angle of the surface with respect to the light source. The more directly the surface faces the light, the more diffuse light reflects. The diffuse colour is then defined by surface colour * diffuse factor. - ::Ifc4x3_add2::IfcColourOrFactor* DiffuseColour() const; - void setDiffuseColour(::Ifc4x3_add2::IfcColourOrFactor* v); + ::Ifc4x3_add2::IfcColourOrFactor DiffuseColour() const; + void setDiffuseColour(const ::Ifc4x3_add2::IfcColourOrFactor& v); /// The transmissive part of the reflectance equation can be given as either a colour or a scalar factor. It only applies to materials which Transparency field is greater than zero. /// The transmissive colour field specifies the colour that passes through a transparant material (like the colour that shines through a glass). /// The transmissive factor defines the transmissive part, the transmissive colour is then defined by surface colour * transmissive factor. - ::Ifc4x3_add2::IfcColourOrFactor* TransmissionColour() const; - void setTransmissionColour(::Ifc4x3_add2::IfcColourOrFactor* v); + ::Ifc4x3_add2::IfcColourOrFactor TransmissionColour() const; + void setTransmissionColour(const ::Ifc4x3_add2::IfcColourOrFactor& v); /// The diffuse transmission part of the reflectance equation can be given as either a colour or a scalar factor. It only applies to materials whose Transparency field is greater than zero. /// The diffuse transmission colour specifies how much diffuse light is reflected at the opposite side of the material surface. /// The diffuse transmission factor field specifies how much diffuse light from light sources this surface shall reflect on the opposite side of the material surface. The diffuse transmissive colour is then defined by surface colour * diffuse transmissive factor. - ::Ifc4x3_add2::IfcColourOrFactor* DiffuseTransmissionColour() const; - void setDiffuseTransmissionColour(::Ifc4x3_add2::IfcColourOrFactor* v); + ::Ifc4x3_add2::IfcColourOrFactor DiffuseTransmissionColour() const; + void setDiffuseTransmissionColour(const ::Ifc4x3_add2::IfcColourOrFactor& v); /// The reflection (or mirror) part of the reflectance equation can be given as either a colour or a scalar factor. Applies to "glass" and "mirror" reflection models. /// The reflection colour specifies the contribution made by light from the mirror direction, i.e. light being reflected from the surface. /// The reflection factor specifies the amount of contribution made by light from the mirror direction. The reflection colour is then defined by surface colour * reflection factor. - ::Ifc4x3_add2::IfcColourOrFactor* ReflectionColour() const; - void setReflectionColour(::Ifc4x3_add2::IfcColourOrFactor* v); + ::Ifc4x3_add2::IfcColourOrFactor ReflectionColour() const; + void setReflectionColour(const ::Ifc4x3_add2::IfcColourOrFactor& v); /// The specular part of the reflectance equation can be given as either a colour or a scalar factor. /// The specular colour determine the specular highlights (e.g., the shiny spots on an apple). When the angle from the light to the surface is close to the angle from the surface to the viewer, the specular colour is added to the diffuse and ambient colour calculations. /// The specular factor defines the specular part, the specular colour is then defined by surface colour * specular factor. - ::Ifc4x3_add2::IfcColourOrFactor* SpecularColour() const; - void setSpecularColour(::Ifc4x3_add2::IfcColourOrFactor* v); + ::Ifc4x3_add2::IfcColourOrFactor SpecularColour() const; + void setSpecularColour(const ::Ifc4x3_add2::IfcColourOrFactor& v); /// The exponent or roughness part of the specular reflectance. - ::Ifc4x3_add2::IfcSpecularHighlightSelect* SpecularHighlight() const; - void setSpecularHighlight(::Ifc4x3_add2::IfcSpecularHighlightSelect* v); + ::Ifc4x3_add2::IfcSpecularHighlightSelect SpecularHighlight() const; + void setSpecularHighlight(const ::Ifc4x3_add2::IfcSpecularHighlightSelect& v); /// Identifies the predefined types of reflectance method from which the method required may be set. ::Ifc4x3_add2::IfcReflectanceMethodEnum::Value ReflectanceMethod() const; - void setReflectanceMethod(::Ifc4x3_add2::IfcReflectanceMethodEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setReflectanceMethod(const ::Ifc4x3_add2::IfcReflectanceMethodEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSurfaceStyleRendering (IfcEntityInstanceData&& e); - IfcSurfaceStyleRendering (::Ifc4x3_add2::IfcColourRgb* v1_SurfaceColour, boost::optional< double > v2_Transparency, ::Ifc4x3_add2::IfcColourOrFactor* v3_DiffuseColour, ::Ifc4x3_add2::IfcColourOrFactor* v4_TransmissionColour, ::Ifc4x3_add2::IfcColourOrFactor* v5_DiffuseTransmissionColour, ::Ifc4x3_add2::IfcColourOrFactor* v6_ReflectionColour, ::Ifc4x3_add2::IfcColourOrFactor* v7_SpecularColour, ::Ifc4x3_add2::IfcSpecularHighlightSelect* v8_SpecularHighlight, ::Ifc4x3_add2::IfcReflectanceMethodEnum::Value v9_ReflectanceMethod); - typedef aggregate_of< IfcSurfaceStyleRendering > list; + // IfcSurfaceStyleRendering (::Ifc4x3_add2::IfcColourRgb v1_SurfaceColour, std::optional< double > v2_Transparency, ::Ifc4x3_add2::IfcColourOrFactor v3_DiffuseColour, ::Ifc4x3_add2::IfcColourOrFactor v4_TransmissionColour, ::Ifc4x3_add2::IfcColourOrFactor v5_DiffuseTransmissionColour, ::Ifc4x3_add2::IfcColourOrFactor v6_ReflectionColour, ::Ifc4x3_add2::IfcColourOrFactor v7_SpecularColour, ::Ifc4x3_add2::IfcSpecularHighlightSelect v8_SpecularHighlight, ::Ifc4x3_add2::IfcReflectanceMethodEnum::Value v9_ReflectanceMethod); }; /// Definition from ISO/CD 10303-42:1992: The swept area /// solid entity collects the entities which are defined @@ -18486,19 +22658,20 @@ public: /// NOTE Corresponding ISO 10303-42 entity: swept_area_solid, The data type of SweptArea is modified and given by a profile definition (IfcProfileDef). A position coordinate system is defined by the Position attribute has been added. Please refer to ISO/IS 10303-42:1994, p. 183 for the final definition of the formal standard. /// /// HISTORY New entity in IFC Release 1.5, the capabilities have been enhanced in IFC Release 2x. -class IFC_PARSE_API IfcSweptAreaSolid : public IfcSolidModel { +class IFC_PARSE_API IfcSweptAreaSolid : public IfcSolidModel { public: + IfcSweptAreaSolid() {} + explicit IfcSweptAreaSolid (const std::weak_ptr& data) : IfcSolidModel(data) {} + /// The surface defining the area to be swept. It is given as a profile definition within the xy plane of the position coordinate system. - ::Ifc4x3_add2::IfcProfileDef* SweptArea() const; - void setSweptArea(::Ifc4x3_add2::IfcProfileDef* v); + ::Ifc4x3_add2::IfcProfileDef SweptArea() const; + void setSweptArea(const ::Ifc4x3_add2::IfcProfileDef& v); /// Position coordinate system for the swept area, provided by a profile definition within the XY plane of the Position. - ::Ifc4x3_add2::IfcAxis2Placement3D* Position() const; - void setPosition(::Ifc4x3_add2::IfcAxis2Placement3D* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcAxis2Placement3D Position() const; + void setPosition(const ::Ifc4x3_add2::IfcAxis2Placement3D& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSweptAreaSolid (IfcEntityInstanceData&& e); - IfcSweptAreaSolid (::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position); - typedef aggregate_of< IfcSweptAreaSolid > list; + // IfcSweptAreaSolid (::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position); }; /// Definition from ISO 10303-42:2002: A swept /// disk solid is the solid produced by sweeping a circular disk @@ -18553,32 +22726,33 @@ public: /// disk Radius /// The Directrix shall not be based on an intersecting /// curve. -class IFC_PARSE_API IfcSweptDiskSolid : public IfcSolidModel { +class IFC_PARSE_API IfcSweptDiskSolid : public IfcSolidModel { public: + IfcSweptDiskSolid() {} + explicit IfcSweptDiskSolid (const std::weak_ptr& data) : IfcSolidModel(data) {} + /// The curve used to define the sweeping operation. The solid is generated by sweeping a circular disk along the Directrix. - ::Ifc4x3_add2::IfcCurve* Directrix() const; - void setDirectrix(::Ifc4x3_add2::IfcCurve* v); + ::Ifc4x3_add2::IfcCurve Directrix() const; + void setDirectrix(const ::Ifc4x3_add2::IfcCurve& v); /// The Radius of the circular disk to be swept along the directrix. Denotes the outer radius, if an InnerRadius is applied. double Radius() const; - void setRadius(double v); + void setRadius(const double& v); /// This attribute is optional, if present it defines the radius of a circular hole in the centre of the disk. - boost::optional< double > InnerRadius() const; - void setInnerRadius(boost::optional< double > v); + std::optional< double > InnerRadius() const; + void setInnerRadius(const std::optional< double >& v); /// The parameter value on the Directrix at which the sweeping operation commences. If no value is provided the start of the sweeping operation is at the start of the Directrix.. /// /// IFC2x4 CHANGE  The attribute has been changed to OPTIONAL with upward compatibility for file-based exchange. - boost::optional< double > StartParam() const; - void setStartParam(boost::optional< double > v); + std::optional< double > StartParam() const; + void setStartParam(const std::optional< double >& v); /// The parameter value on the Directrix at which the sweeping operation ends. If no value is provided the end of the sweeping operation is at the end of the Directrix.. /// /// IFC2x4 CHANGE  The attribute has been changed to OPTIONAL with upward compatibility for file-based exchange. - boost::optional< double > EndParam() const; - void setEndParam(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > EndParam() const; + void setEndParam(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSweptDiskSolid (IfcEntityInstanceData&& e); - IfcSweptDiskSolid (::Ifc4x3_add2::IfcCurve* v1_Directrix, double v2_Radius, boost::optional< double > v3_InnerRadius, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam); - typedef aggregate_of< IfcSweptDiskSolid > list; + // IfcSweptDiskSolid (::Ifc4x3_add2::IfcCurve v1_Directrix, double v2_Radius, std::optional< double > v3_InnerRadius, std::optional< double > v4_StartParam, std::optional< double > v5_EndParam); }; /// The IfcSweptDiskSolidPolygonal is a IfcSweptDiskSolid where the Directrix is restricted to be provided by an IfcPolyline only. An optional FilletRadius attribute can be asserted, it is then applied as a fillet to all transitions between the segments of the IfcPolyline. /// @@ -18590,35 +22764,37 @@ public: /// or equal to the length of the start and end segment of the /// IfcPolyline, and smaller then or equal to one half of the /// lenght of the shortest inner segment. -class IFC_PARSE_API IfcSweptDiskSolidPolygonal : public IfcSweptDiskSolid { +class IFC_PARSE_API IfcSweptDiskSolidPolygonal : public IfcSweptDiskSolid { public: + IfcSweptDiskSolidPolygonal() {} + explicit IfcSweptDiskSolidPolygonal (const std::weak_ptr& data) : IfcSweptDiskSolid(data) {} + /// The fillet that is equally applied to all transitions between the segments of the IfcPolyline, providing the geometric representation for the Directrix. If omited, no fillet is applied to the segments. - boost::optional< double > FilletRadius() const; - void setFilletRadius(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > FilletRadius() const; + void setFilletRadius(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSweptDiskSolidPolygonal (IfcEntityInstanceData&& e); - IfcSweptDiskSolidPolygonal (::Ifc4x3_add2::IfcCurve* v1_Directrix, double v2_Radius, boost::optional< double > v3_InnerRadius, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam, boost::optional< double > v6_FilletRadius); - typedef aggregate_of< IfcSweptDiskSolidPolygonal > list; + // IfcSweptDiskSolidPolygonal (::Ifc4x3_add2::IfcCurve v1_Directrix, double v2_Radius, std::optional< double > v3_InnerRadius, std::optional< double > v4_StartParam, std::optional< double > v5_EndParam, std::optional< double > v6_FilletRadius); }; /// Definition from ISO/CD 10303-42:1992: A swept surface is one that is constructed by sweeping a curve along another curve. /// /// NOTE: Corresponding ISO 10303 entity: swept_surface. Please refer to ISO/IS 10303-42:1994, p.76 for the final definition of the formal standard. /// /// HISTORY: New entity in IFC Release 2x. -class IFC_PARSE_API IfcSweptSurface : public IfcSurface { +class IFC_PARSE_API IfcSweptSurface : public IfcSurface { public: + IfcSweptSurface() {} + explicit IfcSweptSurface (const std::weak_ptr& data) : IfcSurface(data) {} + /// The curve to be swept in defining the surface. The curve is defined as a profile within the position coordinate system. - ::Ifc4x3_add2::IfcProfileDef* SweptCurve() const; - void setSweptCurve(::Ifc4x3_add2::IfcProfileDef* v); + ::Ifc4x3_add2::IfcProfileDef SweptCurve() const; + void setSweptCurve(const ::Ifc4x3_add2::IfcProfileDef& v); /// Position coordinate system for the placement of the profile within the xy plane of the axis placement. - ::Ifc4x3_add2::IfcAxis2Placement3D* Position() const; - void setPosition(::Ifc4x3_add2::IfcAxis2Placement3D* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcAxis2Placement3D Position() const; + void setPosition(const ::Ifc4x3_add2::IfcAxis2Placement3D& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSweptSurface (IfcEntityInstanceData&& e); - IfcSweptSurface (::Ifc4x3_add2::IfcProfileDef* v1_SweptCurve, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position); - typedef aggregate_of< IfcSweptSurface > list; + // IfcSweptSurface (::Ifc4x3_add2::IfcProfileDef v1_SweptCurve, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position); }; /// IfcTShapeProfileDef defines /// a section profile that provides the defining parameters of a T-shaped @@ -18648,49 +22824,51 @@ public: /// relative to the profile. /// /// Figure 326 — T-shape profile -class IFC_PARSE_API IfcTShapeProfileDef : public IfcParameterizedProfileDef { +class IFC_PARSE_API IfcTShapeProfileDef : public IfcParameterizedProfileDef { public: + IfcTShapeProfileDef() {} + explicit IfcTShapeProfileDef (const std::weak_ptr& data) : IfcParameterizedProfileDef(data) {} + /// Web lengths, see illustration above (= h). double Depth() const; - void setDepth(double v); + void setDepth(const double& v); /// Flange lengths, see illustration above (= b). double FlangeWidth() const; - void setFlangeWidth(double v); + void setFlangeWidth(const double& v); /// Constant wall thickness of web (= ts). double WebThickness() const; - void setWebThickness(double v); + void setWebThickness(const double& v); /// Constant wall thickness of flange (= tg). double FlangeThickness() const; - void setFlangeThickness(double v); + void setFlangeThickness(const double& v); /// Fillet radius according the above illustration (= r1). - boost::optional< double > FilletRadius() const; - void setFilletRadius(boost::optional< double > v); + std::optional< double > FilletRadius() const; + void setFilletRadius(const std::optional< double >& v); /// Edge radius according the above illustration (= r2). - boost::optional< double > FlangeEdgeRadius() const; - void setFlangeEdgeRadius(boost::optional< double > v); + std::optional< double > FlangeEdgeRadius() const; + void setFlangeEdgeRadius(const std::optional< double >& v); /// Edge radius according the above illustration (= r3). - boost::optional< double > WebEdgeRadius() const; - void setWebEdgeRadius(boost::optional< double > v); + std::optional< double > WebEdgeRadius() const; + void setWebEdgeRadius(const std::optional< double >& v); /// Slope of flange of the profile. - boost::optional< double > WebSlope() const; - void setWebSlope(boost::optional< double > v); + std::optional< double > WebSlope() const; + void setWebSlope(const std::optional< double >& v); /// Slope of web of the profile. - boost::optional< double > FlangeSlope() const; - void setFlangeSlope(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > FlangeSlope() const; + void setFlangeSlope(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTShapeProfileDef (IfcEntityInstanceData&& e); - IfcTShapeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::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); - typedef aggregate_of< IfcTShapeProfileDef > list; + // IfcTShapeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, std::optional< double > v8_FilletRadius, std::optional< double > v9_FlangeEdgeRadius, std::optional< double > v10_WebEdgeRadius, std::optional< double > v11_WebSlope, std::optional< double > v12_FlangeSlope); }; -class IFC_PARSE_API IfcTessellatedItem : public IfcGeometricRepresentationItem { +class IFC_PARSE_API IfcTessellatedItem : public IfcGeometricRepresentationItem { public: - virtual const IfcParse::entity& declaration() const; + IfcTessellatedItem() {} + explicit IfcTessellatedItem (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTessellatedItem (IfcEntityInstanceData&& e); - IfcTessellatedItem (); - typedef aggregate_of< IfcTessellatedItem > list; + // IfcTessellatedItem (); }; /// The text literal is a geometric representation item which describes a text string using a string literal and additional position and path information. /// @@ -18702,23 +22880,24 @@ public: /// HISTORY  New entity in IFC2x2. /// /// IFC2x3 CHANGE  The IfcTextLiteral has been changed by removing Font and Alignment. -class IFC_PARSE_API IfcTextLiteral : public IfcGeometricRepresentationItem { +class IFC_PARSE_API IfcTextLiteral : public IfcGeometricRepresentationItem { public: + IfcTextLiteral() {} + explicit IfcTextLiteral (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// The text literal to be presented. std::string Literal() const; - void setLiteral(std::string v); + void setLiteral(const std::string& v); /// An IfcAxis2Placement that determines the placement and orientation of the presented string. /// When used with a text style based on IfcTextStyleWithBoxCharacteristics then the y-axis is taken as the reference direction for the box rotation angle and the box slant angle. - ::Ifc4x3_add2::IfcAxis2Placement* Placement() const; - void setPlacement(::Ifc4x3_add2::IfcAxis2Placement* v); + ::Ifc4x3_add2::IfcAxis2Placement Placement() const; + void setPlacement(const ::Ifc4x3_add2::IfcAxis2Placement& v); /// The writing direction of the text literal. ::Ifc4x3_add2::IfcTextPath::Value Path() const; - void setPath(::Ifc4x3_add2::IfcTextPath::Value v); - virtual const IfcParse::entity& declaration() const; + void setPath(const ::Ifc4x3_add2::IfcTextPath::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTextLiteral (IfcEntityInstanceData&& e); - IfcTextLiteral (std::string v1_Literal, ::Ifc4x3_add2::IfcAxis2Placement* v2_Placement, ::Ifc4x3_add2::IfcTextPath::Value v3_Path); - typedef aggregate_of< IfcTextLiteral > list; + // IfcTextLiteral (std::string v1_Literal, ::Ifc4x3_add2::IfcAxis2Placement v2_Placement, ::Ifc4x3_add2::IfcTextPath::Value v3_Path); }; /// The text literal with extent is a text literal with the additional explicit information of the planar extent (or surrounding text box). An alignment attribute defines, how the text box is aligned to the placement and how it may expand. /// @@ -18729,19 +22908,20 @@ public: /// HISTORY  New entity in IFC2x2. /// /// IFC2x3 CHANGE  The IfcTextLiteralWithExtent has been changed by adding BoxAlignment. -class IFC_PARSE_API IfcTextLiteralWithExtent : public IfcTextLiteral { +class IFC_PARSE_API IfcTextLiteralWithExtent : public IfcTextLiteral { public: + IfcTextLiteralWithExtent() {} + explicit IfcTextLiteralWithExtent (const std::weak_ptr& data) : IfcTextLiteral(data) {} + /// The extent in the x and y direction of the text literal. - ::Ifc4x3_add2::IfcPlanarExtent* Extent() const; - void setExtent(::Ifc4x3_add2::IfcPlanarExtent* v); + ::Ifc4x3_add2::IfcPlanarExtent Extent() const; + void setExtent(const ::Ifc4x3_add2::IfcPlanarExtent& v); /// The alignment of the text literal relative to its position. std::string BoxAlignment() const; - void setBoxAlignment(std::string v); - virtual const IfcParse::entity& declaration() const; + void setBoxAlignment(const std::string& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTextLiteralWithExtent (IfcEntityInstanceData&& e); - IfcTextLiteralWithExtent (std::string v1_Literal, ::Ifc4x3_add2::IfcAxis2Placement* v2_Placement, ::Ifc4x3_add2::IfcTextPath::Value v3_Path, ::Ifc4x3_add2::IfcPlanarExtent* v4_Extent, std::string v5_BoxAlignment); - typedef aggregate_of< IfcTextLiteralWithExtent > list; + // IfcTextLiteralWithExtent (std::string v1_Literal, ::Ifc4x3_add2::IfcAxis2Placement v2_Placement, ::Ifc4x3_add2::IfcTextPath::Value v3_Path, ::Ifc4x3_add2::IfcPlanarExtent v4_Extent, std::string v5_BoxAlignment); }; /// Definition from CSS1 (W3C Recommendation): Setting font properties will be among the most common uses of style sheets. Unfortunately, there exists no well-defined and universally accepted taxonomy for classifying fonts, and terms that apply to one font family may not be appropriate for others. For example, 'italic' is commonly used to label slanted text, but slanted text may also be labeled as being Oblique, Slanted, Incline, Cursive or Kursiv. Therefore it is not a simple problem to map typical font selection properties to a specific font. /// @@ -18808,31 +22988,32 @@ public: /// NOTE  Corresponding CSS1 definitions are Font properties ('font-family', 'font-style', 'font-variant',  'font-weight'). /// /// HISTORY  New entity in IFC2x3. -class IFC_PARSE_API IfcTextStyleFontModel : public IfcPreDefinedTextFont { +class IFC_PARSE_API IfcTextStyleFontModel : public IfcPreDefinedTextFont { public: + IfcTextStyleFontModel() {} + explicit IfcTextStyleFontModel (const std::weak_ptr& data) : IfcPreDefinedTextFont(data) {} + /// The value is a prioritized list of font family names and/or generic family names. The first list entry has the highest priority, if this font fails, the next list item shall be used. The last list item should (if possible) be a generic family. std::vector< std::string > /*[1:?]*/ FontFamily() const; - void setFontFamily(std::vector< std::string > /*[1:?]*/ v); + void setFontFamily(const std::vector< std::string > /*[1:?]*/& v); /// The font style property selects between normal (sometimes referred to as "roman" or "upright"), italic and oblique faces within a font family. - boost::optional< std::string > FontStyle() const; - void setFontStyle(boost::optional< std::string > v); + std::optional< std::string > FontStyle() const; + void setFontStyle(const std::optional< std::string >& v); /// The font variant property selects between normal and small-caps. /// NOTE  It has been introduced for later compliance to full CSS1 support. - boost::optional< std::string > FontVariant() const; - void setFontVariant(boost::optional< std::string > v); + std::optional< std::string > FontVariant() const; + void setFontVariant(const std::optional< std::string >& v); /// The font weight property selects the weight of the font. /// NOTE  Values other then 'normal' and 'bold' have been introduced for later compliance to full CSS1 support. - boost::optional< std::string > FontWeight() const; - void setFontWeight(boost::optional< std::string > v); + std::optional< std::string > FontWeight() const; + void setFontWeight(const std::optional< std::string >& v); /// The font size provides the size or height of the text font. /// NOTE  The following values are allowed, /*[1:?]*/ v2_FontFamily, boost::optional< std::string > v3_FontStyle, boost::optional< std::string > v4_FontVariant, boost::optional< std::string > v5_FontWeight, ::Ifc4x3_add2::IfcSizeSelect* v6_FontSize); - typedef aggregate_of< IfcTextStyleFontModel > list; + // IfcTextStyleFontModel (std::string v1_Name, std::vector< std::string > /*[1:?]*/ v2_FontFamily, std::optional< std::string > v3_FontStyle, std::optional< std::string > v4_FontVariant, std::optional< std::string > v5_FontWeight, ::Ifc4x3_add2::IfcSizeSelect v6_FontSize); }; /// IfcTrapeziumProfileDef defines a trapezium as the profile definition used by the swept surface geometry or the swept area solid. It is given by its Top X and Bottom X extent and its Y extent as well as by the offset of the Top X extend, and placed within the 2D position coordinate system, established by the Position attribute. It is placed centric within the position coordinate system, that is, in the center of the bounding box. /// @@ -18872,25 +23053,26 @@ public: /// the positive x-axis. /// /// Figure 325 — Trapezium profile -class IFC_PARSE_API IfcTrapeziumProfileDef : public IfcParameterizedProfileDef { +class IFC_PARSE_API IfcTrapeziumProfileDef : public IfcParameterizedProfileDef { public: + IfcTrapeziumProfileDef() {} + explicit IfcTrapeziumProfileDef (const std::weak_ptr& data) : IfcParameterizedProfileDef(data) {} + /// The extent of the bottom line measured along the implicit x-axis. double BottomXDim() const; - void setBottomXDim(double v); + void setBottomXDim(const double& v); /// The extent of the top line measured along the implicit x-axis. double TopXDim() const; - void setTopXDim(double v); + void setTopXDim(const double& v); /// The extent of the distance between the parallel bottom and top lines measured along the implicit y-axis. double YDim() const; - void setYDim(double v); + void setYDim(const double& v); /// Offset from the beginning of the top line to the bottom line, measured along the implicit x-axis. double TopXOffset() const; - void setTopXOffset(double v); - virtual const IfcParse::entity& declaration() const; + void setTopXOffset(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTrapeziumProfileDef (IfcEntityInstanceData&& e); - IfcTrapeziumProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_BottomXDim, double v5_TopXDim, double v6_YDim, double v7_TopXOffset); - typedef aggregate_of< IfcTrapeziumProfileDef > list; + // IfcTrapeziumProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_BottomXDim, double v5_TopXDim, double v6_YDim, double v7_TopXOffset); }; /// The object type defines the /// specific information about a type, being common to all @@ -18923,8 +23105,11 @@ public: /// IFC2x3 CHANGE The IfcTypeObject is now subtyped from the new supertype IfcObjectDefinition, and the attribute HasPropertySets has been changed from a LIST into a SET. /// /// IFC2x4 CHANGE (1) The entity IfcTypeObject shall not be instantiated from IFC2x4 onwards. It will be changed into an ABSTRACT supertype in future releases of IFC. (2) The inverse attribute Types has been renamed from ObjectTypeOf. -class IFC_PARSE_API IfcTypeObject : public IfcObjectDefinition { +class IFC_PARSE_API IfcTypeObject : public IfcObjectDefinition { public: + IfcTypeObject() {} + explicit IfcTypeObject (const std::weak_ptr& data) : IfcObjectDefinition(data) {} + /// The attribute optionally defines the data type of the occurrence object, to which the assigned type object can relate. If not present, no instruction is given to which occurrence object the type object is applicable. The following conventions are used: /// /// The IFC entity name of the applicable occurrence using the IFC naming convention, CamelCase with IFC prefix @@ -18932,19 +23117,17 @@ public: /// If one type object is applicable to many occurrence objects, then those occurrence object names should be separate by comma "," forming a comma separated string. /// /// EXAMPLE Refering to a furniture as applicable occurrence entity would be expressed as 'IfcFurnishingElement', refering to a brace as applicable entity would be expressed as 'IfcMember/BRACE', refering to a wall and wall standard case would be expressed as 'IfcWall, IfcWallStandardCase'. - boost::optional< std::string > ApplicableOccurrence() const; - void setApplicableOccurrence(boost::optional< std::string > v); + std::optional< std::string > ApplicableOccurrence() const; + void setApplicableOccurrence(const std::optional< std::string >& v); /// Set list of unique property sets, that are associated with the object type and are common to all object occurrences referring to this object type. /// /// IFC2x3 CHANGE  The attribute aggregate type has been changed from LIST to SET. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > HasPropertySets() const; - void setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v); - aggregate_of< IfcRelDefinesByType >::ptr Types() const; // INVERSE IfcRelDefinesByType::RelatingType - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > HasPropertySets() const; + void setHasPropertySets(const std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > >& v); + std::vector< IfcRelDefinesByType > Types() const; // INVERSE IfcRelDefinesByType::RelatingType + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTypeObject (IfcEntityInstanceData&& e); - IfcTypeObject (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets); - typedef aggregate_of< IfcTypeObject > list; + // IfcTypeObject (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets); }; /// IfcTypeProcess defines a /// specific (or type) definition of a process or activity without @@ -18974,25 +23157,26 @@ public: /// occurrence property set that is assigned at the process /// occurrence, overrides the same property assigned to the process /// type. -class IFC_PARSE_API IfcTypeProcess : public IfcTypeObject, public IfcProcessSelect { +class IFC_PARSE_API IfcTypeProcess : public IfcTypeObject { public: + IfcTypeProcess() {} + explicit IfcTypeProcess (const std::weak_ptr& data) : IfcTypeObject(data) {} + /// An identifying designation given to a process type. - boost::optional< std::string > Identification() const; - void setIdentification(boost::optional< std::string > v); + std::optional< std::string > Identification() const; + void setIdentification(const std::optional< std::string >& v); /// An long description, or text, describing the activity in detail. /// /// NOTE The inherited SELF\IfcRoot.Description attribute is used as the short description. - boost::optional< std::string > LongDescription() const; - void setLongDescription(boost::optional< std::string > v); + std::optional< std::string > LongDescription() const; + void setLongDescription(const std::optional< std::string >& v); /// The type denotes a particular type that indicates the process further. The use has to be established at the level of instantiable subtypes. In particular it holds the user defined type, if the enumeration of the attribute 'PredefinedType' is set to USERDEFINED. - boost::optional< std::string > ProcessType() const; - void setProcessType(boost::optional< std::string > v); - aggregate_of< IfcRelAssignsToProcess >::ptr OperatesOn() const; // INVERSE IfcRelAssignsToProcess::RelatingProcess - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > ProcessType() const; + void setProcessType(const std::optional< std::string >& v); + std::vector< IfcRelAssignsToProcess > OperatesOn() const; // INVERSE IfcRelAssignsToProcess::RelatingProcess + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTypeProcess (IfcEntityInstanceData&& e); - IfcTypeProcess (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType); - typedef aggregate_of< IfcTypeProcess > list; + // IfcTypeProcess (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ProcessType); }; /// IfcTypeProduct defines a type /// definition of a product without being already inserted into a @@ -19060,20 +23244,21 @@ public: /// multiple placement. /// /// Figure 11 — Product type geometry with multiple placement -class IFC_PARSE_API IfcTypeProduct : public IfcTypeObject, public IfcProductSelect { +class IFC_PARSE_API IfcTypeProduct : public IfcTypeObject { public: + IfcTypeProduct() {} + explicit IfcTypeProduct (const std::weak_ptr& data) : IfcTypeObject(data) {} + /// List of unique representation maps. Each representation map describes a block definition of the shape of the product style. By providing more than one representation map, a multi-view block definition can be given. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > RepresentationMaps() const; - void setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > RepresentationMaps() const; + void setRepresentationMaps(const std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > >& v); /// The tag (or label) identifier at the particular type of a product, e.g. the article number (like the EAN). It is the identifier at the specific level. - boost::optional< std::string > Tag() const; - void setTag(boost::optional< std::string > v); - aggregate_of< IfcRelAssignsToProduct >::ptr ReferencedBy() const; // INVERSE IfcRelAssignsToProduct::RelatingProduct - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Tag() const; + void setTag(const std::optional< std::string >& v); + std::vector< IfcRelAssignsToProduct > ReferencedBy() const; // INVERSE IfcRelAssignsToProduct::RelatingProduct + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTypeProduct (IfcEntityInstanceData&& e); - IfcTypeProduct (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcTypeProduct > list; + // IfcTypeProduct (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag); }; /// IfcTypeResource defines a specific (or type) definition of a resource.It is used to define a resource specification (the specific resource, that is common to all occurrences that are defined for that resource) and could act as a resource template. /// @@ -19087,25 +23272,26 @@ public: /// An IfcTypeResource may have a list of property sets attached, accessible by the attribute SELF\IfcTypeObject.HasPropertySets. Currently there are no predefined property sets defined as part of the IFC specification. /// /// NOTE: For property sets, a property within an occurrence property set that is assigned at the resource occurrence, overrides the same property assigned to the resource type. -class IFC_PARSE_API IfcTypeResource : public IfcTypeObject, public IfcResourceSelect { +class IFC_PARSE_API IfcTypeResource : public IfcTypeObject { public: + IfcTypeResource() {} + explicit IfcTypeResource (const std::weak_ptr& data) : IfcTypeObject(data) {} + /// An identifying designation given to a resource type. - boost::optional< std::string > Identification() const; - void setIdentification(boost::optional< std::string > v); + std::optional< std::string > Identification() const; + void setIdentification(const std::optional< std::string >& v); /// An long description, or text, describing the resource in detail. /// /// NOTE The inherited SELF\IfcRoot.Description attribute is used as the short description. - boost::optional< std::string > LongDescription() const; - void setLongDescription(boost::optional< std::string > v); + std::optional< std::string > LongDescription() const; + void setLongDescription(const std::optional< std::string >& v); /// The type denotes a particular type that indicates the resource further. The use has to be established at the level of instantiable subtypes. In particular it holds the user defined type, if the enumeration of the attribute 'PredefinedType' is set to USERDEFINED. - boost::optional< std::string > ResourceType() const; - void setResourceType(boost::optional< std::string > v); - aggregate_of< IfcRelAssignsToResource >::ptr ResourceOf() const; // INVERSE IfcRelAssignsToResource::RelatingResource - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > ResourceType() const; + void setResourceType(const std::optional< std::string >& v); + std::vector< IfcRelAssignsToResource > ResourceOf() const; // INVERSE IfcRelAssignsToResource::RelatingResource + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTypeResource (IfcEntityInstanceData&& e); - IfcTypeResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType); - typedef aggregate_of< IfcTypeResource > list; + // IfcTypeResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType); }; /// IfcUShapeProfileDef defines /// a section profile that provides the defining parameters of a U-shape @@ -19135,34 +23321,35 @@ public: /// relative to the profile. /// /// Figure 327 — U-shape profile -class IFC_PARSE_API IfcUShapeProfileDef : public IfcParameterizedProfileDef { +class IFC_PARSE_API IfcUShapeProfileDef : public IfcParameterizedProfileDef { public: + IfcUShapeProfileDef() {} + explicit IfcUShapeProfileDef (const std::weak_ptr& data) : IfcParameterizedProfileDef(data) {} + /// Web lengths, see illustration above (= h). double Depth() const; - void setDepth(double v); + void setDepth(const double& v); /// Flange lengths, see illustration above (= b). double FlangeWidth() const; - void setFlangeWidth(double v); + void setFlangeWidth(const double& v); /// Constant wall thickness of web (= ts). double WebThickness() const; - void setWebThickness(double v); + void setWebThickness(const double& v); /// Constant wall thickness of flange (= tg). double FlangeThickness() const; - void setFlangeThickness(double v); + void setFlangeThickness(const double& v); /// Fillet radius according the above illustration (= r1). - boost::optional< double > FilletRadius() const; - void setFilletRadius(boost::optional< double > v); + std::optional< double > FilletRadius() const; + void setFilletRadius(const std::optional< double >& v); /// Edge radius according the above illustration (= r2). - boost::optional< double > EdgeRadius() const; - void setEdgeRadius(boost::optional< double > v); + std::optional< double > EdgeRadius() const; + void setEdgeRadius(const std::optional< double >& v); /// Slope of flange of the profile. - boost::optional< double > FlangeSlope() const; - void setFlangeSlope(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > FlangeSlope() const; + void setFlangeSlope(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcUShapeProfileDef (IfcEntityInstanceData&& e); - IfcUShapeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::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); - typedef aggregate_of< IfcUShapeProfileDef > list; + // IfcUShapeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, std::optional< double > v8_FilletRadius, std::optional< double > v9_EdgeRadius, std::optional< double > v10_FlangeSlope); }; /// Definition from ISO/CD 10303-42:1992: The vector is defined in terms of the direction and magnitude of the vector. The value of the magnitude attribute defines the magnitude of the vector. /// @@ -19171,19 +23358,20 @@ public: /// NOTE: Corresponding ISO 10303 entity: vector. Please refer to ISO/IS 10303-42:1994, p.27 for the final definition of the formal standard. The derived attribute Dim has been added (see also note at IfcGeometricRepresentationItem). /// /// HISTORY: New entity in IFC Release 1.0 -class IFC_PARSE_API IfcVector : public IfcGeometricRepresentationItem, public IfcHatchLineDistanceSelect, public IfcVectorOrDirection { +class IFC_PARSE_API IfcVector : public IfcGeometricRepresentationItem { public: + IfcVector() {} + explicit IfcVector (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// The direction of the vector. - ::Ifc4x3_add2::IfcDirection* Orientation() const; - void setOrientation(::Ifc4x3_add2::IfcDirection* v); + ::Ifc4x3_add2::IfcDirection Orientation() const; + void setOrientation(const ::Ifc4x3_add2::IfcDirection& v); /// The magnitude of the vector. All vectors of Magnitude 0.0 are regarded as equal in value regardless of the orientation attribute. double Magnitude() const; - void setMagnitude(double v); - virtual const IfcParse::entity& declaration() const; + void setMagnitude(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcVector (IfcEntityInstanceData&& e); - IfcVector (::Ifc4x3_add2::IfcDirection* v1_Orientation, double v2_Magnitude); - typedef aggregate_of< IfcVector > list; + // IfcVector (::Ifc4x3_add2::IfcDirection v1_Orientation, double v2_Magnitude); }; /// Definition from ISO/CD 10303-42:1992: A vertex_loop is a loop of /// zero genus consisting of a single vertex. A vertex can exist independently of a @@ -19197,16 +23385,17 @@ public: /// NOTE  Corresponding ISO 10303 entity: vertex_loop. Please refer to ISO/IS 10303-42:1994, p. 121 for the final definition of the formal standard. /// /// HISTORY  New Entity in IFC2x2. -class IFC_PARSE_API IfcVertexLoop : public IfcLoop { +class IFC_PARSE_API IfcVertexLoop : public IfcLoop { public: + IfcVertexLoop() {} + explicit IfcVertexLoop (const std::weak_ptr& data) : IfcLoop(data) {} + /// The vertex which defines the entire loop. - ::Ifc4x3_add2::IfcVertex* LoopVertex() const; - void setLoopVertex(::Ifc4x3_add2::IfcVertex* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcVertex LoopVertex() const; + void setLoopVertex(const ::Ifc4x3_add2::IfcVertex& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcVertexLoop (IfcEntityInstanceData&& e); - IfcVertexLoop (::Ifc4x3_add2::IfcVertex* v1_LoopVertex); - typedef aggregate_of< IfcVertexLoop > list; + // IfcVertexLoop (::Ifc4x3_add2::IfcVertex v1_LoopVertex); }; /// IfcZShapeProfileDef defines /// a section profile that provides the defining parameters of a Z-shape @@ -19233,31 +23422,32 @@ public: /// relative to the profile. /// /// Figure 328 — Z-shape profile -class IFC_PARSE_API IfcZShapeProfileDef : public IfcParameterizedProfileDef { +class IFC_PARSE_API IfcZShapeProfileDef : public IfcParameterizedProfileDef { public: + IfcZShapeProfileDef() {} + explicit IfcZShapeProfileDef (const std::weak_ptr& data) : IfcParameterizedProfileDef(data) {} + /// Web length, see illustration above (= h). double Depth() const; - void setDepth(double v); + void setDepth(const double& v); /// Flange length, see illustration above (= b). double FlangeWidth() const; - void setFlangeWidth(double v); + void setFlangeWidth(const double& v); /// Constant wall thickness of web, see illustration above (= ts). double WebThickness() const; - void setWebThickness(double v); + void setWebThickness(const double& v); /// Constant wall thickness of flange, see illustration above (= tg). double FlangeThickness() const; - void setFlangeThickness(double v); + void setFlangeThickness(const double& v); /// Fillet radius according the above illustration (= r1). - boost::optional< double > FilletRadius() const; - void setFilletRadius(boost::optional< double > v); + std::optional< double > FilletRadius() const; + void setFilletRadius(const std::optional< double >& v); /// Edge radius according the above illustration (= r2). - boost::optional< double > EdgeRadius() const; - void setEdgeRadius(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > EdgeRadius() const; + void setEdgeRadius(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcZShapeProfileDef (IfcEntityInstanceData&& e); - IfcZShapeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::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 aggregate_of< IfcZShapeProfileDef > list; + // IfcZShapeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, std::optional< double > v8_FilletRadius, std::optional< double > v9_EdgeRadius); }; /// An advanced face is a specialization of a face surface that has to meet requirements on using particular topological and geometric representation items for the definition of the faces, edges and vertices. /// @@ -19272,13 +23462,14 @@ public: /// the final definition of the formal standard. /// /// HISTORY  New entity in IFC2x4 -class IFC_PARSE_API IfcAdvancedFace : public IfcFaceSurface { +class IFC_PARSE_API IfcAdvancedFace : public IfcFaceSurface { public: - virtual const IfcParse::entity& declaration() const; + IfcAdvancedFace() {} + explicit IfcAdvancedFace (const std::weak_ptr& data) : IfcFaceSurface(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAdvancedFace (IfcEntityInstanceData&& e); - IfcAdvancedFace (aggregate_of< ::Ifc4x3_add2::IfcFaceBound >::ptr v1_Bounds, ::Ifc4x3_add2::IfcSurface* v2_FaceSurface, bool v3_SameSense); - typedef aggregate_of< IfcAdvancedFace > list; + // IfcAdvancedFace (std::vector< ::Ifc4x3_add2::IfcFaceBound > v1_Bounds, ::Ifc4x3_add2::IfcSurface v2_FaceSurface, bool v3_SameSense); }; /// Definition from ISO/CD 10303-46:1992: An annotation fill area is a set of curves that may be filled with hatching, colour or tiling. The annotation fill are is described by boundaries which consist of non-intersecting, non-self-intersecting closed curves. These curves form the boundary of planar areas to be filled according to the style for the annotation fill area. /// @@ -19300,23 +23491,24 @@ public: /// HISTORY  New entity in IFC2x2. /// /// IFC2x3 CHANGE  The two attributes OuterBoundary and InnerBoundaries are added and replace the previous single boundary. -class IFC_PARSE_API IfcAnnotationFillArea : public IfcGeometricRepresentationItem { +class IFC_PARSE_API IfcAnnotationFillArea : public IfcGeometricRepresentationItem { public: + IfcAnnotationFillArea() {} + explicit IfcAnnotationFillArea (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// A closed curve that defines the outer boundary of the fill area. The areas defined by the outer boundary (minus potentially defined inner boundaries) is filled by the fill area style. /// /// IFC2x Edition 3 CHANGE  The two new attributes OuterBoundary and InnerBoundaries replace the old single attribute Boundaries. - ::Ifc4x3_add2::IfcCurve* OuterBoundary() const; - void setOuterBoundary(::Ifc4x3_add2::IfcCurve* v); + ::Ifc4x3_add2::IfcCurve OuterBoundary() const; + void setOuterBoundary(const ::Ifc4x3_add2::IfcCurve& v); /// A set of inner curves that define the inner boundaries of the fill area. The areas defined by the inner boundaries are excluded from applying the fill area style. /// /// IFC2x Edition 3 CHANGE  The two new attributes OuterBoundary and InnerBoundaries replace the old single attribute Boundaries. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr > InnerBoundaries() const; - void setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< ::Ifc4x3_add2::IfcCurve > > InnerBoundaries() const; + void setInnerBoundaries(const std::optional< std::vector< ::Ifc4x3_add2::IfcCurve > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAnnotationFillArea (IfcEntityInstanceData&& e); - IfcAnnotationFillArea (::Ifc4x3_add2::IfcCurve* v1_OuterBoundary, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr > v2_InnerBoundaries); - typedef aggregate_of< IfcAnnotationFillArea > list; + // IfcAnnotationFillArea (::Ifc4x3_add2::IfcCurve v1_OuterBoundary, std::optional< std::vector< ::Ifc4x3_add2::IfcCurve > > v2_InnerBoundaries); }; /// IfcAsymmetricIShapeProfileDef /// defines a section profile that provides the defining parameters of a @@ -19355,40 +23547,41 @@ public: /// relative to the profile. The parameterized profile is defined by a set of parameter attributes. In the illustrated example, the 'CentreOfGravityInY' property in IfcExtendedProfileProperties, if provided, is negative. /// /// Figure 310 — Assymetric I-shape profile -class IFC_PARSE_API IfcAsymmetricIShapeProfileDef : public IfcParameterizedProfileDef { +class IFC_PARSE_API IfcAsymmetricIShapeProfileDef : public IfcParameterizedProfileDef { public: + IfcAsymmetricIShapeProfileDef() {} + explicit IfcAsymmetricIShapeProfileDef (const std::weak_ptr& data) : IfcParameterizedProfileDef(data) {} + double BottomFlangeWidth() const; - void setBottomFlangeWidth(double v); + void setBottomFlangeWidth(const double& v); double OverallDepth() const; - void setOverallDepth(double v); + void setOverallDepth(const double& v); double WebThickness() const; - void setWebThickness(double v); + void setWebThickness(const double& v); double BottomFlangeThickness() const; - void setBottomFlangeThickness(double v); - boost::optional< double > BottomFlangeFilletRadius() const; - void setBottomFlangeFilletRadius(boost::optional< double > v); + void setBottomFlangeThickness(const double& v); + std::optional< double > BottomFlangeFilletRadius() const; + void setBottomFlangeFilletRadius(const std::optional< double >& v); /// Extent of the top flange, defined parallel to the x axis of the position coordinate system. double TopFlangeWidth() const; - void setTopFlangeWidth(double v); + void setTopFlangeWidth(const double& v); /// Flange thickness of the top flange of the I-shape. - boost::optional< double > TopFlangeThickness() const; - void setTopFlangeThickness(boost::optional< double > v); + std::optional< double > TopFlangeThickness() const; + void setTopFlangeThickness(const std::optional< double >& v); /// The fillet between the web and the top flange of the I-shape. - boost::optional< double > TopFlangeFilletRadius() const; - void setTopFlangeFilletRadius(boost::optional< double > v); - boost::optional< double > BottomFlangeEdgeRadius() const; - void setBottomFlangeEdgeRadius(boost::optional< double > v); - boost::optional< double > BottomFlangeSlope() const; - void setBottomFlangeSlope(boost::optional< double > v); - boost::optional< double > TopFlangeEdgeRadius() const; - void setTopFlangeEdgeRadius(boost::optional< double > v); - boost::optional< double > TopFlangeSlope() const; - void setTopFlangeSlope(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > TopFlangeFilletRadius() const; + void setTopFlangeFilletRadius(const std::optional< double >& v); + std::optional< double > BottomFlangeEdgeRadius() const; + void setBottomFlangeEdgeRadius(const std::optional< double >& v); + std::optional< double > BottomFlangeSlope() const; + void setBottomFlangeSlope(const std::optional< double >& v); + std::optional< double > TopFlangeEdgeRadius() const; + void setTopFlangeEdgeRadius(const std::optional< double >& v); + std::optional< double > TopFlangeSlope() const; + void setTopFlangeSlope(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAsymmetricIShapeProfileDef (IfcEntityInstanceData&& e); - IfcAsymmetricIShapeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_BottomFlangeWidth, double v5_OverallDepth, double v6_WebThickness, double v7_BottomFlangeThickness, boost::optional< double > v8_BottomFlangeFilletRadius, double v9_TopFlangeWidth, boost::optional< double > v10_TopFlangeThickness, boost::optional< double > v11_TopFlangeFilletRadius, boost::optional< double > v12_BottomFlangeEdgeRadius, boost::optional< double > v13_BottomFlangeSlope, boost::optional< double > v14_TopFlangeEdgeRadius, boost::optional< double > v15_TopFlangeSlope); - typedef aggregate_of< IfcAsymmetricIShapeProfileDef > list; + // IfcAsymmetricIShapeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_BottomFlangeWidth, double v5_OverallDepth, double v6_WebThickness, double v7_BottomFlangeThickness, std::optional< double > v8_BottomFlangeFilletRadius, double v9_TopFlangeWidth, std::optional< double > v10_TopFlangeThickness, std::optional< double > v11_TopFlangeFilletRadius, std::optional< double > v12_BottomFlangeEdgeRadius, std::optional< double > v13_BottomFlangeSlope, std::optional< double > v14_TopFlangeEdgeRadius, std::optional< double > v15_TopFlangeSlope); }; /// Definition from ISO/CD 10303-42:1992: The direction and location in three dimensional space of a single axis. An axis1_placement is defined in terms of a locating point (inherited from placement supertype) and an axis direction: this is either the direction of axis or defaults to (0.0,0.0,1.0). The actual direction for the axis placement is given by the derived attribute z (Z). /// @@ -19399,16 +23592,17 @@ public: /// Figure 274 illustrates the definition of the IfcAxis1Placement within the three-dimensional coordinate system. /// /// Figure 274 — Axis1 placement -class IFC_PARSE_API IfcAxis1Placement : public IfcPlacement { +class IFC_PARSE_API IfcAxis1Placement : public IfcPlacement { public: + IfcAxis1Placement() {} + explicit IfcAxis1Placement (const std::weak_ptr& data) : IfcPlacement(data) {} + /// The direction of the local Z axis. - ::Ifc4x3_add2::IfcDirection* Axis() const; - void setAxis(::Ifc4x3_add2::IfcDirection* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcDirection Axis() const; + void setAxis(const ::Ifc4x3_add2::IfcDirection& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAxis1Placement (IfcEntityInstanceData&& e); - IfcAxis1Placement (::Ifc4x3_add2::IfcPoint* v1_Location, ::Ifc4x3_add2::IfcDirection* v2_Axis); - typedef aggregate_of< IfcAxis1Placement > list; + // IfcAxis1Placement (::Ifc4x3_add2::IfcPoint v1_Location, ::Ifc4x3_add2::IfcDirection v2_Axis); }; /// Definition from ISO/CD 10303-42:1992: The location and orientation in two dimensional space of two mutually perpendicular axes. An axis2_placement_2d is defined in terms of a point, (inherited from the placement supertype), and an axis. It can be used to locate and originate an object in two dimensional space and to define a placement coordinate system. The class includes a point which forms the origin of the placement coordinate system. A direction vector is required to complete the definition of the placement coordinate system. The reference direction defines the placement X axis direction, the placement Y axis is derived from this. /// @@ -19421,16 +23615,17 @@ public: /// Figure 275 illustrates the definition of the IfcAxis2Placement2D within the two-dimensional coordinate system. /// /// Figure 275 — Axis2 placement 2D -class IFC_PARSE_API IfcAxis2Placement2D : public IfcPlacement, public IfcAxis2Placement { +class IFC_PARSE_API IfcAxis2Placement2D : public IfcPlacement { public: + IfcAxis2Placement2D() {} + explicit IfcAxis2Placement2D (const std::weak_ptr& data) : IfcPlacement(data) {} + /// The direction used to determine the direction of the local X axis. If a value is omited that it defaults to [1.0, 0.0.]. - ::Ifc4x3_add2::IfcDirection* RefDirection() const; - void setRefDirection(::Ifc4x3_add2::IfcDirection* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcDirection RefDirection() const; + void setRefDirection(const ::Ifc4x3_add2::IfcDirection& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAxis2Placement2D (IfcEntityInstanceData&& e); - IfcAxis2Placement2D (::Ifc4x3_add2::IfcPoint* v1_Location, ::Ifc4x3_add2::IfcDirection* v2_RefDirection); - typedef aggregate_of< IfcAxis2Placement2D > list; + // IfcAxis2Placement2D (::Ifc4x3_add2::IfcPoint v1_Location, ::Ifc4x3_add2::IfcDirection v2_RefDirection); }; /// Definition from ISO/CD 10303-42:1992: The location and orientation in three dimensional space of three mutually perpendicular axes. An axis2_placement_3D is defined in terms of a point (inherited from placement supertype) and two (ideally orthogonal) axes. It can be used to locate and originate an object in three dimensional space and to define a placement coordinate system. The entity includes a point which forms the origin of the placement coordinate system. Two direction vectors are required to complete the definition of the placement coordinate system. The axis is the placement Z axis direction and the ref_direction is an approximation to the placement X axis direction. /// @@ -19445,32 +23640,34 @@ public: /// Figure 276 illustrates the definition of the IfcAxis2Placement3D within the three-dimensional coordinate system. /// /// Figure 276 — Axis2 placement 3D -class IFC_PARSE_API IfcAxis2Placement3D : public IfcPlacement, public IfcAxis2Placement { +class IFC_PARSE_API IfcAxis2Placement3D : public IfcPlacement { public: + IfcAxis2Placement3D() {} + explicit IfcAxis2Placement3D (const std::weak_ptr& data) : IfcPlacement(data) {} + /// The exact direction of the local Z Axis. - ::Ifc4x3_add2::IfcDirection* Axis() const; - void setAxis(::Ifc4x3_add2::IfcDirection* v); + ::Ifc4x3_add2::IfcDirection Axis() const; + void setAxis(const ::Ifc4x3_add2::IfcDirection& v); /// The direction used to determine the direction of the local X Axis. If necessary an adjustment is made to maintain orthogonality to the Axis direction. If Axis and/or RefDirection is omitted, these directions are taken from the geometric coordinate system. - ::Ifc4x3_add2::IfcDirection* RefDirection() const; - void setRefDirection(::Ifc4x3_add2::IfcDirection* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcDirection RefDirection() const; + void setRefDirection(const ::Ifc4x3_add2::IfcDirection& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAxis2Placement3D (IfcEntityInstanceData&& e); - IfcAxis2Placement3D (::Ifc4x3_add2::IfcPoint* v1_Location, ::Ifc4x3_add2::IfcDirection* v2_Axis, ::Ifc4x3_add2::IfcDirection* v3_RefDirection); - typedef aggregate_of< IfcAxis2Placement3D > list; + // IfcAxis2Placement3D (::Ifc4x3_add2::IfcPoint v1_Location, ::Ifc4x3_add2::IfcDirection v2_Axis, ::Ifc4x3_add2::IfcDirection v3_RefDirection); }; -class IFC_PARSE_API IfcAxis2PlacementLinear : public IfcPlacement { +class IFC_PARSE_API IfcAxis2PlacementLinear : public IfcPlacement { public: - ::Ifc4x3_add2::IfcDirection* Axis() const; - void setAxis(::Ifc4x3_add2::IfcDirection* v); - ::Ifc4x3_add2::IfcDirection* RefDirection() const; - void setRefDirection(::Ifc4x3_add2::IfcDirection* v); - virtual const IfcParse::entity& declaration() const; + IfcAxis2PlacementLinear() {} + explicit IfcAxis2PlacementLinear (const std::weak_ptr& data) : IfcPlacement(data) {} + + ::Ifc4x3_add2::IfcDirection Axis() const; + void setAxis(const ::Ifc4x3_add2::IfcDirection& v); + ::Ifc4x3_add2::IfcDirection RefDirection() const; + void setRefDirection(const ::Ifc4x3_add2::IfcDirection& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAxis2PlacementLinear (IfcEntityInstanceData&& e); - IfcAxis2PlacementLinear (::Ifc4x3_add2::IfcPoint* v1_Location, ::Ifc4x3_add2::IfcDirection* v2_Axis, ::Ifc4x3_add2::IfcDirection* v3_RefDirection); - typedef aggregate_of< IfcAxis2PlacementLinear > list; + // IfcAxis2PlacementLinear (::Ifc4x3_add2::IfcPoint v1_Location, ::Ifc4x3_add2::IfcDirection v2_Axis, ::Ifc4x3_add2::IfcDirection v3_RefDirection); }; /// Definition from ISO/CD 10303-42:1992: A Boolean result /// is the result of a regularized operation on two solids to create @@ -19498,22 +23695,23 @@ public: /// NOTE Corresponding ISO 10303-42 entity: boolean_result. The derived attribute Dim has been added at this level and was therefore demoted from the geometric_representation_item. Please refer to ISO/IS 10303-42:1994, p.175 for the final definition of the formal standard. /// /// HISTORY: New class in IFC Release 1.5.1. -class IFC_PARSE_API IfcBooleanResult : public IfcGeometricRepresentationItem, public IfcBooleanOperand, public IfcCsgSelect { +class IFC_PARSE_API IfcBooleanResult : public IfcGeometricRepresentationItem { public: + IfcBooleanResult() {} + explicit IfcBooleanResult (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// The Boolean operator used in the operation to create the result. ::Ifc4x3_add2::IfcBooleanOperator::Value Operator() const; - void setOperator(::Ifc4x3_add2::IfcBooleanOperator::Value v); + void setOperator(const ::Ifc4x3_add2::IfcBooleanOperator::Value& v); /// The first operand to be operated upon by the Boolean operation. - ::Ifc4x3_add2::IfcBooleanOperand* FirstOperand() const; - void setFirstOperand(::Ifc4x3_add2::IfcBooleanOperand* v); + ::Ifc4x3_add2::IfcBooleanOperand FirstOperand() const; + void setFirstOperand(const ::Ifc4x3_add2::IfcBooleanOperand& v); /// The second operand specified for the operation. - ::Ifc4x3_add2::IfcBooleanOperand* SecondOperand() const; - void setSecondOperand(::Ifc4x3_add2::IfcBooleanOperand* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcBooleanOperand SecondOperand() const; + void setSecondOperand(const ::Ifc4x3_add2::IfcBooleanOperand& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBooleanResult (IfcEntityInstanceData&& e); - IfcBooleanResult (::Ifc4x3_add2::IfcBooleanOperator::Value v1_Operator, ::Ifc4x3_add2::IfcBooleanOperand* v2_FirstOperand, ::Ifc4x3_add2::IfcBooleanOperand* v3_SecondOperand); - typedef aggregate_of< IfcBooleanResult > list; + // IfcBooleanResult (::Ifc4x3_add2::IfcBooleanOperator::Value v1_Operator, ::Ifc4x3_add2::IfcBooleanOperand v2_FirstOperand, ::Ifc4x3_add2::IfcBooleanOperand v3_SecondOperand); }; /// Definition from ISO/CD 10303-42:1992: A bounded surface is a surface of finite area with identifiable boundaries. /// @@ -19527,13 +23725,14 @@ public: /// /// A bounded surface has finite non-zero surface area. /// A bounded surface has boundary curves. -class IFC_PARSE_API IfcBoundedSurface : public IfcSurface { +class IFC_PARSE_API IfcBoundedSurface : public IfcSurface { public: - virtual const IfcParse::entity& declaration() const; + IfcBoundedSurface() {} + explicit IfcBoundedSurface (const std::weak_ptr& data) : IfcSurface(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBoundedSurface (IfcEntityInstanceData&& e); - IfcBoundedSurface (); - typedef aggregate_of< IfcBoundedSurface > list; + // IfcBoundedSurface (); }; /// Definition from ISO/CD 10303-42:1992: A box domain /// is an orthogonal box parallel to the axes of the geometric @@ -19557,25 +23756,26 @@ public: /// As shown in Figure 252, the IfcBoundingBox is defined with its own location which can be used to place the IfcBoundingBox relative to the geometric coordinate system. The IfcBoundingBox is defined by the lower left corner (Corner) and the upper right corner (XDim, YDim, ZDim measured within the parent co-ordinate system). /// /// Figure 252 — Bounding box -class IFC_PARSE_API IfcBoundingBox : public IfcGeometricRepresentationItem { +class IFC_PARSE_API IfcBoundingBox : public IfcGeometricRepresentationItem { public: + IfcBoundingBox() {} + explicit IfcBoundingBox (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// Location of the bottom left corner (having the minimum values). - ::Ifc4x3_add2::IfcCartesianPoint* Corner() const; - void setCorner(::Ifc4x3_add2::IfcCartesianPoint* v); + ::Ifc4x3_add2::IfcCartesianPoint Corner() const; + void setCorner(const ::Ifc4x3_add2::IfcCartesianPoint& v); /// Length attribute (measured along the edge parallel to the X Axis) double XDim() const; - void setXDim(double v); + void setXDim(const double& v); /// Width attribute (measured along the edge parallel to the Y Axis) double YDim() const; - void setYDim(double v); + void setYDim(const double& v); /// Height attribute (measured along the edge parallel to the Z Axis). double ZDim() const; - void setZDim(double v); - virtual const IfcParse::entity& declaration() const; + void setZDim(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBoundingBox (IfcEntityInstanceData&& e); - IfcBoundingBox (::Ifc4x3_add2::IfcCartesianPoint* v1_Corner, double v2_XDim, double v3_YDim, double v4_ZDim); - typedef aggregate_of< IfcBoundingBox > list; + // IfcBoundingBox (::Ifc4x3_add2::IfcCartesianPoint v1_Corner, double v2_XDim, double v3_YDim, double v4_ZDim); }; /// Definition from ISO/CD 10303-42:1992: This entity is a subtype of the half space solid which is trimmed by a surrounding rectangular box. The box has its edges parallel to the coordinate axes of the geometric coordinate system. /// @@ -19607,16 +23807,17 @@ public: /// The Enclosure therefore helps to prevent dealing with infinite-size related issues. The enclosure box is positioned within the object coordinate system, established by the ObjectPlacement of the element represented (for example, by IfcLocalPlacement). Figure 254 shows the Enclosure box being sufficiently large to fully enclose the Boolean result. /// /// Figure 254 — Boxed half space geometry -class IFC_PARSE_API IfcBoxedHalfSpace : public IfcHalfSpaceSolid { +class IFC_PARSE_API IfcBoxedHalfSpace : public IfcHalfSpaceSolid { public: + IfcBoxedHalfSpace() {} + explicit IfcBoxedHalfSpace (const std::weak_ptr& data) : IfcHalfSpaceSolid(data) {} + /// The box which bounds the resulting solid of the Boolean operation involving the half space solid for computational purposes only. - ::Ifc4x3_add2::IfcBoundingBox* Enclosure() const; - void setEnclosure(::Ifc4x3_add2::IfcBoundingBox* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcBoundingBox Enclosure() const; + void setEnclosure(const ::Ifc4x3_add2::IfcBoundingBox& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBoxedHalfSpace (IfcEntityInstanceData&& e); - IfcBoxedHalfSpace (::Ifc4x3_add2::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag, ::Ifc4x3_add2::IfcBoundingBox* v3_Enclosure); - typedef aggregate_of< IfcBoxedHalfSpace > list; + // IfcBoxedHalfSpace (::Ifc4x3_add2::IfcSurface v1_BaseSurface, bool v2_AgreementFlag, ::Ifc4x3_add2::IfcBoundingBox v3_Enclosure); }; /// IfcCShapeProfileDef defines /// a section profile that provides the defining parameters of a C-shaped @@ -19640,28 +23841,29 @@ public: /// By using offsets of the position location, the parameterized profile can be positioned centric (using x,y offsets = 0.), or at any position relative to the profile. The parameterized profile is defined by a set of parameter attributes. In the illustrated example, the 'CentreOfGravityInX' property in IfcExtendedProfileProperties, if provided, is negative. /// /// Figure 315 — C-shape profile -class IFC_PARSE_API IfcCShapeProfileDef : public IfcParameterizedProfileDef { +class IFC_PARSE_API IfcCShapeProfileDef : public IfcParameterizedProfileDef { public: + IfcCShapeProfileDef() {} + explicit IfcCShapeProfileDef (const std::weak_ptr& data) : IfcParameterizedProfileDef(data) {} + /// Profile depth, see illustration above (= h). double Depth() const; - void setDepth(double v); + void setDepth(const double& v); /// Profile width, see illustration above (= b). double Width() const; - void setWidth(double v); + void setWidth(const double& v); /// Constant wall thickness of profile (= ts). double WallThickness() const; - void setWallThickness(double v); + void setWallThickness(const double& v); /// Lengths of girth, see illustration above (= c). double Girth() const; - void setGirth(double v); + void setGirth(const double& v); /// Internal fillet radius according the above illustration (= r1). - boost::optional< double > InternalFilletRadius() const; - void setInternalFilletRadius(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > InternalFilletRadius() const; + void setInternalFilletRadius(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCShapeProfileDef (IfcEntityInstanceData&& e); - IfcCShapeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_Width, double v6_WallThickness, double v7_Girth, boost::optional< double > v8_InternalFilletRadius); - typedef aggregate_of< IfcCShapeProfileDef > list; + // IfcCShapeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_Depth, double v5_Width, double v6_WallThickness, double v7_Girth, std::optional< double > v8_InternalFilletRadius); }; /// Definition from ISO/CD 10303-42:1992: A point defined by its coordinates in a two or three dimensional rectangular Cartesian coordinate system, or in a two dimensional parameter space. The entity is defined in a two or three dimensional space. /// @@ -19670,51 +23872,55 @@ public: /// NOTE: Corresponding STEP entity: cartesian_point, please refer to ISO/IS 10303-42:1994, p. 23 for the final definition of the formal standard. /// /// HISTORY: New entity in IFC Release 1.0 -class IFC_PARSE_API IfcCartesianPoint : public IfcPoint, public IfcTrimmingSelect { +class IFC_PARSE_API IfcCartesianPoint : public IfcPoint { public: + IfcCartesianPoint() {} + explicit IfcCartesianPoint (const std::weak_ptr& data) : IfcPoint(data) {} + /// The first, second, and third coordinate of the point location. If placed in a two or three dimensional rectangular Cartesian coordinate system, Coordinates[1] is the X coordinate, Coordinates[2] is the Y coordinate, and Coordinates[3] is the Z coordinate. std::vector< double > /*[1:3]*/ Coordinates() const; - void setCoordinates(std::vector< double > /*[1:3]*/ v); - virtual const IfcParse::entity& declaration() const; + void setCoordinates(const 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 aggregate_of< IfcCartesianPoint > list; + // IfcCartesianPoint (std::vector< double > /*[1:3]*/ v1_Coordinates); }; -class IFC_PARSE_API IfcCartesianPointList : public IfcGeometricRepresentationItem { +class IFC_PARSE_API IfcCartesianPointList : public IfcGeometricRepresentationItem { public: - virtual const IfcParse::entity& declaration() const; + IfcCartesianPointList() {} + explicit IfcCartesianPointList (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCartesianPointList (IfcEntityInstanceData&& e); - IfcCartesianPointList (); - typedef aggregate_of< IfcCartesianPointList > list; + // IfcCartesianPointList (); }; -class IFC_PARSE_API IfcCartesianPointList2D : public IfcCartesianPointList { +class IFC_PARSE_API IfcCartesianPointList2D : public IfcCartesianPointList { public: + IfcCartesianPointList2D() {} + explicit IfcCartesianPointList2D (const std::weak_ptr& data) : IfcCartesianPointList(data) {} + std::vector< std::vector< double > > CoordList() const; - void setCoordList(std::vector< std::vector< double > > v); - boost::optional< std::vector< std::string > /*[1:?]*/ > TagList() const; - void setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v); - virtual const IfcParse::entity& declaration() const; + void setCoordList(const std::vector< std::vector< double > >& v); + std::optional< std::vector< std::string > /*[1:?]*/ > TagList() const; + void setTagList(const std::optional< std::vector< std::string > /*[1:?]*/ >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCartesianPointList2D (IfcEntityInstanceData&& e); - IfcCartesianPointList2D (std::vector< std::vector< double > > v1_CoordList, boost::optional< std::vector< std::string > /*[1:?]*/ > v2_TagList); - typedef aggregate_of< IfcCartesianPointList2D > list; + // IfcCartesianPointList2D (std::vector< std::vector< double > > v1_CoordList, std::optional< std::vector< std::string > /*[1:?]*/ > v2_TagList); }; -class IFC_PARSE_API IfcCartesianPointList3D : public IfcCartesianPointList { +class IFC_PARSE_API IfcCartesianPointList3D : public IfcCartesianPointList { public: + IfcCartesianPointList3D() {} + explicit IfcCartesianPointList3D (const std::weak_ptr& data) : IfcCartesianPointList(data) {} + std::vector< std::vector< double > > CoordList() const; - void setCoordList(std::vector< std::vector< double > > v); - boost::optional< std::vector< std::string > /*[1:?]*/ > TagList() const; - void setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v); - virtual const IfcParse::entity& declaration() const; + void setCoordList(const std::vector< std::vector< double > >& v); + std::optional< std::vector< std::string > /*[1:?]*/ > TagList() const; + void setTagList(const std::optional< std::vector< std::string > /*[1:?]*/ >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCartesianPointList3D (IfcEntityInstanceData&& e); - IfcCartesianPointList3D (std::vector< std::vector< double > > v1_CoordList, boost::optional< std::vector< std::string > /*[1:?]*/ > v2_TagList); - typedef aggregate_of< IfcCartesianPointList3D > list; + // IfcCartesianPointList3D (std::vector< std::vector< double > > v1_CoordList, std::optional< std::vector< std::string > /*[1:?]*/ > v2_TagList); }; /// Definition from ISO/CD 10303-42:1992: A Cartesian transformation operator defines a geometric transformation composed of translation, rotation, mirroring and uniform scaling. The list of normalized vectors u defines the columns of an orthogonal matrix T. These vectors are computed, by the base axis function, from the direction attributes axis1, axis2 and, in Cartesian transformation operator 3d, axis3. If |T|= -1, the transformation includes mirroring. The local origin point A, the scale value S and the matrix T together define a transformation. /// @@ -19746,38 +23952,40 @@ public: /// NOTE: Corresponding ISO 10303 entity: cartesian_transformation_operator, please refer to ISO/IS 10303-42:1994, p. 32 for the final definition of the formal standard. /// /// HISTORY: New entity in IFC Release 2x. -class IFC_PARSE_API IfcCartesianTransformationOperator : public IfcGeometricRepresentationItem { +class IFC_PARSE_API IfcCartesianTransformationOperator : public IfcGeometricRepresentationItem { public: + IfcCartesianTransformationOperator() {} + explicit IfcCartesianTransformationOperator (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// The direction used to determine U[1], the derived X axis direction. - ::Ifc4x3_add2::IfcDirection* Axis1() const; - void setAxis1(::Ifc4x3_add2::IfcDirection* v); + ::Ifc4x3_add2::IfcDirection Axis1() const; + void setAxis1(const ::Ifc4x3_add2::IfcDirection& v); /// The direction used to determine U[2], the derived Y axis direction. - ::Ifc4x3_add2::IfcDirection* Axis2() const; - void setAxis2(::Ifc4x3_add2::IfcDirection* v); + ::Ifc4x3_add2::IfcDirection Axis2() const; + void setAxis2(const ::Ifc4x3_add2::IfcDirection& v); /// The required translation, specified as a cartesian point. The actual translation included in the transformation is from the geometric origin to the local origin. - ::Ifc4x3_add2::IfcCartesianPoint* LocalOrigin() const; - void setLocalOrigin(::Ifc4x3_add2::IfcCartesianPoint* v); + ::Ifc4x3_add2::IfcCartesianPoint LocalOrigin() const; + void setLocalOrigin(const ::Ifc4x3_add2::IfcCartesianPoint& v); /// The scaling value specified for the transformation. - boost::optional< double > Scale() const; - void setScale(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > Scale() const; + void setScale(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCartesianTransformationOperator (IfcEntityInstanceData&& e); - IfcCartesianTransformationOperator (::Ifc4x3_add2::IfcDirection* v1_Axis1, ::Ifc4x3_add2::IfcDirection* v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale); - typedef aggregate_of< IfcCartesianTransformationOperator > list; + // IfcCartesianTransformationOperator (::Ifc4x3_add2::IfcDirection v1_Axis1, ::Ifc4x3_add2::IfcDirection v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint v3_LocalOrigin, std::optional< double > v4_Scale); }; /// Definition from ISO/CD 10303-42:1992: A Cartesian transformation operator 2d defines a geometric transformation in two-dimensional space composed of translation, rotation, mirroring and uniform scaling. The list of normalized vectors u defines the columns of an orthogonal matrix T. These vectors are computed from the direction attributes axis1 and axis2 by the base axis function. If |T|= -1, the transformation includes mirroring. /// /// NOTE: Corresponding ISO 10303 entity : cartesian_transformation_operator_2d, please refer to ISO/IS 10303-42:1994, p. 36 for the final definition of the formal standard. /// /// HISTORY: New entity in IFC Release 2x. -class IFC_PARSE_API IfcCartesianTransformationOperator2D : public IfcCartesianTransformationOperator { +class IFC_PARSE_API IfcCartesianTransformationOperator2D : public IfcCartesianTransformationOperator { public: - virtual const IfcParse::entity& declaration() const; + IfcCartesianTransformationOperator2D() {} + explicit IfcCartesianTransformationOperator2D (const std::weak_ptr& data) : IfcCartesianTransformationOperator(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCartesianTransformationOperator2D (IfcEntityInstanceData&& e); - IfcCartesianTransformationOperator2D (::Ifc4x3_add2::IfcDirection* v1_Axis1, ::Ifc4x3_add2::IfcDirection* v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale); - typedef aggregate_of< IfcCartesianTransformationOperator2D > list; + // IfcCartesianTransformationOperator2D (::Ifc4x3_add2::IfcDirection v1_Axis1, ::Ifc4x3_add2::IfcDirection v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint v3_LocalOrigin, std::optional< double > v4_Scale); }; /// A Cartesian transformation operator 2d non uniform defines a geometric transformation in two-dimensional space composed of translation, rotation, mirroring and non uniform scaling. Non uniform scaling is given by two different scaling factors: /// @@ -19789,32 +23997,34 @@ public: /// NOTE: The scale factor (Scl) defined at the supertype IfcCartesianTransformationOperator is used to express the calculated Scale factor (normally x axis scale factor). /// /// HISTORY: New entity in IFC Release 2x. -class IFC_PARSE_API IfcCartesianTransformationOperator2DnonUniform : public IfcCartesianTransformationOperator2D { +class IFC_PARSE_API IfcCartesianTransformationOperator2DnonUniform : public IfcCartesianTransformationOperator2D { public: + IfcCartesianTransformationOperator2DnonUniform() {} + explicit IfcCartesianTransformationOperator2DnonUniform (const std::weak_ptr& data) : IfcCartesianTransformationOperator2D(data) {} + /// The scaling value specified for the transformation along the axis 2. This is normally the y scale factor. - boost::optional< double > Scale2() const; - void setScale2(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > Scale2() const; + void setScale2(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCartesianTransformationOperator2DnonUniform (IfcEntityInstanceData&& e); - IfcCartesianTransformationOperator2DnonUniform (::Ifc4x3_add2::IfcDirection* v1_Axis1, ::Ifc4x3_add2::IfcDirection* v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, boost::optional< double > v5_Scale2); - typedef aggregate_of< IfcCartesianTransformationOperator2DnonUniform > list; + // IfcCartesianTransformationOperator2DnonUniform (::Ifc4x3_add2::IfcDirection v1_Axis1, ::Ifc4x3_add2::IfcDirection v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint v3_LocalOrigin, std::optional< double > v4_Scale, std::optional< double > v5_Scale2); }; /// Definition from ISO/CD 10303-42:1992: A Cartesian transformation operator 3d defines a geometric transformation in three-dimensional space composed of translation, rotation, mirroring and uniform scaling. The list of normalized vectors u defines the columns of an orthogonal matrix T. These vectors are computed from the direction attributes axis1, axis2 and axis3 by the base axis function. If |T|= -1, the transformation includes mirroring. /// /// NOTE: Corresponding ISO 10303 entity: cartesian_transformation_operator_3d, please refer to ISO/IS 10303-42:1994, p. 33 for the final definition of the formal standard. /// /// HISTORY: New entity in IFC Release 2x. -class IFC_PARSE_API IfcCartesianTransformationOperator3D : public IfcCartesianTransformationOperator { +class IFC_PARSE_API IfcCartesianTransformationOperator3D : public IfcCartesianTransformationOperator { public: + IfcCartesianTransformationOperator3D() {} + explicit IfcCartesianTransformationOperator3D (const std::weak_ptr& data) : IfcCartesianTransformationOperator(data) {} + /// The exact direction of U[3], the derived Z axis direction. - ::Ifc4x3_add2::IfcDirection* Axis3() const; - void setAxis3(::Ifc4x3_add2::IfcDirection* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcDirection Axis3() const; + void setAxis3(const ::Ifc4x3_add2::IfcDirection& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCartesianTransformationOperator3D (IfcEntityInstanceData&& e); - IfcCartesianTransformationOperator3D (::Ifc4x3_add2::IfcDirection* v1_Axis1, ::Ifc4x3_add2::IfcDirection* v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, ::Ifc4x3_add2::IfcDirection* v5_Axis3); - typedef aggregate_of< IfcCartesianTransformationOperator3D > list; + // IfcCartesianTransformationOperator3D (::Ifc4x3_add2::IfcDirection v1_Axis1, ::Ifc4x3_add2::IfcDirection v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint v3_LocalOrigin, std::optional< double > v4_Scale, ::Ifc4x3_add2::IfcDirection v5_Axis3); }; /// A Cartesian transformation operator 3d non uniform defines a geometric transformation in three-dimensional space composed of translation, rotation, mirroring and non uniform scaling. Non uniform scaling is given by three different scaling factors: /// @@ -19827,19 +24037,20 @@ public: /// NOTE: The scale factor (Scl) defined at the supertype IfcCartesianTransformationOperator is used to express the calculated Scale factor (normally x axis scale factor). /// /// HISTORY: New entity in IFC Release 2x. -class IFC_PARSE_API IfcCartesianTransformationOperator3DnonUniform : public IfcCartesianTransformationOperator3D { +class IFC_PARSE_API IfcCartesianTransformationOperator3DnonUniform : public IfcCartesianTransformationOperator3D { public: + IfcCartesianTransformationOperator3DnonUniform() {} + explicit IfcCartesianTransformationOperator3DnonUniform (const std::weak_ptr& data) : IfcCartesianTransformationOperator3D(data) {} + /// The scaling value specified for the transformation along the axis 2. This is normally the y scale factor. - boost::optional< double > Scale2() const; - void setScale2(boost::optional< double > v); + std::optional< double > Scale2() const; + void setScale2(const std::optional< double >& v); /// The scaling value specified for the transformation along the axis 3. This is normally the z scale factor. - boost::optional< double > Scale3() const; - void setScale3(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > Scale3() const; + void setScale3(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCartesianTransformationOperator3DnonUniform (IfcEntityInstanceData&& e); - IfcCartesianTransformationOperator3DnonUniform (::Ifc4x3_add2::IfcDirection* v1_Axis1, ::Ifc4x3_add2::IfcDirection* v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, ::Ifc4x3_add2::IfcDirection* v5_Axis3, boost::optional< double > v6_Scale2, boost::optional< double > v7_Scale3); - typedef aggregate_of< IfcCartesianTransformationOperator3DnonUniform > list; + // IfcCartesianTransformationOperator3DnonUniform (::Ifc4x3_add2::IfcDirection v1_Axis1, ::Ifc4x3_add2::IfcDirection v2_Axis2, ::Ifc4x3_add2::IfcCartesianPoint v3_LocalOrigin, std::optional< double > v4_Scale, ::Ifc4x3_add2::IfcDirection v5_Axis3, std::optional< double > v6_Scale2, std::optional< double > v7_Scale3); }; /// IfcCircleProfileDef defines a circle as the profile definition used by the swept surface geometry or by the swept area solid. It is given by its Radius attribute and placed within the 2D position coordinate system, established by the Position attribute. /// @@ -19853,16 +24064,17 @@ public: /// Or in case of sectioned spines, it is the xy plane of each list member of IfcSectionedSpine.CrossSectionPositions. By using offsets of the position location, the parameterized profile can be positioned centric (using x,y offsets = 0.), or at any position relative to the profile. Explicit coordinate offsets are used to define cardinal points (e.g. upper-left bound). The Position attribute defines the 2D position coordinate system of the circle. The Radius attribute defines the radius of the circle. /// /// Figure 313 — Circle profile -class IFC_PARSE_API IfcCircleProfileDef : public IfcParameterizedProfileDef { +class IFC_PARSE_API IfcCircleProfileDef : public IfcParameterizedProfileDef { public: + IfcCircleProfileDef() {} + explicit IfcCircleProfileDef (const std::weak_ptr& data) : IfcParameterizedProfileDef(data) {} + /// The radius of the circle. double Radius() const; - void setRadius(double v); - virtual const IfcParse::entity& declaration() const; + void setRadius(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCircleProfileDef (IfcEntityInstanceData&& e); - IfcCircleProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_Radius); - typedef aggregate_of< IfcCircleProfileDef > list; + // IfcCircleProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_Radius); }; /// Definition from ISO/CD 10303-42:1992: A closed shell is a shell /// of the dimensionality 2 which typically serves as a bound for a region in R3. A @@ -19913,13 +24125,14 @@ public: /// The closed shell shall be an oriented arcwise connected 2-manifold. /// The Euler equation shall be satisfied. Note: Please refer to ISO/IS /// 10303-42:1994, p.149 for the equation. -class IFC_PARSE_API IfcClosedShell : public IfcConnectedFaceSet, public IfcShell, public IfcSolidOrShell { +class IFC_PARSE_API IfcClosedShell : public IfcConnectedFaceSet { public: - virtual const IfcParse::entity& declaration() const; + IfcClosedShell() {} + explicit IfcClosedShell (const std::weak_ptr& data) : IfcConnectedFaceSet(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcClosedShell (IfcEntityInstanceData&& e); - IfcClosedShell (aggregate_of< ::Ifc4x3_add2::IfcFace >::ptr v1_CfsFaces); - typedef aggregate_of< IfcClosedShell > list; + // IfcClosedShell (std::vector< ::Ifc4x3_add2::IfcFace > v1_CfsFaces); }; /// Definition from ISO/CD 10303-46:1992: A colour rgb as a subtype of colour specifications is defined by three colour component values for red, green, and blue in the RGB colour model. /// @@ -19929,48 +24142,50 @@ public: /// refer to ISO/IS 10303-46:1994, p. 138 for the final definition of the formal standard. /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcColourRgb : public IfcColourSpecification, public IfcColourOrFactor { +class IFC_PARSE_API IfcColourRgb : public IfcColourSpecification { public: + IfcColourRgb() {} + explicit IfcColourRgb (const std::weak_ptr& data) : IfcColourSpecification(data) {} + /// The intensity of the red colour component. /// /// NOTE  The colour component value is given within the range of 0..1, and not within the range of 0..255 as otherwise usual. double Red() const; - void setRed(double v); + void setRed(const double& v); /// The intensity of the green colour component. /// /// NOTE  The colour component value is given within the range of 0..1, and not within the range of 0..255 as otherwise usual. double Green() const; - void setGreen(double v); + void setGreen(const double& v); /// The intensity of the blue colour component. /// /// NOTE  The colour component value is given within the range of 0..1, and not within the range of 0..255 as otherwise usual. double Blue() const; - void setBlue(double v); - virtual const IfcParse::entity& declaration() const; + void setBlue(const 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 aggregate_of< IfcColourRgb > list; + // IfcColourRgb (std::optional< std::string > v1_Name, double v2_Red, double v3_Green, double v4_Blue); }; /// IfcComplexProperty is used to define complex properties to be handled completely within a property set. The included set of properties may be a mixed or consistent collection of IfcProperty subtypes. This enables the definition of a set of properties to be included as a single 'property' entry in an IfcPropertySet. The definition of such an IfcComplexProperty can be reused in many different IfcPropertySet's. /// /// NOTE  Since an IfcComplexProperty may contain other complex properties, sets of properties can be nested. This nesting may be restricted by view definitions and implementer agreements. /// /// HISTORY New Entity in IFC Release 2.0, capabilities enhanced in IFC Release 2x. -class IFC_PARSE_API IfcComplexProperty : public IfcProperty { +class IFC_PARSE_API IfcComplexProperty : public IfcProperty { public: + IfcComplexProperty() {} + explicit IfcComplexProperty (const std::weak_ptr& data) : IfcProperty(data) {} + /// Usage description of the IfcComplexProperty within the property set which references the IfcComplexProperty. /// NOTE: Consider a complex property for glazing properties. The Name attribute of the IfcComplexProperty could be Pset_GlazingProperties, and the UsageName attribute could be OuterGlazingPane. std::string UsageName() const; - void setUsageName(std::string v); + void setUsageName(const std::string& v); /// Set of properties that can be used within this complex property (may include other complex properties). - aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr HasProperties() const; - void setHasProperties(aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcProperty > HasProperties() const; + void setHasProperties(const std::vector< ::Ifc4x3_add2::IfcProperty >& 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_Specification, std::string v3_UsageName, aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v4_HasProperties); - typedef aggregate_of< IfcComplexProperty > list; + // IfcComplexProperty (std::string v1_Name, std::optional< std::string > v2_Specification, std::string v3_UsageName, std::vector< ::Ifc4x3_add2::IfcProperty > v4_HasProperties); }; /// Definition from ISO/CD 10303-42:1992: A composite curve segment is a bounded curve together with transition information which is used to construct a composite curve (IfcCompositeCurve). /// @@ -19979,21 +24194,22 @@ public: /// NOTE Corresponding ISO 10303 entity: composite_curve_segment. Please refer to ISO/IS 10303-42:1994, p.57 for the final definition of the formal standard. /// /// HISTORY New class in IFC Release 1.0 -class IFC_PARSE_API IfcCompositeCurveSegment : public IfcSegment { +class IFC_PARSE_API IfcCompositeCurveSegment : public IfcSegment { public: + IfcCompositeCurveSegment() {} + explicit IfcCompositeCurveSegment (const std::weak_ptr& data) : IfcSegment(data) {} + /// An indicator of whether or not the sense of the segment agrees with, or opposes, that of the parent curve. If SameSense is false, the point with highest parameter value is taken as the first point of the segment. /// /// NOTE  If the datatype of ParentCurve is IfcTrimmedCurve, the value of SameSense overrides the value of IfcTrimmedCurve.SenseAgreement bool SameSense() const; - void setSameSense(bool v); + void setSameSense(const bool& v); /// The bounded curve which defines the geometry of the segment. - ::Ifc4x3_add2::IfcCurve* ParentCurve() const; - void setParentCurve(::Ifc4x3_add2::IfcCurve* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcCurve ParentCurve() const; + void setParentCurve(const ::Ifc4x3_add2::IfcCurve& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCompositeCurveSegment (IfcEntityInstanceData&& e); - IfcCompositeCurveSegment (::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition, bool v2_SameSense, ::Ifc4x3_add2::IfcCurve* v3_ParentCurve); - typedef aggregate_of< IfcCompositeCurveSegment > list; + // IfcCompositeCurveSegment (::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition, bool v2_SameSense, ::Ifc4x3_add2::IfcCurve v3_ParentCurve); }; /// IfcConstructionResourceType is an abstract generalization of the different resource types used in construction projects, mainly labor, material, equipment and product resource types, plus subcontracted resource types and aggregations such as a crew resource type. /// @@ -20010,17 +24226,18 @@ public: /// Resource types may be assigned to process types (IfcTypeProcess subtypes) using the IfcRelAssignsToProcess relationship as shown in Figure 193. Such relationship indicates that the resource type applies to the process type for the use indicated (e.g. IfcTaskType.PredefinedType). Such relationship enables a scenario of placing an IfcProduct of a particular IfcTypeProduct, querying for a set of IfcTypeProcess process types for constructing such product (e.g. IfcTaskTypeEnum.CONSTRUCTION), querying each IfcTypeProcess for a set of IfcTypeResource resource types for carrying out the process, and finally choosing an IfcTypeProcess and IfcTypeResource combination resulting in the shortest time for instantiated IfcTask occurrence(s) and/or lowest-cost for instantiated IfcConstructionResource occurrence(s). /// /// Figure 193 — Construction resource type assignment -class IFC_PARSE_API IfcConstructionResourceType : public IfcTypeResource { +class IFC_PARSE_API IfcConstructionResourceType : public IfcTypeResource { public: - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > BaseCosts() const; - void setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v); - ::Ifc4x3_add2::IfcPhysicalQuantity* BaseQuantity() const; - void setBaseQuantity(::Ifc4x3_add2::IfcPhysicalQuantity* v); - virtual const IfcParse::entity& declaration() const; + IfcConstructionResourceType() {} + explicit IfcConstructionResourceType (const std::weak_ptr& data) : IfcTypeResource(data) {} + + std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > BaseCosts() const; + void setBaseCosts(const std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > >& v); + ::Ifc4x3_add2::IfcPhysicalQuantity BaseQuantity() const; + void setBaseQuantity(const ::Ifc4x3_add2::IfcPhysicalQuantity& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConstructionResourceType (IfcEntityInstanceData&& e); - IfcConstructionResourceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v11_BaseQuantity); - typedef aggregate_of< IfcConstructionResourceType > list; + // IfcConstructionResourceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v11_BaseQuantity); }; /// IfcContext is the generalization of a project context in which objects, type objects, property sets, and properties are defined. The IfcProject as subtype of IfcContext provides the context for all information on a construction project, it may include one or several IfcProjectLibrary as subtype of IfcContext to register the included libraries for the project. /// @@ -20035,34 +24252,35 @@ public: /// IfcContext) by using IfcRelDeclares /// /// More specific relationships are introduced at the level of subtypes. -class IFC_PARSE_API IfcContext : public IfcObjectDefinition { +class IFC_PARSE_API IfcContext : public IfcObjectDefinition { public: + IfcContext() {} + explicit IfcContext (const std::weak_ptr& data) : IfcObjectDefinition(data) {} + /// The type denotes a particular type that indicates the object further. The use has to be established at the level of instantiable subtypes. - boost::optional< std::string > ObjectType() const; - void setObjectType(boost::optional< std::string > v); + std::optional< std::string > ObjectType() const; + void setObjectType(const std::optional< std::string >& v); /// Long name for the context as used for reference purposes. - boost::optional< std::string > LongName() const; - void setLongName(boost::optional< std::string > v); + std::optional< std::string > LongName() const; + void setLongName(const std::optional< std::string >& v); /// Current project phase, or life-cycle phase of this project. Applicable values have to be agreed upon by view definitions or implementer agreements. - boost::optional< std::string > Phase() const; - void setPhase(boost::optional< std::string > v); + std::optional< std::string > Phase() const; + void setPhase(const std::optional< std::string >& v); /// Context of the representations used within the context. When the context is a project and it includes shape representations for its components, one or several geometric representation contexts need to be included that define e.g. the world coordinate system, the coordinate space dimensions, and/or the precision factor. /// /// IFC2x4 CHANGE  The attribute has been changed to be optional. Change made with upward compatibility for file based exchange. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationContext >::ptr > RepresentationContexts() const; - void setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationContext >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationContext > > RepresentationContexts() const; + void setRepresentationContexts(const std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationContext > >& v); /// Units globally assigned to measure types used within the context. /// /// IFC2x4 CHANGE  The attribute has been changed to be optional. Change made with upward compatibility for file based exchange. - ::Ifc4x3_add2::IfcUnitAssignment* UnitsInContext() const; - void setUnitsInContext(::Ifc4x3_add2::IfcUnitAssignment* v); - aggregate_of< IfcRelDefinesByProperties >::ptr IsDefinedBy() const; // INVERSE IfcRelDefinesByProperties::RelatedObjects - aggregate_of< IfcRelDeclares >::ptr Declares() const; // INVERSE IfcRelDeclares::RelatingContext - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcUnitAssignment UnitsInContext() const; + void setUnitsInContext(const ::Ifc4x3_add2::IfcUnitAssignment& v); + std::vector< IfcRelDefinesByProperties > IsDefinedBy() const; // INVERSE IfcRelDefinesByProperties::RelatedObjects + std::vector< IfcRelDeclares > Declares() const; // INVERSE IfcRelDeclares::RelatingContext + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcContext (IfcEntityInstanceData&& e); - IfcContext (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< std::string > v7_Phase, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationContext >::ptr > v8_RepresentationContexts, ::Ifc4x3_add2::IfcUnitAssignment* v9_UnitsInContext); - typedef aggregate_of< IfcContext > list; + // IfcContext (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_LongName, std::optional< std::string > v7_Phase, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationContext > > v8_RepresentationContexts, ::Ifc4x3_add2::IfcUnitAssignment v9_UnitsInContext); }; /// The resource type IfcCrewResourceType defines commonly shared information for occurrences of crew resources. The set of shared information may include: /// @@ -20074,32 +24292,34 @@ public: /// Occurrences of the IfcCrewResourceType are represented by instances of IfcCrewResource. /// /// HISTORY New entity in IFC2x4. -class IFC_PARSE_API IfcCrewResourceType : public IfcConstructionResourceType { +class IFC_PARSE_API IfcCrewResourceType : public IfcConstructionResourceType { public: + IfcCrewResourceType() {} + explicit IfcCrewResourceType (const std::weak_ptr& data) : IfcConstructionResourceType(data) {} + /// Defines types of crew resources. ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCrewResourceType (IfcEntityInstanceData&& e); - IfcCrewResourceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value v12_PredefinedType); - typedef aggregate_of< IfcCrewResourceType > list; + // IfcCrewResourceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v11_BaseQuantity, ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value v12_PredefinedType); }; /// IfcCsgPrimitive3D is an abstract supertype of all three dimensional primitives used as either tree root item, or as Boolean results within a CSG solid model. All 3D CSG primitives are defined within a three-dimensional placement coordinate system. /// /// NOTE No directly corresponding ISO 10303-42 entity, the select type primitive_3d covers the same individual 3D CSG primitives, the position attribute has been added to apply equally to all subtypes. Please refer to ISO/IS 10303-42:1994, p. 234 for the final definition of the formal standard. /// /// HISTORY New entity in IFC2x3. -class IFC_PARSE_API IfcCsgPrimitive3D : public IfcGeometricRepresentationItem, public IfcBooleanOperand, public IfcCsgSelect { +class IFC_PARSE_API IfcCsgPrimitive3D : public IfcGeometricRepresentationItem { public: + IfcCsgPrimitive3D() {} + explicit IfcCsgPrimitive3D (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// The placement coordinate system to which the parameters of each individual CSG primitive apply. - ::Ifc4x3_add2::IfcAxis2Placement3D* Position() const; - void setPosition(::Ifc4x3_add2::IfcAxis2Placement3D* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcAxis2Placement3D Position() const; + void setPosition(const ::Ifc4x3_add2::IfcAxis2Placement3D& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCsgPrimitive3D (IfcEntityInstanceData&& e); - IfcCsgPrimitive3D (::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position); - typedef aggregate_of< IfcCsgPrimitive3D > list; + // IfcCsgPrimitive3D (::Ifc4x3_add2::IfcAxis2Placement3D v1_Position); }; /// Definition from ISO/CD 10303-42:1992: A solid /// represented as a CSG model is defined by a collection of @@ -20142,16 +24362,17 @@ public: /// NOTE Corresponding ISO 10303-42 entity: csg_solid, please refer to ISO/IS 10303-42:1994, p.174 for the final definition of the formal standard. /// /// HISTORY New class in IFC Release 1.5.1 -class IFC_PARSE_API IfcCsgSolid : public IfcSolidModel { +class IFC_PARSE_API IfcCsgSolid : public IfcSolidModel { public: + IfcCsgSolid() {} + explicit IfcCsgSolid (const std::weak_ptr& data) : IfcSolidModel(data) {} + /// Boolean expression of primitives and regularized operators describing the solid. The root of the tree of Boolean expressions is given explicitly as an IfcBooleanResult entitiy or as a primitive (subtypes of IfcCsgPrimitive3D). - ::Ifc4x3_add2::IfcCsgSelect* TreeRootExpression() const; - void setTreeRootExpression(::Ifc4x3_add2::IfcCsgSelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcCsgSelect TreeRootExpression() const; + void setTreeRootExpression(const ::Ifc4x3_add2::IfcCsgSelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCsgSolid (IfcEntityInstanceData&& e); - IfcCsgSolid (::Ifc4x3_add2::IfcCsgSelect* v1_TreeRootExpression); - typedef aggregate_of< IfcCsgSolid > list; + // IfcCsgSolid (::Ifc4x3_add2::IfcCsgSelect v1_TreeRootExpression); }; /// Definition from ISO/CD 10303-42:1992: A curve can be envisioned as the path of a point moving in its coordinate space. /// @@ -20163,13 +24384,14 @@ public: /// /// A curve shall be arcwise connected /// A curve shall have an arc length greater than zero. -class IFC_PARSE_API IfcCurve : public IfcGeometricRepresentationItem, public IfcGeometricSetSelect { +class IFC_PARSE_API IfcCurve : public IfcGeometricRepresentationItem { public: - virtual const IfcParse::entity& declaration() const; + IfcCurve() {} + explicit IfcCurve (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCurve (IfcEntityInstanceData&& e); - IfcCurve (); - typedef aggregate_of< IfcCurve > list; + // IfcCurve (); }; /// Definition from ISO/CD 10303-42:1992: The curve bounded surface is a parametric surface with curved boundaries defined by one or more boundary curves. The bounded surface is defined to be the portion of the basis surface in the direction of N x T from any point on the boundary, where N is the surface normal and T the boundary curve tangent vector at this point. The region so defined shall be arcwise connected. /// @@ -20184,22 +24406,23 @@ public: /// HISTORY  New entity in IFC Release 1.5 /// /// IFC2x PLATFORM CHANGE: The data type of the attribute OuterBoundary and InnerBoundaries has been changed from Ifc2DCompositeCurve to its supertype IfcCurve with upward compatibility for file based exchange. -class IFC_PARSE_API IfcCurveBoundedPlane : public IfcBoundedSurface { +class IFC_PARSE_API IfcCurveBoundedPlane : public IfcBoundedSurface { public: + IfcCurveBoundedPlane() {} + explicit IfcCurveBoundedPlane (const std::weak_ptr& data) : IfcBoundedSurface(data) {} + /// The surface to be bound. - ::Ifc4x3_add2::IfcPlane* BasisSurface() const; - void setBasisSurface(::Ifc4x3_add2::IfcPlane* v); + ::Ifc4x3_add2::IfcPlane BasisSurface() const; + void setBasisSurface(const ::Ifc4x3_add2::IfcPlane& v); /// The outer boundary of the surface. - ::Ifc4x3_add2::IfcCurve* OuterBoundary() const; - void setOuterBoundary(::Ifc4x3_add2::IfcCurve* v); + ::Ifc4x3_add2::IfcCurve OuterBoundary() const; + void setOuterBoundary(const ::Ifc4x3_add2::IfcCurve& v); /// An optional set of inner boundaries. They shall not intersect each other or the outer boundary. - aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr InnerBoundaries() const; - void setInnerBoundaries(aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcCurve > InnerBoundaries() const; + void setInnerBoundaries(const std::vector< ::Ifc4x3_add2::IfcCurve >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCurveBoundedPlane (IfcEntityInstanceData&& e); - IfcCurveBoundedPlane (::Ifc4x3_add2::IfcPlane* v1_BasisSurface, ::Ifc4x3_add2::IfcCurve* v2_OuterBoundary, aggregate_of< ::Ifc4x3_add2::IfcCurve >::ptr v3_InnerBoundaries); - typedef aggregate_of< IfcCurveBoundedPlane > list; + // IfcCurveBoundedPlane (::Ifc4x3_add2::IfcPlane v1_BasisSurface, ::Ifc4x3_add2::IfcCurve v2_OuterBoundary, std::vector< ::Ifc4x3_add2::IfcCurve > v3_InnerBoundaries); }; /// Definition from ISO/CD 10303-42:1992 The curve bounded surface is a parametric surface with curved boundaries defined by one or more boundary curves. One of the boundary curves may be the outer boundary; any number of inner boundaries is permissible. The region of the curve bounded surface in the basis surface is defined to be the portion of the basis surface in the direction of N x T from any point on the boundary, where N is the surface normal and T the boundary curve tangent vector at this point. The region so defined shall be arcwise connected. /// @@ -20222,38 +24445,40 @@ public: /// Each curve in the set of Boundaries shall be closed. /// No two curves in the set of Boundaries shall intersect. /// At most one of the boundary curves may enclose any other boundary curve. If an IfcOuterBoundaryCurve is designated, only that curve may enclose any other boundary curve. -class IFC_PARSE_API IfcCurveBoundedSurface : public IfcBoundedSurface { +class IFC_PARSE_API IfcCurveBoundedSurface : public IfcBoundedSurface { public: + IfcCurveBoundedSurface() {} + explicit IfcCurveBoundedSurface (const std::weak_ptr& data) : IfcBoundedSurface(data) {} + /// The surface to be bounded. - ::Ifc4x3_add2::IfcSurface* BasisSurface() const; - void setBasisSurface(::Ifc4x3_add2::IfcSurface* v); + ::Ifc4x3_add2::IfcSurface BasisSurface() const; + void setBasisSurface(const ::Ifc4x3_add2::IfcSurface& v); /// The outer boundary of the surface. - aggregate_of< ::Ifc4x3_add2::IfcBoundaryCurve >::ptr Boundaries() const; - void setBoundaries(aggregate_of< ::Ifc4x3_add2::IfcBoundaryCurve >::ptr v); + std::vector< ::Ifc4x3_add2::IfcBoundaryCurve > Boundaries() const; + void setBoundaries(const std::vector< ::Ifc4x3_add2::IfcBoundaryCurve >& v); bool ImplicitOuter() const; - void setImplicitOuter(bool v); - virtual const IfcParse::entity& declaration() const; + void setImplicitOuter(const bool& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCurveBoundedSurface (IfcEntityInstanceData&& e); - IfcCurveBoundedSurface (::Ifc4x3_add2::IfcSurface* v1_BasisSurface, aggregate_of< ::Ifc4x3_add2::IfcBoundaryCurve >::ptr v2_Boundaries, bool v3_ImplicitOuter); - typedef aggregate_of< IfcCurveBoundedSurface > list; + // IfcCurveBoundedSurface (::Ifc4x3_add2::IfcSurface v1_BasisSurface, std::vector< ::Ifc4x3_add2::IfcBoundaryCurve > v2_Boundaries, bool v3_ImplicitOuter); }; -class IFC_PARSE_API IfcCurveSegment : public IfcSegment { +class IFC_PARSE_API IfcCurveSegment : public IfcSegment { public: - ::Ifc4x3_add2::IfcPlacement* Placement() const; - void setPlacement(::Ifc4x3_add2::IfcPlacement* v); - ::Ifc4x3_add2::IfcCurveMeasureSelect* SegmentStart() const; - void setSegmentStart(::Ifc4x3_add2::IfcCurveMeasureSelect* v); - ::Ifc4x3_add2::IfcCurveMeasureSelect* SegmentLength() const; - void setSegmentLength(::Ifc4x3_add2::IfcCurveMeasureSelect* v); - ::Ifc4x3_add2::IfcCurve* ParentCurve() const; - void setParentCurve(::Ifc4x3_add2::IfcCurve* v); - virtual const IfcParse::entity& declaration() const; + IfcCurveSegment() {} + explicit IfcCurveSegment (const std::weak_ptr& data) : IfcSegment(data) {} + + ::Ifc4x3_add2::IfcPlacement Placement() const; + void setPlacement(const ::Ifc4x3_add2::IfcPlacement& v); + ::Ifc4x3_add2::IfcCurveMeasureSelect SegmentStart() const; + void setSegmentStart(const ::Ifc4x3_add2::IfcCurveMeasureSelect& v); + ::Ifc4x3_add2::IfcCurveMeasureSelect SegmentLength() const; + void setSegmentLength(const ::Ifc4x3_add2::IfcCurveMeasureSelect& v); + ::Ifc4x3_add2::IfcCurve ParentCurve() const; + void setParentCurve(const ::Ifc4x3_add2::IfcCurve& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCurveSegment (IfcEntityInstanceData&& e); - IfcCurveSegment (::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition, ::Ifc4x3_add2::IfcPlacement* v2_Placement, ::Ifc4x3_add2::IfcCurveMeasureSelect* v3_SegmentStart, ::Ifc4x3_add2::IfcCurveMeasureSelect* v4_SegmentLength, ::Ifc4x3_add2::IfcCurve* v5_ParentCurve); - typedef aggregate_of< IfcCurveSegment > list; + // IfcCurveSegment (::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition, ::Ifc4x3_add2::IfcPlacement v2_Placement, ::Ifc4x3_add2::IfcCurveMeasureSelect v3_SegmentStart, ::Ifc4x3_add2::IfcCurveMeasureSelect v4_SegmentLength, ::Ifc4x3_add2::IfcCurve v5_ParentCurve); }; /// Definition from ISO/CD 10303-42:1992: This entity defines a general direction vector in two or three dimensional space. The actual magnitudes of the components have no effect upon the direction being defined, only the ratios X:Y:Z or X:Y are significant. /// @@ -20262,31 +24487,33 @@ public: /// NOTE: Corresponding ISO 10303 entity: direction. Please refer to ISO/IS 10303-42:1994, p.26 for the final definition of the formal standard. The derived attribute Dim has been added (see also note at IfcGeometricRepresentationItem). /// /// HISTORY: New entity in IFC Release 1.0 -class IFC_PARSE_API IfcDirection : public IfcGeometricRepresentationItem, public IfcGridPlacementDirectionSelect, public IfcVectorOrDirection { +class IFC_PARSE_API IfcDirection : public IfcGeometricRepresentationItem { public: + IfcDirection() {} + explicit IfcDirection (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// The components in the direction of X axis (DirectionRatios[1]), of Y axis (DirectionRatios[2]), and of Z axis (DirectionRatios[3]) std::vector< double > /*[2:3]*/ DirectionRatios() const; - void setDirectionRatios(std::vector< double > /*[2:3]*/ v); - virtual const IfcParse::entity& declaration() const; + void setDirectionRatios(const 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 aggregate_of< IfcDirection > list; + // IfcDirection (std::vector< double > /*[2:3]*/ v1_DirectionRatios); }; -class IFC_PARSE_API IfcDirectrixCurveSweptAreaSolid : public IfcSweptAreaSolid { +class IFC_PARSE_API IfcDirectrixCurveSweptAreaSolid : public IfcSweptAreaSolid { public: - ::Ifc4x3_add2::IfcCurve* Directrix() const; - void setDirectrix(::Ifc4x3_add2::IfcCurve* v); - ::Ifc4x3_add2::IfcCurveMeasureSelect* StartParam() const; - void setStartParam(::Ifc4x3_add2::IfcCurveMeasureSelect* v); - ::Ifc4x3_add2::IfcCurveMeasureSelect* EndParam() const; - void setEndParam(::Ifc4x3_add2::IfcCurveMeasureSelect* v); - virtual const IfcParse::entity& declaration() const; + IfcDirectrixCurveSweptAreaSolid() {} + explicit IfcDirectrixCurveSweptAreaSolid (const std::weak_ptr& data) : IfcSweptAreaSolid(data) {} + + ::Ifc4x3_add2::IfcCurve Directrix() const; + void setDirectrix(const ::Ifc4x3_add2::IfcCurve& v); + ::Ifc4x3_add2::IfcCurveMeasureSelect StartParam() const; + void setStartParam(const ::Ifc4x3_add2::IfcCurveMeasureSelect& v); + ::Ifc4x3_add2::IfcCurveMeasureSelect EndParam() const; + void setEndParam(const ::Ifc4x3_add2::IfcCurveMeasureSelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDirectrixCurveSweptAreaSolid (IfcEntityInstanceData&& e); - IfcDirectrixCurveSweptAreaSolid (::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcCurve* v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect* v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect* v5_EndParam); - typedef aggregate_of< IfcDirectrixCurveSweptAreaSolid > list; + // IfcDirectrixCurveSweptAreaSolid (::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcCurve v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect v5_EndParam); }; /// Definition from ISO/CD 10303-42:1992: An edge_loop is a loop with nonzero extent. It is a path in which the start and end vertices are the same. Its domain, if present, is a closed curve. An edge_loop may overlap itself. /// @@ -20299,16 +24526,17 @@ public: /// NOTE  Corresponding ISO 10303 entity: edge_loop. Please refer to ISO/IS 10303-42:1994, p. 122 for the final definition of the formal standard. /// /// HISTORY  New Entity in IFC2x2. -class IFC_PARSE_API IfcEdgeLoop : public IfcLoop { +class IFC_PARSE_API IfcEdgeLoop : public IfcLoop { public: + IfcEdgeLoop() {} + explicit IfcEdgeLoop (const std::weak_ptr& data) : IfcLoop(data) {} + /// A list of oriented edge entities which are concatenated together to form this path. - aggregate_of< ::Ifc4x3_add2::IfcOrientedEdge >::ptr EdgeList() const; - void setEdgeList(aggregate_of< ::Ifc4x3_add2::IfcOrientedEdge >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcOrientedEdge > EdgeList() const; + void setEdgeList(const std::vector< ::Ifc4x3_add2::IfcOrientedEdge >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEdgeLoop (IfcEntityInstanceData&& e); - IfcEdgeLoop (aggregate_of< ::Ifc4x3_add2::IfcOrientedEdge >::ptr v1_EdgeList); - typedef aggregate_of< IfcEdgeLoop > list; + // IfcEdgeLoop (std::vector< ::Ifc4x3_add2::IfcOrientedEdge > v1_EdgeList); }; /// Definition from IAI: An IfcElementQuantity /// defines a set of derived measures of an element's physical @@ -20387,21 +24615,22 @@ public: /// IfcElementQuantity.Quantities = SET of subtypes of /// IfcPhysicalSimpleQuantity with values for the Name /// attribute as published as part of the IFC specifciation. -class IFC_PARSE_API IfcElementQuantity : public IfcQuantitySet { +class IFC_PARSE_API IfcElementQuantity : public IfcQuantitySet { public: + IfcElementQuantity() {} + explicit IfcElementQuantity (const std::weak_ptr& data) : IfcQuantitySet(data) {} + /// Name of the method of measurement used to calculate the element quantity. The method of measurement attribute has to be made recognizable by further agreements. /// /// IFC2x2 Addendum 1 change: The attribute has been changed to be optional - boost::optional< std::string > MethodOfMeasurement() const; - void setMethodOfMeasurement(boost::optional< std::string > v); + std::optional< std::string > MethodOfMeasurement() const; + void setMethodOfMeasurement(const std::optional< std::string >& v); /// The individual quantities for the element, can be a set of length, area, volume, weight or count based quantities. - aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr Quantities() const; - void setQuantities(aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity > Quantities() const; + void setQuantities(const std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElementQuantity (IfcEntityInstanceData&& e); - IfcElementQuantity (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_MethodOfMeasurement, aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr v6_Quantities); - typedef aggregate_of< IfcElementQuantity > list; + // IfcElementQuantity (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_MethodOfMeasurement, std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity > v6_Quantities); }; /// Definition from IAI: The IfcElementType /// defines a list of commonly shared property set definitions @@ -20425,32 +24654,34 @@ public: /// /// HISTORY New entity in /// Release IFC2x Edition 2 -class IFC_PARSE_API IfcElementType : public IfcTypeProduct { +class IFC_PARSE_API IfcElementType : public IfcTypeProduct { public: + IfcElementType() {} + explicit IfcElementType (const std::weak_ptr& data) : IfcTypeProduct(data) {} + /// The type denotes a particular type that indicates the object further. The use has to be established at the level of instantiable subtypes. In particular it holds the user defined type, if the enumeration of the attribute 'PredefinedType' is set to USERDEFINED. - boost::optional< std::string > ElementType() const; - void setElementType(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > ElementType() const; + void setElementType(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElementType (IfcEntityInstanceData&& e); - IfcElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcElementType > list; + // IfcElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// Definition from ISO/CD 10303-42:1992: An elementary surface (IfcElementarySurface) is a simple analytic surface with defined parametric representation. /// /// NOTE Corresponding ISO 10303 entity: elementary_surface. Only the subtype plane is incorporated as IfcPlane. The derived attribute Dim has been added (see also note at IfcGeometricRepresentationItem). Please refer to ISO/IS 10303-42:1994, p. 69 for the final definition of the formal standard. /// /// HISTORY New class in IFC Release 1.5 -class IFC_PARSE_API IfcElementarySurface : public IfcSurface { +class IFC_PARSE_API IfcElementarySurface : public IfcSurface { public: + IfcElementarySurface() {} + explicit IfcElementarySurface (const std::weak_ptr& data) : IfcSurface(data) {} + /// The position and orientation of the surface. This attribute is used in the definition of the parameterization of the surface. - ::Ifc4x3_add2::IfcAxis2Placement3D* Position() const; - void setPosition(::Ifc4x3_add2::IfcAxis2Placement3D* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcAxis2Placement3D Position() const; + void setPosition(const ::Ifc4x3_add2::IfcAxis2Placement3D& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElementarySurface (IfcEntityInstanceData&& e); - IfcElementarySurface (::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position); - typedef aggregate_of< IfcElementarySurface > list; + // IfcElementarySurface (::Ifc4x3_add2::IfcAxis2Placement3D v1_Position); }; /// IfcEllipseProfileDef defines an ellipse as the profile definition used by the swept surface geometry /// or the swept area solid. It is given by its semi axis attributes and placed within the 2D position coordinate system, established by the Position attribute. @@ -20468,19 +24699,20 @@ public: /// NOTE  The semi axes of the ellipse are rectangular to each other by definition. /// /// Figure 317 — Ellipse profile -class IFC_PARSE_API IfcEllipseProfileDef : public IfcParameterizedProfileDef { +class IFC_PARSE_API IfcEllipseProfileDef : public IfcParameterizedProfileDef { public: + IfcEllipseProfileDef() {} + explicit IfcEllipseProfileDef (const std::weak_ptr& data) : IfcParameterizedProfileDef(data) {} + /// The first radius of the ellipse. It is measured along the direction of Position.P[1]. double SemiAxis1() const; - void setSemiAxis1(double v); + void setSemiAxis1(const double& v); /// The second radius of the ellipse. It is measured along the direction of Position.P[2]. double SemiAxis2() const; - void setSemiAxis2(double v); - virtual const IfcParse::entity& declaration() const; + void setSemiAxis2(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEllipseProfileDef (IfcEntityInstanceData&& e); - IfcEllipseProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_SemiAxis1, double v5_SemiAxis2); - typedef aggregate_of< IfcEllipseProfileDef > list; + // IfcEllipseProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_SemiAxis1, double v5_SemiAxis2); }; /// An IfcEventType defines a particular type of event that may be specified. /// @@ -20488,26 +24720,27 @@ public: /// /// An IfcEventType provides for all forms of types of event that may be specified. /// Usage of IfcEventType defines the parameters for one or more occurrences of IfcEvent. Parameters may be specified through property sets that may be enumerated in the IfcEventTypeEnum data type or through explicit attributes of IfcEvent. Event occurrences (IfcEvent entities) are linked to the event type through the IfcRelDefinesByType relationship. -class IFC_PARSE_API IfcEventType : public IfcTypeProcess { +class IFC_PARSE_API IfcEventType : public IfcTypeProcess { public: + IfcEventType() {} + explicit IfcEventType (const std::weak_ptr& data) : IfcTypeProcess(data) {} + /// Identifies the predefined types of an event from which /// the type required may be set. ::Ifc4x3_add2::IfcEventTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcEventTypeEnum::Value v); + void setPredefinedType(const ::Ifc4x3_add2::IfcEventTypeEnum::Value& v); /// Identifies the predefined types of event trigger from which /// the type required may be set. ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value EventTriggerType() const; - void setEventTriggerType(::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value v); + void setEventTriggerType(const ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value& v); /// A user defined event trigger type, the value of which /// is asserted when the value of an event trigger type is /// declared as USERDEFINED. - boost::optional< std::string > UserDefinedEventTriggerType() const; - void setUserDefinedEventTriggerType(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > UserDefinedEventTriggerType() const; + void setUserDefinedEventTriggerType(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEventType (IfcEntityInstanceData&& e); - IfcEventType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, ::Ifc4x3_add2::IfcEventTypeEnum::Value v10_PredefinedType, ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value v11_EventTriggerType, boost::optional< std::string > v12_UserDefinedEventTriggerType); - typedef aggregate_of< IfcEventType > list; + // IfcEventType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ProcessType, ::Ifc4x3_add2::IfcEventTypeEnum::Value v10_PredefinedType, ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value v11_EventTriggerType, std::optional< std::string > v12_UserDefinedEventTriggerType); }; /// The IfcExtrudedAreaSolid is defined by sweeping a cross /// section provided by a profile definition. The direction of the @@ -20577,20 +24810,21 @@ public: /// -0.5*IfcIShapeProfileDef.OverallDepth). /// /// Figure 256 — Extruded area solid textures -class IFC_PARSE_API IfcExtrudedAreaSolid : public IfcSweptAreaSolid { +class IFC_PARSE_API IfcExtrudedAreaSolid : public IfcSweptAreaSolid { public: + IfcExtrudedAreaSolid() {} + explicit IfcExtrudedAreaSolid (const std::weak_ptr& data) : IfcSweptAreaSolid(data) {} + /// The direction in which the surface, provided by SweptArea is to be swept. - ::Ifc4x3_add2::IfcDirection* ExtrudedDirection() const; - void setExtrudedDirection(::Ifc4x3_add2::IfcDirection* v); + ::Ifc4x3_add2::IfcDirection ExtrudedDirection() const; + void setExtrudedDirection(const ::Ifc4x3_add2::IfcDirection& v); /// The distance the surface is to be swept along the ExtrudedDirection /// . double Depth() const; - void setDepth(double v); - virtual const IfcParse::entity& declaration() const; + void setDepth(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcExtrudedAreaSolid (IfcEntityInstanceData&& e); - IfcExtrudedAreaSolid (::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcDirection* v3_ExtrudedDirection, double v4_Depth); - typedef aggregate_of< IfcExtrudedAreaSolid > list; + // IfcExtrudedAreaSolid (::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcDirection v3_ExtrudedDirection, double v4_Depth); }; /// IfcExtrudedAreaSolidTapered is defined by sweeping a cross /// section along a linear spine. The cross section may change along @@ -20690,16 +24924,17 @@ public: /// /// Mirroring within IfcDerivedProfileDef.Operator shall /// not be used -class IFC_PARSE_API IfcExtrudedAreaSolidTapered : public IfcExtrudedAreaSolid { +class IFC_PARSE_API IfcExtrudedAreaSolidTapered : public IfcExtrudedAreaSolid { public: + IfcExtrudedAreaSolidTapered() {} + explicit IfcExtrudedAreaSolidTapered (const std::weak_ptr& data) : IfcExtrudedAreaSolid(data) {} + /// The surface defining the end of the swept area. It is given as a profile definition. The position coordinate system of the EndSwptArea is generated by translating the SELF\IfcSweptAreaSolid.Position along the SELF\IfcExtrudedAreaSolid.ExtrudedDirection by the distance of SELF\IfcExtrudedAreaSolid.Depth. - ::Ifc4x3_add2::IfcProfileDef* EndSweptArea() const; - void setEndSweptArea(::Ifc4x3_add2::IfcProfileDef* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcProfileDef EndSweptArea() const; + void setEndSweptArea(const ::Ifc4x3_add2::IfcProfileDef& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcExtrudedAreaSolidTapered (IfcEntityInstanceData&& e); - IfcExtrudedAreaSolidTapered (::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcDirection* v3_ExtrudedDirection, double v4_Depth, ::Ifc4x3_add2::IfcProfileDef* v5_EndSweptArea); - typedef aggregate_of< IfcExtrudedAreaSolidTapered > list; + // IfcExtrudedAreaSolidTapered (::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcDirection v3_ExtrudedDirection, double v4_Depth, ::Ifc4x3_add2::IfcProfileDef v5_EndSweptArea); }; /// Definition from ISO/CD 10303-42:1992: A face based surface model is described by a set of connected face sets of dimensionality 2. The connected face sets shall not intersect except at edges and vertices, except that a face in one connected face set may overlap a face in another connected face set, provided the face boundaries are identical. There shall be at least one connected face set. /// @@ -20713,16 +24948,17 @@ public: /// /// The connected face sets shall not overlap or intersect except at common faces, edges or vertices. /// The fbsm faces have dimensionality 2. -class IFC_PARSE_API IfcFaceBasedSurfaceModel : public IfcGeometricRepresentationItem, public IfcSurfaceOrFaceSurface { +class IFC_PARSE_API IfcFaceBasedSurfaceModel : public IfcGeometricRepresentationItem { public: + IfcFaceBasedSurfaceModel() {} + explicit IfcFaceBasedSurfaceModel (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// The set of connected face sets comprising the face based surface model. - aggregate_of< ::Ifc4x3_add2::IfcConnectedFaceSet >::ptr FbsmFaces() const; - void setFbsmFaces(aggregate_of< ::Ifc4x3_add2::IfcConnectedFaceSet >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcConnectedFaceSet > FbsmFaces() const; + void setFbsmFaces(const std::vector< ::Ifc4x3_add2::IfcConnectedFaceSet >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFaceBasedSurfaceModel (IfcEntityInstanceData&& e); - IfcFaceBasedSurfaceModel (aggregate_of< ::Ifc4x3_add2::IfcConnectedFaceSet >::ptr v1_FbsmFaces); - typedef aggregate_of< IfcFaceBasedSurfaceModel > list; + // IfcFaceBasedSurfaceModel (std::vector< ::Ifc4x3_add2::IfcConnectedFaceSet > v1_FbsmFaces); }; /// Definition from ISO/CD 10303-46:1992: The fill area style hatching defines a styled pattern of curves for hatching an annotation fill area or a surface. /// @@ -20771,58 +25007,60 @@ public: /// HISTORY  New entity in IFC2x2. /// /// IFC2x3 CHANGE  The IfcFillAreaStyleHatching has been changed by making the attributes PatternStart and PointOfReferenceHatchLine OPTIONAL. The attribute StartOfNextHatchLine has changed to a SELECT with the additional choice of IfcPositiveLengthMeasure. Upward compatibility for file based exchange is guaranteed. -class IFC_PARSE_API IfcFillAreaStyleHatching : public IfcGeometricRepresentationItem, public IfcFillStyleSelect { +class IFC_PARSE_API IfcFillAreaStyleHatching : public IfcGeometricRepresentationItem { public: + IfcFillAreaStyleHatching() {} + explicit IfcFillAreaStyleHatching (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// The curve style of the hatching lines. Any curve style pattern shall start at the origin of each hatch line. - ::Ifc4x3_add2::IfcCurveStyle* HatchLineAppearance() const; - void setHatchLineAppearance(::Ifc4x3_add2::IfcCurveStyle* v); + ::Ifc4x3_add2::IfcCurveStyle HatchLineAppearance() const; + void setHatchLineAppearance(const ::Ifc4x3_add2::IfcCurveStyle& v); /// A repetition factor that determines the distance between adjacent hatch lines. /// /// IFC2x Edition 3 CHANGE  The attribute type of StartOfNextHatchLine has changed to a SELECT of IfcPositiveLengthMeasure (new) and IfcOneDirectionRepeatFactor. - ::Ifc4x3_add2::IfcHatchLineDistanceSelect* StartOfNextHatchLine() const; - void setStartOfNextHatchLine(::Ifc4x3_add2::IfcHatchLineDistanceSelect* v); + ::Ifc4x3_add2::IfcHatchLineDistanceSelect StartOfNextHatchLine() const; + void setStartOfNextHatchLine(const ::Ifc4x3_add2::IfcHatchLineDistanceSelect& v); /// A Cartesian point which defines the offset of the reference hatch line from the origin of the (virtual) hatching coordinate system. The origin is used for mapping the fill area style hatching onto an annotation fill area or surface. The reference hatch line would then appear with this offset from the fill style target point. /// If not given the reference hatch lines goes through the origin of the (virtual) hatching coordinate system. /// /// IFC2x Edition 3 CHANGE  The usage of the attribute PointOfReferenceHatchLine has changed to not provide the Cartesian point which is the origin for mapping, but to provide an offset to the origin for the mapping. The attribute has been made OPTIONAL. - ::Ifc4x3_add2::IfcCartesianPoint* PointOfReferenceHatchLine() const; - void setPointOfReferenceHatchLine(::Ifc4x3_add2::IfcCartesianPoint* v); + ::Ifc4x3_add2::IfcCartesianPoint PointOfReferenceHatchLine() const; + void setPointOfReferenceHatchLine(const ::Ifc4x3_add2::IfcCartesianPoint& v); /// A distance along the reference hatch line which is the start point for the curve style font pattern of the reference hatch line. /// If not given, the start point of the curve style font pattern is at the (virtual) hatching coordinate system. /// /// IFC2x Edition 2 Addendum 2 CHANGE The attribute PatternStart has been made OPTIONAL. - ::Ifc4x3_add2::IfcCartesianPoint* PatternStart() const; - void setPatternStart(::Ifc4x3_add2::IfcCartesianPoint* v); + ::Ifc4x3_add2::IfcCartesianPoint PatternStart() const; + void setPatternStart(const ::Ifc4x3_add2::IfcCartesianPoint& v); /// A plane angle measure determining the direction of the parallel hatching lines. double HatchLineAngle() const; - void setHatchLineAngle(double v); - virtual const IfcParse::entity& declaration() const; + void setHatchLineAngle(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFillAreaStyleHatching (IfcEntityInstanceData&& e); - IfcFillAreaStyleHatching (::Ifc4x3_add2::IfcCurveStyle* v1_HatchLineAppearance, ::Ifc4x3_add2::IfcHatchLineDistanceSelect* v2_StartOfNextHatchLine, ::Ifc4x3_add2::IfcCartesianPoint* v3_PointOfReferenceHatchLine, ::Ifc4x3_add2::IfcCartesianPoint* v4_PatternStart, double v5_HatchLineAngle); - typedef aggregate_of< IfcFillAreaStyleHatching > list; + // IfcFillAreaStyleHatching (::Ifc4x3_add2::IfcCurveStyle v1_HatchLineAppearance, ::Ifc4x3_add2::IfcHatchLineDistanceSelect v2_StartOfNextHatchLine, ::Ifc4x3_add2::IfcCartesianPoint v3_PointOfReferenceHatchLine, ::Ifc4x3_add2::IfcCartesianPoint v4_PatternStart, double v5_HatchLineAngle); }; /// Definition from ISO/CD 10303-46:1992: The fill area style tiles defines a two dimensional tile to be used for the filling of annotation fill areas or other closed regions. The content of a tile is defined by the tile set, and the placement of each tile determined by the filling pattern which indicates how to place tiles next to each other. Tiles or parts of tiles outside of the annotation fill area or closed region shall be clipped at the of the area or region. /// /// NOTE Corresponding ISO 10303 name: fill_area_style_tiles. Please refer to ISO/IS 10303-46:1994 for the final definition of the formal standard. /// /// HISTORY New entity in IFC2x2. -class IFC_PARSE_API IfcFillAreaStyleTiles : public IfcGeometricRepresentationItem, public IfcFillStyleSelect { +class IFC_PARSE_API IfcFillAreaStyleTiles : public IfcGeometricRepresentationItem { public: + IfcFillAreaStyleTiles() {} + explicit IfcFillAreaStyleTiles (const std::weak_ptr& data) : IfcGeometricRepresentationItem(data) {} + /// A two direction repeat factor defining the shape and relative positioning of the tiles. - aggregate_of< ::Ifc4x3_add2::IfcVector >::ptr TilingPattern() const; - void setTilingPattern(aggregate_of< ::Ifc4x3_add2::IfcVector >::ptr v); + std::vector< ::Ifc4x3_add2::IfcVector > TilingPattern() const; + void setTilingPattern(const std::vector< ::Ifc4x3_add2::IfcVector >& v); /// A set of constituents of the tile. - aggregate_of< ::Ifc4x3_add2::IfcStyledItem >::ptr Tiles() const; - void setTiles(aggregate_of< ::Ifc4x3_add2::IfcStyledItem >::ptr v); + std::vector< ::Ifc4x3_add2::IfcStyledItem > Tiles() const; + void setTiles(const std::vector< ::Ifc4x3_add2::IfcStyledItem >& v); /// The scale factor applied to each tile as it is placed in the annotation fill area. double TilingScale() const; - void setTilingScale(double v); - virtual const IfcParse::entity& declaration() const; + void setTilingScale(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFillAreaStyleTiles (IfcEntityInstanceData&& e); - IfcFillAreaStyleTiles (aggregate_of< ::Ifc4x3_add2::IfcVector >::ptr v1_TilingPattern, aggregate_of< ::Ifc4x3_add2::IfcStyledItem >::ptr v2_Tiles, double v3_TilingScale); - typedef aggregate_of< IfcFillAreaStyleTiles > list; + // IfcFillAreaStyleTiles (std::vector< ::Ifc4x3_add2::IfcVector > v1_TilingPattern, std::vector< ::Ifc4x3_add2::IfcStyledItem > v2_Tiles, double v3_TilingScale); }; /// A fixed reference swept area solid is a type of swept area solid /// which is the result of sweeping a surface along a @@ -20882,16 +25120,17 @@ public: /// The FixedReference shall not be parallel to a tangent /// vector to the directrix at any point along this curve. /// The Directrix curve shall be tangent continuous. -class IFC_PARSE_API IfcFixedReferenceSweptAreaSolid : public IfcDirectrixCurveSweptAreaSolid { +class IFC_PARSE_API IfcFixedReferenceSweptAreaSolid : public IfcDirectrixCurveSweptAreaSolid { public: + IfcFixedReferenceSweptAreaSolid() {} + explicit IfcFixedReferenceSweptAreaSolid (const std::weak_ptr& data) : IfcDirectrixCurveSweptAreaSolid(data) {} + /// The direction providing the fixed axis1 (x-axis) direction for orienting the swept area during the sweeping operation along the Directrix. - ::Ifc4x3_add2::IfcDirection* FixedReference() const; - void setFixedReference(::Ifc4x3_add2::IfcDirection* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcDirection FixedReference() const; + void setFixedReference(const ::Ifc4x3_add2::IfcDirection& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFixedReferenceSweptAreaSolid (IfcEntityInstanceData&& e); - IfcFixedReferenceSweptAreaSolid (::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcCurve* v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect* v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect* v5_EndParam, ::Ifc4x3_add2::IfcDirection* v6_FixedReference); - typedef aggregate_of< IfcFixedReferenceSweptAreaSolid > list; + // IfcFixedReferenceSweptAreaSolid (::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcCurve v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect v5_EndParam, ::Ifc4x3_add2::IfcDirection v6_FixedReference); }; /// Definition from IAI: The /// IfcFurnishingElementType defines a list of commonly shared @@ -20921,13 +25160,14 @@ public: /// IFC2x4 CHANGE The entity is marked /// as deprecated for instantiation - will be made ABSTRACT after /// IFC2x4. -class IFC_PARSE_API IfcFurnishingElementType : public IfcElementType { +class IFC_PARSE_API IfcFurnishingElementType : public IfcElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcFurnishingElementType() {} + explicit IfcFurnishingElementType (const std::weak_ptr& data) : IfcElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFurnishingElementType (IfcEntityInstanceData&& e); - IfcFurnishingElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcFurnishingElementType > list; + // IfcFurnishingElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// The furnishing element type IfcFurnitureType defines commonly shared information for occurrences of furnitures. The set of shared information may include: /// @@ -20966,18 +25206,19 @@ public: /// The IfcFurnitureType may be decomposed into components using IfcRelAggregates where RelatingObject refers to the enclosing IfcFurnitureType and RelatedObjects contains one or more components. Components are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Composition use is defined for the following predefined types: /// /// (All Types): May contain IfcSystemFurnitureElement components. Modular furniture may be aggregated into components. -class IFC_PARSE_API IfcFurnitureType : public IfcFurnishingElementType { +class IFC_PARSE_API IfcFurnitureType : public IfcFurnishingElementType { public: + IfcFurnitureType() {} + explicit IfcFurnitureType (const std::weak_ptr& data) : IfcFurnishingElementType(data) {} + /// A designation of where the assembly is intended to take place. A selection of alternatives s provided in an enumerated list. ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value AssemblyPlace() const; - void setAssemblyPlace(::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value v); - boost::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + void setAssemblyPlace(const ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value& v); + std::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFurnitureType (IfcEntityInstanceData&& e); - IfcFurnitureType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value v10_AssemblyPlace, boost::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > v11_PredefinedType); - typedef aggregate_of< IfcFurnitureType > list; + // IfcFurnitureType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value v10_AssemblyPlace, std::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > v11_PredefinedType); }; /// Definition from IAI: An /// IfcGeographicElementType is used to define an @@ -21040,16 +25281,17 @@ public: /// notation and additional description; in which case, any /// further attributes required would still need to be captured /// in property sets. -class IFC_PARSE_API IfcGeographicElementType : public IfcElementType { +class IFC_PARSE_API IfcGeographicElementType : public IfcElementType { public: + IfcGeographicElementType() {} + explicit IfcGeographicElementType (const std::weak_ptr& data) : IfcElementType(data) {} + /// Predefined types to define the particular type of the geographic element. There may be property set definitions available for each predefined type. ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcGeographicElementType (IfcEntityInstanceData&& e); - IfcGeographicElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcGeographicElementType > list; + // IfcGeographicElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value v10_PredefinedType); }; /// Definition from ISO/CD 10303-42:1992: A geometric curve set is a collection of two or three dimensional points and curves. /// @@ -21058,13 +25300,14 @@ public: /// NOTE: Corresponding ISO 10303-42 entity: geometric_set. Please refer to ISO/IS 10303-42:1994, p. 190 for the final definition of the formal standard. /// /// HISTORY: New entity in IFC2x2. -class IFC_PARSE_API IfcGeometricCurveSet : public IfcGeometricSet { +class IFC_PARSE_API IfcGeometricCurveSet : public IfcGeometricSet { public: - virtual const IfcParse::entity& declaration() const; + IfcGeometricCurveSet() {} + explicit IfcGeometricCurveSet (const std::weak_ptr& data) : IfcGeometricSet(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcGeometricCurveSet (IfcEntityInstanceData&& e); - IfcGeometricCurveSet (aggregate_of< ::Ifc4x3_add2::IfcGeometricSetSelect >::ptr v1_Elements); - typedef aggregate_of< IfcGeometricCurveSet > list; + // IfcGeometricCurveSet (std::vector< ::Ifc4x3_add2::IfcGeometricSetSelect > v1_Elements); }; /// IfcIShapeProfileDef /// defines a section profile that provides the defining parameters of a @@ -21129,67 +25372,71 @@ public: /// and flanges. /// /// Figure 318 — I-shape profile -class IFC_PARSE_API IfcIShapeProfileDef : public IfcParameterizedProfileDef { +class IFC_PARSE_API IfcIShapeProfileDef : public IfcParameterizedProfileDef { public: + IfcIShapeProfileDef() {} + explicit IfcIShapeProfileDef (const std::weak_ptr& data) : IfcParameterizedProfileDef(data) {} + /// Total extent of the width, defined parallel to the x axis of the position coordinate system. double OverallWidth() const; - void setOverallWidth(double v); + void setOverallWidth(const double& v); /// Total extent of the depth, defined parallel to the y axis of the position coordinate system. double OverallDepth() const; - void setOverallDepth(double v); + void setOverallDepth(const double& v); /// Thickness of the web of the I-shape. The web is centred on the x-axis and the y-axis of the position coordinate system. double WebThickness() const; - void setWebThickness(double v); + void setWebThickness(const double& v); /// Flange thickness of the I-shape. Both, the upper and the lower flanges have the same thickness and they are centred on the y-axis of the position coordinate system. double FlangeThickness() const; - void setFlangeThickness(double v); + void setFlangeThickness(const double& v); /// The fillet between the web and the flange. - boost::optional< double > FilletRadius() const; - void setFilletRadius(boost::optional< double > v); - boost::optional< double > FlangeEdgeRadius() const; - void setFlangeEdgeRadius(boost::optional< double > v); - boost::optional< double > FlangeSlope() const; - void setFlangeSlope(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > FilletRadius() const; + void setFilletRadius(const std::optional< double >& v); + std::optional< double > FlangeEdgeRadius() const; + void setFlangeEdgeRadius(const std::optional< double >& v); + std::optional< double > FlangeSlope() const; + void setFlangeSlope(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcIShapeProfileDef (IfcEntityInstanceData&& e); - IfcIShapeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_OverallWidth, double v5_OverallDepth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_FlangeEdgeRadius, boost::optional< double > v10_FlangeSlope); - typedef aggregate_of< IfcIShapeProfileDef > list; + // IfcIShapeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_OverallWidth, double v5_OverallDepth, double v6_WebThickness, double v7_FlangeThickness, std::optional< double > v8_FilletRadius, std::optional< double > v9_FlangeEdgeRadius, std::optional< double > v10_FlangeSlope); }; -class IFC_PARSE_API IfcIndexedPolygonalFace : public IfcTessellatedItem { +class IFC_PARSE_API IfcIndexedPolygonalFace : public IfcTessellatedItem { public: + IfcIndexedPolygonalFace() {} + explicit IfcIndexedPolygonalFace (const std::weak_ptr& data) : IfcTessellatedItem(data) {} + std::vector< int > /*[3:?]*/ CoordIndex() const; - void setCoordIndex(std::vector< int > /*[3:?]*/ v); - aggregate_of< IfcPolygonalFaceSet >::ptr ToFaceSet() const; // INVERSE IfcPolygonalFaceSet::Faces - aggregate_of< IfcTextureCoordinateIndices >::ptr HasTexCoords() const; // INVERSE IfcTextureCoordinateIndices::TexCoordsOf - virtual const IfcParse::entity& declaration() const; + void setCoordIndex(const std::vector< int > /*[3:?]*/& v); + std::vector< IfcPolygonalFaceSet > ToFaceSet() const; // INVERSE IfcPolygonalFaceSet::Faces + std::vector< IfcTextureCoordinateIndices > HasTexCoords() const; // INVERSE IfcTextureCoordinateIndices::TexCoordsOf + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcIndexedPolygonalFace (IfcEntityInstanceData&& e); - IfcIndexedPolygonalFace (std::vector< int > /*[3:?]*/ v1_CoordIndex); - typedef aggregate_of< IfcIndexedPolygonalFace > list; + // IfcIndexedPolygonalFace (std::vector< int > /*[3:?]*/ v1_CoordIndex); }; -class IFC_PARSE_API IfcIndexedPolygonalFaceWithVoids : public IfcIndexedPolygonalFace { +class IFC_PARSE_API IfcIndexedPolygonalFaceWithVoids : public IfcIndexedPolygonalFace { public: + IfcIndexedPolygonalFaceWithVoids() {} + explicit IfcIndexedPolygonalFaceWithVoids (const std::weak_ptr& data) : IfcIndexedPolygonalFace(data) {} + std::vector< std::vector< int > > InnerCoordIndices() const; - void setInnerCoordIndices(std::vector< std::vector< int > > v); - virtual const IfcParse::entity& declaration() const; + void setInnerCoordIndices(const std::vector< std::vector< int > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcIndexedPolygonalFaceWithVoids (IfcEntityInstanceData&& e); - IfcIndexedPolygonalFaceWithVoids (std::vector< int > /*[3:?]*/ v1_CoordIndex, std::vector< std::vector< int > > v2_InnerCoordIndices); - typedef aggregate_of< IfcIndexedPolygonalFaceWithVoids > list; + // IfcIndexedPolygonalFaceWithVoids (std::vector< int > /*[3:?]*/ v1_CoordIndex, std::vector< std::vector< int > > v2_InnerCoordIndices); }; -class IFC_PARSE_API IfcIndexedPolygonalTextureMap : public IfcIndexedTextureMap { +class IFC_PARSE_API IfcIndexedPolygonalTextureMap : public IfcIndexedTextureMap { public: - aggregate_of< ::Ifc4x3_add2::IfcTextureCoordinateIndices >::ptr TexCoordIndices() const; - void setTexCoordIndices(aggregate_of< ::Ifc4x3_add2::IfcTextureCoordinateIndices >::ptr v); - virtual const IfcParse::entity& declaration() const; + IfcIndexedPolygonalTextureMap() {} + explicit IfcIndexedPolygonalTextureMap (const std::weak_ptr& data) : IfcIndexedTextureMap(data) {} + + std::vector< ::Ifc4x3_add2::IfcTextureCoordinateIndices > TexCoordIndices() const; + void setTexCoordIndices(const std::vector< ::Ifc4x3_add2::IfcTextureCoordinateIndices >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcIndexedPolygonalTextureMap (IfcEntityInstanceData&& e); - IfcIndexedPolygonalTextureMap (aggregate_of< ::Ifc4x3_add2::IfcSurfaceTexture >::ptr v1_Maps, ::Ifc4x3_add2::IfcTessellatedFaceSet* v2_MappedTo, ::Ifc4x3_add2::IfcTextureVertexList* v3_TexCoords, aggregate_of< ::Ifc4x3_add2::IfcTextureCoordinateIndices >::ptr v4_TexCoordIndices); - typedef aggregate_of< IfcIndexedPolygonalTextureMap > list; + // IfcIndexedPolygonalTextureMap (std::vector< ::Ifc4x3_add2::IfcSurfaceTexture > v1_Maps, ::Ifc4x3_add2::IfcTessellatedFaceSet v2_MappedTo, ::Ifc4x3_add2::IfcTextureVertexList v3_TexCoords, std::vector< ::Ifc4x3_add2::IfcTextureCoordinateIndices > v4_TexCoordIndices); }; /// IfcLShapeProfileDef /// defines a section profile that provides the defining parameters of an @@ -21242,31 +25489,32 @@ public: /// In the illustrated example, the x and y value of Position.Location, i.e. the measures |CentreOfGravityInX| and |CentreOfGravityInY| are both positive. On the other hand, the properties named 'CentreOfGravityInX' and 'CentreOfGravityInY' in IfcExtendedProfileProperties, if provided, must both be set to 0 now because the centre of gravity of the resulting profile definition is located in the coordinate origin. /// /// Figure 319 — L-shape profile -class IFC_PARSE_API IfcLShapeProfileDef : public IfcParameterizedProfileDef { +class IFC_PARSE_API IfcLShapeProfileDef : public IfcParameterizedProfileDef { public: + IfcLShapeProfileDef() {} + explicit IfcLShapeProfileDef (const std::weak_ptr& data) : IfcParameterizedProfileDef(data) {} + /// Leg length, see illustration above (= h). Same as the overall depth. double Depth() const; - void setDepth(double v); + void setDepth(const double& v); /// Leg length, see illustration above (= b). Same as the overall width. - boost::optional< double > Width() const; - void setWidth(boost::optional< double > v); + std::optional< double > Width() const; + void setWidth(const std::optional< double >& v); /// Constant wall thickness of profile, see illustration above (= ts). double Thickness() const; - void setThickness(double v); + void setThickness(const double& v); /// Fillet radius according the above illustration (= r1). - boost::optional< double > FilletRadius() const; - void setFilletRadius(boost::optional< double > v); + std::optional< double > FilletRadius() const; + void setFilletRadius(const std::optional< double >& v); /// Edge radius according the above illustration (= r2). - boost::optional< double > EdgeRadius() const; - void setEdgeRadius(boost::optional< double > v); + std::optional< double > EdgeRadius() const; + void setEdgeRadius(const std::optional< double >& v); /// Slope of the inner face of each leg of the profile. - boost::optional< double > LegSlope() const; - void setLegSlope(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > LegSlope() const; + void setLegSlope(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLShapeProfileDef (IfcEntityInstanceData&& e); - IfcLShapeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::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); - typedef aggregate_of< IfcLShapeProfileDef > list; + // IfcLShapeProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_Depth, std::optional< double > v5_Width, double v6_Thickness, std::optional< double > v7_FilletRadius, std::optional< double > v8_EdgeRadius, std::optional< double > v9_LegSlope); }; /// The resource type IfcLaborResourceType defines commonly shared information for occurrences of labor resources. The set of shared information may include: /// @@ -21279,16 +25527,17 @@ public: /// Occurrences of the IfcLaborResourceType are represented by instances of IfcLaborResource. /// /// HISTORY New entity in IFC2x4. -class IFC_PARSE_API IfcLaborResourceType : public IfcConstructionResourceType { +class IFC_PARSE_API IfcLaborResourceType : public IfcConstructionResourceType { public: + IfcLaborResourceType() {} + explicit IfcLaborResourceType (const std::weak_ptr& data) : IfcConstructionResourceType(data) {} + /// Defines types of labor resources. ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLaborResourceType (IfcEntityInstanceData&& e); - IfcLaborResourceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value v12_PredefinedType); - typedef aggregate_of< IfcLaborResourceType > list; + // IfcLaborResourceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v11_BaseQuantity, ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value v12_PredefinedType); }; /// Definition from ISO/CD 10303-42:1992: A line is an unbounded curve with constant tangent direction. A line is defined by a point and a direction. The positive direction of the line is in the direction of the Dir vector. The line is parameterized as follows: /// @@ -21303,19 +25552,20 @@ public: /// NOTE Corresponding ISO 10303 entity: line. Please refer to ISO/IS 10303-42:1994, p.37 for the final definition of the formal standard. The derived attribute Dim has been added at this level and was therefore demoted from the geometric_representation_item. /// /// HISTORY New class in IFC Release 1.0 -class IFC_PARSE_API IfcLine : public IfcCurve { +class IFC_PARSE_API IfcLine : public IfcCurve { public: + IfcLine() {} + explicit IfcLine (const std::weak_ptr& data) : IfcCurve(data) {} + /// The location of the line. - ::Ifc4x3_add2::IfcCartesianPoint* Pnt() const; - void setPnt(::Ifc4x3_add2::IfcCartesianPoint* v); + ::Ifc4x3_add2::IfcCartesianPoint Pnt() const; + void setPnt(const ::Ifc4x3_add2::IfcCartesianPoint& v); /// The direction of the line, the magnitude and units of Dir affect the parameterization of the line. - ::Ifc4x3_add2::IfcVector* Dir() const; - void setDir(::Ifc4x3_add2::IfcVector* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcVector Dir() const; + void setDir(const ::Ifc4x3_add2::IfcVector& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLine (IfcEntityInstanceData&& e); - IfcLine (::Ifc4x3_add2::IfcCartesianPoint* v1_Pnt, ::Ifc4x3_add2::IfcVector* v2_Dir); - typedef aggregate_of< IfcLine > list; + // IfcLine (::Ifc4x3_add2::IfcCartesianPoint v1_Pnt, ::Ifc4x3_add2::IfcVector v2_Dir); }; /// Definition from ISO/CD 10303-42:1992: A manifold solid /// B-rep is a finite, arcwise connected volume bounded by one or @@ -21380,16 +25630,17 @@ public: /// The Euler equation shall be satisfied for the boundary /// representation, where the genus term "shell term" us the sum of /// the genus values for the shells of the brep. -class IFC_PARSE_API IfcManifoldSolidBrep : public IfcSolidModel { +class IFC_PARSE_API IfcManifoldSolidBrep : public IfcSolidModel { public: + IfcManifoldSolidBrep() {} + explicit IfcManifoldSolidBrep (const std::weak_ptr& data) : IfcSolidModel(data) {} + /// A closed shell defining the exterior boundary of the solid. The shell normal shall point away from the interior of the solid. - ::Ifc4x3_add2::IfcClosedShell* Outer() const; - void setOuter(::Ifc4x3_add2::IfcClosedShell* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcClosedShell Outer() const; + void setOuter(const ::Ifc4x3_add2::IfcClosedShell& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcManifoldSolidBrep (IfcEntityInstanceData&& e); - IfcManifoldSolidBrep (::Ifc4x3_add2::IfcClosedShell* v1_Outer); - typedef aggregate_of< IfcManifoldSolidBrep > list; + // IfcManifoldSolidBrep (::Ifc4x3_add2::IfcClosedShell v1_Outer); }; /// An IfcObject is the /// generalization of any semantically treated thing or process. @@ -21473,31 +25724,33 @@ public: /// IsDeclaredBy, or Declares shall only be used, if /// the object is part of a decomposition, i.e. if either /// IsDecomposedBy, or Decomposes is exerted. -class IFC_PARSE_API IfcObject : public IfcObjectDefinition { +class IFC_PARSE_API IfcObject : public IfcObjectDefinition { public: + IfcObject() {} + explicit IfcObject (const std::weak_ptr& data) : IfcObjectDefinition(data) {} + /// The type denotes a particular type that indicates the object further. The use has to be established at the level of instantiable subtypes. In particular it holds the user defined type, if the enumeration of the attribute PredefinedType is set to USERDEFINED. - boost::optional< std::string > ObjectType() const; - void setObjectType(boost::optional< std::string > v); - aggregate_of< IfcRelDefinesByObject >::ptr IsDeclaredBy() const; // INVERSE IfcRelDefinesByObject::RelatedObjects - aggregate_of< IfcRelDefinesByObject >::ptr Declares() const; // INVERSE IfcRelDefinesByObject::RelatingObject - aggregate_of< IfcRelDefinesByType >::ptr IsTypedBy() const; // INVERSE IfcRelDefinesByType::RelatedObjects - aggregate_of< IfcRelDefinesByProperties >::ptr IsDefinedBy() const; // INVERSE IfcRelDefinesByProperties::RelatedObjects - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > ObjectType() const; + void setObjectType(const std::optional< std::string >& v); + std::vector< IfcRelDefinesByObject > IsDeclaredBy() const; // INVERSE IfcRelDefinesByObject::RelatedObjects + std::vector< IfcRelDefinesByObject > Declares() const; // INVERSE IfcRelDefinesByObject::RelatingObject + std::vector< IfcRelDefinesByType > IsTypedBy() const; // INVERSE IfcRelDefinesByType::RelatedObjects + std::vector< IfcRelDefinesByProperties > IsDefinedBy() const; // INVERSE IfcRelDefinesByProperties::RelatedObjects + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcObject (IfcEntityInstanceData&& e); - IfcObject (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType); - typedef aggregate_of< IfcObject > list; + // IfcObject (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType); }; -class IFC_PARSE_API IfcOffsetCurve : public IfcCurve { +class IFC_PARSE_API IfcOffsetCurve : public IfcCurve { public: - ::Ifc4x3_add2::IfcCurve* BasisCurve() const; - void setBasisCurve(::Ifc4x3_add2::IfcCurve* v); - virtual const IfcParse::entity& declaration() const; + IfcOffsetCurve() {} + explicit IfcOffsetCurve (const std::weak_ptr& data) : IfcCurve(data) {} + + ::Ifc4x3_add2::IfcCurve BasisCurve() const; + void setBasisCurve(const ::Ifc4x3_add2::IfcCurve& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcOffsetCurve (IfcEntityInstanceData&& e); - IfcOffsetCurve (::Ifc4x3_add2::IfcCurve* v1_BasisCurve); - typedef aggregate_of< IfcOffsetCurve > list; + // IfcOffsetCurve (::Ifc4x3_add2::IfcCurve v1_BasisCurve); }; /// Definition from ISO/CD 10303-42:1992: An offset curve 2d (IfcOffsetCurve2d) is a curve at a constant distance from a basis curve in two-dimensional space. This entity defines a simple plane-offset curve by offsetting by distance along the normal to basis curve in the plane of basis curve. The underlying curve shall have a well-defined tangent direction at every point. In the case of a composite curve, the transition code between each segment shall be cont same gradient or cont same gradient same curvature. /// @@ -21510,19 +25763,20 @@ public: /// NOTE Corresponding ISO 10303 entity: offset_curve_2d, Please refer to ISO/IS 10303-42:1994, p.65 for the final definition of the formal standard. /// /// HISTORY New entity in IFC Release 2.x -class IFC_PARSE_API IfcOffsetCurve2D : public IfcOffsetCurve { +class IFC_PARSE_API IfcOffsetCurve2D : public IfcOffsetCurve { public: + IfcOffsetCurve2D() {} + explicit IfcOffsetCurve2D (const std::weak_ptr& data) : IfcOffsetCurve(data) {} + /// The distance of the offset curve from the basis curve. distance may be positive, negative or zero. A positive value of distance defines an offset in the direction which is normal to the curve in the sense of an anti-clockwise rotation through 90 degrees from the tangent vector T at the given point. (This is in the direction of orthogonal complement(T).) double Distance() const; - void setDistance(double v); + void setDistance(const double& v); /// An indication of whether the offset curve self-intersects; this is for information only. boost::logic::tribool SelfIntersect() const; - void setSelfIntersect(boost::logic::tribool v); - virtual const IfcParse::entity& declaration() const; + void setSelfIntersect(const boost::logic::tribool& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcOffsetCurve2D (IfcEntityInstanceData&& e); - IfcOffsetCurve2D (::Ifc4x3_add2::IfcCurve* v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect); - typedef aggregate_of< IfcOffsetCurve2D > list; + // IfcOffsetCurve2D (::Ifc4x3_add2::IfcCurve v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect); }; /// Definition from ISO/CD 10303-42:1992: An offset curve 3d is a curve at a constant distance from a basis curve in three-dimensional space. The underlying curve shall have a well-defined tangent direction at every point. In the case of a composite curve the transition code between each segment shall be cont same gradient or cont same gradient same curvature. The offset curve at any point (parameter) on the basis curve is in the direction V x T where V is the fixed reference direction and T is the unit tangent to the basis curve. For the offset direction to be well defined, T shall not at any point of the curve be in the same, or opposite, direction as V. /// @@ -21539,35 +25793,37 @@ public: /// Informal propositions: /// /// At no point on the curve shall ref direction be parallel, or opposite to, the direction of the tangent vector. -class IFC_PARSE_API IfcOffsetCurve3D : public IfcOffsetCurve { +class IFC_PARSE_API IfcOffsetCurve3D : public IfcOffsetCurve { public: + IfcOffsetCurve3D() {} + explicit IfcOffsetCurve3D (const std::weak_ptr& data) : IfcOffsetCurve(data) {} + /// The distance of the offset curve from the basis curve. The distance may be positive, negative or zero. double Distance() const; - void setDistance(double v); + void setDistance(const double& v); /// An indication of whether the offset curve self-intersects, this is for information only. boost::logic::tribool SelfIntersect() const; - void setSelfIntersect(boost::logic::tribool v); + void setSelfIntersect(const boost::logic::tribool& v); /// The direction used to define the direction of the offset curve 3d from the basis curve. - ::Ifc4x3_add2::IfcDirection* RefDirection() const; - void setRefDirection(::Ifc4x3_add2::IfcDirection* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcDirection RefDirection() const; + void setRefDirection(const ::Ifc4x3_add2::IfcDirection& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcOffsetCurve3D (IfcEntityInstanceData&& e); - IfcOffsetCurve3D (::Ifc4x3_add2::IfcCurve* v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect, ::Ifc4x3_add2::IfcDirection* v4_RefDirection); - typedef aggregate_of< IfcOffsetCurve3D > list; + // IfcOffsetCurve3D (::Ifc4x3_add2::IfcCurve v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect, ::Ifc4x3_add2::IfcDirection v4_RefDirection); }; -class IFC_PARSE_API IfcOffsetCurveByDistances : public IfcOffsetCurve { +class IFC_PARSE_API IfcOffsetCurveByDistances : public IfcOffsetCurve { public: - aggregate_of< ::Ifc4x3_add2::IfcPointByDistanceExpression >::ptr OffsetValues() const; - void setOffsetValues(aggregate_of< ::Ifc4x3_add2::IfcPointByDistanceExpression >::ptr v); - boost::optional< std::string > Tag() const; - void setTag(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + IfcOffsetCurveByDistances() {} + explicit IfcOffsetCurveByDistances (const std::weak_ptr& data) : IfcOffsetCurve(data) {} + + std::vector< ::Ifc4x3_add2::IfcPointByDistanceExpression > OffsetValues() const; + void setOffsetValues(const std::vector< ::Ifc4x3_add2::IfcPointByDistanceExpression >& v); + std::optional< std::string > Tag() const; + void setTag(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcOffsetCurveByDistances (IfcEntityInstanceData&& e); - IfcOffsetCurveByDistances (::Ifc4x3_add2::IfcCurve* v1_BasisCurve, aggregate_of< ::Ifc4x3_add2::IfcPointByDistanceExpression >::ptr v2_OffsetValues, boost::optional< std::string > v3_Tag); - typedef aggregate_of< IfcOffsetCurveByDistances > list; + // IfcOffsetCurveByDistances (::Ifc4x3_add2::IfcCurve v1_BasisCurve, std::vector< ::Ifc4x3_add2::IfcPointByDistanceExpression > v2_OffsetValues, std::optional< std::string > v3_Tag); }; /// Definition from ISO/CD 10303-42:1992: A pcurve is a curve which lies on the basis of a surface and is defined in the parameter space of that surface. The basis curve is a curve defined in the two-dimensional parametric space of a reference basis surface. Although it is defined by a curve in two dimensional space, the variables involved are u and v, which occur in the parametric representation of the referenced surface, rather than the x, y, Cartesian coordinates. /// @@ -21576,17 +25832,18 @@ public: /// NOTE Corresponding ISO 10303 entity: pcurve. Please refer to ISO/IS 10303-42:1994, p.59 for the final definition of the formal standard. The definition of IfcPCurve derivates from pcurve. The following changes have been made: The BasisCurve replaces the definition of reference_to_curve since there is no requirement of having same dimensionality within the representation context. /// /// HISTORY New class in IFC2x4. -class IFC_PARSE_API IfcPcurve : public IfcCurve, public IfcCurveOnSurface { +class IFC_PARSE_API IfcPcurve : public IfcCurve { public: - ::Ifc4x3_add2::IfcSurface* BasisSurface() const; - void setBasisSurface(::Ifc4x3_add2::IfcSurface* v); - ::Ifc4x3_add2::IfcCurve* ReferenceCurve() const; - void setReferenceCurve(::Ifc4x3_add2::IfcCurve* v); - virtual const IfcParse::entity& declaration() const; + IfcPcurve() {} + explicit IfcPcurve (const std::weak_ptr& data) : IfcCurve(data) {} + + ::Ifc4x3_add2::IfcSurface BasisSurface() const; + void setBasisSurface(const ::Ifc4x3_add2::IfcSurface& v); + ::Ifc4x3_add2::IfcCurve ReferenceCurve() const; + void setReferenceCurve(const ::Ifc4x3_add2::IfcCurve& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPcurve (IfcEntityInstanceData&& e); - IfcPcurve (::Ifc4x3_add2::IfcSurface* v1_BasisSurface, ::Ifc4x3_add2::IfcCurve* v2_ReferenceCurve); - typedef aggregate_of< IfcPcurve > list; + // IfcPcurve (::Ifc4x3_add2::IfcSurface v1_BasisSurface, ::Ifc4x3_add2::IfcCurve v2_ReferenceCurve); }; /// Definition from ISO/CD 10303-46:1992: A planar box specifies an arbitrary rectangular box and its location in a two dimensional Cartesian coordinate system. /// @@ -21594,17 +25851,18 @@ public: /// ISO/IS 10303-46:1994, p. 141 for the final definition of the formal standard. /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcPlanarBox : public IfcPlanarExtent { +class IFC_PARSE_API IfcPlanarBox : public IfcPlanarExtent { public: + IfcPlanarBox() {} + explicit IfcPlanarBox (const std::weak_ptr& data) : IfcPlanarExtent(data) {} + /// The IfcAxis2Placement positions a local coordinate system for the definition of the rectangle. The origin of this local coordinate system serves as the lower left corner of the rectangular box. /// NOTE  In case of a 3D placement by IfcAxisPlacement3D the IfcPlanarBox is defined within the xy plane of the definition coordinate system. - ::Ifc4x3_add2::IfcAxis2Placement* Placement() const; - void setPlacement(::Ifc4x3_add2::IfcAxis2Placement* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcAxis2Placement Placement() const; + void setPlacement(const ::Ifc4x3_add2::IfcAxis2Placement& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPlanarBox (IfcEntityInstanceData&& e); - IfcPlanarBox (double v1_SizeInX, double v2_SizeInY, ::Ifc4x3_add2::IfcAxis2Placement* v3_Placement); - typedef aggregate_of< IfcPlanarBox > list; + // IfcPlanarBox (double v1_SizeInX, double v2_SizeInY, ::Ifc4x3_add2::IfcAxis2Placement v3_Placement); }; /// Definition from ISO/CD 10303-42:1992: A plane is an unbounded surface with a constant normal. A plane is defined by a point on the plane and the normal direction to the plane. The data is to be interpreted as follows: /// @@ -21642,43 +25900,46 @@ public: /// NOTE Corresponding ISO 10303 entity: plane. Please refer to ISO/IS 10303-42:1994, p.69 for the final definition of the formal standard. /// /// HISTORY New class in IFC Release 1.5 -class IFC_PARSE_API IfcPlane : public IfcElementarySurface { +class IFC_PARSE_API IfcPlane : public IfcElementarySurface { public: - virtual const IfcParse::entity& declaration() const; + IfcPlane() {} + explicit IfcPlane (const std::weak_ptr& data) : IfcElementarySurface(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPlane (IfcEntityInstanceData&& e); - IfcPlane (::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position); - typedef aggregate_of< IfcPlane > list; + // IfcPlane (::Ifc4x3_add2::IfcAxis2Placement3D v1_Position); }; -class IFC_PARSE_API IfcPolynomialCurve : public IfcCurve { +class IFC_PARSE_API IfcPolynomialCurve : public IfcCurve { public: - ::Ifc4x3_add2::IfcPlacement* Position() const; - void setPosition(::Ifc4x3_add2::IfcPlacement* v); - boost::optional< std::vector< double > /*[2:?]*/ > CoefficientsX() const; - void setCoefficientsX(boost::optional< std::vector< double > /*[2:?]*/ > v); - boost::optional< std::vector< double > /*[2:?]*/ > CoefficientsY() const; - void setCoefficientsY(boost::optional< std::vector< double > /*[2:?]*/ > v); - boost::optional< std::vector< double > /*[2:?]*/ > CoefficientsZ() const; - void setCoefficientsZ(boost::optional< std::vector< double > /*[2:?]*/ > v); - virtual const IfcParse::entity& declaration() const; + IfcPolynomialCurve() {} + explicit IfcPolynomialCurve (const std::weak_ptr& data) : IfcCurve(data) {} + + ::Ifc4x3_add2::IfcPlacement Position() const; + void setPosition(const ::Ifc4x3_add2::IfcPlacement& v); + std::optional< std::vector< double > /*[2:?]*/ > CoefficientsX() const; + void setCoefficientsX(const std::optional< std::vector< double > /*[2:?]*/ >& v); + std::optional< std::vector< double > /*[2:?]*/ > CoefficientsY() const; + void setCoefficientsY(const std::optional< std::vector< double > /*[2:?]*/ >& v); + std::optional< std::vector< double > /*[2:?]*/ > CoefficientsZ() const; + void setCoefficientsZ(const std::optional< std::vector< double > /*[2:?]*/ >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPolynomialCurve (IfcEntityInstanceData&& e); - IfcPolynomialCurve (::Ifc4x3_add2::IfcPlacement* v1_Position, boost::optional< std::vector< double > /*[2:?]*/ > v2_CoefficientsX, boost::optional< std::vector< double > /*[2:?]*/ > v3_CoefficientsY, boost::optional< std::vector< double > /*[2:?]*/ > v4_CoefficientsZ); - typedef aggregate_of< IfcPolynomialCurve > list; + // IfcPolynomialCurve (::Ifc4x3_add2::IfcPlacement v1_Position, std::optional< std::vector< double > /*[2:?]*/ > v2_CoefficientsX, std::optional< std::vector< double > /*[2:?]*/ > v3_CoefficientsY, std::optional< std::vector< double > /*[2:?]*/ > v4_CoefficientsZ); }; /// The pre defined colour determines those qualified names which can be used to identify a colour that is in scope of the current data exchange specification (in contrary to colour specification which defines the colour directly by its colour components). /// /// NOTE  Corresponding ISO 10303 name: pre_defined_colour. It has been made into an abstract entity in IFC. Please refer to ISO/IS 10303-46:1994, p. 141 for the final definition of the formal standard. /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcPreDefinedColour : public IfcPreDefinedItem, public IfcColour, public IfcFillStyleSelect { +class IFC_PARSE_API IfcPreDefinedColour : public IfcPreDefinedItem { public: - virtual const IfcParse::entity& declaration() const; + IfcPreDefinedColour() {} + explicit IfcPreDefinedColour (const std::weak_ptr& data) : IfcPreDefinedItem(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPreDefinedColour (IfcEntityInstanceData&& e); - IfcPreDefinedColour (std::string v1_Name); - typedef aggregate_of< IfcPreDefinedColour > list; + // IfcPreDefinedColour (std::string v1_Name); }; /// Definition from ISO/CD 10303-46:1992: The predefined curve font type is an abstract supertype provided to define an application specific curve font. The name label shall be constrained in the application protocol to values that are given specific meaning for curve fonts in that application protocol. /// @@ -21687,13 +25948,14 @@ public: /// NOTE: Corresponding ISO 10303 name: pre_defined_curve_font. Please refer to ISO/IS 10303-46:1994, p. 103 for the final definition of the formal standard. /// /// HISTORY: New entity in IFC2x2. -class IFC_PARSE_API IfcPreDefinedCurveFont : public IfcPreDefinedItem, public IfcCurveFontOrScaledCurveFontSelect, public IfcCurveStyleFontSelect { +class IFC_PARSE_API IfcPreDefinedCurveFont : public IfcPreDefinedItem { public: - virtual const IfcParse::entity& declaration() const; + IfcPreDefinedCurveFont() {} + explicit IfcPreDefinedCurveFont (const std::weak_ptr& data) : IfcPreDefinedItem(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPreDefinedCurveFont (IfcEntityInstanceData&& e); - IfcPreDefinedCurveFont (std::string v1_Name); - typedef aggregate_of< IfcPreDefinedCurveFont > list; + // IfcPreDefinedCurveFont (std::string v1_Name); }; /// IfcPreDefinedPropertySet /// is a generalization of all statically defined property sets that @@ -21715,13 +25977,14 @@ public: /// using the inverse attribute DefinesOccurrence. /// Type Object: using a direct link by inverse attribute /// DefinesType. -class IFC_PARSE_API IfcPreDefinedPropertySet : public IfcPropertySetDefinition { +class IFC_PARSE_API IfcPreDefinedPropertySet : public IfcPropertySetDefinition { public: - virtual const IfcParse::entity& declaration() const; + IfcPreDefinedPropertySet() {} + explicit IfcPreDefinedPropertySet (const std::weak_ptr& data) : IfcPropertySetDefinition(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPreDefinedPropertySet (IfcEntityInstanceData&& e); - IfcPreDefinedPropertySet (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description); - typedef aggregate_of< IfcPreDefinedPropertySet > list; + // IfcPreDefinedPropertySet (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description); }; /// An IfcProcedureType defines a particular type of procedure that may be specified. /// @@ -21736,17 +25999,18 @@ public: /// through explict attributes of IfcProcedure. Procedure occurrences /// (IfcProcedure entities) are linked to the procedure type /// through the IfcRelDefinesByType relationship. -class IFC_PARSE_API IfcProcedureType : public IfcTypeProcess { +class IFC_PARSE_API IfcProcedureType : public IfcTypeProcess { public: + IfcProcedureType() {} + explicit IfcProcedureType (const std::weak_ptr& data) : IfcTypeProcess(data) {} + /// Identifies the predefined types of a procedure from which /// the type required may be set. ::Ifc4x3_add2::IfcProcedureTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcProcedureTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcProcedureTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProcedureType (IfcEntityInstanceData&& e); - IfcProcedureType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, ::Ifc4x3_add2::IfcProcedureTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcProcedureType > list; + // IfcProcedureType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ProcessType, ::Ifc4x3_add2::IfcProcedureTypeEnum::Value v10_PredefinedType); }; /// Definition from ISO9000: A process is a set of /// activities that are interrelated or that interact with one @@ -21788,27 +26052,28 @@ public: /// control onto the process can be assigned to a process, such as for cost management (a cost item assigned to a work task). /// Having a resource assigned to the process as consumed by the process : IfcRelAssignsToProcess - Items that act /// as a mechanism to a process, such as labor, material and equipment in cost calculations. -class IFC_PARSE_API IfcProcess : public IfcObject, public IfcProcessSelect { +class IFC_PARSE_API IfcProcess : public IfcObject { public: + IfcProcess() {} + explicit IfcProcess (const std::weak_ptr& data) : IfcObject(data) {} + /// An identifying designation given to a process or activity. /// It is the identifier at the occurrence level. /// /// IFC2x4 CHANGE Attribute promoted from subtypes. - boost::optional< std::string > Identification() const; - void setIdentification(boost::optional< std::string > v); + std::optional< std::string > Identification() const; + void setIdentification(const std::optional< std::string >& v); /// An extended description or narrative that may be provided. /// /// IFC2x4 CHANGE  New attribute. - boost::optional< std::string > LongDescription() const; - void setLongDescription(boost::optional< std::string > v); - aggregate_of< IfcRelSequence >::ptr IsPredecessorTo() const; // INVERSE IfcRelSequence::RelatingProcess - aggregate_of< IfcRelSequence >::ptr IsSuccessorFrom() const; // INVERSE IfcRelSequence::RelatedProcess - aggregate_of< IfcRelAssignsToProcess >::ptr OperatesOn() const; // INVERSE IfcRelAssignsToProcess::RelatingProcess - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > LongDescription() const; + void setLongDescription(const std::optional< std::string >& v); + std::vector< IfcRelSequence > IsPredecessorTo() const; // INVERSE IfcRelSequence::RelatingProcess + std::vector< IfcRelSequence > IsSuccessorFrom() const; // INVERSE IfcRelSequence::RelatedProcess + std::vector< IfcRelAssignsToProcess > OperatesOn() const; // INVERSE IfcRelAssignsToProcess::RelatingProcess + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProcess (IfcEntityInstanceData&& e); - IfcProcess (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription); - typedef aggregate_of< IfcProcess > list; + // IfcProcess (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription); }; /// Any object that relates to a /// geometric or spatial context. Subtypes of IfcProduct @@ -21901,22 +26166,23 @@ public: /// IfcProductDefinitionShape being either a geometric shape /// representation, or a topology representation (with or without /// underlying geometry of the topological items). -class IFC_PARSE_API IfcProduct : public IfcObject, public IfcProductSelect, public IfcSpatialReferenceSelect { +class IFC_PARSE_API IfcProduct : public IfcObject { public: + IfcProduct() {} + explicit IfcProduct (const std::weak_ptr& data) : IfcObject(data) {} + /// Placement of the product in space, the placement can either be absolute (relative to the world coordinate system), relative (relative to the object placement of another product), or constraint (e.g. relative to grid axes). It is determined by the various subtypes of IfcObjectPlacement, which includes the axis placement information to determine the transformation for the object coordinate system. - ::Ifc4x3_add2::IfcObjectPlacement* ObjectPlacement() const; - void setObjectPlacement(::Ifc4x3_add2::IfcObjectPlacement* v); + ::Ifc4x3_add2::IfcObjectPlacement ObjectPlacement() const; + void setObjectPlacement(const ::Ifc4x3_add2::IfcObjectPlacement& v); /// Reference to the representations of the product, being either a representation (IfcProductRepresentation) or as a special case a shape representations (IfcProductDefinitionShape). The product definition shape provides for multiple geometric representations of the shape property of the object within the same object coordinate system, defined by the object placement. - ::Ifc4x3_add2::IfcProductRepresentation* Representation() const; - void setRepresentation(::Ifc4x3_add2::IfcProductRepresentation* v); - aggregate_of< IfcRelAssignsToProduct >::ptr ReferencedBy() const; // INVERSE IfcRelAssignsToProduct::RelatingProduct - aggregate_of< IfcRelPositions >::ptr PositionedRelativeTo() const; // INVERSE IfcRelPositions::RelatedProducts - aggregate_of< IfcRelReferencedInSpatialStructure >::ptr ReferencedInStructures() const; // INVERSE IfcRelReferencedInSpatialStructure::RelatedElements - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcProductRepresentation Representation() const; + void setRepresentation(const ::Ifc4x3_add2::IfcProductRepresentation& v); + std::vector< IfcRelAssignsToProduct > ReferencedBy() const; // INVERSE IfcRelAssignsToProduct::RelatingProduct + std::vector< IfcRelPositions > PositionedRelativeTo() const; // INVERSE IfcRelPositions::RelatedProducts + std::vector< IfcRelReferencedInSpatialStructure > ReferencedInStructures() const; // INVERSE IfcRelReferencedInSpatialStructure::RelatedElements + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProduct (IfcEntityInstanceData&& e); - IfcProduct (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation); - typedef aggregate_of< IfcProduct > list; + // IfcProduct (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation); }; /// IfcProject indicates the undertaking of some design, engineering, construction, or /// maintenance activities leading towards a product. The project establishes the context for information to be exchanged or shared, and it may represent a construction project but does not have to. The IfcProject's main purpose in an exchange structure is to provide the root instance and the context for all other information items included. @@ -21962,13 +26228,14 @@ public: /// Informal propositions: /// /// There shall only be one project within the exchange context. This is enforced by the global rule IfcSingleProjectInstance. -class IFC_PARSE_API IfcProject : public IfcContext { +class IFC_PARSE_API IfcProject : public IfcContext { public: - virtual const IfcParse::entity& declaration() const; + IfcProject() {} + explicit IfcProject (const std::weak_ptr& data) : IfcContext(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProject (IfcEntityInstanceData&& e); - IfcProject (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< std::string > v7_Phase, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationContext >::ptr > v8_RepresentationContexts, ::Ifc4x3_add2::IfcUnitAssignment* v9_UnitsInContext); - typedef aggregate_of< IfcProject > list; + // IfcProject (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_LongName, std::optional< std::string > v7_Phase, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationContext > > v8_RepresentationContexts, ::Ifc4x3_add2::IfcUnitAssignment v9_UnitsInContext); }; /// IfcProjectLibrary collects all library elements that are included within a referenced project data set. /// @@ -21994,13 +26261,14 @@ public: /// Instances of IfcProjectLibrary are assigned to the project context using the IfcRelDeclares relationship and accessible through the inverse attribute HasContext. Individual object types and property (set) templates are assigned to the IfcProjectLibrary using the IfcRelDeclares relationship and are accessible through the inverse attribute Declares. /// /// An IfcProjectLibrary may be decomposed into sub libraries using the relationship IfcRelNests. Sub libraries are accessed by the IfcProjectLibrary through the inverse attribute IsNestedBy. -class IFC_PARSE_API IfcProjectLibrary : public IfcContext { +class IFC_PARSE_API IfcProjectLibrary : public IfcContext { public: - virtual const IfcParse::entity& declaration() const; + IfcProjectLibrary() {} + explicit IfcProjectLibrary (const std::weak_ptr& data) : IfcContext(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProjectLibrary (IfcEntityInstanceData&& e); - IfcProjectLibrary (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< std::string > v7_Phase, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationContext >::ptr > v8_RepresentationContexts, ::Ifc4x3_add2::IfcUnitAssignment* v9_UnitsInContext); - typedef aggregate_of< IfcProjectLibrary > list; + // IfcProjectLibrary (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_LongName, std::optional< std::string > v7_Phase, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationContext > > v8_RepresentationContexts, ::Ifc4x3_add2::IfcUnitAssignment v9_UnitsInContext); }; /// A property with a bounded /// value, IfcPropertyBoundedValue, defines a property @@ -22106,27 +26374,28 @@ public: /// If the measure type for the upper and lover bound value /// is a numeric measure, then the following shall be true: /// UpperBoundValue > LowerBoundValue. -class IFC_PARSE_API IfcPropertyBoundedValue : public IfcSimpleProperty { +class IFC_PARSE_API IfcPropertyBoundedValue : public IfcSimpleProperty { public: + IfcPropertyBoundedValue() {} + explicit IfcPropertyBoundedValue (const std::weak_ptr& data) : IfcSimpleProperty(data) {} + /// Upper bound value for the interval defining the property value. If the value is not given, it indicates an open bound (all values to be greater than or equal to LowerBoundValue). - ::Ifc4x3_add2::IfcValue* UpperBoundValue() const; - void setUpperBoundValue(::Ifc4x3_add2::IfcValue* v); + ::Ifc4x3_add2::IfcValue UpperBoundValue() const; + void setUpperBoundValue(const ::Ifc4x3_add2::IfcValue& v); /// Lower bound value for the interval defining the property value. If the value is not given, it indicates an open bound (all values to be lower than or equal to UpperBoundValue). - ::Ifc4x3_add2::IfcValue* LowerBoundValue() const; - void setLowerBoundValue(::Ifc4x3_add2::IfcValue* v); + ::Ifc4x3_add2::IfcValue LowerBoundValue() const; + void setLowerBoundValue(const ::Ifc4x3_add2::IfcValue& v); /// Unit for the upper and lower bound values, if not given, the default value for the measure type is used as defined by the global unit assignment at IfcProject.UnitInContext. The applicable unit is then selected by the underlying TYPE of the UpperBoundValue, LowerBoundValue, and SetPointValue) - ::Ifc4x3_add2::IfcUnit* Unit() const; - void setUnit(::Ifc4x3_add2::IfcUnit* v); + ::Ifc4x3_add2::IfcUnit Unit() const; + void setUnit(const ::Ifc4x3_add2::IfcUnit& v); /// Set point value as typically used for operational value setting. /// /// IFC2x4 CHANGE  The attribute has been added at the end of the attribute list. - ::Ifc4x3_add2::IfcValue* SetPointValue() const; - void setSetPointValue(::Ifc4x3_add2::IfcValue* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcValue SetPointValue() const; + void setSetPointValue(const ::Ifc4x3_add2::IfcValue& 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_Specification, ::Ifc4x3_add2::IfcValue* v3_UpperBoundValue, ::Ifc4x3_add2::IfcValue* v4_LowerBoundValue, ::Ifc4x3_add2::IfcUnit* v5_Unit, ::Ifc4x3_add2::IfcValue* v6_SetPointValue); - typedef aggregate_of< IfcPropertyBoundedValue > list; + // IfcPropertyBoundedValue (std::string v1_Name, std::optional< std::string > v2_Specification, ::Ifc4x3_add2::IfcValue v3_UpperBoundValue, ::Ifc4x3_add2::IfcValue v4_LowerBoundValue, ::Ifc4x3_add2::IfcUnit v5_Unit, ::Ifc4x3_add2::IfcValue v6_SetPointValue); }; /// A property with an enumerated /// value, IfcPropertyEnumeratedValue, defines a property @@ -22205,21 +26474,22 @@ public: /// /// IFC2x4 CHANGE Attribute EnumerationValues has been made OPTIONAL with upward /// compatibility for file based exchange. -class IFC_PARSE_API IfcPropertyEnumeratedValue : public IfcSimpleProperty { +class IFC_PARSE_API IfcPropertyEnumeratedValue : public IfcSimpleProperty { public: + IfcPropertyEnumeratedValue() {} + explicit IfcPropertyEnumeratedValue (const std::weak_ptr& data) : IfcSimpleProperty(data) {} + /// Enumeration values, which shall be listed in the referenced IfcPropertyEnumeration, if such a reference is provided. /// /// IFC2x4 CHANGE  The attribute has been made optional with upward compatibility for file based exchange. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > EnumerationValues() const; - void setEnumerationValues(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > EnumerationValues() const; + void setEnumerationValues(const std::optional< std::vector< ::Ifc4x3_add2::IfcValue > >& v); /// Enumeration from which a enumeration value has been selected. The referenced enumeration also establishes the unit of the enumeration value. - ::Ifc4x3_add2::IfcPropertyEnumeration* EnumerationReference() const; - void setEnumerationReference(::Ifc4x3_add2::IfcPropertyEnumeration* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcPropertyEnumeration EnumerationReference() const; + void setEnumerationReference(const ::Ifc4x3_add2::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_Specification, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v3_EnumerationValues, ::Ifc4x3_add2::IfcPropertyEnumeration* v4_EnumerationReference); - typedef aggregate_of< IfcPropertyEnumeratedValue > list; + // IfcPropertyEnumeratedValue (std::string v1_Name, std::optional< std::string > v2_Specification, std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > v3_EnumerationValues, ::Ifc4x3_add2::IfcPropertyEnumeration v4_EnumerationReference); }; /// An IfcPropertyListValue /// defines a property that has several (numeric or @@ -22286,21 +26556,22 @@ public: /// HISTORY  New Entity in Release IFC 2x Edition 2. /// /// IFC2x4 CHANGE  Attribute ListValues has been made OPTIONAL with upward compatibility for file based exchange. -class IFC_PARSE_API IfcPropertyListValue : public IfcSimpleProperty { +class IFC_PARSE_API IfcPropertyListValue : public IfcSimpleProperty { public: + IfcPropertyListValue() {} + explicit IfcPropertyListValue (const std::weak_ptr& data) : IfcSimpleProperty(data) {} + /// List of property values. /// /// IFC2x4 CHANGE  The attribute has been made optional with upward compatibility for file based exchange. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > ListValues() const; - void setListValues(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > ListValues() const; + void setListValues(const std::optional< std::vector< ::Ifc4x3_add2::IfcValue > >& v); /// Unit for the list values, if not given, the default value for the measure type (given by the TYPE of nominal value) is used as defined by the global unit assignment at IfcProject. - ::Ifc4x3_add2::IfcUnit* Unit() const; - void setUnit(::Ifc4x3_add2::IfcUnit* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcUnit Unit() const; + void setUnit(const ::Ifc4x3_add2::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_Specification, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v3_ListValues, ::Ifc4x3_add2::IfcUnit* v4_Unit); - typedef aggregate_of< IfcPropertyListValue > list; + // IfcPropertyListValue (std::string v1_Name, std::optional< std::string > v2_Specification, std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > v3_ListValues, ::Ifc4x3_add2::IfcUnit v4_Unit); }; /// IfcPropertyReferenceValue allows a property value to /// be given by referencing other entities within the resource @@ -22317,21 +26588,22 @@ public: /// IFC2x4 CHANGE  Attribute /// PropertyReference has been made OPTIONAL with upward /// compatibility for file based exchange. -class IFC_PARSE_API IfcPropertyReferenceValue : public IfcSimpleProperty { +class IFC_PARSE_API IfcPropertyReferenceValue : public IfcSimpleProperty { public: + IfcPropertyReferenceValue() {} + explicit IfcPropertyReferenceValue (const std::weak_ptr& data) : IfcSimpleProperty(data) {} + /// Description of the use of the referenced value within the property. - boost::optional< std::string > UsageName() const; - void setUsageName(boost::optional< std::string > v); + std::optional< std::string > UsageName() const; + void setUsageName(const std::optional< std::string >& v); /// Reference to another property entity through one of the select types in the IfcObjectReferenceSelect. /// /// IFC2x4 CHANGE  The attribute has been made optional with upward compatibility for file based exchange. - ::Ifc4x3_add2::IfcObjectReferenceSelect* PropertyReference() const; - void setPropertyReference(::Ifc4x3_add2::IfcObjectReferenceSelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcObjectReferenceSelect PropertyReference() const; + void setPropertyReference(const ::Ifc4x3_add2::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_Specification, boost::optional< std::string > v3_UsageName, ::Ifc4x3_add2::IfcObjectReferenceSelect* v4_PropertyReference); - typedef aggregate_of< IfcPropertyReferenceValue > list; + // IfcPropertyReferenceValue (std::string v1_Name, std::optional< std::string > v2_Specification, std::optional< std::string > v3_UsageName, ::Ifc4x3_add2::IfcObjectReferenceSelect v4_PropertyReference); }; /// IfcPropertySet defines all dynamically extensible /// properties. The property set is a container class that holds @@ -22386,16 +26658,17 @@ public: /// Property sets that are not declared as part of the IFC /// specification shall have a Name value not including the /// "Pset_" prefix. -class IFC_PARSE_API IfcPropertySet : public IfcPropertySetDefinition { +class IFC_PARSE_API IfcPropertySet : public IfcPropertySetDefinition { public: + IfcPropertySet() {} + explicit IfcPropertySet (const std::weak_ptr& data) : IfcPropertySetDefinition(data) {} + /// Contained set of properties. For property sets defined as part of the IFC Object model, the property objects within a property set are defined as part of the standard. If a property is not contained within the set of predefined properties, its value has not been set at this time. - aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr HasProperties() const; - void setHasProperties(aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcProperty > HasProperties() const; + void setHasProperties(const std::vector< ::Ifc4x3_add2::IfcProperty >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPropertySet (IfcEntityInstanceData&& e); - IfcPropertySet (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcProperty >::ptr v5_HasProperties); - typedef aggregate_of< IfcPropertySet > list; + // IfcPropertySet (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcProperty > v5_HasProperties); }; /// IfcPropertySetTemplate defines the template for all /// dynamically extensible property sets represented by @@ -22428,12 +26701,15 @@ public: /// Figure 5 illustrates relationships used for property set templates. /// /// Figure 5 — Property set template relationships -class IFC_PARSE_API IfcPropertySetTemplate : public IfcPropertyTemplateDefinition { +class IFC_PARSE_API IfcPropertySetTemplate : public IfcPropertyTemplateDefinition { public: + IfcPropertySetTemplate() {} + explicit IfcPropertySetTemplate (const std::weak_ptr& data) : IfcPropertyTemplateDefinition(data) {} + /// Property set type defining whether the property set is applicable to a type (subtypes of IfcTypeObject), to an occurrence (subtypes of IfcObject), or as a special case to a performance history. /// The attribute ApplicableEntity may further refine the applicability to a single or multiple entity type(s). - boost::optional< ::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Value > TemplateType() const; - void setTemplateType(boost::optional< ::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Value > TemplateType() const; + void setTemplateType(const std::optional< ::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Value >& v); /// The attribute optionally defines the data type of the applicable type or occurrence object, to which the assigned property set template can relate. If not present, no instruction is given to which type or occurrence object the property set template is applicable. The following conventions are used: /// /// The IFC entity name of the applicable entity using the IFC naming convention, CamelCase with IFC prefix @@ -22444,17 +26720,15 @@ public: /// EXAMPLE Refering to a boiler type as applicable entity would be expressed as 'IfcBoilerType', refering to a steam boiler type as applicable entity would be expressed as 'IfcBoilerType/STEAM', refering to a wall and wall standard case and a wall type would be expressed as 'IfcWall, IfcWallStandardCase, IfcWallType'. /// /// An applicable IfcPerformanceHistory assigned to an occurrence or type object would be indicated by IfcBoilerType[PerformanceHistory], or respectively IfcBoilerType/STEAM[PerformanceHistory]. - boost::optional< std::string > ApplicableEntity() const; - void setApplicableEntity(boost::optional< std::string > v); + std::optional< std::string > ApplicableEntity() const; + void setApplicableEntity(const std::optional< std::string >& v); /// Set of IfcPropertyTemplate's that are defined within the scope of the IfcPropertySetTemplate. - aggregate_of< ::Ifc4x3_add2::IfcPropertyTemplate >::ptr HasPropertyTemplates() const; - void setHasPropertyTemplates(aggregate_of< ::Ifc4x3_add2::IfcPropertyTemplate >::ptr v); - aggregate_of< IfcRelDefinesByTemplate >::ptr Defines() const; // INVERSE IfcRelDefinesByTemplate::RelatingTemplate - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcPropertyTemplate > HasPropertyTemplates() const; + void setHasPropertyTemplates(const std::vector< ::Ifc4x3_add2::IfcPropertyTemplate >& v); + std::vector< IfcRelDefinesByTemplate > Defines() const; // INVERSE IfcRelDefinesByTemplate::RelatingTemplate + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPropertySetTemplate (IfcEntityInstanceData&& e); - IfcPropertySetTemplate (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< ::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Value > v5_TemplateType, boost::optional< std::string > v6_ApplicableEntity, aggregate_of< ::Ifc4x3_add2::IfcPropertyTemplate >::ptr v7_HasPropertyTemplates); - typedef aggregate_of< IfcPropertySetTemplate > list; + // IfcPropertySetTemplate (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< ::Ifc4x3_add2::IfcPropertySetTemplateTypeEnum::Value > v5_TemplateType, std::optional< std::string > v6_ApplicableEntity, std::vector< ::Ifc4x3_add2::IfcPropertyTemplate > v7_HasPropertyTemplates); }; /// The property with a single value /// IfcPropertySingleValue defines a property object which has @@ -22500,23 +26774,24 @@ public: /// HISTORY New entity in IFC Release 1.0. The entity has been renamed from IfcSimpleProperty in IFC Release 2x. /// /// IFC2x3 CHANGE Attribute NominalValue has been made OPTIONAL with upward compatibility for file based exchange. -class IFC_PARSE_API IfcPropertySingleValue : public IfcSimpleProperty { +class IFC_PARSE_API IfcPropertySingleValue : public IfcSimpleProperty { public: + IfcPropertySingleValue() {} + explicit IfcPropertySingleValue (const std::weak_ptr& data) : IfcSimpleProperty(data) {} + /// Value and measure type of this property. /// /// NOTE  By virtue of the defined data type, that is selected from the SELECT IfcValue, the appropriate unit can be found within the IfcUnitAssignment, defined for the project if no value for the unit attribute is given. /// /// IFC2x3 CHANGE  The attribute has been made optional with upward compatibility for file based exchange. - ::Ifc4x3_add2::IfcValue* NominalValue() const; - void setNominalValue(::Ifc4x3_add2::IfcValue* v); + ::Ifc4x3_add2::IfcValue NominalValue() const; + void setNominalValue(const ::Ifc4x3_add2::IfcValue& v); /// Unit for the nominal value, if not given, the default value for the measure type (given by the TYPE of nominal value) is used as defined by the global unit assignment at IfcProject. - ::Ifc4x3_add2::IfcUnit* Unit() const; - void setUnit(::Ifc4x3_add2::IfcUnit* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcUnit Unit() const; + void setUnit(const ::Ifc4x3_add2::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_Specification, ::Ifc4x3_add2::IfcValue* v3_NominalValue, ::Ifc4x3_add2::IfcUnit* v4_Unit); - typedef aggregate_of< IfcPropertySingleValue > list; + // IfcPropertySingleValue (std::string v1_Name, std::optional< std::string > v2_Specification, ::Ifc4x3_add2::IfcValue v3_NominalValue, ::Ifc4x3_add2::IfcUnit v4_Unit); }; /// A property with a range value /// (IfcPropertyTableValue) defines a property object @@ -22634,37 +26909,38 @@ public: /// /// The list of DefinedValues and the list of /// DefiningValues are corresponding lists. -class IFC_PARSE_API IfcPropertyTableValue : public IfcSimpleProperty { +class IFC_PARSE_API IfcPropertyTableValue : public IfcSimpleProperty { public: + IfcPropertyTableValue() {} + explicit IfcPropertyTableValue (const std::weak_ptr& data) : IfcSimpleProperty(data) {} + /// List of defining values, which determine the defined values. This list shall have unique values only. /// /// IFC2x4 CHANGE  The attribute has been made optional with upward compatibility for file based exchange. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > DefiningValues() const; - void setDefiningValues(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > DefiningValues() const; + void setDefiningValues(const std::optional< std::vector< ::Ifc4x3_add2::IfcValue > >& v); /// Defined values which are applicable for the scope as defined by the defining values. /// /// IFC2x4 CHANGE  The attribute has been made optional with upward compatibility for file based exchange. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > DefinedValues() const; - void setDefinedValues(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > DefinedValues() const; + void setDefinedValues(const std::optional< std::vector< ::Ifc4x3_add2::IfcValue > >& v); /// Expression for the derivation of defined values from the defining values, the expression is given for information only, i.e. no automatic processing can be expected from the expression. - boost::optional< std::string > Expression() const; - void setExpression(boost::optional< std::string > v); + std::optional< std::string > Expression() const; + void setExpression(const std::optional< std::string >& v); /// Unit for the defining values, if not given, the default value for the measure type (given by the TYPE of the defining values) is used as defined by the global unit assignment at IfcProject. - ::Ifc4x3_add2::IfcUnit* DefiningUnit() const; - void setDefiningUnit(::Ifc4x3_add2::IfcUnit* v); + ::Ifc4x3_add2::IfcUnit DefiningUnit() const; + void setDefiningUnit(const ::Ifc4x3_add2::IfcUnit& v); /// Unit for the defined values, if not given, the default value for the measure type (given by the TYPE of the defined values) is used as defined by the global unit assignment at IfcProject. - ::Ifc4x3_add2::IfcUnit* DefinedUnit() const; - void setDefinedUnit(::Ifc4x3_add2::IfcUnit* v); + ::Ifc4x3_add2::IfcUnit DefinedUnit() const; + void setDefinedUnit(const ::Ifc4x3_add2::IfcUnit& v); /// Interpolation of the curve between two defining and defined values that are provided. if not provided a linear interpolation is assumed. /// /// IFC2x4 CHANGE  The attribute has been added at the end of the attribute list. - boost::optional< ::Ifc4x3_add2::IfcCurveInterpolationEnum::Value > CurveInterpolation() const; - void setCurveInterpolation(boost::optional< ::Ifc4x3_add2::IfcCurveInterpolationEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcCurveInterpolationEnum::Value > CurveInterpolation() const; + void setCurveInterpolation(const std::optional< ::Ifc4x3_add2::IfcCurveInterpolationEnum::Value >& 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_Specification, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v3_DefiningValues, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcValue >::ptr > v4_DefinedValues, boost::optional< std::string > v5_Expression, ::Ifc4x3_add2::IfcUnit* v6_DefiningUnit, ::Ifc4x3_add2::IfcUnit* v7_DefinedUnit, boost::optional< ::Ifc4x3_add2::IfcCurveInterpolationEnum::Value > v8_CurveInterpolation); - typedef aggregate_of< IfcPropertyTableValue > list; + // IfcPropertyTableValue (std::string v1_Name, std::optional< std::string > v2_Specification, std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > v3_DefiningValues, std::optional< std::vector< ::Ifc4x3_add2::IfcValue > > v4_DefinedValues, std::optional< std::string > v5_Expression, ::Ifc4x3_add2::IfcUnit v6_DefiningUnit, ::Ifc4x3_add2::IfcUnit v7_DefinedUnit, std::optional< ::Ifc4x3_add2::IfcCurveInterpolationEnum::Value > v8_CurveInterpolation); }; /// The IfcPropertyTemplate is an abstract supertype /// comprising the templates for all dynamically extensible properties, @@ -22690,15 +26966,16 @@ public: /// NOTE Property templates can form part of a property library used and attached as part of a project library. In general the IfcPropertySetTemplate, containing the subtypes of IfcPropertyTemplate would be directly linked to the IfcProjectLibrary. /// /// HISTORY New Entity in IFC2x4. -class IFC_PARSE_API IfcPropertyTemplate : public IfcPropertyTemplateDefinition { +class IFC_PARSE_API IfcPropertyTemplate : public IfcPropertyTemplateDefinition { public: - aggregate_of< IfcComplexPropertyTemplate >::ptr PartOfComplexTemplate() const; // INVERSE IfcComplexPropertyTemplate::HasPropertyTemplates - aggregate_of< IfcPropertySetTemplate >::ptr PartOfPsetTemplate() const; // INVERSE IfcPropertySetTemplate::HasPropertyTemplates - virtual const IfcParse::entity& declaration() const; + IfcPropertyTemplate() {} + explicit IfcPropertyTemplate (const std::weak_ptr& data) : IfcPropertyTemplateDefinition(data) {} + + std::vector< IfcComplexPropertyTemplate > PartOfComplexTemplate() const; // INVERSE IfcComplexPropertyTemplate::HasPropertyTemplates + std::vector< IfcPropertySetTemplate > PartOfPsetTemplate() const; // INVERSE IfcPropertySetTemplate::HasPropertyTemplates + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPropertyTemplate (IfcEntityInstanceData&& e); - IfcPropertyTemplate (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description); - typedef aggregate_of< IfcPropertyTemplate > list; + // IfcPropertyTemplate (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description); }; /// IfcRectangleHollowProfileDef defines a section profile that provides the defining parameters of a rectangular (or square) hollow section to be used by the swept surface geometry or the swept area solid. Its parameters and orientation relative to the position coordinate system are according to the following illustration. A square hollow section can be defined by equal values for h and b. The centre of the position coordinate system is in the profiles centre of the bounding box (for symmetric profiles identical with the centre of gravity). Normally, the longer sides are parallel to the y-axis, the shorter sides parallel to the x-axis. /// @@ -22720,22 +26997,23 @@ public: /// relative to the profile. /// /// Figure 322 — Rectangle hollow profile -class IFC_PARSE_API IfcRectangleHollowProfileDef : public IfcRectangleProfileDef { +class IFC_PARSE_API IfcRectangleHollowProfileDef : public IfcRectangleProfileDef { public: + IfcRectangleHollowProfileDef() {} + explicit IfcRectangleHollowProfileDef (const std::weak_ptr& data) : IfcRectangleProfileDef(data) {} + /// Thickness of the material. double WallThickness() const; - void setWallThickness(double v); + void setWallThickness(const double& v); /// Inner corner radius. - boost::optional< double > InnerFilletRadius() const; - void setInnerFilletRadius(boost::optional< double > v); + std::optional< double > InnerFilletRadius() const; + void setInnerFilletRadius(const std::optional< double >& v); /// Outer corner radius. - boost::optional< double > OuterFilletRadius() const; - void setOuterFilletRadius(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > OuterFilletRadius() const; + void setOuterFilletRadius(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRectangleHollowProfileDef (IfcEntityInstanceData&& e); - IfcRectangleHollowProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim, double v6_WallThickness, boost::optional< double > v7_InnerFilletRadius, boost::optional< double > v8_OuterFilletRadius); - typedef aggregate_of< IfcRectangleHollowProfileDef > list; + // IfcRectangleHollowProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_XDim, double v5_YDim, double v6_WallThickness, std::optional< double > v7_InnerFilletRadius, std::optional< double > v8_OuterFilletRadius); }; /// The IfcRectangularPyramid is a Construction Solid /// Geometry (CSG) 3D primitive. It is a solid with a rectangular base and @@ -22825,22 +27103,23 @@ public: /// +Y /// /// Figure 261 — Right circular cone textures -class IFC_PARSE_API IfcRectangularPyramid : public IfcCsgPrimitive3D { +class IFC_PARSE_API IfcRectangularPyramid : public IfcCsgPrimitive3D { public: + IfcRectangularPyramid() {} + explicit IfcRectangularPyramid (const std::weak_ptr& data) : IfcCsgPrimitive3D(data) {} + /// The length of the base measured along the placement X axis. It is provided by the inherited axis placement through SELF\IfcCsgPrimitive3D.Position.P[1]. double XLength() const; - void setXLength(double v); + void setXLength(const double& v); /// The length of the base measured along the placement Y axis. It is provided by the inherited axis placement through SELF\IfcCsgPrimitive3D.Position.P[2]. double YLength() const; - void setYLength(double v); + void setYLength(const double& v); /// The height of the apex above the plane of the base, measured in the direction of the placement Z axis, the SELF\IfcCsgPrimitive3D.Position.P[2]. double Height() const; - void setHeight(double v); - virtual const IfcParse::entity& declaration() const; + void setHeight(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRectangularPyramid (IfcEntityInstanceData&& e); - IfcRectangularPyramid (::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_XLength, double v3_YLength, double v4_Height); - typedef aggregate_of< IfcRectangularPyramid > list; + // IfcRectangularPyramid (::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_XLength, double v3_YLength, double v4_Height); }; /// Definition from ISO/CD 10303-42:1992: The trimmed surface is a simple bounded surface in which the boundaries are the constant parametric lines u1 = u1, u2 = u2, v1 = v1 and v2 = v2. All these values shall be within the parametric range of the referenced surface. Cyclic properties of the parameter range are assumed. /// @@ -22857,34 +27136,35 @@ public: /// Informal propositions: /// /// The domain of the trimmed surface shall be within the domain of the surface being trimmed. -class IFC_PARSE_API IfcRectangularTrimmedSurface : public IfcBoundedSurface { +class IFC_PARSE_API IfcRectangularTrimmedSurface : public IfcBoundedSurface { public: + IfcRectangularTrimmedSurface() {} + explicit IfcRectangularTrimmedSurface (const std::weak_ptr& data) : IfcBoundedSurface(data) {} + /// Surface being trimmed. - ::Ifc4x3_add2::IfcSurface* BasisSurface() const; - void setBasisSurface(::Ifc4x3_add2::IfcSurface* v); + ::Ifc4x3_add2::IfcSurface BasisSurface() const; + void setBasisSurface(const ::Ifc4x3_add2::IfcSurface& v); /// First u parametric value. double U1() const; - void setU1(double v); + void setU1(const double& v); /// First v parametric value. double V1() const; - void setV1(double v); + void setV1(const double& v); /// Second u parametric value. double U2() const; - void setU2(double v); + void setU2(const double& v); /// Second v parametric value. double V2() const; - void setV2(double v); + void setV2(const double& v); /// Flag to indicate whether the direction of the first parameter of the trimmed surface agrees with or opposes the sense of u in the basis surface. bool Usense() const; - void setUsense(bool v); + void setUsense(const bool& v); /// Flag to indicate whether the direction of the second parameter of the trimmed surface agrees with or opposes the sense of v in the basis surface. bool Vsense() const; - void setVsense(bool v); - virtual const IfcParse::entity& declaration() const; + void setVsense(const bool& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRectangularTrimmedSurface (IfcEntityInstanceData&& e); - IfcRectangularTrimmedSurface (::Ifc4x3_add2::IfcSurface* v1_BasisSurface, double v2_U1, double v3_V1, double v4_U2, double v5_V2, bool v6_Usense, bool v7_Vsense); - typedef aggregate_of< IfcRectangularTrimmedSurface > list; + // IfcRectangularTrimmedSurface (::Ifc4x3_add2::IfcSurface v1_BasisSurface, double v2_U1, double v3_V1, double v4_U2, double v5_V2, bool v6_Usense, bool v7_Vsense); }; /// Definition from IAI: An /// IfcReinforcementDefinitionProperties defines the cross section @@ -22912,19 +27192,20 @@ public: /// bar role), which in turn have a section cross section property defined as a /// profile and a number of reinforcement properties, one for each steel grade / /// bar type. -class IFC_PARSE_API IfcReinforcementDefinitionProperties : public IfcPreDefinedPropertySet { +class IFC_PARSE_API IfcReinforcementDefinitionProperties : public IfcPreDefinedPropertySet { public: + IfcReinforcementDefinitionProperties() {} + explicit IfcReinforcementDefinitionProperties (const std::weak_ptr& data) : IfcPreDefinedPropertySet(data) {} + /// Descriptive type name applied to reinforcement definition properties. - boost::optional< std::string > DefinitionType() const; - void setDefinitionType(boost::optional< std::string > v); + std::optional< std::string > DefinitionType() const; + void setDefinitionType(const std::optional< std::string >& v); /// The list of section reinforcement properties attached to the reinforcement definition properties. - aggregate_of< ::Ifc4x3_add2::IfcSectionReinforcementProperties >::ptr ReinforcementSectionDefinitions() const; - void setReinforcementSectionDefinitions(aggregate_of< ::Ifc4x3_add2::IfcSectionReinforcementProperties >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcSectionReinforcementProperties > ReinforcementSectionDefinitions() const; + void setReinforcementSectionDefinitions(const std::vector< ::Ifc4x3_add2::IfcSectionReinforcementProperties >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcReinforcementDefinitionProperties (IfcEntityInstanceData&& e); - IfcReinforcementDefinitionProperties (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_DefinitionType, aggregate_of< ::Ifc4x3_add2::IfcSectionReinforcementProperties >::ptr v6_ReinforcementSectionDefinitions); - typedef aggregate_of< IfcReinforcementDefinitionProperties > list; + // IfcReinforcementDefinitionProperties (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_DefinitionType, std::vector< ::Ifc4x3_add2::IfcSectionReinforcementProperties > v6_ReinforcementSectionDefinitions); }; /// The assignment relationship, IfcRelAssigns, is a generalization of "link" relationships among instances of IfcObject and its various 1st level subtypes. A link denotes the specific association through which one object (the client) applies the services of other objects (the suppliers), or through which one object may navigate to other objects. /// @@ -22937,20 +27218,21 @@ public: /// The assignment relationship establishs a bi-directional relationship among the participating objects and does not imply any dependency. The subtypes of IfcRelAssigns establishes the particular semantic meaning of the assignment relationship. /// /// HISTORY: New entity in IFC Release 2x. -class IFC_PARSE_API IfcRelAssigns : public IfcRelationship { +class IFC_PARSE_API IfcRelAssigns : public IfcRelationship { public: + IfcRelAssigns() {} + explicit IfcRelAssigns (const std::weak_ptr& data) : IfcRelationship(data) {} + /// Related objects, which are assigned to a single object. The type of the single (or relating) object is defined in the subtypes of IfcRelAssigns. - aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr RelatedObjects() const; - void setRelatedObjects(aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v); + std::vector< ::Ifc4x3_add2::IfcObjectDefinition > RelatedObjects() const; + void setRelatedObjects(const std::vector< ::Ifc4x3_add2::IfcObjectDefinition >& v); /// Particular type of the assignment relationship. It can constrain the applicable object types, used within the role of RelatedObjects. /// IFC2x4 CHANGE  The attribute is deprecated and shall no longer be used. A NIL value should always be assigned. - boost::optional< bool > RelatedObjectsType() const; - void setRelatedObjectsType(boost::optional< bool > v); - virtual const IfcParse::entity& declaration() const; + std::optional< bool > RelatedObjectsType() const; + void setRelatedObjectsType(const std::optional< bool >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssigns (IfcEntityInstanceData&& e); - IfcRelAssigns (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType); - typedef aggregate_of< IfcRelAssigns > list; + // IfcRelAssigns (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType); }; /// The objectified relationship IfcRelAssignsToActor handles the assignment of objects (subtypes of IfcObject) to an actor (subtypes of IfcActor). /// @@ -22961,35 +27243,37 @@ public: /// Reference to the objects (or single object) on which the actor acts upon in a certain role (if given) is specified in the inherited RelatedObjects attribute. /// /// HISTORY New Entity in IFC Release 2.0. Has been renamed from IfcRelActsUpon in IFC Release 2x. -class IFC_PARSE_API IfcRelAssignsToActor : public IfcRelAssigns { +class IFC_PARSE_API IfcRelAssignsToActor : public IfcRelAssigns { public: + IfcRelAssignsToActor() {} + explicit IfcRelAssignsToActor (const std::weak_ptr& data) : IfcRelAssigns(data) {} + /// Reference to the information about the actor. It comprises the information about the person or organization and its addresses. - ::Ifc4x3_add2::IfcActor* RelatingActor() const; - void setRelatingActor(::Ifc4x3_add2::IfcActor* v); + ::Ifc4x3_add2::IfcActor RelatingActor() const; + void setRelatingActor(const ::Ifc4x3_add2::IfcActor& v); /// Role of the actor played within the context of the assignment to the object(s). - ::Ifc4x3_add2::IfcActorRole* ActingRole() const; - void setActingRole(::Ifc4x3_add2::IfcActorRole* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcActorRole ActingRole() const; + void setActingRole(const ::Ifc4x3_add2::IfcActorRole& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssignsToActor (IfcEntityInstanceData&& e); - IfcRelAssignsToActor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcActor* v7_RelatingActor, ::Ifc4x3_add2::IfcActorRole* v8_ActingRole); - typedef aggregate_of< IfcRelAssignsToActor > list; + // IfcRelAssignsToActor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcActor v7_RelatingActor, ::Ifc4x3_add2::IfcActorRole v8_ActingRole); }; /// The objectified relationship IfcRelAssignsToControl handles the assignment of a control (represented by subtypes of IfcControl) to other objects (represented by subtypes of IfcObject, with the exception of controls). /// /// EXAMPLE The assignment of a performance history (as subtype of IfcControl) for a building service element (as subtype of IfcObject) is an application of this generic relationship. /// /// HISTORY New Entity in IFC Release 2.0. Has been renamed from IfcRelControls in IFC Release 2x. -class IFC_PARSE_API IfcRelAssignsToControl : public IfcRelAssigns { +class IFC_PARSE_API IfcRelAssignsToControl : public IfcRelAssigns { public: + IfcRelAssignsToControl() {} + explicit IfcRelAssignsToControl (const std::weak_ptr& data) : IfcRelAssigns(data) {} + /// Reference to the IfcControl that applies a control upon objects. - ::Ifc4x3_add2::IfcControl* RelatingControl() const; - void setRelatingControl(::Ifc4x3_add2::IfcControl* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcControl RelatingControl() const; + void setRelatingControl(const ::Ifc4x3_add2::IfcControl& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssignsToControl (IfcEntityInstanceData&& e); - IfcRelAssignsToControl (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcControl* v7_RelatingControl); - typedef aggregate_of< IfcRelAssignsToControl > list; + // IfcRelAssignsToControl (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcControl v7_RelatingControl); }; /// The objectified relationship IfcRelAssignsToGroup handles the assignment of object definitions (individual object occurrences as subtypes of IfcObject, and object types as subtypes of IfcTypeObject) to a group (subtypes of IfcGroup). /// @@ -23004,16 +27288,17 @@ public: /// The group assignment relationship shall be acyclic, that is, a group shall not participate in its own grouping relationship. /// /// HISTORY New entity in IFC Release 1.0. It has been renamed from IfcRelGroups in IFC Release 2x. -class IFC_PARSE_API IfcRelAssignsToGroup : public IfcRelAssigns { +class IFC_PARSE_API IfcRelAssignsToGroup : public IfcRelAssigns { public: + IfcRelAssignsToGroup() {} + explicit IfcRelAssignsToGroup (const std::weak_ptr& data) : IfcRelAssigns(data) {} + /// Reference to group that contains all assigned group members. - ::Ifc4x3_add2::IfcGroup* RelatingGroup() const; - void setRelatingGroup(::Ifc4x3_add2::IfcGroup* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcGroup RelatingGroup() const; + void setRelatingGroup(const ::Ifc4x3_add2::IfcGroup& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssignsToGroup (IfcEntityInstanceData&& e); - IfcRelAssignsToGroup (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcGroup* v7_RelatingGroup); - typedef aggregate_of< IfcRelAssignsToGroup > list; + // IfcRelAssignsToGroup (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcGroup v7_RelatingGroup); }; /// The objectified relationship IfcRelAssignsToGroupByFactor is a specialization of the general grouping mechanism. It allows to add a factor to define the ratio that applies to the assignment of object definitions (individual object occurrences as subtypes of IfcObject and object types as subtypes of IfcTypeObject) to a group (subtypes of IfcGroup). /// @@ -23024,16 +27309,17 @@ public: /// The same object or object type may be included with the same or different Factor values to many groups. Grouping relationships are not hierarchical. /// /// HISTORY New entity in IFC2x4. -class IFC_PARSE_API IfcRelAssignsToGroupByFactor : public IfcRelAssignsToGroup { +class IFC_PARSE_API IfcRelAssignsToGroupByFactor : public IfcRelAssignsToGroup { public: + IfcRelAssignsToGroupByFactor() {} + explicit IfcRelAssignsToGroupByFactor (const std::weak_ptr& data) : IfcRelAssignsToGroup(data) {} + /// Factor provided as a ratio measure that identifies the fraction or weighted factor that applies to the group assignment. double Factor() const; - void setFactor(double v); - virtual const IfcParse::entity& declaration() const; + void setFactor(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssignsToGroupByFactor (IfcEntityInstanceData&& e); - IfcRelAssignsToGroupByFactor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcGroup* v7_RelatingGroup, double v8_Factor); - typedef aggregate_of< IfcRelAssignsToGroupByFactor > list; + // IfcRelAssignsToGroupByFactor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcGroup v7_RelatingGroup, double v8_Factor); }; /// The objectified relationship IfcRelAssignsToProcess handles the assignment of one or many objects to a process or activity. An object can be a product that is the item the process operates on. Processes and activities can operate on things other than products, and can operate in ways other than input and output. /// @@ -23057,21 +27343,22 @@ public: /// HISTORY New entity in IFC Release 1.5. Has been renamed from IfcRelProcessOperatesOn in IFC Release 2x. /// /// IFC2x4 CHANGE The data type RelatingProcess has been extended to cover also IfcTypeProcess -class IFC_PARSE_API IfcRelAssignsToProcess : public IfcRelAssigns { +class IFC_PARSE_API IfcRelAssignsToProcess : public IfcRelAssigns { public: + IfcRelAssignsToProcess() {} + explicit IfcRelAssignsToProcess (const std::weak_ptr& data) : IfcRelAssigns(data) {} + /// Reference to the process to which the objects are assigned to. /// /// IFC2x4 CHANGE Datatype expanded to include IfcProcess and IfcTypeProcess. - ::Ifc4x3_add2::IfcProcessSelect* RelatingProcess() const; - void setRelatingProcess(::Ifc4x3_add2::IfcProcessSelect* v); + ::Ifc4x3_add2::IfcProcessSelect RelatingProcess() const; + void setRelatingProcess(const ::Ifc4x3_add2::IfcProcessSelect& v); /// Quantity of the object specific for the operation by this process. - ::Ifc4x3_add2::IfcMeasureWithUnit* QuantityInProcess() const; - void setQuantityInProcess(::Ifc4x3_add2::IfcMeasureWithUnit* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcMeasureWithUnit QuantityInProcess() const; + void setQuantityInProcess(const ::Ifc4x3_add2::IfcMeasureWithUnit& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssignsToProcess (IfcEntityInstanceData&& e); - IfcRelAssignsToProcess (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcProcessSelect* v7_RelatingProcess, ::Ifc4x3_add2::IfcMeasureWithUnit* v8_QuantityInProcess); - typedef aggregate_of< IfcRelAssignsToProcess > list; + // IfcRelAssignsToProcess (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcProcessSelect v7_RelatingProcess, ::Ifc4x3_add2::IfcMeasureWithUnit v8_QuantityInProcess); }; /// The objectified relationshipIfcRelAssignsToProduct handles the assignment of objects (subtypes of IfcObject) to a product (subtypes of IfcProduct). The Name attribute should be used to classify the usage of the IfcRelAssignsToProduct objectified relationship. The following Name values are proposed: /// @@ -23081,18 +27368,19 @@ public: /// HISTORY New Entity in IFC Release 2x /// /// IFC2x3 CHANGE The reference of a product within a spatial structure is now handled by a new relationship object IfcRelReferencedInSpatialStructure. The IfcRelAssignsToProduct shall not be used to represent this relation from IFC2x3 onwards. -class IFC_PARSE_API IfcRelAssignsToProduct : public IfcRelAssigns { +class IFC_PARSE_API IfcRelAssignsToProduct : public IfcRelAssigns { public: + IfcRelAssignsToProduct() {} + explicit IfcRelAssignsToProduct (const std::weak_ptr& data) : IfcRelAssigns(data) {} + /// Reference to the product or product type to which the objects are assigned to. /// /// IFC2x4 CHANGE Datatype expanded to include IfcProduct and IfcTypeProduct. - ::Ifc4x3_add2::IfcProductSelect* RelatingProduct() const; - void setRelatingProduct(::Ifc4x3_add2::IfcProductSelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcProductSelect RelatingProduct() const; + void setRelatingProduct(const ::Ifc4x3_add2::IfcProductSelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssignsToProduct (IfcEntityInstanceData&& e); - IfcRelAssignsToProduct (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcProductSelect* v7_RelatingProduct); - typedef aggregate_of< IfcRelAssignsToProduct > list; + // IfcRelAssignsToProduct (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcProductSelect v7_RelatingProduct); }; /// The objectified relationship IfcRelAssignsToResource handles the assignment of objects /// (as subtypes of IfcObject), acting as a resource usage or consumption, to a resource (as subtypes of IfcResource). @@ -23100,18 +27388,19 @@ public: /// EXAMPLE The assignment of a resource usage to a construction resource is an application of this generic relationship. It could be an actor, as person or organization assigned to a labor resource, or a raw product assigned to a construction product or material resource). /// /// HISTORY New Entity in IFC Release 2x. -class IFC_PARSE_API IfcRelAssignsToResource : public IfcRelAssigns { +class IFC_PARSE_API IfcRelAssignsToResource : public IfcRelAssigns { public: + IfcRelAssignsToResource() {} + explicit IfcRelAssignsToResource (const std::weak_ptr& data) : IfcRelAssigns(data) {} + /// Reference to the resource to which the objects are assigned to. /// /// IFC2x4 CHANGE Datatype expanded to include IfcResource and IfcTypeResource. - ::Ifc4x3_add2::IfcResourceSelect* RelatingResource() const; - void setRelatingResource(::Ifc4x3_add2::IfcResourceSelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcResourceSelect RelatingResource() const; + void setRelatingResource(const ::Ifc4x3_add2::IfcResourceSelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssignsToResource (IfcEntityInstanceData&& e); - IfcRelAssignsToResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcResourceSelect* v7_RelatingResource); - typedef aggregate_of< IfcRelAssignsToResource > list; + // IfcRelAssignsToResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, std::optional< bool > v6_RelatedObjectsType, ::Ifc4x3_add2::IfcResourceSelect v7_RelatingResource); }; /// The association relationship /// IfcRelAssociates refers to external sources of @@ -23154,32 +27443,34 @@ public: /// HISTORY New entity in IFC Release 2x. /// /// IFC2x4 CHANGE Entity has been changed into an ABSTRACT supertype -class IFC_PARSE_API IfcRelAssociates : public IfcRelationship { +class IFC_PARSE_API IfcRelAssociates : public IfcRelationship { public: + IfcRelAssociates() {} + explicit IfcRelAssociates (const std::weak_ptr& data) : IfcRelationship(data) {} + /// Set of object or property definitions to which the external references or information is associated. It includes object and type objects, property set templates, property templates and property sets and contexts. /// /// IFC2x4 CHANGE  The attribute datatype has been changed from IfcRoot to IfcDefinitionSelect. - aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr RelatedObjects() const; - void setRelatedObjects(aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > RelatedObjects() const; + void setRelatedObjects(const std::vector< ::Ifc4x3_add2::IfcDefinitionSelect >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssociates (IfcEntityInstanceData&& e); - IfcRelAssociates (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects); - typedef aggregate_of< IfcRelAssociates > list; + // IfcRelAssociates (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects); }; /// The entity IfcRelAssociatesApproval is used to apply approval information defined by IfcApproval, in IfcApprovalResource schema, to subtypes of IfcRoot. /// /// HISTORY: New entity in IFC2x2. -class IFC_PARSE_API IfcRelAssociatesApproval : public IfcRelAssociates { +class IFC_PARSE_API IfcRelAssociatesApproval : public IfcRelAssociates { public: + IfcRelAssociatesApproval() {} + explicit IfcRelAssociatesApproval (const std::weak_ptr& data) : IfcRelAssociates(data) {} + /// Reference to approval that is being applied using this relationship. - ::Ifc4x3_add2::IfcApproval* RelatingApproval() const; - void setRelatingApproval(::Ifc4x3_add2::IfcApproval* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcApproval RelatingApproval() const; + void setRelatingApproval(const ::Ifc4x3_add2::IfcApproval& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssociatesApproval (IfcEntityInstanceData&& e); - IfcRelAssociatesApproval (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcApproval* v6_RelatingApproval); - typedef aggregate_of< IfcRelAssociatesApproval > list; + // IfcRelAssociatesApproval (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects, ::Ifc4x3_add2::IfcApproval v6_RelatingApproval); }; /// The objectified relationship /// IfcRelAssociatesClassification handles the assignment of a @@ -23211,33 +27502,35 @@ public: /// multiple objects. /// /// HISTORY New entity in IFC Release 2x. -class IFC_PARSE_API IfcRelAssociatesClassification : public IfcRelAssociates { +class IFC_PARSE_API IfcRelAssociatesClassification : public IfcRelAssociates { public: + IfcRelAssociatesClassification() {} + explicit IfcRelAssociatesClassification (const std::weak_ptr& data) : IfcRelAssociates(data) {} + /// Classification applied to the objects. - ::Ifc4x3_add2::IfcClassificationSelect* RelatingClassification() const; - void setRelatingClassification(::Ifc4x3_add2::IfcClassificationSelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcClassificationSelect RelatingClassification() const; + void setRelatingClassification(const ::Ifc4x3_add2::IfcClassificationSelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssociatesClassification (IfcEntityInstanceData&& e); - IfcRelAssociatesClassification (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcClassificationSelect* v6_RelatingClassification); - typedef aggregate_of< IfcRelAssociatesClassification > list; + // IfcRelAssociatesClassification (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects, ::Ifc4x3_add2::IfcClassificationSelect v6_RelatingClassification); }; /// The entity IfcRelAssociatesConstraint is used to apply constraint information defined by IfcConstraint, in the IfcConstraintResource schema, to subtypes of IfcRoot. /// /// HISTORY: New entity in IFC2x2. -class IFC_PARSE_API IfcRelAssociatesConstraint : public IfcRelAssociates { +class IFC_PARSE_API IfcRelAssociatesConstraint : public IfcRelAssociates { public: + IfcRelAssociatesConstraint() {} + explicit IfcRelAssociatesConstraint (const std::weak_ptr& data) : IfcRelAssociates(data) {} + /// The intent of the constraint usage with regard to its related IfcConstraint and IfcObjects, IfcPropertyDefinitions or IfcRelationships. Typical values can be e.g. RATIONALE or EXPECTED PERFORMANCE. - boost::optional< std::string > Intent() const; - void setIntent(boost::optional< std::string > v); + std::optional< std::string > Intent() const; + void setIntent(const std::optional< std::string >& v); /// Reference to constraint that is being applied using this relationship. - ::Ifc4x3_add2::IfcConstraint* RelatingConstraint() const; - void setRelatingConstraint(::Ifc4x3_add2::IfcConstraint* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcConstraint RelatingConstraint() const; + void setRelatingConstraint(const ::Ifc4x3_add2::IfcConstraint& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssociatesConstraint (IfcEntityInstanceData&& e); - IfcRelAssociatesConstraint (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects, boost::optional< std::string > v6_Intent, ::Ifc4x3_add2::IfcConstraint* v7_RelatingConstraint); - typedef aggregate_of< IfcRelAssociatesConstraint > list; + // IfcRelAssociatesConstraint (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects, std::optional< std::string > v6_Intent, ::Ifc4x3_add2::IfcConstraint v7_RelatingConstraint); }; /// The objectified relationship (IfcRelAssociatesDocument) handles the assignment of a document information (items of the select IfcDocumentSelect) to objects occurrences (subtypes of IfcObject) or object types (subtypes of IfcTypeObject). /// @@ -23246,16 +27539,17 @@ public: /// The inherited attribute RelatedObjects define the objects to which the document association is applied. The attribute RelatingDocument is the reference to a document reference, applied to the object(s). /// /// HISTORY: New entity in IFC Release 2x. -class IFC_PARSE_API IfcRelAssociatesDocument : public IfcRelAssociates { +class IFC_PARSE_API IfcRelAssociatesDocument : public IfcRelAssociates { public: + IfcRelAssociatesDocument() {} + explicit IfcRelAssociatesDocument (const std::weak_ptr& data) : IfcRelAssociates(data) {} + /// Document information or reference which is applied to the objects. - ::Ifc4x3_add2::IfcDocumentSelect* RelatingDocument() const; - void setRelatingDocument(::Ifc4x3_add2::IfcDocumentSelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcDocumentSelect RelatingDocument() const; + void setRelatingDocument(const ::Ifc4x3_add2::IfcDocumentSelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssociatesDocument (IfcEntityInstanceData&& e); - IfcRelAssociatesDocument (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcDocumentSelect* v6_RelatingDocument); - typedef aggregate_of< IfcRelAssociatesDocument > list; + // IfcRelAssociatesDocument (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects, ::Ifc4x3_add2::IfcDocumentSelect v6_RelatingDocument); }; /// The objectified relationship (IfcRelAssociatesLibrary) handles the assignment of a library item (items of the select IfcLibrarySelect) to subtypes of IfcObjectDefinition or IfcPropertyDefinition. /// @@ -23264,16 +27558,17 @@ public: /// The inherited attribute RelatedObjects define the items to which the library association is applied. The attribute RelatingLibrary is the reference to a library reference, applied to the item(s). /// /// HISTORY: New entity in IFC Release 2x. -class IFC_PARSE_API IfcRelAssociatesLibrary : public IfcRelAssociates { +class IFC_PARSE_API IfcRelAssociatesLibrary : public IfcRelAssociates { public: + IfcRelAssociatesLibrary() {} + explicit IfcRelAssociatesLibrary (const std::weak_ptr& data) : IfcRelAssociates(data) {} + /// Reference to a library, from which the definition of the property set is taken. - ::Ifc4x3_add2::IfcLibrarySelect* RelatingLibrary() const; - void setRelatingLibrary(::Ifc4x3_add2::IfcLibrarySelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcLibrarySelect RelatingLibrary() const; + void setRelatingLibrary(const ::Ifc4x3_add2::IfcLibrarySelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssociatesLibrary (IfcEntityInstanceData&& e); - IfcRelAssociatesLibrary (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcLibrarySelect* v6_RelatingLibrary); - typedef aggregate_of< IfcRelAssociatesLibrary > list; + // IfcRelAssociatesLibrary (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects, ::Ifc4x3_add2::IfcLibrarySelect v6_RelatingLibrary); }; /// Definition from IAI: Objectified relationship between a /// material definition and elements or element types to which this @@ -23369,38 +27664,41 @@ public: /// An IfcMaterialProfileSetUsage shall not be associated /// with a subtype of IfcElementType, it should only be /// associated with individual occurrences -class IFC_PARSE_API IfcRelAssociatesMaterial : public IfcRelAssociates { +class IFC_PARSE_API IfcRelAssociatesMaterial : public IfcRelAssociates { public: + IfcRelAssociatesMaterial() {} + explicit IfcRelAssociatesMaterial (const std::weak_ptr& data) : IfcRelAssociates(data) {} + /// Material definition assigned to the elements or element types. - ::Ifc4x3_add2::IfcMaterialSelect* RelatingMaterial() const; - void setRelatingMaterial(::Ifc4x3_add2::IfcMaterialSelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcMaterialSelect RelatingMaterial() const; + void setRelatingMaterial(const ::Ifc4x3_add2::IfcMaterialSelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssociatesMaterial (IfcEntityInstanceData&& e); - IfcRelAssociatesMaterial (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcMaterialSelect* v6_RelatingMaterial); - typedef aggregate_of< IfcRelAssociatesMaterial > list; + // IfcRelAssociatesMaterial (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects, ::Ifc4x3_add2::IfcMaterialSelect v6_RelatingMaterial); }; -class IFC_PARSE_API IfcRelAssociatesProfileDef : public IfcRelAssociates { +class IFC_PARSE_API IfcRelAssociatesProfileDef : public IfcRelAssociates { public: - ::Ifc4x3_add2::IfcProfileDef* RelatingProfileDef() const; - void setRelatingProfileDef(::Ifc4x3_add2::IfcProfileDef* v); - virtual const IfcParse::entity& declaration() const; + IfcRelAssociatesProfileDef() {} + explicit IfcRelAssociatesProfileDef (const std::weak_ptr& data) : IfcRelAssociates(data) {} + + ::Ifc4x3_add2::IfcProfileDef RelatingProfileDef() const; + void setRelatingProfileDef(const ::Ifc4x3_add2::IfcProfileDef& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAssociatesProfileDef (IfcEntityInstanceData&& e); - IfcRelAssociatesProfileDef (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcProfileDef* v6_RelatingProfileDef); - typedef aggregate_of< IfcRelAssociatesProfileDef > list; + // IfcRelAssociatesProfileDef (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v5_RelatedObjects, ::Ifc4x3_add2::IfcProfileDef v6_RelatingProfileDef); }; /// IfcRelConnects is a connectivity relationship that connects objects under some criteria. As a general connectivity it does not imply constraints, however subtypes of the relationship define the applicable object types for the connectivity relationship and the semantics of the particular connectivity. /// /// HISTORY: New entity in IFC Release 2x. -class IFC_PARSE_API IfcRelConnects : public IfcRelationship { +class IFC_PARSE_API IfcRelConnects : public IfcRelationship { public: - virtual const IfcParse::entity& declaration() const; + IfcRelConnects() {} + explicit IfcRelConnects (const std::weak_ptr& data) : IfcRelationship(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelConnects (IfcEntityInstanceData&& e); - IfcRelConnects (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description); - typedef aggregate_of< IfcRelConnects > list; + // IfcRelConnects (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description); }; /// Definition from IAI: The /// IfcRelConnectsElements objectified relationship @@ -23424,22 +27722,23 @@ public: /// /// HISTORY New entity in IFC /// Release 1.0. -class IFC_PARSE_API IfcRelConnectsElements : public IfcRelConnects { +class IFC_PARSE_API IfcRelConnectsElements : public IfcRelConnects { public: + IfcRelConnectsElements() {} + explicit IfcRelConnectsElements (const std::weak_ptr& data) : IfcRelConnects(data) {} + /// The geometric shape representation of the connection geometry that is provided in the object coordinate system of the RelatingElement (mandatory) and in the object coordinate system of the RelatedElement (optionally). - ::Ifc4x3_add2::IfcConnectionGeometry* ConnectionGeometry() const; - void setConnectionGeometry(::Ifc4x3_add2::IfcConnectionGeometry* v); + ::Ifc4x3_add2::IfcConnectionGeometry ConnectionGeometry() const; + void setConnectionGeometry(const ::Ifc4x3_add2::IfcConnectionGeometry& v); /// Reference to a subtype of IfcElement that is connected by the connection relationship in the role of RelatingElement. - ::Ifc4x3_add2::IfcElement* RelatingElement() const; - void setRelatingElement(::Ifc4x3_add2::IfcElement* v); + ::Ifc4x3_add2::IfcElement RelatingElement() const; + void setRelatingElement(const ::Ifc4x3_add2::IfcElement& v); /// Reference to a subtype of IfcElement that is connected by the connection relationship in the role of RelatedElement. - ::Ifc4x3_add2::IfcElement* RelatedElement() const; - void setRelatedElement(::Ifc4x3_add2::IfcElement* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcElement RelatedElement() const; + void setRelatedElement(const ::Ifc4x3_add2::IfcElement& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelConnectsElements (IfcEntityInstanceData&& e); - IfcRelConnectsElements (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc4x3_add2::IfcElement* v6_RelatingElement, ::Ifc4x3_add2::IfcElement* v7_RelatedElement); - typedef aggregate_of< IfcRelConnectsElements > list; + // IfcRelConnectsElements (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcConnectionGeometry v5_ConnectionGeometry, ::Ifc4x3_add2::IfcElement v6_RelatingElement, ::Ifc4x3_add2::IfcElement v7_RelatedElement); }; /// The /// IfcRelConnectsPathElements relationship provides the connectivity information between two elements, which have path information. @@ -23471,25 +27770,26 @@ public: /// /// Figure 116 — Path connection T-Type /// Figure 117 — Path connection L-Type -class IFC_PARSE_API IfcRelConnectsPathElements : public IfcRelConnectsElements { +class IFC_PARSE_API IfcRelConnectsPathElements : public IfcRelConnectsElements { public: + IfcRelConnectsPathElements() {} + explicit IfcRelConnectsPathElements (const std::weak_ptr& data) : IfcRelConnectsElements(data) {} + /// Priorities for connection. It refers to the layers of the RelatingObject. std::vector< int > /*[0:?]*/ RelatingPriorities() const; - void setRelatingPriorities(std::vector< int > /*[0:?]*/ v); + void setRelatingPriorities(const std::vector< int > /*[0:?]*/& v); /// Priorities for connection. It refers to the layers of the RelatedObject. std::vector< int > /*[0:?]*/ RelatedPriorities() const; - void setRelatedPriorities(std::vector< int > /*[0:?]*/ v); + void setRelatedPriorities(const std::vector< int > /*[0:?]*/& v); /// Indication of the connection type in relation to the path of the RelatingObject. ::Ifc4x3_add2::IfcConnectionTypeEnum::Value RelatedConnectionType() const; - void setRelatedConnectionType(::Ifc4x3_add2::IfcConnectionTypeEnum::Value v); + void setRelatedConnectionType(const ::Ifc4x3_add2::IfcConnectionTypeEnum::Value& v); /// Indication of the connection type in relation to the path of the RelatingObject. ::Ifc4x3_add2::IfcConnectionTypeEnum::Value RelatingConnectionType() const; - void setRelatingConnectionType(::Ifc4x3_add2::IfcConnectionTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setRelatingConnectionType(const ::Ifc4x3_add2::IfcConnectionTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelConnectsPathElements (IfcEntityInstanceData&& e); - IfcRelConnectsPathElements (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc4x3_add2::IfcElement* v6_RelatingElement, ::Ifc4x3_add2::IfcElement* v7_RelatedElement, std::vector< int > /*[0:?]*/ v8_RelatingPriorities, std::vector< int > /*[0:?]*/ v9_RelatedPriorities, ::Ifc4x3_add2::IfcConnectionTypeEnum::Value v10_RelatedConnectionType, ::Ifc4x3_add2::IfcConnectionTypeEnum::Value v11_RelatingConnectionType); - typedef aggregate_of< IfcRelConnectsPathElements > list; + // IfcRelConnectsPathElements (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcConnectionGeometry v5_ConnectionGeometry, ::Ifc4x3_add2::IfcElement v6_RelatingElement, ::Ifc4x3_add2::IfcElement v7_RelatedElement, std::vector< int > /*[0:?]*/ v8_RelatingPriorities, std::vector< int > /*[0:?]*/ v9_RelatedPriorities, ::Ifc4x3_add2::IfcConnectionTypeEnum::Value v10_RelatedConnectionType, ::Ifc4x3_add2::IfcConnectionTypeEnum::Value v11_RelatingConnectionType); }; /// The objectified relationship /// IfcRelConnectsPortToElement defines the relationship that @@ -23516,21 +27816,22 @@ public: /// entity in Release IFC2x Edition 2. /// IFC2x4 CHANGE  The /// definition has been extended to include element types. -class IFC_PARSE_API IfcRelConnectsPortToElement : public IfcRelConnects { +class IFC_PARSE_API IfcRelConnectsPortToElement : public IfcRelConnects { public: + IfcRelConnectsPortToElement() {} + explicit IfcRelConnectsPortToElement (const std::weak_ptr& data) : IfcRelConnects(data) {} + /// Reference to an Port that is connected by the objectified relationship. - ::Ifc4x3_add2::IfcPort* RelatingPort() const; - void setRelatingPort(::Ifc4x3_add2::IfcPort* v); + ::Ifc4x3_add2::IfcPort RelatingPort() const; + void setRelatingPort(const ::Ifc4x3_add2::IfcPort& v); /// Reference to an IfcElement, or IfcElementType that has ports assigned. /// /// IFC2x4 CHANGE Data type extended to IfcObjectDefinition to enable elements and element types for the port relationship. - ::Ifc4x3_add2::IfcDistributionElement* RelatedElement() const; - void setRelatedElement(::Ifc4x3_add2::IfcDistributionElement* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcDistributionElement RelatedElement() const; + void setRelatedElement(const ::Ifc4x3_add2::IfcDistributionElement& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelConnectsPortToElement (IfcEntityInstanceData&& e); - IfcRelConnectsPortToElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPort* v5_RelatingPort, ::Ifc4x3_add2::IfcDistributionElement* v6_RelatedElement); - typedef aggregate_of< IfcRelConnectsPortToElement > list; + // IfcRelConnectsPortToElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPort v5_RelatingPort, ::Ifc4x3_add2::IfcDistributionElement v6_RelatedElement); }; /// Definition from IAI: An IfcRelConnectsPorts /// defines the relationship that is made between two ports at @@ -23545,39 +27846,41 @@ public: /// /// HISTORY New entity in IFC /// 2.0, modified in IFC2x. -class IFC_PARSE_API IfcRelConnectsPorts : public IfcRelConnects { +class IFC_PARSE_API IfcRelConnectsPorts : public IfcRelConnects { public: + IfcRelConnectsPorts() {} + explicit IfcRelConnectsPorts (const std::weak_ptr& data) : IfcRelConnects(data) {} + /// Reference to the first port that is connected by the objectified relationship. - ::Ifc4x3_add2::IfcPort* RelatingPort() const; - void setRelatingPort(::Ifc4x3_add2::IfcPort* v); + ::Ifc4x3_add2::IfcPort RelatingPort() const; + void setRelatingPort(const ::Ifc4x3_add2::IfcPort& v); /// Reference to the second port that is connected by the objectified relationship. - ::Ifc4x3_add2::IfcPort* RelatedPort() const; - void setRelatedPort(::Ifc4x3_add2::IfcPort* v); + ::Ifc4x3_add2::IfcPort RelatedPort() const; + void setRelatedPort(const ::Ifc4x3_add2::IfcPort& v); /// Defines the element that realizes a port connection relationship. - ::Ifc4x3_add2::IfcElement* RealizingElement() const; - void setRealizingElement(::Ifc4x3_add2::IfcElement* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcElement RealizingElement() const; + void setRealizingElement(const ::Ifc4x3_add2::IfcElement& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelConnectsPorts (IfcEntityInstanceData&& e); - IfcRelConnectsPorts (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPort* v5_RelatingPort, ::Ifc4x3_add2::IfcPort* v6_RelatedPort, ::Ifc4x3_add2::IfcElement* v7_RealizingElement); - typedef aggregate_of< IfcRelConnectsPorts > list; + // IfcRelConnectsPorts (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPort v5_RelatingPort, ::Ifc4x3_add2::IfcPort v6_RelatedPort, ::Ifc4x3_add2::IfcElement v7_RealizingElement); }; /// Definition from IAI: The IfcRelConnectsStructuralActivity relationship connects a structural activity (either an action or reaction) to a structural member, structural connection, or element. /// /// HISTORY: New entity in IFC 2x2. -class IFC_PARSE_API IfcRelConnectsStructuralActivity : public IfcRelConnects { +class IFC_PARSE_API IfcRelConnectsStructuralActivity : public IfcRelConnects { public: + IfcRelConnectsStructuralActivity() {} + explicit IfcRelConnectsStructuralActivity (const std::weak_ptr& data) : IfcRelConnects(data) {} + /// Reference to a structural item or element to which the specified activity is applied. - ::Ifc4x3_add2::IfcStructuralActivityAssignmentSelect* RelatingElement() const; - void setRelatingElement(::Ifc4x3_add2::IfcStructuralActivityAssignmentSelect* v); + ::Ifc4x3_add2::IfcStructuralActivityAssignmentSelect RelatingElement() const; + void setRelatingElement(const ::Ifc4x3_add2::IfcStructuralActivityAssignmentSelect& v); /// Reference to a structural activity which is acting upon the specified structural item or element. - ::Ifc4x3_add2::IfcStructuralActivity* RelatedStructuralActivity() const; - void setRelatedStructuralActivity(::Ifc4x3_add2::IfcStructuralActivity* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcStructuralActivity RelatedStructuralActivity() const; + void setRelatedStructuralActivity(const ::Ifc4x3_add2::IfcStructuralActivity& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelConnectsStructuralActivity (IfcEntityInstanceData&& e); - IfcRelConnectsStructuralActivity (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcStructuralActivityAssignmentSelect* v5_RelatingElement, ::Ifc4x3_add2::IfcStructuralActivity* v6_RelatedStructuralActivity); - typedef aggregate_of< IfcRelConnectsStructuralActivity > list; + // IfcRelConnectsStructuralActivity (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcStructuralActivityAssignmentSelect v5_RelatingElement, ::Ifc4x3_add2::IfcStructuralActivity v6_RelatedStructuralActivity); }; /// The entity IfcRelConnectsStructuralMember defines all needed properties describing the connection between structural members and structural connection objects (nodes or supports). /// @@ -23603,31 +27906,32 @@ public: /// Figure 235 illustrates the appropriate definition of support lengths. /// /// Figure 235 — Structural member support lengths -class IFC_PARSE_API IfcRelConnectsStructuralMember : public IfcRelConnects { +class IFC_PARSE_API IfcRelConnectsStructuralMember : public IfcRelConnects { public: + IfcRelConnectsStructuralMember() {} + explicit IfcRelConnectsStructuralMember (const std::weak_ptr& data) : IfcRelConnects(data) {} + /// Reference to an instance of IfcStructuralMember (or its subclasses) which is connected to the specified structural connection. - ::Ifc4x3_add2::IfcStructuralMember* RelatingStructuralMember() const; - void setRelatingStructuralMember(::Ifc4x3_add2::IfcStructuralMember* v); + ::Ifc4x3_add2::IfcStructuralMember RelatingStructuralMember() const; + void setRelatingStructuralMember(const ::Ifc4x3_add2::IfcStructuralMember& v); /// Reference to an instance of IfcStructuralConnection (or its subclasses) which is connected to the specified structural member. - ::Ifc4x3_add2::IfcStructuralConnection* RelatedStructuralConnection() const; - void setRelatedStructuralConnection(::Ifc4x3_add2::IfcStructuralConnection* v); + ::Ifc4x3_add2::IfcStructuralConnection RelatedStructuralConnection() const; + void setRelatedStructuralConnection(const ::Ifc4x3_add2::IfcStructuralConnection& v); /// Conditions which define the connections properties. Connection conditions are often called "release" but are not only used to define mechanisms like hinges but also rigid, elastic, and other conditions. - ::Ifc4x3_add2::IfcBoundaryCondition* AppliedCondition() const; - void setAppliedCondition(::Ifc4x3_add2::IfcBoundaryCondition* v); + ::Ifc4x3_add2::IfcBoundaryCondition AppliedCondition() const; + void setAppliedCondition(const ::Ifc4x3_add2::IfcBoundaryCondition& v); /// Describes additional connection properties. - ::Ifc4x3_add2::IfcStructuralConnectionCondition* AdditionalConditions() const; - void setAdditionalConditions(::Ifc4x3_add2::IfcStructuralConnectionCondition* v); + ::Ifc4x3_add2::IfcStructuralConnectionCondition AdditionalConditions() const; + void setAdditionalConditions(const ::Ifc4x3_add2::IfcStructuralConnectionCondition& v); /// Defines the 'supported length' of this structural connection. See Fig. for more detail. - boost::optional< double > SupportedLength() const; - void setSupportedLength(boost::optional< double > v); + std::optional< double > SupportedLength() const; + void setSupportedLength(const std::optional< double >& v); /// Defines a coordinate system used for the description of the connection properties in ConnectionCondition relative to the local coordinate system of RelatingStructuralMember. If left unspecified, the placement IfcAxis2Placement3D((x,y,z), ?, ?) is implied with x,y,z being the local member coordinates where the connection is made and the default axes directions being in parallel with the local axes of RelatingStructuralMember. - ::Ifc4x3_add2::IfcAxis2Placement3D* ConditionCoordinateSystem() const; - void setConditionCoordinateSystem(::Ifc4x3_add2::IfcAxis2Placement3D* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcAxis2Placement3D ConditionCoordinateSystem() const; + void setConditionCoordinateSystem(const ::Ifc4x3_add2::IfcAxis2Placement3D& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelConnectsStructuralMember (IfcEntityInstanceData&& e); - IfcRelConnectsStructuralMember (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcStructuralMember* v5_RelatingStructuralMember, ::Ifc4x3_add2::IfcStructuralConnection* v6_RelatedStructuralConnection, ::Ifc4x3_add2::IfcBoundaryCondition* v7_AppliedCondition, ::Ifc4x3_add2::IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, ::Ifc4x3_add2::IfcAxis2Placement3D* v10_ConditionCoordinateSystem); - typedef aggregate_of< IfcRelConnectsStructuralMember > list; + // IfcRelConnectsStructuralMember (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcStructuralMember v5_RelatingStructuralMember, ::Ifc4x3_add2::IfcStructuralConnection v6_RelatedStructuralConnection, ::Ifc4x3_add2::IfcBoundaryCondition v7_AppliedCondition, ::Ifc4x3_add2::IfcStructuralConnectionCondition v8_AdditionalConditions, std::optional< double > v9_SupportedLength, ::Ifc4x3_add2::IfcAxis2Placement3D v10_ConditionCoordinateSystem); }; /// Definition from IAI: The entity IfcRelConnectsWithEccentricity adds the definition of eccentricity to the connection between a structural member and a structural connection (representing either a node or support). /// @@ -23646,16 +27950,17 @@ public: /// /// Surface Connection /// ConnectionConstraint shall be of type IfcConnectionSurfaceGeometry and shall refer to two instances of IfcFaceSurface. -class IFC_PARSE_API IfcRelConnectsWithEccentricity : public IfcRelConnectsStructuralMember { +class IFC_PARSE_API IfcRelConnectsWithEccentricity : public IfcRelConnectsStructuralMember { public: + IfcRelConnectsWithEccentricity() {} + explicit IfcRelConnectsWithEccentricity (const std::weak_ptr& data) : IfcRelConnectsStructuralMember(data) {} + /// The connection constraint explicitly states the eccentricity between a structural member and a structural connection by means of two topological objects (vertex and vertex, or edge and edge, or face and face). - ::Ifc4x3_add2::IfcConnectionGeometry* ConnectionConstraint() const; - void setConnectionConstraint(::Ifc4x3_add2::IfcConnectionGeometry* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcConnectionGeometry ConnectionConstraint() const; + void setConnectionConstraint(const ::Ifc4x3_add2::IfcConnectionGeometry& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelConnectsWithEccentricity (IfcEntityInstanceData&& e); - IfcRelConnectsWithEccentricity (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcStructuralMember* v5_RelatingStructuralMember, ::Ifc4x3_add2::IfcStructuralConnection* v6_RelatedStructuralConnection, ::Ifc4x3_add2::IfcBoundaryCondition* v7_AppliedCondition, ::Ifc4x3_add2::IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, ::Ifc4x3_add2::IfcAxis2Placement3D* v10_ConditionCoordinateSystem, ::Ifc4x3_add2::IfcConnectionGeometry* v11_ConnectionConstraint); - typedef aggregate_of< IfcRelConnectsWithEccentricity > list; + // IfcRelConnectsWithEccentricity (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcStructuralMember v5_RelatingStructuralMember, ::Ifc4x3_add2::IfcStructuralConnection v6_RelatedStructuralConnection, ::Ifc4x3_add2::IfcBoundaryCondition v7_AppliedCondition, ::Ifc4x3_add2::IfcStructuralConnectionCondition v8_AdditionalConditions, std::optional< double > v9_SupportedLength, ::Ifc4x3_add2::IfcAxis2Placement3D v10_ConditionCoordinateSystem, ::Ifc4x3_add2::IfcConnectionGeometry v11_ConnectionConstraint); }; /// Definition from IAI: /// IfcRelConnectsWithRealizingElements defines a @@ -23680,19 +27985,20 @@ public: /// /// HISTORY: New entity in /// Release IFC2x Edition 2. -class IFC_PARSE_API IfcRelConnectsWithRealizingElements : public IfcRelConnectsElements { +class IFC_PARSE_API IfcRelConnectsWithRealizingElements : public IfcRelConnectsElements { public: + IfcRelConnectsWithRealizingElements() {} + explicit IfcRelConnectsWithRealizingElements (const std::weak_ptr& data) : IfcRelConnectsElements(data) {} + /// Defines the elements that realize a connection relationship. - aggregate_of< ::Ifc4x3_add2::IfcElement >::ptr RealizingElements() const; - void setRealizingElements(aggregate_of< ::Ifc4x3_add2::IfcElement >::ptr v); + std::vector< ::Ifc4x3_add2::IfcElement > RealizingElements() const; + void setRealizingElements(const std::vector< ::Ifc4x3_add2::IfcElement >& v); /// The type of the connection given for informal purposes, it may include labels, like 'joint', 'rigid joint', 'flexible joint', etc. - boost::optional< std::string > ConnectionType() const; - void setConnectionType(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > ConnectionType() const; + void setConnectionType(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelConnectsWithRealizingElements (IfcEntityInstanceData&& e); - IfcRelConnectsWithRealizingElements (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc4x3_add2::IfcElement* v6_RelatingElement, ::Ifc4x3_add2::IfcElement* v7_RelatedElement, aggregate_of< ::Ifc4x3_add2::IfcElement >::ptr v8_RealizingElements, boost::optional< std::string > v9_ConnectionType); - typedef aggregate_of< IfcRelConnectsWithRealizingElements > list; + // IfcRelConnectsWithRealizingElements (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcConnectionGeometry v5_ConnectionGeometry, ::Ifc4x3_add2::IfcElement v6_RelatingElement, ::Ifc4x3_add2::IfcElement v7_RelatedElement, std::vector< ::Ifc4x3_add2::IfcElement > v8_RealizingElements, std::optional< std::string > v9_ConnectionType); }; /// This objectified relationship, /// IfcRelContainedInSpatialStructure, is used to assign @@ -23754,21 +28060,22 @@ public: /// Figure 39 shows the use of IfcRelContainedInSpatialStructure to assign a stair and two walls to two different levels within the spatial structure. /// /// Figure 39 — Relationship for spatial structure containment -class IFC_PARSE_API IfcRelContainedInSpatialStructure : public IfcRelConnects { +class IFC_PARSE_API IfcRelContainedInSpatialStructure : public IfcRelConnects { public: + IfcRelContainedInSpatialStructure() {} + explicit IfcRelContainedInSpatialStructure (const std::weak_ptr& data) : IfcRelConnects(data) {} + /// Set of elements products, which are contained within this level of the spatial structure hierarchy. /// /// IFC2x PLATFORM CHANGE  The data type has been changed from IfcElement to IfcProduct with upward compatibility - aggregate_of< ::Ifc4x3_add2::IfcProduct >::ptr RelatedElements() const; - void setRelatedElements(aggregate_of< ::Ifc4x3_add2::IfcProduct >::ptr v); + std::vector< ::Ifc4x3_add2::IfcProduct > RelatedElements() const; + void setRelatedElements(const std::vector< ::Ifc4x3_add2::IfcProduct >& v); /// Spatial structure element, within which the element is contained. Any element can only be contained within one element of the project spatial structure. - ::Ifc4x3_add2::IfcSpatialElement* RelatingStructure() const; - void setRelatingStructure(::Ifc4x3_add2::IfcSpatialElement* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcSpatialElement RelatingStructure() const; + void setRelatingStructure(const ::Ifc4x3_add2::IfcSpatialElement& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelContainedInSpatialStructure (IfcEntityInstanceData&& e); - IfcRelContainedInSpatialStructure (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcProduct >::ptr v5_RelatedElements, ::Ifc4x3_add2::IfcSpatialElement* v6_RelatingStructure); - typedef aggregate_of< IfcRelContainedInSpatialStructure > list; + // IfcRelContainedInSpatialStructure (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcProduct > v5_RelatedElements, ::Ifc4x3_add2::IfcSpatialElement v6_RelatingStructure); }; /// Definition from IAI: The /// IfcRelCoversBldgElements is an objectified relationship @@ -23786,21 +28093,22 @@ public: /// type of the attribute RelatingElement has been changed /// from IfcElement to its subtype /// IfcBuildingElement. -class IFC_PARSE_API IfcRelCoversBldgElements : public IfcRelConnects { +class IFC_PARSE_API IfcRelCoversBldgElements : public IfcRelConnects { public: + IfcRelCoversBldgElements() {} + explicit IfcRelCoversBldgElements (const std::weak_ptr& data) : IfcRelConnects(data) {} + /// Relationship to the building element that is covered. /// /// IFC2x4 CHANGE: The attribute type has been changed from IfcElement to IfcBuildingElement. - ::Ifc4x3_add2::IfcElement* RelatingBuildingElement() const; - void setRelatingBuildingElement(::Ifc4x3_add2::IfcElement* v); + ::Ifc4x3_add2::IfcElement RelatingBuildingElement() const; + void setRelatingBuildingElement(const ::Ifc4x3_add2::IfcElement& v); /// Relationship to the set of coverings at this element. - aggregate_of< ::Ifc4x3_add2::IfcCovering >::ptr RelatedCoverings() const; - void setRelatedCoverings(aggregate_of< ::Ifc4x3_add2::IfcCovering >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcCovering > RelatedCoverings() const; + void setRelatedCoverings(const std::vector< ::Ifc4x3_add2::IfcCovering >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelCoversBldgElements (IfcEntityInstanceData&& e); - IfcRelCoversBldgElements (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement* v5_RelatingBuildingElement, aggregate_of< ::Ifc4x3_add2::IfcCovering >::ptr v6_RelatedCoverings); - typedef aggregate_of< IfcRelCoversBldgElements > list; + // IfcRelCoversBldgElements (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement v5_RelatingBuildingElement, std::vector< ::Ifc4x3_add2::IfcCovering > v6_RelatedCoverings); }; /// Definition from IAI: The objectified relationship, /// IfcRelCoversSpace, relatesa space object to one or @@ -23828,21 +28136,22 @@ public: /// /// HISTORY New Entity in Release /// IFC 2x Edition 3. -class IFC_PARSE_API IfcRelCoversSpaces : public IfcRelConnects { +class IFC_PARSE_API IfcRelCoversSpaces : public IfcRelConnects { public: + IfcRelCoversSpaces() {} + explicit IfcRelCoversSpaces (const std::weak_ptr& data) : IfcRelConnects(data) {} + /// Relationship to the space object that is covered. /// /// IFC2x4 CHANGE: The attribute name has been changed from RelatedSpace to RelatingSpace with upward compatibility for file based exchange. - ::Ifc4x3_add2::IfcSpace* RelatingSpace() const; - void setRelatingSpace(::Ifc4x3_add2::IfcSpace* v); + ::Ifc4x3_add2::IfcSpace RelatingSpace() const; + void setRelatingSpace(const ::Ifc4x3_add2::IfcSpace& v); /// Relationship to the set of coverings covering this space. - aggregate_of< ::Ifc4x3_add2::IfcCovering >::ptr RelatedCoverings() const; - void setRelatedCoverings(aggregate_of< ::Ifc4x3_add2::IfcCovering >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcCovering > RelatedCoverings() const; + void setRelatedCoverings(const std::vector< ::Ifc4x3_add2::IfcCovering >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelCoversSpaces (IfcEntityInstanceData&& e); - IfcRelCoversSpaces (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpace* v5_RelatingSpace, aggregate_of< ::Ifc4x3_add2::IfcCovering >::ptr v6_RelatedCoverings); - typedef aggregate_of< IfcRelCoversSpaces > list; + // IfcRelCoversSpaces (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpace v5_RelatingSpace, std::vector< ::Ifc4x3_add2::IfcCovering > v6_RelatedCoverings); }; /// The objectified relationship IfcRelDeclares handles the declaration of objects (subtypes of IfcObject) or properties (subtypes of IfcPropertyDefinition) to a project or project library (represented by IfcProject, or IfcProjectLibrary). /// @@ -23855,19 +28164,20 @@ public: /// The RelatingContext is the project, or project library that comprises all elements. The unit assignments and the presentation contexts defined at IfcProject or IfcProjectLibrary apply to all these elements. /// /// HISTORY New entity in Release IFC2x4. -class IFC_PARSE_API IfcRelDeclares : public IfcRelationship { +class IFC_PARSE_API IfcRelDeclares : public IfcRelationship { public: + IfcRelDeclares() {} + explicit IfcRelDeclares (const std::weak_ptr& data) : IfcRelationship(data) {} + /// Reference to the IfcProject to which additional information is assigned. - ::Ifc4x3_add2::IfcContext* RelatingContext() const; - void setRelatingContext(::Ifc4x3_add2::IfcContext* v); + ::Ifc4x3_add2::IfcContext RelatingContext() const; + void setRelatingContext(const ::Ifc4x3_add2::IfcContext& v); /// Set of object or property definitions that are assigned to a context and to which the unit and representation context definitions of that context apply. - aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr RelatedDefinitions() const; - void setRelatedDefinitions(aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > RelatedDefinitions() const; + void setRelatedDefinitions(const std::vector< ::Ifc4x3_add2::IfcDefinitionSelect >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelDeclares (IfcEntityInstanceData&& e); - IfcRelDeclares (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcContext* v5_RelatingContext, aggregate_of< ::Ifc4x3_add2::IfcDefinitionSelect >::ptr v6_RelatedDefinitions); - typedef aggregate_of< IfcRelDeclares > list; + // IfcRelDeclares (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcContext v5_RelatingContext, std::vector< ::Ifc4x3_add2::IfcDefinitionSelect > v6_RelatedDefinitions); }; /// The decomposition relationship, /// IfcRelDecomposes, defines the general concept of elements @@ -23899,13 +28209,14 @@ public: /// HISTORY New entity in IFC Release 1.5, it is a generalisation of the IFC2.0 entity IfcRelNests. /// /// IFC2x4 CHANGE The differentiation between the aggregation and nesting is determined to be a non-ordered or an ordered collection of parts. The attributes RelatingObject and RelatedObjects have been demoted to the subtypes. -class IFC_PARSE_API IfcRelDecomposes : public IfcRelationship { +class IFC_PARSE_API IfcRelDecomposes : public IfcRelationship { public: - virtual const IfcParse::entity& declaration() const; + IfcRelDecomposes() {} + explicit IfcRelDecomposes (const std::weak_ptr& data) : IfcRelationship(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelDecomposes (IfcEntityInstanceData&& e); - IfcRelDecomposes (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description); - typedef aggregate_of< IfcRelDecomposes > list; + // IfcRelDecomposes (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description); }; /// A generic and abstract relationship which subtypes are used to: /// @@ -23934,13 +28245,14 @@ public: /// /// IFC2x4 CHANGE The attribute RelatedObjects had been demoted to the subtypes IfcRelDefinesByProperties and /// IfcRelDefinesByType. -class IFC_PARSE_API IfcRelDefines : public IfcRelationship { +class IFC_PARSE_API IfcRelDefines : public IfcRelationship { public: - virtual const IfcParse::entity& declaration() const; + IfcRelDefines() {} + explicit IfcRelDefines (const std::weak_ptr& data) : IfcRelationship(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelDefines (IfcEntityInstanceData&& e); - IfcRelDefines (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description); - typedef aggregate_of< IfcRelDefines > list; + // IfcRelDefines (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description); }; /// The objectified relationship IfcRelDefinesByObject defines the relationship between an object taking part in an object type decomposition and an object occurrences taking part in an occurrence decomposition of that type. /// The IfcRelDefinesByObject is a 1-to-N relationship, as it allows for the assignment of one declaring object information to a single or to many reflected objects. Those objects then share the same object property sets and, for subtypes of IfcProduct, the eventually assigned representation maps. @@ -23957,19 +28269,20 @@ public: /// The IfcRelDefinesByObject can be used together with the shape representations of the product type as shown in Figure 7. The IfcShapeRepresentation of the "declaring part" is referenced by the "reflected part". The IfcObjectPlacement of the model occurrence (the whole) determines the position within the project context. /// /// Figure 7 — Part definition relationships with shape representation -class IFC_PARSE_API IfcRelDefinesByObject : public IfcRelDefines { +class IFC_PARSE_API IfcRelDefinesByObject : public IfcRelDefines { public: + IfcRelDefinesByObject() {} + explicit IfcRelDefinesByObject (const std::weak_ptr& data) : IfcRelDefines(data) {} + /// Objects being part of an object occurrence decomposition, acting as the "reflecting parts" in the relationship. - aggregate_of< ::Ifc4x3_add2::IfcObject >::ptr RelatedObjects() const; - void setRelatedObjects(aggregate_of< ::Ifc4x3_add2::IfcObject >::ptr v); + std::vector< ::Ifc4x3_add2::IfcObject > RelatedObjects() const; + void setRelatedObjects(const std::vector< ::Ifc4x3_add2::IfcObject >& v); /// Object being part of an object type decomposition, acting as the "declaring part" in the relationship. - ::Ifc4x3_add2::IfcObject* RelatingObject() const; - void setRelatingObject(::Ifc4x3_add2::IfcObject* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcObject RelatingObject() const; + void setRelatingObject(const ::Ifc4x3_add2::IfcObject& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelDefinesByObject (IfcEntityInstanceData&& e); - IfcRelDefinesByObject (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObject >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcObject* v6_RelatingObject); - typedef aggregate_of< IfcRelDefinesByObject > list; + // IfcRelDefinesByObject (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObject > v5_RelatedObjects, ::Ifc4x3_add2::IfcObject v6_RelatingObject); }; /// The objectified relationship /// IfcRelDefinesByProperties defines the relationships @@ -23986,19 +28299,20 @@ public: /// HISTORY New Entity in IFC Release 2.0. Has been renamed from IfcRelAssignsProperties in IFC Release 2x. /// /// IFC2x4 CHANGE The attribute RelatedObjects had been demoted from the supertype IfcRelDefines to IfcRelDefinesByProperties. -class IFC_PARSE_API IfcRelDefinesByProperties : public IfcRelDefines { +class IFC_PARSE_API IfcRelDefinesByProperties : public IfcRelDefines { public: + IfcRelDefinesByProperties() {} + explicit IfcRelDefinesByProperties (const std::weak_ptr& data) : IfcRelDefines(data) {} + /// Reference to the objects (or single object) to which the property definition applies. - aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr RelatedObjects() const; - void setRelatedObjects(aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v); + std::vector< ::Ifc4x3_add2::IfcObjectDefinition > RelatedObjects() const; + void setRelatedObjects(const std::vector< ::Ifc4x3_add2::IfcObjectDefinition >& v); /// Reference to the property set definition for that object or set of objects. - ::Ifc4x3_add2::IfcPropertySetDefinitionSelect* RelatingPropertyDefinition() const; - void setRelatingPropertyDefinition(::Ifc4x3_add2::IfcPropertySetDefinitionSelect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcPropertySetDefinitionSelect RelatingPropertyDefinition() const; + void setRelatingPropertyDefinition(const ::Ifc4x3_add2::IfcPropertySetDefinitionSelect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelDefinesByProperties (IfcEntityInstanceData&& e); - IfcRelDefinesByProperties (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcPropertySetDefinitionSelect* v6_RelatingPropertyDefinition); - typedef aggregate_of< IfcRelDefinesByProperties > list; + // IfcRelDefinesByProperties (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v5_RelatedObjects, ::Ifc4x3_add2::IfcPropertySetDefinitionSelect v6_RelatingPropertyDefinition); }; /// The objectified relationship /// IfcRelDefinesByTemplate defines the relationships between @@ -24012,19 +28326,20 @@ public: /// the same property set template definition. /// /// HISTORY New Entity in IFC2x4. -class IFC_PARSE_API IfcRelDefinesByTemplate : public IfcRelDefines { +class IFC_PARSE_API IfcRelDefinesByTemplate : public IfcRelDefines { public: + IfcRelDefinesByTemplate() {} + explicit IfcRelDefinesByTemplate (const std::weak_ptr& data) : IfcRelDefines(data) {} + /// One or many property sets defined by a single property set template. - aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr RelatedPropertySets() const; - void setRelatedPropertySets(aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr v); + std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > RelatedPropertySets() const; + void setRelatedPropertySets(const std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition >& v); /// Property set template that provides the common definition of related property sets. - ::Ifc4x3_add2::IfcPropertySetTemplate* RelatingTemplate() const; - void setRelatingTemplate(::Ifc4x3_add2::IfcPropertySetTemplate* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcPropertySetTemplate RelatingTemplate() const; + void setRelatingTemplate(const ::Ifc4x3_add2::IfcPropertySetTemplate& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelDefinesByTemplate (IfcEntityInstanceData&& e); - IfcRelDefinesByTemplate (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr v5_RelatedPropertySets, ::Ifc4x3_add2::IfcPropertySetTemplate* v6_RelatingTemplate); - typedef aggregate_of< IfcRelDefinesByTemplate > list; + // IfcRelDefinesByTemplate (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > v5_RelatedPropertySets, ::Ifc4x3_add2::IfcPropertySetTemplate v6_RelatingTemplate); }; /// The objectified relationship /// IfcRelDefinesByType defines the relationship between an @@ -24095,18 +28410,19 @@ public: /// -ExtendToStructure = FALSE /// -ExtendToStructure = TRUE /// FALSE -class IFC_PARSE_API IfcRelDefinesByType : public IfcRelDefines { +class IFC_PARSE_API IfcRelDefinesByType : public IfcRelDefines { public: - aggregate_of< ::Ifc4x3_add2::IfcObject >::ptr RelatedObjects() const; - void setRelatedObjects(aggregate_of< ::Ifc4x3_add2::IfcObject >::ptr v); + IfcRelDefinesByType() {} + explicit IfcRelDefinesByType (const std::weak_ptr& data) : IfcRelDefines(data) {} + + std::vector< ::Ifc4x3_add2::IfcObject > RelatedObjects() const; + void setRelatedObjects(const std::vector< ::Ifc4x3_add2::IfcObject >& v); /// Reference to the type (or style) information for that object or set of objects. - ::Ifc4x3_add2::IfcTypeObject* RelatingType() const; - void setRelatingType(::Ifc4x3_add2::IfcTypeObject* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcTypeObject RelatingType() const; + void setRelatingType(const ::Ifc4x3_add2::IfcTypeObject& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelDefinesByType (IfcEntityInstanceData&& e); - IfcRelDefinesByType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcObject >::ptr v5_RelatedObjects, ::Ifc4x3_add2::IfcTypeObject* v6_RelatingType); - typedef aggregate_of< IfcRelDefinesByType > list; + // IfcRelDefinesByType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcObject > v5_RelatedObjects, ::Ifc4x3_add2::IfcTypeObject v6_RelatingType); }; /// IfcRelFillsElement is an objectified relationship between an opening element and an element that fills (or partially fills) the opening element. It is an one-to-one relationship. /// @@ -24117,21 +28433,22 @@ public: /// As shown in Figure 40, the insertion of a door into a wall is represented by two separate relationships. First the door opening is created within the wall by IfcWall(StandardCase) o-- IfcRelVoidsElement --o IfcOpeningElement, then the door is inserted within the opening by IfcOpeningElement o-- IfcRelFillsElement --o IfcDoor. /// /// Figure 40 — Relationships for element filling -class IFC_PARSE_API IfcRelFillsElement : public IfcRelConnects { +class IFC_PARSE_API IfcRelFillsElement : public IfcRelConnects { public: + IfcRelFillsElement() {} + explicit IfcRelFillsElement (const std::weak_ptr& data) : IfcRelConnects(data) {} + /// Opening Element being filled by virtue of this relationship. - ::Ifc4x3_add2::IfcOpeningElement* RelatingOpeningElement() const; - void setRelatingOpeningElement(::Ifc4x3_add2::IfcOpeningElement* v); + ::Ifc4x3_add2::IfcOpeningElement RelatingOpeningElement() const; + void setRelatingOpeningElement(const ::Ifc4x3_add2::IfcOpeningElement& v); /// Reference to building element that occupies fully or partially the associated opening. /// /// IFC2x PLATFORM CHANGE: The data type has been changed from IfcBuildingElement to IfcElement with upward compatibility for file based exchange. - ::Ifc4x3_add2::IfcElement* RelatedBuildingElement() const; - void setRelatedBuildingElement(::Ifc4x3_add2::IfcElement* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcElement RelatedBuildingElement() const; + void setRelatedBuildingElement(const ::Ifc4x3_add2::IfcElement& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelFillsElement (IfcEntityInstanceData&& e); - IfcRelFillsElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcOpeningElement* v5_RelatingOpeningElement, ::Ifc4x3_add2::IfcElement* v6_RelatedBuildingElement); - typedef aggregate_of< IfcRelFillsElement > list; + // IfcRelFillsElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcOpeningElement v5_RelatingOpeningElement, ::Ifc4x3_add2::IfcElement v6_RelatedBuildingElement); }; /// Objectified relationship between a distribution flow element occurrence instance and one-to-many control element occurrence instances indicating that the control element(s) sense or control some aspect of the flow element. It is applied to IfcDistributionFlowElement and IfcDistributionControlElement. /// @@ -24140,19 +28457,20 @@ public: /// This relationship implies a sensing or controlling relationship; if elements are merely connected without any control relationship, then IfcRelConnectsElements should be used. /// /// HISTORY: New entity in IFC R2x. -class IFC_PARSE_API IfcRelFlowControlElements : public IfcRelConnects { +class IFC_PARSE_API IfcRelFlowControlElements : public IfcRelConnects { public: + IfcRelFlowControlElements() {} + explicit IfcRelFlowControlElements (const std::weak_ptr& data) : IfcRelConnects(data) {} + /// References control elements which may be used to impart control on the Distribution Element. - aggregate_of< ::Ifc4x3_add2::IfcDistributionControlElement >::ptr RelatedControlElements() const; - void setRelatedControlElements(aggregate_of< ::Ifc4x3_add2::IfcDistributionControlElement >::ptr v); + std::vector< ::Ifc4x3_add2::IfcDistributionControlElement > RelatedControlElements() const; + void setRelatedControlElements(const std::vector< ::Ifc4x3_add2::IfcDistributionControlElement >& v); /// Relationship to a distribution flow element - ::Ifc4x3_add2::IfcDistributionFlowElement* RelatingFlowElement() const; - void setRelatingFlowElement(::Ifc4x3_add2::IfcDistributionFlowElement* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcDistributionFlowElement RelatingFlowElement() const; + void setRelatingFlowElement(const ::Ifc4x3_add2::IfcDistributionFlowElement& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelFlowControlElements (IfcEntityInstanceData&& e); - IfcRelFlowControlElements (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcDistributionControlElement >::ptr v5_RelatedControlElements, ::Ifc4x3_add2::IfcDistributionFlowElement* v6_RelatingFlowElement); - typedef aggregate_of< IfcRelFlowControlElements > list; + // IfcRelFlowControlElements (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcDistributionControlElement > v5_RelatedControlElements, ::Ifc4x3_add2::IfcDistributionFlowElement v6_RelatingFlowElement); }; /// Definition from IAI: The /// IfcRelInterferesElements objectified relationship @@ -24201,30 +28519,31 @@ public: /// /// HISTORY New entity in /// IFC2x4. -class IFC_PARSE_API IfcRelInterferesElements : public IfcRelConnects { +class IFC_PARSE_API IfcRelInterferesElements : public IfcRelConnects { public: + IfcRelInterferesElements() {} + explicit IfcRelInterferesElements (const std::weak_ptr& data) : IfcRelConnects(data) {} + /// Reference to a subtype of IfcElement that is the RelatingElement in the interference relationship. Depending on the value of ImpliedOrder the RelatingElement may carry the notion to be the element from which the interference geometry should be subtracted. - ::Ifc4x3_add2::IfcInterferenceSelect* RelatingElement() const; - void setRelatingElement(::Ifc4x3_add2::IfcInterferenceSelect* v); + ::Ifc4x3_add2::IfcInterferenceSelect RelatingElement() const; + void setRelatingElement(const ::Ifc4x3_add2::IfcInterferenceSelect& v); /// Reference to a subtype of IfcElement that is the RelatedElement in the interference relationship. Depending on the value of ImpliedOrder the RelatedElement may carry the notion to be the element from which the interference geometry should not be subtracted. - ::Ifc4x3_add2::IfcInterferenceSelect* RelatedElement() const; - void setRelatedElement(::Ifc4x3_add2::IfcInterferenceSelect* v); + ::Ifc4x3_add2::IfcInterferenceSelect RelatedElement() const; + void setRelatedElement(const ::Ifc4x3_add2::IfcInterferenceSelect& v); /// The geometric shape representation of the interference geometry that is provided in the object coordinate system of the RelatingElement (mandatory) and in the object coordinate system of the RelatedElement (optionally). - ::Ifc4x3_add2::IfcConnectionGeometry* InterferenceGeometry() const; - void setInterferenceGeometry(::Ifc4x3_add2::IfcConnectionGeometry* v); + ::Ifc4x3_add2::IfcConnectionGeometry InterferenceGeometry() const; + void setInterferenceGeometry(const ::Ifc4x3_add2::IfcConnectionGeometry& v); /// Optional identifier that describes the nature of the interference. Examples could include 'Clash', 'ProvisionForVoid', etc. - boost::optional< std::string > InterferenceType() const; - void setInterferenceType(boost::optional< std::string > v); + std::optional< std::string > InterferenceType() const; + void setInterferenceType(const std::optional< std::string >& v); /// Logical value indicating whether the interference geometry should be subtracted from the RelatingElement (if TRUE), or whether it should be either subtracted from the RelatingElement or the RelatedElement (if FALSE), or whether no indication can be provided (if UNKNOWN). boost::logic::tribool ImpliedOrder() const; - void setImpliedOrder(boost::logic::tribool v); - ::Ifc4x3_add2::IfcSpatialZone* InterferenceSpace() const; - void setInterferenceSpace(::Ifc4x3_add2::IfcSpatialZone* v); - virtual const IfcParse::entity& declaration() const; + void setImpliedOrder(const boost::logic::tribool& v); + ::Ifc4x3_add2::IfcSpatialZone InterferenceSpace() const; + void setInterferenceSpace(const ::Ifc4x3_add2::IfcSpatialZone& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelInterferesElements (IfcEntityInstanceData&& e); - IfcRelInterferesElements (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcInterferenceSelect* v5_RelatingElement, ::Ifc4x3_add2::IfcInterferenceSelect* v6_RelatedElement, ::Ifc4x3_add2::IfcConnectionGeometry* v7_InterferenceGeometry, boost::optional< std::string > v8_InterferenceType, boost::logic::tribool v9_ImpliedOrder, ::Ifc4x3_add2::IfcSpatialZone* v10_InterferenceSpace); - typedef aggregate_of< IfcRelInterferesElements > list; + // IfcRelInterferesElements (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcInterferenceSelect v5_RelatingElement, ::Ifc4x3_add2::IfcInterferenceSelect v6_RelatedElement, ::Ifc4x3_add2::IfcConnectionGeometry v7_InterferenceGeometry, std::optional< std::string > v8_InterferenceType, boost::logic::tribool v9_ImpliedOrder, ::Ifc4x3_add2::IfcSpatialZone v10_InterferenceSpace); }; /// The nesting relationship /// IfcRelNests is a special type of the general @@ -24251,36 +28570,38 @@ public: /// HISTORY New entity in IFC Release 2.0 /// /// IFC2x4 CHANGE The attributes RelatingObject and RelatedObjects are demoted from the supertype IfcRelDecomposes, and RelatedObjects is refined to be a list. The use of IfcRelNests is repurposed to be a nesting of an ordered collections of parts. -class IFC_PARSE_API IfcRelNests : public IfcRelDecomposes { +class IFC_PARSE_API IfcRelNests : public IfcRelDecomposes { public: + IfcRelNests() {} + explicit IfcRelNests (const std::weak_ptr& data) : IfcRelDecomposes(data) {} + /// The object definition, either an non-product object type or a non-product object occurrence, that represents the nest. It is the whole within the whole/part relationship. /// /// IFC2x4 CHANGE  The attribute has been demoted from the supertype IfcRelDecomposes and defines the ordered nesting relationship. - ::Ifc4x3_add2::IfcObjectDefinition* RelatingObject() const; - void setRelatingObject(::Ifc4x3_add2::IfcObjectDefinition* v); + ::Ifc4x3_add2::IfcObjectDefinition RelatingObject() const; + void setRelatingObject(const ::Ifc4x3_add2::IfcObjectDefinition& v); /// The object definitions, either non-product object occurrences or non-product object types, that are being nestes. They are defined as the parts in the ordered whole/part relationship - i.e. there is an implied order among the parts expressed by the position within the list of RelatedObjects. /// /// IFC2x4 CHANGE  The attribute has been demoted from the supertype IfcRelDecomposes and defines the ordered set of parts within the nest. - aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr RelatedObjects() const; - void setRelatedObjects(aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcObjectDefinition > RelatedObjects() const; + void setRelatedObjects(const std::vector< ::Ifc4x3_add2::IfcObjectDefinition >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelNests (IfcEntityInstanceData&& e); - IfcRelNests (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcObjectDefinition* v5_RelatingObject, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v6_RelatedObjects); - typedef aggregate_of< IfcRelNests > list; + // IfcRelNests (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcObjectDefinition v5_RelatingObject, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v6_RelatedObjects); }; -class IFC_PARSE_API IfcRelPositions : public IfcRelConnects { +class IFC_PARSE_API IfcRelPositions : public IfcRelConnects { public: - ::Ifc4x3_add2::IfcPositioningElement* RelatingPositioningElement() const; - void setRelatingPositioningElement(::Ifc4x3_add2::IfcPositioningElement* v); - aggregate_of< ::Ifc4x3_add2::IfcProduct >::ptr RelatedProducts() const; - void setRelatedProducts(aggregate_of< ::Ifc4x3_add2::IfcProduct >::ptr v); - virtual const IfcParse::entity& declaration() const; + IfcRelPositions() {} + explicit IfcRelPositions (const std::weak_ptr& data) : IfcRelConnects(data) {} + + ::Ifc4x3_add2::IfcPositioningElement RelatingPositioningElement() const; + void setRelatingPositioningElement(const ::Ifc4x3_add2::IfcPositioningElement& v); + std::vector< ::Ifc4x3_add2::IfcProduct > RelatedProducts() const; + void setRelatedProducts(const std::vector< ::Ifc4x3_add2::IfcProduct >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelPositions (IfcEntityInstanceData&& e); - IfcRelPositions (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPositioningElement* v5_RelatingPositioningElement, aggregate_of< ::Ifc4x3_add2::IfcProduct >::ptr v6_RelatedProducts); - typedef aggregate_of< IfcRelPositions > list; + // IfcRelPositions (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPositioningElement v5_RelatingPositioningElement, std::vector< ::Ifc4x3_add2::IfcProduct > v6_RelatedProducts); }; /// The IfcRelProjectsElement is an objectified relationship /// between an element and one projection element that creates a @@ -24314,19 +28635,20 @@ public: /// Release IFC2x Edition 2. /// IFC2x4 CHANGE  /// Supertype changed to IfcRelDecomposes. -class IFC_PARSE_API IfcRelProjectsElement : public IfcRelDecomposes { +class IFC_PARSE_API IfcRelProjectsElement : public IfcRelDecomposes { public: + IfcRelProjectsElement() {} + explicit IfcRelProjectsElement (const std::weak_ptr& data) : IfcRelDecomposes(data) {} + /// Element at which a projection is created by the associated IfcProjectionElement. - ::Ifc4x3_add2::IfcElement* RelatingElement() const; - void setRelatingElement(::Ifc4x3_add2::IfcElement* v); + ::Ifc4x3_add2::IfcElement RelatingElement() const; + void setRelatingElement(const ::Ifc4x3_add2::IfcElement& v); /// Reference to the IfcFeatureElementAddition that defines an addition to the volume of the element, by using a Boolean addition operation. An example is a projection at the associated element. - ::Ifc4x3_add2::IfcFeatureElementAddition* RelatedFeatureElement() const; - void setRelatedFeatureElement(::Ifc4x3_add2::IfcFeatureElementAddition* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcFeatureElementAddition RelatedFeatureElement() const; + void setRelatedFeatureElement(const ::Ifc4x3_add2::IfcFeatureElementAddition& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelProjectsElement (IfcEntityInstanceData&& e); - IfcRelProjectsElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement* v5_RelatingElement, ::Ifc4x3_add2::IfcFeatureElementAddition* v6_RelatedFeatureElement); - typedef aggregate_of< IfcRelProjectsElement > list; + // IfcRelProjectsElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement v5_RelatingElement, ::Ifc4x3_add2::IfcFeatureElementAddition v6_RelatedFeatureElement); }; /// The objectified relationship, /// IfcRelReferencedInSpatialStructure is used to @@ -24377,22 +28699,23 @@ public: /// Figure 41 shows the use of IfcRelContainedInSpatialStructure and IfcRelReferencedInSpatialStructure to assign an IfcCurtainWallto two different levels within the spatial structure. It is primarily contained within the ground floor, and additionally referenced within the first and second floor. /// /// Figure 41 — Relationship for spatial structure referencing -class IFC_PARSE_API IfcRelReferencedInSpatialStructure : public IfcRelConnects { +class IFC_PARSE_API IfcRelReferencedInSpatialStructure : public IfcRelConnects { public: + IfcRelReferencedInSpatialStructure() {} + explicit IfcRelReferencedInSpatialStructure (const std::weak_ptr& data) : IfcRelConnects(data) {} + /// Set of products, which are referenced within this level of the spatial structure hierarchy. /// NOTE  Referenced elements are contained elsewhere within the spatial structure, they are referenced additionally by this spatial structure element, e.g., because they span several stories. - aggregate_of< ::Ifc4x3_add2::IfcSpatialReferenceSelect >::ptr RelatedElements() const; - void setRelatedElements(aggregate_of< ::Ifc4x3_add2::IfcSpatialReferenceSelect >::ptr v); + std::vector< ::Ifc4x3_add2::IfcSpatialReferenceSelect > RelatedElements() const; + void setRelatedElements(const std::vector< ::Ifc4x3_add2::IfcSpatialReferenceSelect >& v); /// Spatial structure element, within which the element is referenced. Any element can be contained within zero, one or many elements of the project spatial and zoning structure. /// /// IFC2x Edition 4 CHANGE  The attribute relatingStructure as been promoted to the new supertype IfcSpatialElement with upward compatibility for file based exchange. - ::Ifc4x3_add2::IfcSpatialElement* RelatingStructure() const; - void setRelatingStructure(::Ifc4x3_add2::IfcSpatialElement* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcSpatialElement RelatingStructure() const; + void setRelatingStructure(const ::Ifc4x3_add2::IfcSpatialElement& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelReferencedInSpatialStructure (IfcEntityInstanceData&& e); - IfcRelReferencedInSpatialStructure (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_add2::IfcSpatialReferenceSelect >::ptr v5_RelatedElements, ::Ifc4x3_add2::IfcSpatialElement* v6_RelatingStructure); - typedef aggregate_of< IfcRelReferencedInSpatialStructure > list; + // IfcRelReferencedInSpatialStructure (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::vector< ::Ifc4x3_add2::IfcSpatialReferenceSelect > v5_RelatedElements, ::Ifc4x3_add2::IfcSpatialElement v6_RelatingStructure); }; /// IfcRelSequence is a /// sequential relationship between processes where one process @@ -24448,22 +28771,25 @@ public: /// depending on the setting of the sequence type since there /// is no checking that the time lag value is in keeping with /// the sequence type set. -class IFC_PARSE_API IfcRelSequence : public IfcRelConnects { +class IFC_PARSE_API IfcRelSequence : public IfcRelConnects { public: + IfcRelSequence() {} + explicit IfcRelSequence (const std::weak_ptr& data) : IfcRelConnects(data) {} + /// Reference to the process, that is the predecessor. - ::Ifc4x3_add2::IfcProcess* RelatingProcess() const; - void setRelatingProcess(::Ifc4x3_add2::IfcProcess* v); + ::Ifc4x3_add2::IfcProcess RelatingProcess() const; + void setRelatingProcess(const ::Ifc4x3_add2::IfcProcess& v); /// Reference to the process, that is the successor. - ::Ifc4x3_add2::IfcProcess* RelatedProcess() const; - void setRelatedProcess(::Ifc4x3_add2::IfcProcess* v); + ::Ifc4x3_add2::IfcProcess RelatedProcess() const; + void setRelatedProcess(const ::Ifc4x3_add2::IfcProcess& v); /// Time duration of the sequence, it is the time lag between the /// predecessor and the successor as specified by the /// SequenceType. - ::Ifc4x3_add2::IfcLagTime* TimeLag() const; - void setTimeLag(::Ifc4x3_add2::IfcLagTime* v); + ::Ifc4x3_add2::IfcLagTime TimeLag() const; + void setTimeLag(const ::Ifc4x3_add2::IfcLagTime& v); /// The way in which the time lag applies to the sequence. - boost::optional< ::Ifc4x3_add2::IfcSequenceEnum::Value > SequenceType() const; - void setSequenceType(boost::optional< ::Ifc4x3_add2::IfcSequenceEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcSequenceEnum::Value > SequenceType() const; + void setSequenceType(const std::optional< ::Ifc4x3_add2::IfcSequenceEnum::Value >& v); /// Allows for specification of user defined type of the sequence /// beyond the enumeration values (START_START, START_FINISH, /// FINISH_START, FINISH_FINISH) provided by SequenceType @@ -24473,13 +28799,11 @@ public: /// enumeration value USERDEFINED. /// /// Added in IFC 2x4 - boost::optional< std::string > UserDefinedSequenceType() const; - void setUserDefinedSequenceType(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > UserDefinedSequenceType() const; + void setUserDefinedSequenceType(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelSequence (IfcEntityInstanceData&& e); - IfcRelSequence (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcProcess* v5_RelatingProcess, ::Ifc4x3_add2::IfcProcess* v6_RelatedProcess, ::Ifc4x3_add2::IfcLagTime* v7_TimeLag, boost::optional< ::Ifc4x3_add2::IfcSequenceEnum::Value > v8_SequenceType, boost::optional< std::string > v9_UserDefinedSequenceType); - typedef aggregate_of< IfcRelSequence > list; + // IfcRelSequence (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcProcess v5_RelatingProcess, ::Ifc4x3_add2::IfcProcess v6_RelatedProcess, ::Ifc4x3_add2::IfcLagTime v7_TimeLag, std::optional< ::Ifc4x3_add2::IfcSequenceEnum::Value > v8_SequenceType, std::optional< std::string > v9_UserDefinedSequenceType); }; /// Definition from IAI: An objectified relationship /// that defines the relationship between a system and the @@ -24502,23 +28826,24 @@ public: /// for file based exchange. The name /// IfcRelServicesBuildings is a knownanomaly, as the /// relationship is not restricted to buildings anymore. -class IFC_PARSE_API IfcRelServicesBuildings : public IfcRelConnects { +class IFC_PARSE_API IfcRelServicesBuildings : public IfcRelConnects { public: + IfcRelServicesBuildings() {} + explicit IfcRelServicesBuildings (const std::weak_ptr& data) : IfcRelConnects(data) {} + /// System that services the Buildings. - ::Ifc4x3_add2::IfcSystem* RelatingSystem() const; - void setRelatingSystem(::Ifc4x3_add2::IfcSystem* v); + ::Ifc4x3_add2::IfcSystem RelatingSystem() const; + void setRelatingSystem(const ::Ifc4x3_add2::IfcSystem& v); /// Spatial structure elements (including site, building, storeys) that are serviced by the system. /// /// IFC2x PLATFORM CHANGE  The data type has been changed from IfcBuilding to IfcSpatialStructureElement with upward compatibility for file based exchange. /// /// IFC2x Edition 4 CHANGE  The data type has been changed from IfcSpatialStructureElement to IfcSpatialElement with upward compatibility for file based exchange. - aggregate_of< ::Ifc4x3_add2::IfcSpatialElement >::ptr RelatedBuildings() const; - void setRelatedBuildings(aggregate_of< ::Ifc4x3_add2::IfcSpatialElement >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcSpatialElement > RelatedBuildings() const; + void setRelatedBuildings(const std::vector< ::Ifc4x3_add2::IfcSpatialElement >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelServicesBuildings (IfcEntityInstanceData&& e); - IfcRelServicesBuildings (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSystem* v5_RelatingSystem, aggregate_of< ::Ifc4x3_add2::IfcSpatialElement >::ptr v6_RelatedBuildings); - typedef aggregate_of< IfcRelServicesBuildings > list; + // IfcRelServicesBuildings (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSystem v5_RelatingSystem, std::vector< ::Ifc4x3_add2::IfcSpatialElement > v6_RelatedBuildings); }; /// The space boundary defines the /// physical or virtual delimiter of a space by the relationship @@ -24682,34 +29007,35 @@ public: /// /// Curve: IfcPolyline, IfcTrimmedCurve or /// IfcCompositeCurve -class IFC_PARSE_API IfcRelSpaceBoundary : public IfcRelConnects { +class IFC_PARSE_API IfcRelSpaceBoundary : public IfcRelConnects { public: + IfcRelSpaceBoundary() {} + explicit IfcRelSpaceBoundary (const std::weak_ptr& data) : IfcRelConnects(data) {} + /// Reference to one spaces that is delimited by this boundary. - ::Ifc4x3_add2::IfcSpaceBoundarySelect* RelatingSpace() const; - void setRelatingSpace(::Ifc4x3_add2::IfcSpaceBoundarySelect* v); + ::Ifc4x3_add2::IfcSpaceBoundarySelect RelatingSpace() const; + void setRelatingSpace(const ::Ifc4x3_add2::IfcSpaceBoundarySelect& v); /// Reference to Building Element, that defines the Space Boundaries. /// /// IFC2x PLATFORM CHANGE  The data type has been changed from IfcBuildingElement to IfcElement with upward compatibility for file based exchange. /// /// IFC2x4 CHANGE  The attribute has been changed to be mandatory. - ::Ifc4x3_add2::IfcElement* RelatedBuildingElement() const; - void setRelatedBuildingElement(::Ifc4x3_add2::IfcElement* v); + ::Ifc4x3_add2::IfcElement RelatedBuildingElement() const; + void setRelatedBuildingElement(const ::Ifc4x3_add2::IfcElement& v); /// Physical representation of the space boundary. Provided as a curve or surface given within the LCS of the space. /// /// IFC2x PLATFORM CHANGE  The data type has been changed from IfcConnectionSurfaceGeometry to IfcConnectionGeometry with upward compatibility for file based exchange. - ::Ifc4x3_add2::IfcConnectionGeometry* ConnectionGeometry() const; - void setConnectionGeometry(::Ifc4x3_add2::IfcConnectionGeometry* v); + ::Ifc4x3_add2::IfcConnectionGeometry ConnectionGeometry() const; + void setConnectionGeometry(const ::Ifc4x3_add2::IfcConnectionGeometry& v); /// Defines, whether the Space Boundary is physical (Physical) or virtual (Virtual). ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value PhysicalOrVirtualBoundary() const; - void setPhysicalOrVirtualBoundary(::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value v); + void setPhysicalOrVirtualBoundary(const ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value& v); /// Defines, whether the Space Boundary is internal (Internal), or external, i.e. adjacent to open space (that can be an partially enclosed space, such as terrace (External). ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value InternalOrExternalBoundary() const; - void setInternalOrExternalBoundary(::Ifc4x3_add2::IfcInternalOrExternalEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setInternalOrExternalBoundary(const ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelSpaceBoundary (IfcEntityInstanceData&& e); - IfcRelSpaceBoundary (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpaceBoundarySelect* v5_RelatingSpace, ::Ifc4x3_add2::IfcElement* v6_RelatedBuildingElement, ::Ifc4x3_add2::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary); - typedef aggregate_of< IfcRelSpaceBoundary > list; + // IfcRelSpaceBoundary (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpaceBoundarySelect v5_RelatingSpace, ::Ifc4x3_add2::IfcElement v6_RelatedBuildingElement, ::Ifc4x3_add2::IfcConnectionGeometry v7_ConnectionGeometry, ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary); }; /// The 1st level space boundary /// defines the physical or virtual delimiter of a space by the @@ -24758,17 +29084,18 @@ public: /// See the definition at the supertype IfcRelSpaceBoundary for /// guidance on using the connection geometry for first level space /// boundaries. -class IFC_PARSE_API IfcRelSpaceBoundary1stLevel : public IfcRelSpaceBoundary { +class IFC_PARSE_API IfcRelSpaceBoundary1stLevel : public IfcRelSpaceBoundary { public: + IfcRelSpaceBoundary1stLevel() {} + explicit IfcRelSpaceBoundary1stLevel (const std::weak_ptr& data) : IfcRelSpaceBoundary(data) {} + /// Reference to the host, or parent, space boundary within which this inner boundary is defined. - ::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel* ParentBoundary() const; - void setParentBoundary(::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel* v); - aggregate_of< IfcRelSpaceBoundary1stLevel >::ptr InnerBoundaries() const; // INVERSE IfcRelSpaceBoundary1stLevel::ParentBoundary - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel ParentBoundary() const; + void setParentBoundary(const ::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel& v); + std::vector< IfcRelSpaceBoundary1stLevel > InnerBoundaries() const; // INVERSE IfcRelSpaceBoundary1stLevel::ParentBoundary + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelSpaceBoundary1stLevel (IfcEntityInstanceData&& e); - IfcRelSpaceBoundary1stLevel (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpaceBoundarySelect* v5_RelatingSpace, ::Ifc4x3_add2::IfcElement* v6_RelatedBuildingElement, ::Ifc4x3_add2::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary, ::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel* v10_ParentBoundary); - typedef aggregate_of< IfcRelSpaceBoundary1stLevel > list; + // IfcRelSpaceBoundary1stLevel (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpaceBoundarySelect v5_RelatingSpace, ::Ifc4x3_add2::IfcElement v6_RelatedBuildingElement, ::Ifc4x3_add2::IfcConnectionGeometry v7_ConnectionGeometry, ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary, ::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel v10_ParentBoundary); }; /// The 2nd level space boundary defines the physical or virtual delimiter of a space by the relationship IfcRelSpaceBoundary2ndLevel to the surrounding elements. 2nd level space boundaries are characterized by: /// @@ -24802,17 +29129,18 @@ public: /// See the definition at the supertype IfcRelSpaceBoundary /// for guidance on using the connection geometry for second level /// space boundaries. -class IFC_PARSE_API IfcRelSpaceBoundary2ndLevel : public IfcRelSpaceBoundary1stLevel { +class IFC_PARSE_API IfcRelSpaceBoundary2ndLevel : public IfcRelSpaceBoundary1stLevel { public: + IfcRelSpaceBoundary2ndLevel() {} + explicit IfcRelSpaceBoundary2ndLevel (const std::weak_ptr& data) : IfcRelSpaceBoundary1stLevel(data) {} + /// Reference to the other space boundary of the pair of two space boundaries on either side of a space separating thermal boundary element. - ::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel* CorrespondingBoundary() const; - void setCorrespondingBoundary(::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel* v); - aggregate_of< IfcRelSpaceBoundary2ndLevel >::ptr Corresponds() const; // INVERSE IfcRelSpaceBoundary2ndLevel::CorrespondingBoundary - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel CorrespondingBoundary() const; + void setCorrespondingBoundary(const ::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel& v); + std::vector< IfcRelSpaceBoundary2ndLevel > Corresponds() const; // INVERSE IfcRelSpaceBoundary2ndLevel::CorrespondingBoundary + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelSpaceBoundary2ndLevel (IfcEntityInstanceData&& e); - IfcRelSpaceBoundary2ndLevel (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpaceBoundarySelect* v5_RelatingSpace, ::Ifc4x3_add2::IfcElement* v6_RelatedBuildingElement, ::Ifc4x3_add2::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary, ::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel* v10_ParentBoundary, ::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel* v11_CorrespondingBoundary); - typedef aggregate_of< IfcRelSpaceBoundary2ndLevel > list; + // IfcRelSpaceBoundary2ndLevel (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcSpaceBoundarySelect v5_RelatingSpace, ::Ifc4x3_add2::IfcElement v6_RelatedBuildingElement, ::Ifc4x3_add2::IfcConnectionGeometry v7_ConnectionGeometry, ::Ifc4x3_add2::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_add2::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary, ::Ifc4x3_add2::IfcRelSpaceBoundary1stLevel v10_ParentBoundary, ::Ifc4x3_add2::IfcRelSpaceBoundary2ndLevel v11_CorrespondingBoundary); }; /// IfcRelVoidsElement is an objectified relationship between a building element and one opening element that creates a void in the element. It is a one-to-one relationship. This relationship implies a Boolean operation of subtraction between the geometric bodies of the element and the opening. /// @@ -24821,17 +29149,18 @@ public: /// Figure 50 — Relationship for element voiding /// /// HISTORY New entity in IFC Release 1.0 -class IFC_PARSE_API IfcRelVoidsElement : public IfcRelDecomposes { +class IFC_PARSE_API IfcRelVoidsElement : public IfcRelDecomposes { public: - ::Ifc4x3_add2::IfcElement* RelatingBuildingElement() const; - void setRelatingBuildingElement(::Ifc4x3_add2::IfcElement* v); - ::Ifc4x3_add2::IfcFeatureElementSubtraction* RelatedOpeningElement() const; - void setRelatedOpeningElement(::Ifc4x3_add2::IfcFeatureElementSubtraction* v); - virtual const IfcParse::entity& declaration() const; + IfcRelVoidsElement() {} + explicit IfcRelVoidsElement (const std::weak_ptr& data) : IfcRelDecomposes(data) {} + + ::Ifc4x3_add2::IfcElement RelatingBuildingElement() const; + void setRelatingBuildingElement(const ::Ifc4x3_add2::IfcElement& v); + ::Ifc4x3_add2::IfcFeatureElementSubtraction RelatedOpeningElement() const; + void setRelatedOpeningElement(const ::Ifc4x3_add2::IfcFeatureElementSubtraction& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelVoidsElement (IfcEntityInstanceData&& e); - IfcRelVoidsElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement* v5_RelatingBuildingElement, ::Ifc4x3_add2::IfcFeatureElementSubtraction* v6_RelatedOpeningElement); - typedef aggregate_of< IfcRelVoidsElement > list; + // IfcRelVoidsElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement v5_RelatingBuildingElement, ::Ifc4x3_add2::IfcFeatureElementSubtraction v6_RelatedOpeningElement); }; /// Definition from ISO/CD 10303-42:1992: The /// reparametrised composite curve segment is a special type of @@ -24856,15 +29185,16 @@ public: /// NOTE Corresponding STEP entity: reparametrised_composite_curve_segment. Please refer to ISO/IS 10303-42:1994, p.59 for the final definition of the formal standard. /// /// HISTORY New class in IFC2x4 -class IFC_PARSE_API IfcReparametrisedCompositeCurveSegment : public IfcCompositeCurveSegment { +class IFC_PARSE_API IfcReparametrisedCompositeCurveSegment : public IfcCompositeCurveSegment { public: + IfcReparametrisedCompositeCurveSegment() {} + explicit IfcReparametrisedCompositeCurveSegment (const std::weak_ptr& data) : IfcCompositeCurveSegment(data) {} + double ParamLength() const; - void setParamLength(double v); - virtual const IfcParse::entity& declaration() const; + void setParamLength(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcReparametrisedCompositeCurveSegment (IfcEntityInstanceData&& e); - IfcReparametrisedCompositeCurveSegment (::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition, bool v2_SameSense, ::Ifc4x3_add2::IfcCurve* v3_ParentCurve, double v4_ParamLength); - typedef aggregate_of< IfcReparametrisedCompositeCurveSegment > list; + // IfcReparametrisedCompositeCurveSegment (::Ifc4x3_add2::IfcTransitionCode::Value v1_Transition, bool v2_SameSense, ::Ifc4x3_add2::IfcCurve v3_ParentCurve, double v4_ParamLength); }; /// IfcResource contains the information needed to represent the costs, schedule, and other impacts from the use of a thing in a process. It is not intended to use IfcResource to model the general properties of the things themselves, while an optional linkage from IfcResource to the things to be used can be specified (specifically, the relationship from subtypes of IfcResource to IfcProduct through the IfcRelAssignsToResource relationship). /// @@ -24879,25 +29209,26 @@ public: /// HISTORY New entity in IFC Release 1.0 /// /// IFC2x PLATFORM CHANGE: The attributes BaseUnit and ResourceConsumption have been removed from the abstract entity; they are reintroduced at a lower level in the hierarchy. -class IFC_PARSE_API IfcResource : public IfcObject, public IfcResourceSelect { +class IFC_PARSE_API IfcResource : public IfcObject { public: + IfcResource() {} + explicit IfcResource (const std::weak_ptr& data) : IfcObject(data) {} + /// An identifying designation given to a resource. /// It is the identifier at the occurrence level. /// /// IFC2x4 CHANGE Attribute promoted from subtype IfcConstructionResource. - boost::optional< std::string > Identification() const; - void setIdentification(boost::optional< std::string > v); + std::optional< std::string > Identification() const; + void setIdentification(const std::optional< std::string >& v); /// A detailed description of the resource (e.g. the skillset for a labor resource). /// /// IFC2x4 NOTE:  The attribute LongDescription is added replacing the ResourceGroup attribute at subtype IfcConstructionResource. - boost::optional< std::string > LongDescription() const; - void setLongDescription(boost::optional< std::string > v); - aggregate_of< IfcRelAssignsToResource >::ptr ResourceOf() const; // INVERSE IfcRelAssignsToResource::RelatingResource - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > LongDescription() const; + void setLongDescription(const std::optional< std::string >& v); + std::vector< IfcRelAssignsToResource > ResourceOf() const; // INVERSE IfcRelAssignsToResource::RelatingResource + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcResource (IfcEntityInstanceData&& e); - IfcResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription); - typedef aggregate_of< IfcResource > list; + // IfcResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription); }; /// An IfcRevolvedAreaSolid is a solid created by revolving /// a cross section provided by a profile definition about an axis. The @@ -24975,19 +29306,20 @@ public: /// Figure 263 illustrates default texture mapping with a repeated texture (RepeatS=True and RepeatT=True). The image on the left shows the texture where the S axis points to the right and the T axis points up. The image on the right shows the texture applied to the geometry where the X axis points back to the right, the Y axis points back to the left, and the Z axis points up. For an IfcRevolvedAreaSolid having a profile of IfcTShapeProfileDef and revolved at 22.5 degrees, the side texture coordinate origin is the first corner counter-clockwise from the +Y axis, which equals (-0.5*IfcTShapeProfileDef.OverallWidth, +0.5*IfcTShapeProfileDef.OverallDepth), while the top (end cap) texture coordinates start at (-0.5*IfcTShapeProfileDef.OverallWidth, -0.5*IfcTShapeProfileDef.OverallDepth). /// /// Figure 263 — Revolved area solid textures -class IFC_PARSE_API IfcRevolvedAreaSolid : public IfcSweptAreaSolid { +class IFC_PARSE_API IfcRevolvedAreaSolid : public IfcSweptAreaSolid { public: + IfcRevolvedAreaSolid() {} + explicit IfcRevolvedAreaSolid (const std::weak_ptr& data) : IfcSweptAreaSolid(data) {} + /// Axis about which revolution will take place. - ::Ifc4x3_add2::IfcAxis1Placement* Axis() const; - void setAxis(::Ifc4x3_add2::IfcAxis1Placement* v); + ::Ifc4x3_add2::IfcAxis1Placement Axis() const; + void setAxis(const ::Ifc4x3_add2::IfcAxis1Placement& v); /// The angle through which the sweep will be made. This angle is measured from the plane of the swept area provided by the XY plane of the position coordinate system. double Angle() const; - void setAngle(double v); - virtual const IfcParse::entity& declaration() const; + void setAngle(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRevolvedAreaSolid (IfcEntityInstanceData&& e); - IfcRevolvedAreaSolid (::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcAxis1Placement* v3_Axis, double v4_Angle); - typedef aggregate_of< IfcRevolvedAreaSolid > list; + // IfcRevolvedAreaSolid (::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcAxis1Placement v3_Axis, double v4_Angle); }; /// IfcRevolvedAreaSolidTapered is defined by revolving a /// cross section along a circular arc. The cross section may change @@ -25047,15 +29379,16 @@ public: /// /// Mirroring within IfcDerivedProfileDef.Operator shall /// not be used -class IFC_PARSE_API IfcRevolvedAreaSolidTapered : public IfcRevolvedAreaSolid { +class IFC_PARSE_API IfcRevolvedAreaSolidTapered : public IfcRevolvedAreaSolid { public: - ::Ifc4x3_add2::IfcProfileDef* EndSweptArea() const; - void setEndSweptArea(::Ifc4x3_add2::IfcProfileDef* v); - virtual const IfcParse::entity& declaration() const; + IfcRevolvedAreaSolidTapered() {} + explicit IfcRevolvedAreaSolidTapered (const std::weak_ptr& data) : IfcRevolvedAreaSolid(data) {} + + ::Ifc4x3_add2::IfcProfileDef EndSweptArea() const; + void setEndSweptArea(const ::Ifc4x3_add2::IfcProfileDef& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRevolvedAreaSolidTapered (IfcEntityInstanceData&& e); - IfcRevolvedAreaSolidTapered (::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcAxis1Placement* v3_Axis, double v4_Angle, ::Ifc4x3_add2::IfcProfileDef* v5_EndSweptArea); - typedef aggregate_of< IfcRevolvedAreaSolidTapered > list; + // IfcRevolvedAreaSolidTapered (::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcAxis1Placement v3_Axis, double v4_Angle, ::Ifc4x3_add2::IfcProfileDef v5_EndSweptArea); }; /// The IfcRightCircularCone is a Construction Solid /// Geometry (CSG) 3D primitive. It is a solid with a circular base and @@ -25122,19 +29455,20 @@ public: /// +Y /// /// Figure 265 — Right circular cone textures -class IFC_PARSE_API IfcRightCircularCone : public IfcCsgPrimitive3D { +class IFC_PARSE_API IfcRightCircularCone : public IfcCsgPrimitive3D { public: + IfcRightCircularCone() {} + explicit IfcRightCircularCone (const std::weak_ptr& data) : IfcCsgPrimitive3D(data) {} + /// The distance between the base of the cone and the apex. double Height() const; - void setHeight(double v); + void setHeight(const double& v); /// The radius of the cone at the base. double BottomRadius() const; - void setBottomRadius(double v); - virtual const IfcParse::entity& declaration() const; + void setBottomRadius(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRightCircularCone (IfcEntityInstanceData&& e); - IfcRightCircularCone (::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_BottomRadius); - typedef aggregate_of< IfcRightCircularCone > list; + // IfcRightCircularCone (::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_Height, double v3_BottomRadius); }; /// The IfcRightCircularCylinder is a Construction Solid /// Geometry (CSG) 3D primitive. It is a solid with a circular base and @@ -25217,58 +29551,62 @@ public: /// +Y /// /// Figure 267 — Right circular cylinder textures -class IFC_PARSE_API IfcRightCircularCylinder : public IfcCsgPrimitive3D { +class IFC_PARSE_API IfcRightCircularCylinder : public IfcCsgPrimitive3D { public: + IfcRightCircularCylinder() {} + explicit IfcRightCircularCylinder (const std::weak_ptr& data) : IfcCsgPrimitive3D(data) {} + /// The distance between the planar circular faces of the cylinder. double Height() const; - void setHeight(double v); + void setHeight(const double& v); /// The radius of the cylinder. double Radius() const; - void setRadius(double v); - virtual const IfcParse::entity& declaration() const; + void setRadius(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRightCircularCylinder (IfcEntityInstanceData&& e); - IfcRightCircularCylinder (::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_Radius); - typedef aggregate_of< IfcRightCircularCylinder > list; + // IfcRightCircularCylinder (::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_Height, double v3_Radius); }; -class IFC_PARSE_API IfcSectionedSolid : public IfcSolidModel { +class IFC_PARSE_API IfcSectionedSolid : public IfcSolidModel { public: - ::Ifc4x3_add2::IfcCurve* Directrix() const; - void setDirectrix(::Ifc4x3_add2::IfcCurve* v); - aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr CrossSections() const; - void setCrossSections(aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v); - virtual const IfcParse::entity& declaration() const; + IfcSectionedSolid() {} + explicit IfcSectionedSolid (const std::weak_ptr& data) : IfcSolidModel(data) {} + + ::Ifc4x3_add2::IfcCurve Directrix() const; + void setDirectrix(const ::Ifc4x3_add2::IfcCurve& v); + std::vector< ::Ifc4x3_add2::IfcProfileDef > CrossSections() const; + void setCrossSections(const std::vector< ::Ifc4x3_add2::IfcProfileDef >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSectionedSolid (IfcEntityInstanceData&& e); - IfcSectionedSolid (::Ifc4x3_add2::IfcCurve* v1_Directrix, aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v2_CrossSections); - typedef aggregate_of< IfcSectionedSolid > list; + // IfcSectionedSolid (::Ifc4x3_add2::IfcCurve v1_Directrix, std::vector< ::Ifc4x3_add2::IfcProfileDef > v2_CrossSections); }; -class IFC_PARSE_API IfcSectionedSolidHorizontal : public IfcSectionedSolid { +class IFC_PARSE_API IfcSectionedSolidHorizontal : public IfcSectionedSolid { public: - aggregate_of< ::Ifc4x3_add2::IfcAxis2PlacementLinear >::ptr CrossSectionPositions() const; - void setCrossSectionPositions(aggregate_of< ::Ifc4x3_add2::IfcAxis2PlacementLinear >::ptr v); - virtual const IfcParse::entity& declaration() const; + IfcSectionedSolidHorizontal() {} + explicit IfcSectionedSolidHorizontal (const std::weak_ptr& data) : IfcSectionedSolid(data) {} + + std::vector< ::Ifc4x3_add2::IfcAxis2PlacementLinear > CrossSectionPositions() const; + void setCrossSectionPositions(const std::vector< ::Ifc4x3_add2::IfcAxis2PlacementLinear >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSectionedSolidHorizontal (IfcEntityInstanceData&& e); - IfcSectionedSolidHorizontal (::Ifc4x3_add2::IfcCurve* v1_Directrix, aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v2_CrossSections, aggregate_of< ::Ifc4x3_add2::IfcAxis2PlacementLinear >::ptr v3_CrossSectionPositions); - typedef aggregate_of< IfcSectionedSolidHorizontal > list; + // IfcSectionedSolidHorizontal (::Ifc4x3_add2::IfcCurve v1_Directrix, std::vector< ::Ifc4x3_add2::IfcProfileDef > v2_CrossSections, std::vector< ::Ifc4x3_add2::IfcAxis2PlacementLinear > v3_CrossSectionPositions); }; -class IFC_PARSE_API IfcSectionedSurface : public IfcSurface { +class IFC_PARSE_API IfcSectionedSurface : public IfcSurface { public: - ::Ifc4x3_add2::IfcCurve* Directrix() const; - void setDirectrix(::Ifc4x3_add2::IfcCurve* v); - aggregate_of< ::Ifc4x3_add2::IfcAxis2PlacementLinear >::ptr CrossSectionPositions() const; - void setCrossSectionPositions(aggregate_of< ::Ifc4x3_add2::IfcAxis2PlacementLinear >::ptr v); - aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr CrossSections() const; - void setCrossSections(aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v); - virtual const IfcParse::entity& declaration() const; + IfcSectionedSurface() {} + explicit IfcSectionedSurface (const std::weak_ptr& data) : IfcSurface(data) {} + + ::Ifc4x3_add2::IfcCurve Directrix() const; + void setDirectrix(const ::Ifc4x3_add2::IfcCurve& v); + std::vector< ::Ifc4x3_add2::IfcAxis2PlacementLinear > CrossSectionPositions() const; + void setCrossSectionPositions(const std::vector< ::Ifc4x3_add2::IfcAxis2PlacementLinear >& v); + std::vector< ::Ifc4x3_add2::IfcProfileDef > CrossSections() const; + void setCrossSections(const std::vector< ::Ifc4x3_add2::IfcProfileDef >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSectionedSurface (IfcEntityInstanceData&& e); - IfcSectionedSurface (::Ifc4x3_add2::IfcCurve* v1_Directrix, aggregate_of< ::Ifc4x3_add2::IfcAxis2PlacementLinear >::ptr v2_CrossSectionPositions, aggregate_of< ::Ifc4x3_add2::IfcProfileDef >::ptr v3_CrossSections); - typedef aggregate_of< IfcSectionedSurface > list; + // IfcSectionedSurface (::Ifc4x3_add2::IfcCurve v1_Directrix, std::vector< ::Ifc4x3_add2::IfcAxis2PlacementLinear > v2_CrossSectionPositions, std::vector< ::Ifc4x3_add2::IfcProfileDef > v3_CrossSections); }; /// The IfcSimplePropertyTemplate defines the template for /// all dynamically extensible properties, either the subtypes of @@ -25315,19 +29653,22 @@ public: /// are unique. /// /// Figure 9 — Property template relationships -class IFC_PARSE_API IfcSimplePropertyTemplate : public IfcPropertyTemplate { +class IFC_PARSE_API IfcSimplePropertyTemplate : public IfcPropertyTemplate { public: + IfcSimplePropertyTemplate() {} + explicit IfcSimplePropertyTemplate (const std::weak_ptr& data) : IfcPropertyTemplate(data) {} + /// Property type defining whether the property template defines a property with a single value, a bounded value, a list value, a table value, an enumerated value, or a reference value. Or the quantity type defining whether the template defines a quantity with a length, area, volume, weight or time value. /// /// NOTE the value of this property determines the correct use of the PrimaryUnit, SecondaryUnit, PrimaryDataType, SecondaryDataType, and Expression attributes. - boost::optional< ::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Value > TemplateType() const; - void setTemplateType(boost::optional< ::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Value > v); - boost::optional< std::string > PrimaryMeasureType() const; - void setPrimaryMeasureType(boost::optional< std::string > v); - boost::optional< std::string > SecondaryMeasureType() const; - void setSecondaryMeasureType(boost::optional< std::string > v); - ::Ifc4x3_add2::IfcPropertyEnumeration* Enumerators() const; - void setEnumerators(::Ifc4x3_add2::IfcPropertyEnumeration* v); + std::optional< ::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Value > TemplateType() const; + void setTemplateType(const std::optional< ::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Value >& v); + std::optional< std::string > PrimaryMeasureType() const; + void setPrimaryMeasureType(const std::optional< std::string >& v); + std::optional< std::string > SecondaryMeasureType() const; + void setSecondaryMeasureType(const std::optional< std::string >& v); + ::Ifc4x3_add2::IfcPropertyEnumeration Enumerators() const; + void setEnumerators(const ::Ifc4x3_add2::IfcPropertyEnumeration& v); /// Primary unit assigned to the definition of the property. It should be provided, if the PropertyType is set to: /// /// P_SINGLEVALUE: determining the IfcPropertySingleValue.Unit @@ -25335,21 +29676,21 @@ public: /// P_BOUNDEDVALUE: determining the IfcPropertyBoundedValue.Unit /// P_LISTVALUE: determining the IfcPropertyListValue.Unit /// P_TABLEVALUE: determining the IfcPropertyTableValue.DefiningUnit - ::Ifc4x3_add2::IfcUnit* PrimaryUnit() const; - void setPrimaryUnit(::Ifc4x3_add2::IfcUnit* v); + ::Ifc4x3_add2::IfcUnit PrimaryUnit() const; + void setPrimaryUnit(const ::Ifc4x3_add2::IfcUnit& v); /// Secondary unit assigned to the definition of the property. It should be provided, if the PropertyType is set to: /// /// P_TABLEVALUE: determining the IfcPropertyTableValue.DefinedUnit - ::Ifc4x3_add2::IfcUnit* SecondaryUnit() const; - void setSecondaryUnit(::Ifc4x3_add2::IfcUnit* v); + ::Ifc4x3_add2::IfcUnit SecondaryUnit() const; + void setSecondaryUnit(const ::Ifc4x3_add2::IfcUnit& v); /// The expression used to store additional information for the property template depending on the PropertyType. It should the following definitions, if the PropertyType is set to: /// /// P_TABLEVALUE: the expression that could be evaluated to define the correlation between the defining values and the defined values. /// Q_LENGTH, Q_AREA, Q_VOLUME, Q_COUNT, Q_WEIGTH, Q_TIME: the formula to be used to calculate the quantity /// /// NOTE No value shall be asserted if the PropertyType is not listed above. - boost::optional< std::string > Expression() const; - void setExpression(boost::optional< std::string > v); + std::optional< std::string > Expression() const; + void setExpression(const std::optional< std::string >& v); /// Information about the access state of the property. It determines whether a property be viewed and/or modified by any receiving application without specific knowledge of it. /// Attribute use definition for IfcStateEnum /// @@ -25362,13 +29703,11 @@ public: /// READWRITELOCKED: Properties of this template are locked, readable, and writable. They may only be accessed by the owning application. /// /// READONLYLOCKED: Properties of this template are locked and read-only. They may only be accessed by the owning application. - boost::optional< ::Ifc4x3_add2::IfcStateEnum::Value > AccessState() const; - void setAccessState(boost::optional< ::Ifc4x3_add2::IfcStateEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcStateEnum::Value > AccessState() const; + void setAccessState(const std::optional< ::Ifc4x3_add2::IfcStateEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSimplePropertyTemplate (IfcEntityInstanceData&& e); - IfcSimplePropertyTemplate (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< ::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Value > v5_TemplateType, boost::optional< std::string > v6_PrimaryMeasureType, boost::optional< std::string > v7_SecondaryMeasureType, ::Ifc4x3_add2::IfcPropertyEnumeration* v8_Enumerators, ::Ifc4x3_add2::IfcUnit* v9_PrimaryUnit, ::Ifc4x3_add2::IfcUnit* v10_SecondaryUnit, boost::optional< std::string > v11_Expression, boost::optional< ::Ifc4x3_add2::IfcStateEnum::Value > v12_AccessState); - typedef aggregate_of< IfcSimplePropertyTemplate > list; + // IfcSimplePropertyTemplate (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< ::Ifc4x3_add2::IfcSimplePropertyTemplateTypeEnum::Value > v5_TemplateType, std::optional< std::string > v6_PrimaryMeasureType, std::optional< std::string > v7_SecondaryMeasureType, ::Ifc4x3_add2::IfcPropertyEnumeration v8_Enumerators, ::Ifc4x3_add2::IfcUnit v9_PrimaryUnit, ::Ifc4x3_add2::IfcUnit v10_SecondaryUnit, std::optional< std::string > v11_Expression, std::optional< ::Ifc4x3_add2::IfcStateEnum::Value > v12_AccessState); }; /// Definition from IAI: A spatial element is the /// generalization of all spatial elements that might be used @@ -25401,23 +29740,24 @@ public: /// /// HISTORY New entity in IFC /// Release 2x Edition 4. -class IFC_PARSE_API IfcSpatialElement : public IfcProduct, public IfcInterferenceSelect { +class IFC_PARSE_API IfcSpatialElement : public IfcProduct { public: + IfcSpatialElement() {} + explicit IfcSpatialElement (const std::weak_ptr& data) : IfcProduct(data) {} + /// Long name for a spatial structure element, used for informal purposes. It should be used, if available, in conjunction with the inherited Name attribute. /// /// NOTE In many scenarios the Name attribute refers to the short name or number of a spacial element, and the LongName refers to the full name. - boost::optional< std::string > LongName() const; - void setLongName(boost::optional< std::string > v); - aggregate_of< IfcRelContainedInSpatialStructure >::ptr ContainsElements() const; // INVERSE IfcRelContainedInSpatialStructure::RelatingStructure - aggregate_of< IfcRelServicesBuildings >::ptr ServicedBySystems() const; // INVERSE IfcRelServicesBuildings::RelatedBuildings - aggregate_of< IfcRelReferencedInSpatialStructure >::ptr ReferencesElements() const; // INVERSE IfcRelReferencedInSpatialStructure::RelatingStructure - aggregate_of< IfcRelInterferesElements >::ptr IsInterferedByElements() const; // INVERSE IfcRelInterferesElements::RelatedElement - aggregate_of< IfcRelInterferesElements >::ptr InterferesElements() const; // INVERSE IfcRelInterferesElements::RelatingElement - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > LongName() const; + void setLongName(const std::optional< std::string >& v); + std::vector< IfcRelContainedInSpatialStructure > ContainsElements() const; // INVERSE IfcRelContainedInSpatialStructure::RelatingStructure + std::vector< IfcRelServicesBuildings > ServicedBySystems() const; // INVERSE IfcRelServicesBuildings::RelatedBuildings + std::vector< IfcRelReferencedInSpatialStructure > ReferencesElements() const; // INVERSE IfcRelReferencedInSpatialStructure::RelatingStructure + std::vector< IfcRelInterferesElements > IsInterferedByElements() const; // INVERSE IfcRelInterferesElements::RelatedElement + std::vector< IfcRelInterferesElements > InterferesElements() const; // INVERSE IfcRelInterferesElements::RelatingElement + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSpatialElement (IfcEntityInstanceData&& e); - IfcSpatialElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName); - typedef aggregate_of< IfcSpatialElement > list; + // IfcSpatialElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName); }; /// Definition from IAI: The IfcSpatialElementType /// defines a list of commonly shared property set definitions of a @@ -25450,16 +29790,17 @@ public: /// /// HISTORY New entity in Release /// IFC2x Edition 4. -class IFC_PARSE_API IfcSpatialElementType : public IfcTypeProduct { +class IFC_PARSE_API IfcSpatialElementType : public IfcTypeProduct { public: + IfcSpatialElementType() {} + explicit IfcSpatialElementType (const std::weak_ptr& data) : IfcTypeProduct(data) {} + /// The type denotes a particular type that indicates the object further. The use has to be established at the level of instantiable subtypes. In particular it holds the user defined type, if the enumeration of the attribute 'PredefinedType' is set to USERDEFINED. - boost::optional< std::string > ElementType() const; - void setElementType(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > ElementType() const; + void setElementType(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSpatialElementType (IfcEntityInstanceData&& e); - IfcSpatialElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcSpatialElementType > list; + // IfcSpatialElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// A spatial structure element /// (IfcSpatialStructureElement) is the generalization of all @@ -25535,19 +29876,20 @@ public: /// Figure 62 shows the use of IfcRelAggregates to establish a spatial structure including site, building, building section and storey. More information is provided at the level of the subtypes. /// /// Figure 62 — Spatial structure element composition -class IFC_PARSE_API IfcSpatialStructureElement : public IfcSpatialElement { +class IFC_PARSE_API IfcSpatialStructureElement : public IfcSpatialElement { public: + IfcSpatialStructureElement() {} + explicit IfcSpatialStructureElement (const std::weak_ptr& data) : IfcSpatialElement(data) {} + /// Denotes, whether the predefined spatial structure element represents itself, or an aggregate (complex) or a part (part). The interpretation is given separately for each subtype of spatial structure element. If no CompositionType is asserted, the dafault value 'ELEMENT' applies. /// /// IFC2x4 CHANGE  /// Attribute made optional. - boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > CompositionType() const; - void setCompositionType(boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > CompositionType() const; + void setCompositionType(const std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSpatialStructureElement (IfcEntityInstanceData&& e); - IfcSpatialStructureElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType); - typedef aggregate_of< IfcSpatialStructureElement > list; + // IfcSpatialStructureElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType); }; /// Definition from IAI: The element type /// (IfcSpatialStructureElementType) defines a list of @@ -25583,13 +29925,14 @@ public: /// /// HISTORY New entity in /// Release IFC2x Edition 3. -class IFC_PARSE_API IfcSpatialStructureElementType : public IfcSpatialElementType { +class IFC_PARSE_API IfcSpatialStructureElementType : public IfcSpatialElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcSpatialStructureElementType() {} + explicit IfcSpatialStructureElementType (const std::weak_ptr& data) : IfcSpatialElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSpatialStructureElementType (IfcEntityInstanceData&& e); - IfcSpatialStructureElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcSpatialStructureElementType > list; + // IfcSpatialStructureElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// Definition from IAI: A spatial element is the /// generalization of all spatial elements that might be used to @@ -25640,16 +29983,17 @@ public: /// /// HISTORY New entity in /// IFC Release 2x Edition 4. -class IFC_PARSE_API IfcSpatialZone : public IfcSpatialElement { +class IFC_PARSE_API IfcSpatialZone : public IfcSpatialElement { public: + IfcSpatialZone() {} + explicit IfcSpatialZone (const std::weak_ptr& data) : IfcSpatialElement(data) {} + /// Predefined types to define the particular type of the spatial zone. There may be property set definitions available for each predefined type. - boost::optional< ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSpatialZone (IfcEntityInstanceData&& e); - IfcSpatialZone (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcSpatialZone > list; + // IfcSpatialZone (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value > v9_PredefinedType); }; /// Definition from IAI: The IfcSpatialZoneType /// defines a list of commonly shared property set definitions of a @@ -25681,18 +30025,19 @@ public: /// /// HISTORY New entity in Release /// IFC2x Edition 4. -class IFC_PARSE_API IfcSpatialZoneType : public IfcSpatialElementType { +class IFC_PARSE_API IfcSpatialZoneType : public IfcSpatialElementType { public: + IfcSpatialZoneType() {} + explicit IfcSpatialZoneType (const std::weak_ptr& data) : IfcSpatialElementType(data) {} + /// Predefined types to define the particular type of the spatial zone. There may be property set definitions available for each predefined type. ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value v); - boost::optional< std::string > LongName() const; - void setLongName(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value& v); + std::optional< std::string > LongName() const; + void setLongName(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSpatialZoneType (IfcEntityInstanceData&& e); - IfcSpatialZoneType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value v10_PredefinedType, boost::optional< std::string > v11_LongName); - typedef aggregate_of< IfcSpatialZoneType > list; + // IfcSpatialZoneType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSpatialZoneTypeEnum::Value v10_PredefinedType, std::optional< std::string > v11_LongName); }; /// The IfcSphere is a Construction Solid Geometry (CSG) 3D /// primitive. It is a solid where all points at the surface have the @@ -25744,38 +30089,41 @@ public: /// (+Y, then curving towards top) /// /// Figure 271 — Sphere textures -class IFC_PARSE_API IfcSphere : public IfcCsgPrimitive3D { +class IFC_PARSE_API IfcSphere : public IfcCsgPrimitive3D { public: + IfcSphere() {} + explicit IfcSphere (const std::weak_ptr& data) : IfcCsgPrimitive3D(data) {} + /// The radius of the sphere. double Radius() const; - void setRadius(double v); - virtual const IfcParse::entity& declaration() const; + void setRadius(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSphere (IfcEntityInstanceData&& e); - IfcSphere (::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_Radius); - typedef aggregate_of< IfcSphere > list; + // IfcSphere (::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_Radius); }; -class IFC_PARSE_API IfcSphericalSurface : public IfcElementarySurface { +class IFC_PARSE_API IfcSphericalSurface : public IfcElementarySurface { public: + IfcSphericalSurface() {} + explicit IfcSphericalSurface (const std::weak_ptr& data) : IfcElementarySurface(data) {} + double Radius() const; - void setRadius(double v); - virtual const IfcParse::entity& declaration() const; + void setRadius(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSphericalSurface (IfcEntityInstanceData&& e); - IfcSphericalSurface (::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_Radius); - typedef aggregate_of< IfcSphericalSurface > list; + // IfcSphericalSurface (::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_Radius); }; -class IFC_PARSE_API IfcSpiral : public IfcCurve { +class IFC_PARSE_API IfcSpiral : public IfcCurve { public: - ::Ifc4x3_add2::IfcAxis2Placement* Position() const; - void setPosition(::Ifc4x3_add2::IfcAxis2Placement* v); - virtual const IfcParse::entity& declaration() const; + IfcSpiral() {} + explicit IfcSpiral (const std::weak_ptr& data) : IfcCurve(data) {} + + ::Ifc4x3_add2::IfcAxis2Placement Position() const; + void setPosition(const ::Ifc4x3_add2::IfcAxis2Placement& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSpiral (IfcEntityInstanceData&& e); - IfcSpiral (::Ifc4x3_add2::IfcAxis2Placement* v1_Position); - typedef aggregate_of< IfcSpiral > list; + // IfcSpiral (::Ifc4x3_add2::IfcAxis2Placement v1_Position); }; /// Definition from IAI: The abstract entity IfcStructuralActivity combines the definition of actions (such as forces, displacements, etc.) and reactions (support reactions, internal forces, deflections, etc.) which are specified by using the basic load definitions from the IfcStructuralLoadResource. /// @@ -25870,13 +30218,16 @@ public: /// /// RepresentationIdentifier: 'Level set' /// RepresentationType: 'GeometricCurveSet' -class IFC_PARSE_API IfcStructuralActivity : public IfcProduct { +class IFC_PARSE_API IfcStructuralActivity : public IfcProduct { public: + IfcStructuralActivity() {} + explicit IfcStructuralActivity (const std::weak_ptr& data) : IfcProduct(data) {} + /// Load or result resource object which defines the load type, direction, and load values. /// /// In case of activities which are variably distributed over curves or surfaces, IfcStructuralLoadConfiguration is used which provides a list of load samples and their locations within the load distribution, measured in local coordinates of the curve or surface on which this activity acts. The contents of this load or result distribution may be further restricted by definitions at subtypes of IfcStructuralActivity. - ::Ifc4x3_add2::IfcStructuralLoad* AppliedLoad() const; - void setAppliedLoad(::Ifc4x3_add2::IfcStructuralLoad* v); + ::Ifc4x3_add2::IfcStructuralLoad AppliedLoad() const; + void setAppliedLoad(const ::Ifc4x3_add2::IfcStructuralLoad& v); /// Indicates whether the load directions refer to the global coordinate system (global to /// the analysis model, i.e. as established by IfcStructuralAnalysisModel.SharedPlacement) /// or to the local coordinate system (local to the activity or connected item, as established by @@ -25895,13 +30246,11 @@ public: /// is to be taken as coordinates which are local to individual structural items and activities, /// as established by subclass-specific geometry use definitions. ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value GlobalOrLocal() const; - void setGlobalOrLocal(::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v); - aggregate_of< IfcRelConnectsStructuralActivity >::ptr AssignedToStructuralItem() const; // INVERSE IfcRelConnectsStructuralActivity::RelatedStructuralActivity - virtual const IfcParse::entity& declaration() const; + void setGlobalOrLocal(const ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value& v); + std::vector< IfcRelConnectsStructuralActivity > AssignedToStructuralItem() const; // INVERSE IfcRelConnectsStructuralActivity::RelatedStructuralActivity + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralActivity (IfcEntityInstanceData&& e); - IfcStructuralActivity (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal); - typedef aggregate_of< IfcStructuralActivity > list; + // IfcStructuralActivity (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal); }; /// Definition from IAI: The abstract entity IfcStructuralItem is the generalization of structural members and structural connections, i.e. analysis idealizations of elements in the building model. It defines the relation between structural members and connections with structural activities (actions and reactions). /// @@ -25990,27 +30339,29 @@ public: /// NOTE  This rule is necessary to achieve consistent topology representations. The topology representations of structural items in an analysis model are meant to share vertices and edges und must therefore have the same object placement. /// /// NOTE  A structural item may be grouped into more than one analysis model. In this case, all these models must use the same instance of IfcObjectPlacement. -class IFC_PARSE_API IfcStructuralItem : public IfcProduct, public IfcStructuralActivityAssignmentSelect { +class IFC_PARSE_API IfcStructuralItem : public IfcProduct { public: - aggregate_of< IfcRelConnectsStructuralActivity >::ptr AssignedStructuralActivity() const; // INVERSE IfcRelConnectsStructuralActivity::RelatingElement - virtual const IfcParse::entity& declaration() const; + IfcStructuralItem() {} + explicit IfcStructuralItem (const std::weak_ptr& data) : IfcProduct(data) {} + + std::vector< IfcRelConnectsStructuralActivity > AssignedStructuralActivity() const; // INVERSE IfcRelConnectsStructuralActivity::RelatingElement + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralItem (IfcEntityInstanceData&& e); - IfcStructuralItem (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation); - typedef aggregate_of< IfcStructuralItem > list; + // IfcStructuralItem (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation); }; /// Definition from IAI: The abstract entity IfcStructuralMember is the superclass of all structural items which represent the idealized structural behavior of building elements. /// /// HISTORY: New entity in IFC 2x2. /// IFC 2x4 change: Use definitions moved to supertype and subtypes. -class IFC_PARSE_API IfcStructuralMember : public IfcStructuralItem { +class IFC_PARSE_API IfcStructuralMember : public IfcStructuralItem { public: - aggregate_of< IfcRelConnectsStructuralMember >::ptr ConnectedBy() const; // INVERSE IfcRelConnectsStructuralMember::RelatingStructuralMember - virtual const IfcParse::entity& declaration() const; + IfcStructuralMember() {} + explicit IfcStructuralMember (const std::weak_ptr& data) : IfcStructuralItem(data) {} + + std::vector< IfcRelConnectsStructuralMember > ConnectedBy() const; // INVERSE IfcRelConnectsStructuralMember::RelatingStructuralMember + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralMember (IfcEntityInstanceData&& e); - IfcStructuralMember (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation); - typedef aggregate_of< IfcStructuralMember > list; + // IfcStructuralMember (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation); }; /// Definition from IAI: A structural reaction is a structural activity that results from a /// structural action imposed to a structural item or building element. Examples are support reactions, @@ -26032,13 +30383,14 @@ public: /// IfcRelAssignsToProduct relationship object. IfcRelAssignsToProduct.Name is set to /// 'Causes' and IfcRelAssignsToProduct.RelatingProduct refers to an instance of a subtype of /// IfcStructuralAction. -class IFC_PARSE_API IfcStructuralReaction : public IfcStructuralActivity { +class IFC_PARSE_API IfcStructuralReaction : public IfcStructuralActivity { public: - virtual const IfcParse::entity& declaration() const; + IfcStructuralReaction() {} + explicit IfcStructuralReaction (const std::weak_ptr& data) : IfcStructuralActivity(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralReaction (IfcEntityInstanceData&& e); - IfcStructuralReaction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal); - typedef aggregate_of< IfcStructuralReaction > list; + // IfcStructuralReaction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal); }; /// Definition from IAI: Instances of IfcStructuralSurfaceMember describe face members, i.e. structural analysis idealizations of slabs, walls, shells, etc.. Surface members may be planar or curved. /// @@ -26060,19 +30412,20 @@ public: /// Topology Use Definitions: /// /// Direct instances of IfcStructuralSurfaceMember shall have a topology representation which consists of one IfcFaceSurface, representing the reference surface of the surface member. See definitions at IfcStructuralItem for further specifications. -class IFC_PARSE_API IfcStructuralSurfaceMember : public IfcStructuralMember { +class IFC_PARSE_API IfcStructuralSurfaceMember : public IfcStructuralMember { public: + IfcStructuralSurfaceMember() {} + explicit IfcStructuralSurfaceMember (const std::weak_ptr& data) : IfcStructuralMember(data) {} + /// Type of member with respect to its load carrying behavior in this analysis idealization. ::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Value v); + void setPredefinedType(const ::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Value& v); /// Defines the typically understood thickness of the structural surface member, measured normal to its reference surface. - boost::optional< double > Thickness() const; - void setThickness(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > Thickness() const; + void setThickness(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralSurfaceMember (IfcEntityInstanceData&& e); - IfcStructuralSurfaceMember (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Value v8_PredefinedType, boost::optional< double > v9_Thickness); - typedef aggregate_of< IfcStructuralSurfaceMember > list; + // IfcStructuralSurfaceMember (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Value v8_PredefinedType, std::optional< double > v9_Thickness); }; /// Definition from IAI: Describes surface members with varying section properties. The properties are provided by means of a property set and IfcRelDefinesByProperties or by means of aggregation: An instance of IfcStructuralSurfaceMemberVarying may be composed of two or more instances of IfcStructuralSurfaceMember with differing section properties. These subordinate members relate to the instance of IfcStructuralSurfaceMemberVarying by IfcRelAggregates. /// @@ -26092,13 +30445,14 @@ public: /// Topology Use Definitions: /// /// In case of aggregation, instances of IfcStructuralSurfaceMemberVarying may have a topology representation which contains a single IfcConnectedFaceSet, based upon the faces of the parts. Otherwise, definitions at IfcStructuralSurfaceMember apply. -class IFC_PARSE_API IfcStructuralSurfaceMemberVarying : public IfcStructuralSurfaceMember { +class IFC_PARSE_API IfcStructuralSurfaceMemberVarying : public IfcStructuralSurfaceMember { public: - virtual const IfcParse::entity& declaration() const; + IfcStructuralSurfaceMemberVarying() {} + explicit IfcStructuralSurfaceMemberVarying (const std::weak_ptr& data) : IfcStructuralSurfaceMember(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralSurfaceMemberVarying (IfcEntityInstanceData&& e); - IfcStructuralSurfaceMemberVarying (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Value v8_PredefinedType, boost::optional< double > v9_Thickness); - typedef aggregate_of< IfcStructuralSurfaceMemberVarying > list; + // IfcStructuralSurfaceMemberVarying (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralSurfaceMemberTypeEnum::Value v8_PredefinedType, std::optional< double > v9_Thickness); }; /// Definition from IAI: Defines a reaction which occurs distributed over a surface. A surface reaction may be connected with a surface member or surface connection. /// @@ -26122,16 +30476,17 @@ public: /// NOTE  Isocontours are represented as IfcPCurves which are defined in terms of surface parameters u,v, while result locations are given in local surface item coordinates x,y. It is strongly recommended that the surface parameterization u,v is scaled 1:1 in order to avoid different scales of u,v versus x,y. If u,v are scaled 1:1 and the IfcPCurve's base surface is identical with the surface item's base surface, u,v and local x,y are identical. /// /// All items in SELF\IfcStructuralActivity.AppliedLoad\IfcStructuralLoadConfiguration.Values shall be of the same entity type. -class IFC_PARSE_API IfcStructuralSurfaceReaction : public IfcStructuralReaction { +class IFC_PARSE_API IfcStructuralSurfaceReaction : public IfcStructuralReaction { public: + IfcStructuralSurfaceReaction() {} + explicit IfcStructuralSurfaceReaction (const std::weak_ptr& data) : IfcStructuralReaction(data) {} + /// Type of reaction according to its distribution of load values. ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralSurfaceReaction (IfcEntityInstanceData&& e); - IfcStructuralSurfaceReaction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcStructuralSurfaceReaction > list; + // IfcStructuralSurfaceReaction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v10_PredefinedType); }; /// The resource type IfcSubContractResourceType defines commonly shared information for occurrences of subcontract resources. The set of shared information may include: /// @@ -26144,31 +30499,33 @@ public: /// Occurrences of the IfcSubContractResourceType are represented by instances of IfcSubContractResource. /// /// HISTORY New entity in IFC2x4. -class IFC_PARSE_API IfcSubContractResourceType : public IfcConstructionResourceType { +class IFC_PARSE_API IfcSubContractResourceType : public IfcConstructionResourceType { public: + IfcSubContractResourceType() {} + explicit IfcSubContractResourceType (const std::weak_ptr& data) : IfcConstructionResourceType(data) {} + /// Defines types of subcontract resources. ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSubContractResourceType (IfcEntityInstanceData&& e); - IfcSubContractResourceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value v12_PredefinedType); - typedef aggregate_of< IfcSubContractResourceType > list; + // IfcSubContractResourceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v11_BaseQuantity, ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value v12_PredefinedType); }; -class IFC_PARSE_API IfcSurfaceCurve : public IfcCurve, public IfcCurveOnSurface { +class IFC_PARSE_API IfcSurfaceCurve : public IfcCurve { public: - ::Ifc4x3_add2::IfcCurve* Curve3D() const; - void setCurve3D(::Ifc4x3_add2::IfcCurve* v); - aggregate_of< ::Ifc4x3_add2::IfcPcurve >::ptr AssociatedGeometry() const; - void setAssociatedGeometry(aggregate_of< ::Ifc4x3_add2::IfcPcurve >::ptr v); + IfcSurfaceCurve() {} + explicit IfcSurfaceCurve (const std::weak_ptr& data) : IfcCurve(data) {} + + ::Ifc4x3_add2::IfcCurve Curve3D() const; + void setCurve3D(const ::Ifc4x3_add2::IfcCurve& v); + std::vector< ::Ifc4x3_add2::IfcPcurve > AssociatedGeometry() const; + void setAssociatedGeometry(const std::vector< ::Ifc4x3_add2::IfcPcurve >& v); ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value MasterRepresentation() const; - void setMasterRepresentation(::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value v); - virtual const IfcParse::entity& declaration() const; + void setMasterRepresentation(const ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSurfaceCurve (IfcEntityInstanceData&& e); - IfcSurfaceCurve (::Ifc4x3_add2::IfcCurve* v1_Curve3D, aggregate_of< ::Ifc4x3_add2::IfcPcurve >::ptr v2_AssociatedGeometry, ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation); - typedef aggregate_of< IfcSurfaceCurve > list; + // IfcSurfaceCurve (::Ifc4x3_add2::IfcCurve v1_Curve3D, std::vector< ::Ifc4x3_add2::IfcPcurve > v2_AssociatedGeometry, ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation); }; /// The IfcSurfaceCurveSweptAreaSolid is the result of /// sweeping an area along a directrix that lies on a reference @@ -26232,16 +30589,17 @@ public: /// The SweptArea shall lie in the plane z = 0. /// The Directrix shall lie on the /// ReferenceSurface. -class IFC_PARSE_API IfcSurfaceCurveSweptAreaSolid : public IfcDirectrixCurveSweptAreaSolid { +class IFC_PARSE_API IfcSurfaceCurveSweptAreaSolid : public IfcDirectrixCurveSweptAreaSolid { public: + IfcSurfaceCurveSweptAreaSolid() {} + explicit IfcSurfaceCurveSweptAreaSolid (const std::weak_ptr& data) : IfcDirectrixCurveSweptAreaSolid(data) {} + /// The surface containing the Directrix. - ::Ifc4x3_add2::IfcSurface* ReferenceSurface() const; - void setReferenceSurface(::Ifc4x3_add2::IfcSurface* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcSurface ReferenceSurface() const; + void setReferenceSurface(const ::Ifc4x3_add2::IfcSurface& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSurfaceCurveSweptAreaSolid (IfcEntityInstanceData&& e); - IfcSurfaceCurveSweptAreaSolid (::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcCurve* v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect* v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect* v5_EndParam, ::Ifc4x3_add2::IfcSurface* v6_ReferenceSurface); - typedef aggregate_of< IfcSurfaceCurveSweptAreaSolid > list; + // IfcSurfaceCurveSweptAreaSolid (::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcCurve v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect v5_EndParam, ::Ifc4x3_add2::IfcSurface v6_ReferenceSurface); }; /// Definition from ISO/CD 10303-42:1992: This surface is a simple swept surface or a generalized cylinder obtained by sweeping a curve in a given direction. The parameterization is as follows where the curve has a parameterization l(u): /// @@ -26256,19 +30614,20 @@ public: /// Informal propositions: /// /// The surface shall not self-intersect -class IFC_PARSE_API IfcSurfaceOfLinearExtrusion : public IfcSweptSurface { +class IFC_PARSE_API IfcSurfaceOfLinearExtrusion : public IfcSweptSurface { public: + IfcSurfaceOfLinearExtrusion() {} + explicit IfcSurfaceOfLinearExtrusion (const std::weak_ptr& data) : IfcSweptSurface(data) {} + /// The direction of the extrusion. - ::Ifc4x3_add2::IfcDirection* ExtrudedDirection() const; - void setExtrudedDirection(::Ifc4x3_add2::IfcDirection* v); + ::Ifc4x3_add2::IfcDirection ExtrudedDirection() const; + void setExtrudedDirection(const ::Ifc4x3_add2::IfcDirection& v); /// The depth of the extrusion, it determines the parameterization. double Depth() const; - void setDepth(double v); - virtual const IfcParse::entity& declaration() const; + void setDepth(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSurfaceOfLinearExtrusion (IfcEntityInstanceData&& e); - IfcSurfaceOfLinearExtrusion (::Ifc4x3_add2::IfcProfileDef* v1_SweptCurve, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcDirection* v3_ExtrudedDirection, double v4_Depth); - typedef aggregate_of< IfcSurfaceOfLinearExtrusion > list; + // IfcSurfaceOfLinearExtrusion (::Ifc4x3_add2::IfcProfileDef v1_SweptCurve, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcDirection v3_ExtrudedDirection, double v4_Depth); }; /// Definition from ISO/CD 10303-42:1992: A surface of revolution (IfcSurfaceOfRevolution) is the surface obtained by rotating a curve one complete revolution about an axis. The data shall be interpreted as below. /// @@ -26287,16 +30646,17 @@ public: /// /// The surface shall not self-intersect /// The swept curve shall not be coincident with the axis line for any finite part of its legth. -class IFC_PARSE_API IfcSurfaceOfRevolution : public IfcSweptSurface { +class IFC_PARSE_API IfcSurfaceOfRevolution : public IfcSweptSurface { public: + IfcSurfaceOfRevolution() {} + explicit IfcSurfaceOfRevolution (const std::weak_ptr& data) : IfcSweptSurface(data) {} + /// A point on the axis of revolution and the direction of the axis of revolution. - ::Ifc4x3_add2::IfcAxis1Placement* AxisPosition() const; - void setAxisPosition(::Ifc4x3_add2::IfcAxis1Placement* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcAxis1Placement AxisPosition() const; + void setAxisPosition(const ::Ifc4x3_add2::IfcAxis1Placement& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSurfaceOfRevolution (IfcEntityInstanceData&& e); - IfcSurfaceOfRevolution (::Ifc4x3_add2::IfcProfileDef* v1_SweptCurve, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcAxis1Placement* v3_AxisPosition); - typedef aggregate_of< IfcSurfaceOfRevolution > list; + // IfcSurfaceOfRevolution (::Ifc4x3_add2::IfcProfileDef v1_SweptCurve, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcAxis1Placement v3_AxisPosition); }; /// The furnishing element type IfcSystemFurnitureElementType defines commonly shared information for occurrences of furniture elements. The set of shared information may include: /// @@ -26328,15 +30688,16 @@ public: /// 'Hardware': Finish hardware such as knobs or handles. /// 'Padding': Padding such as cushions. /// 'Panel': Panels such as glass. -class IFC_PARSE_API IfcSystemFurnitureElementType : public IfcFurnishingElementType { +class IFC_PARSE_API IfcSystemFurnitureElementType : public IfcFurnishingElementType { public: - boost::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcSystemFurnitureElementType() {} + explicit IfcSystemFurnitureElementType (const std::weak_ptr& data) : IfcFurnishingElementType(data) {} + + std::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSystemFurnitureElementType (IfcEntityInstanceData&& e); - IfcSystemFurnitureElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, boost::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > v10_PredefinedType); - typedef aggregate_of< IfcSystemFurnitureElementType > list; + // IfcSystemFurnitureElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, std::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > v10_PredefinedType); }; /// An IfcTask is an identifiable unit of work to be /// carried out in a construction project. @@ -26583,23 +30944,26 @@ public: /// require attention. /// Use LongDescription or else identify sub-tasks to /// track punch list items individually via IfcRelNests. -class IFC_PARSE_API IfcTask : public IfcProcess { +class IFC_PARSE_API IfcTask : public IfcProcess { public: + IfcTask() {} + explicit IfcTask (const std::weak_ptr& data) : IfcProcess(data) {} + /// Current status of the task. /// /// NOTE: Particular values for status are not /// specified, these should be determined and agreed by local /// usage. Examples of possible status values include 'Not Yet /// Started', 'Started', 'Completed'. - boost::optional< std::string > Status() const; - void setStatus(boost::optional< std::string > v); + std::optional< std::string > Status() const; + void setStatus(const std::optional< std::string >& v); /// The method of work used in carrying out a task. /// /// NOTE: This attribute should /// not be used if the work method is specified for the /// IfcTaskType - boost::optional< std::string > WorkMethod() const; - void setWorkMethod(boost::optional< std::string > v); + std::optional< std::string > WorkMethod() const; + void setWorkMethod(const std::optional< std::string >& v); /// Identifies whether a task is a milestone task (=TRUE) or not /// (= FALSE). /// @@ -26608,27 +30972,25 @@ public: /// duration. As such, it represents a singular point in /// time. bool IsMilestone() const; - void setIsMilestone(bool v); + void setIsMilestone(const bool& v); /// A value that indicates the relative priority of the task (in /// comparison to the priorities of other tasks). - boost::optional< int > Priority() const; - void setPriority(boost::optional< int > v); + std::optional< int > Priority() const; + void setPriority(const std::optional< int >& v); /// Time related information for the task. /// /// Added in IFC 2x4 - ::Ifc4x3_add2::IfcTaskTime* TaskTime() const; - void setTaskTime(::Ifc4x3_add2::IfcTaskTime* v); + ::Ifc4x3_add2::IfcTaskTime TaskTime() const; + void setTaskTime(const ::Ifc4x3_add2::IfcTaskTime& v); /// Identifies the predefined types of a task from which /// the type required may be set. /// /// Added in IFC 2x4 - boost::optional< ::Ifc4x3_add2::IfcTaskTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTaskTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcTaskTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTaskTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTask (IfcEntityInstanceData&& e); - IfcTask (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_WorkMethod, bool v10_IsMilestone, boost::optional< int > v11_Priority, ::Ifc4x3_add2::IfcTaskTime* v12_TaskTime, boost::optional< ::Ifc4x3_add2::IfcTaskTypeEnum::Value > v13_PredefinedType); - typedef aggregate_of< IfcTask > list; + // IfcTask (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, std::optional< std::string > v8_Status, std::optional< std::string > v9_WorkMethod, bool v10_IsMilestone, std::optional< int > v11_Priority, ::Ifc4x3_add2::IfcTaskTime v12_TaskTime, std::optional< ::Ifc4x3_add2::IfcTaskTypeEnum::Value > v13_PredefinedType); }; /// An IfcTaskType defines a /// particular type of task that may be specified for use @@ -26670,111 +31032,119 @@ public: /// define task times (for example, duration) and/or a task sequence. /// /// Figure 16 — Task type relationships -class IFC_PARSE_API IfcTaskType : public IfcTypeProcess { +class IFC_PARSE_API IfcTaskType : public IfcTypeProcess { public: + IfcTaskType() {} + explicit IfcTaskType (const std::weak_ptr& data) : IfcTypeProcess(data) {} + /// Identifies the predefined types of a task type from which /// the type required may be set. ::Ifc4x3_add2::IfcTaskTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcTaskTypeEnum::Value v); + void setPredefinedType(const ::Ifc4x3_add2::IfcTaskTypeEnum::Value& v); /// The method of work used in carrying out a task. - boost::optional< std::string > WorkMethod() const; - void setWorkMethod(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > WorkMethod() const; + void setWorkMethod(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTaskType (IfcEntityInstanceData&& e); - IfcTaskType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, ::Ifc4x3_add2::IfcTaskTypeEnum::Value v10_PredefinedType, boost::optional< std::string > v11_WorkMethod); - typedef aggregate_of< IfcTaskType > list; + // IfcTaskType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ProcessType, ::Ifc4x3_add2::IfcTaskTypeEnum::Value v10_PredefinedType, std::optional< std::string > v11_WorkMethod); }; -class IFC_PARSE_API IfcTessellatedFaceSet : public IfcTessellatedItem, public IfcBooleanOperand { +class IFC_PARSE_API IfcTessellatedFaceSet : public IfcTessellatedItem { public: - ::Ifc4x3_add2::IfcCartesianPointList3D* Coordinates() const; - void setCoordinates(::Ifc4x3_add2::IfcCartesianPointList3D* v); - aggregate_of< IfcIndexedColourMap >::ptr HasColours() const; // INVERSE IfcIndexedColourMap::MappedTo - aggregate_of< IfcIndexedTextureMap >::ptr HasTextures() const; // INVERSE IfcIndexedTextureMap::MappedTo - virtual const IfcParse::entity& declaration() const; + IfcTessellatedFaceSet() {} + explicit IfcTessellatedFaceSet (const std::weak_ptr& data) : IfcTessellatedItem(data) {} + + ::Ifc4x3_add2::IfcCartesianPointList3D Coordinates() const; + void setCoordinates(const ::Ifc4x3_add2::IfcCartesianPointList3D& v); + std::vector< IfcIndexedColourMap > HasColours() const; // INVERSE IfcIndexedColourMap::MappedTo + std::vector< IfcIndexedTextureMap > HasTextures() const; // INVERSE IfcIndexedTextureMap::MappedTo + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTessellatedFaceSet (IfcEntityInstanceData&& e); - IfcTessellatedFaceSet (::Ifc4x3_add2::IfcCartesianPointList3D* v1_Coordinates); - typedef aggregate_of< IfcTessellatedFaceSet > list; + // IfcTessellatedFaceSet (::Ifc4x3_add2::IfcCartesianPointList3D v1_Coordinates); }; -class IFC_PARSE_API IfcThirdOrderPolynomialSpiral : public IfcSpiral { +class IFC_PARSE_API IfcThirdOrderPolynomialSpiral : public IfcSpiral { public: + IfcThirdOrderPolynomialSpiral() {} + explicit IfcThirdOrderPolynomialSpiral (const std::weak_ptr& data) : IfcSpiral(data) {} + double CubicTerm() const; - void setCubicTerm(double v); - boost::optional< double > QuadraticTerm() const; - void setQuadraticTerm(boost::optional< double > v); - boost::optional< double > LinearTerm() const; - void setLinearTerm(boost::optional< double > v); - boost::optional< double > ConstantTerm() const; - void setConstantTerm(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + void setCubicTerm(const double& v); + std::optional< double > QuadraticTerm() const; + void setQuadraticTerm(const std::optional< double >& v); + std::optional< double > LinearTerm() const; + void setLinearTerm(const std::optional< double >& v); + std::optional< double > ConstantTerm() const; + void setConstantTerm(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcThirdOrderPolynomialSpiral (IfcEntityInstanceData&& e); - IfcThirdOrderPolynomialSpiral (::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_CubicTerm, boost::optional< double > v3_QuadraticTerm, boost::optional< double > v4_LinearTerm, boost::optional< double > v5_ConstantTerm); - typedef aggregate_of< IfcThirdOrderPolynomialSpiral > list; + // IfcThirdOrderPolynomialSpiral (::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_CubicTerm, std::optional< double > v3_QuadraticTerm, std::optional< double > v4_LinearTerm, std::optional< double > v5_ConstantTerm); }; -class IFC_PARSE_API IfcToroidalSurface : public IfcElementarySurface { +class IFC_PARSE_API IfcToroidalSurface : public IfcElementarySurface { public: + IfcToroidalSurface() {} + explicit IfcToroidalSurface (const std::weak_ptr& data) : IfcElementarySurface(data) {} + double MajorRadius() const; - void setMajorRadius(double v); + void setMajorRadius(const double& v); double MinorRadius() const; - void setMinorRadius(double v); - virtual const IfcParse::entity& declaration() const; + void setMinorRadius(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcToroidalSurface (IfcEntityInstanceData&& e); - IfcToroidalSurface (::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_MajorRadius, double v3_MinorRadius); - typedef aggregate_of< IfcToroidalSurface > list; + // IfcToroidalSurface (::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_MajorRadius, double v3_MinorRadius); }; -class IFC_PARSE_API IfcTransportationDeviceType : public IfcElementType { +class IFC_PARSE_API IfcTransportationDeviceType : public IfcElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcTransportationDeviceType() {} + explicit IfcTransportationDeviceType (const std::weak_ptr& data) : IfcElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTransportationDeviceType (IfcEntityInstanceData&& e); - IfcTransportationDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcTransportationDeviceType > list; + // IfcTransportationDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; -class IFC_PARSE_API IfcTriangulatedFaceSet : public IfcTessellatedFaceSet { +class IFC_PARSE_API IfcTriangulatedFaceSet : public IfcTessellatedFaceSet { public: - boost::optional< std::vector< std::vector< double > > > Normals() const; - void setNormals(boost::optional< std::vector< std::vector< double > > > v); - boost::optional< bool > Closed() const; - void setClosed(boost::optional< bool > v); + IfcTriangulatedFaceSet() {} + explicit IfcTriangulatedFaceSet (const std::weak_ptr& data) : IfcTessellatedFaceSet(data) {} + + std::optional< std::vector< std::vector< double > > > Normals() const; + void setNormals(const std::optional< std::vector< std::vector< double > > >& v); + std::optional< bool > Closed() const; + void setClosed(const std::optional< bool >& v); std::vector< std::vector< int > > CoordIndex() const; - void setCoordIndex(std::vector< std::vector< int > > v); - boost::optional< std::vector< int > /*[1:?]*/ > PnIndex() const; - void setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v); - virtual const IfcParse::entity& declaration() const; + void setCoordIndex(const std::vector< std::vector< int > >& v); + std::optional< std::vector< int > /*[1:?]*/ > PnIndex() const; + void setPnIndex(const std::optional< std::vector< int > /*[1:?]*/ >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTriangulatedFaceSet (IfcEntityInstanceData&& e); - IfcTriangulatedFaceSet (::Ifc4x3_add2::IfcCartesianPointList3D* v1_Coordinates, boost::optional< std::vector< std::vector< double > > > v2_Normals, boost::optional< bool > v3_Closed, std::vector< std::vector< int > > v4_CoordIndex, boost::optional< std::vector< int > /*[1:?]*/ > v5_PnIndex); - typedef aggregate_of< IfcTriangulatedFaceSet > list; + // IfcTriangulatedFaceSet (::Ifc4x3_add2::IfcCartesianPointList3D v1_Coordinates, std::optional< std::vector< std::vector< double > > > v2_Normals, std::optional< bool > v3_Closed, std::vector< std::vector< int > > v4_CoordIndex, std::optional< std::vector< int > /*[1:?]*/ > v5_PnIndex); }; -class IFC_PARSE_API IfcTriangulatedIrregularNetwork : public IfcTriangulatedFaceSet { +class IFC_PARSE_API IfcTriangulatedIrregularNetwork : public IfcTriangulatedFaceSet { public: + IfcTriangulatedIrregularNetwork() {} + explicit IfcTriangulatedIrregularNetwork (const std::weak_ptr& data) : IfcTriangulatedFaceSet(data) {} + std::vector< int > /*[1:?]*/ Flags() const; - void setFlags(std::vector< int > /*[1:?]*/ v); - virtual const IfcParse::entity& declaration() const; + void setFlags(const std::vector< int > /*[1:?]*/& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTriangulatedIrregularNetwork (IfcEntityInstanceData&& e); - IfcTriangulatedIrregularNetwork (::Ifc4x3_add2::IfcCartesianPointList3D* v1_Coordinates, boost::optional< std::vector< std::vector< double > > > v2_Normals, boost::optional< bool > v3_Closed, std::vector< std::vector< int > > v4_CoordIndex, boost::optional< std::vector< int > /*[1:?]*/ > v5_PnIndex, std::vector< int > /*[1:?]*/ v6_Flags); - typedef aggregate_of< IfcTriangulatedIrregularNetwork > list; + // IfcTriangulatedIrregularNetwork (::Ifc4x3_add2::IfcCartesianPointList3D v1_Coordinates, std::optional< std::vector< std::vector< double > > > v2_Normals, std::optional< bool > v3_Closed, std::vector< std::vector< int > > v4_CoordIndex, std::optional< std::vector< int > /*[1:?]*/ > v5_PnIndex, std::vector< int > /*[1:?]*/ v6_Flags); }; -class IFC_PARSE_API IfcVehicleType : public IfcTransportationDeviceType { +class IFC_PARSE_API IfcVehicleType : public IfcTransportationDeviceType { public: + IfcVehicleType() {} + explicit IfcVehicleType (const std::weak_ptr& data) : IfcTransportationDeviceType(data) {} + ::Ifc4x3_add2::IfcVehicleTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcVehicleTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcVehicleTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcVehicleType (IfcEntityInstanceData&& e); - IfcVehicleType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcVehicleTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcVehicleType > list; + // IfcVehicleType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcVehicleTypeEnum::Value v10_PredefinedType); }; /// The window lining is the outer /// frame which enables the window to be fixed in position. The @@ -26874,57 +31244,58 @@ public: /// NOTE /// /// All offsets are given as a normalized ratio measure. -class IFC_PARSE_API IfcWindowLiningProperties : public IfcPreDefinedPropertySet { +class IFC_PARSE_API IfcWindowLiningProperties : public IfcPreDefinedPropertySet { public: + IfcWindowLiningProperties() {} + explicit IfcWindowLiningProperties (const std::weak_ptr& data) : IfcPreDefinedPropertySet(data) {} + /// Depth of the window lining (dimension measured perpendicular to window elevation plane). - boost::optional< double > LiningDepth() const; - void setLiningDepth(boost::optional< double > v); + std::optional< double > LiningDepth() const; + void setLiningDepth(const std::optional< double >& v); /// Thickness of the window lining (measured parallel to the window elevation plane). - boost::optional< double > LiningThickness() const; - void setLiningThickness(boost::optional< double > v); + std::optional< double > LiningThickness() const; + void setLiningThickness(const std::optional< double >& v); /// Thickness of the transom (horizontal separator of window panels within a window), measured parallel to the window elevation plane. The transom is part of the lining and the transom depth is assumed to be identical to the lining depth. - boost::optional< double > TransomThickness() const; - void setTransomThickness(boost::optional< double > v); + std::optional< double > TransomThickness() const; + void setTransomThickness(const std::optional< double >& v); /// Thickness of the mullion (vertical separator of window panels within a window), measured parallel to the window elevation plane. The mullion is part of the lining and the mullion depth is assumed to be identical to the lining depth. - boost::optional< double > MullionThickness() const; - void setMullionThickness(boost::optional< double > v); + std::optional< double > MullionThickness() const; + void setMullionThickness(const std::optional< double >& v); /// Offset of the transom centerline, measured along the z-axis of the window placement co-ordinate system. An offset value = 0.5 indicates that the transom is positioned in the middle of the window. - boost::optional< double > FirstTransomOffset() const; - void setFirstTransomOffset(boost::optional< double > v); + std::optional< double > FirstTransomOffset() const; + void setFirstTransomOffset(const std::optional< double >& v); /// Offset of the transom centerline for the second transom, measured along the x-axis of the window placement co-ordinate system. An offset value = 0.666 indicates that the second transom is positioned at two/third of the window. - boost::optional< double > SecondTransomOffset() const; - void setSecondTransomOffset(boost::optional< double > v); + std::optional< double > SecondTransomOffset() const; + void setSecondTransomOffset(const std::optional< double >& v); /// Offset of the mullion centerline, measured along the x-axis of the window placement co-ordinate system. An offset value = 0.5 indicates that the mullion is positioned in the middle of the window. - boost::optional< double > FirstMullionOffset() const; - void setFirstMullionOffset(boost::optional< double > v); + std::optional< double > FirstMullionOffset() const; + void setFirstMullionOffset(const std::optional< double >& v); /// Offset of the mullion centerline for the second mullion, measured along the x-axis of the window placement co-ordinate system. An offset value = 0.666 indicates that the second mullion is positioned at two/third of the window. - boost::optional< double > SecondMullionOffset() const; - void setSecondMullionOffset(boost::optional< double > v); + std::optional< double > SecondMullionOffset() const; + void setSecondMullionOffset(const std::optional< double >& v); /// Optional link to a shape aspect definition, which points to the part of the geometric representation of the window style, which is used to represent the lining. /// /// IFC2x4 CHANGE The attribute is deprecated and shall no longer be used, i.e. the value shall be NIL ($). - ::Ifc4x3_add2::IfcShapeAspect* ShapeAspectStyle() const; - void setShapeAspectStyle(::Ifc4x3_add2::IfcShapeAspect* v); + ::Ifc4x3_add2::IfcShapeAspect ShapeAspectStyle() const; + void setShapeAspectStyle(const ::Ifc4x3_add2::IfcShapeAspect& v); /// Offset of the window lining. The offset is given as distance along the y axis of the local placement (perpendicular to the window plane). /// /// IFC2x4 CHANGE: New attribute added at the end of the entity definition. - boost::optional< double > LiningOffset() const; - void setLiningOffset(boost::optional< double > v); + std::optional< double > LiningOffset() const; + void setLiningOffset(const std::optional< double >& v); /// Offset between the lining and the window panel measured along the x-axis of the local placement. Should be smaller or equal to the LiningThickness. /// /// IFC2x4 CHANGE: New attribute added at the end of the entity definition. - boost::optional< double > LiningToPanelOffsetX() const; - void setLiningToPanelOffsetX(boost::optional< double > v); + std::optional< double > LiningToPanelOffsetX() const; + void setLiningToPanelOffsetX(const std::optional< double >& v); /// Offset between the lining and the window panel measured along the y-axis of the local placement. Should be smaller or equal to the IfcWindowPanelProperties.PanelThickness. /// /// IFC2x4 CHANGE: New attribute added at the end of the entity definition. - boost::optional< double > LiningToPanelOffsetY() const; - void setLiningToPanelOffsetY(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > LiningToPanelOffsetY() const; + void setLiningToPanelOffsetY(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcWindowLiningProperties (IfcEntityInstanceData&& e); - IfcWindowLiningProperties (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_LiningDepth, boost::optional< double > v6_LiningThickness, boost::optional< double > v7_TransomThickness, boost::optional< double > v8_MullionThickness, boost::optional< double > v9_FirstTransomOffset, boost::optional< double > v10_SecondTransomOffset, boost::optional< double > v11_FirstMullionOffset, boost::optional< double > v12_SecondMullionOffset, ::Ifc4x3_add2::IfcShapeAspect* v13_ShapeAspectStyle, boost::optional< double > v14_LiningOffset, boost::optional< double > v15_LiningToPanelOffsetX, boost::optional< double > v16_LiningToPanelOffsetY); - typedef aggregate_of< IfcWindowLiningProperties > list; + // IfcWindowLiningProperties (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< double > v5_LiningDepth, std::optional< double > v6_LiningThickness, std::optional< double > v7_TransomThickness, std::optional< double > v8_MullionThickness, std::optional< double > v9_FirstTransomOffset, std::optional< double > v10_SecondTransomOffset, std::optional< double > v11_FirstMullionOffset, std::optional< double > v12_SecondMullionOffset, ::Ifc4x3_add2::IfcShapeAspect v13_ShapeAspectStyle, std::optional< double > v14_LiningOffset, std::optional< double > v15_LiningToPanelOffsetX, std::optional< double > v16_LiningToPanelOffsetY); }; /// A window panel is a casement, that is, a component, fixed or opening, /// consisting essentially of a frame and the infilling. The @@ -26971,30 +31342,31 @@ public: /// As shown in Figure 176, the panel is applied to the position within the lining as defined by the panel position attribute. The following parameter apply to that panel: FrameDepth, FrameThickness. /// /// Figure 176 — Window panel properties -class IFC_PARSE_API IfcWindowPanelProperties : public IfcPreDefinedPropertySet { +class IFC_PARSE_API IfcWindowPanelProperties : public IfcPreDefinedPropertySet { public: + IfcWindowPanelProperties() {} + explicit IfcWindowPanelProperties (const std::weak_ptr& data) : IfcPreDefinedPropertySet(data) {} + /// Types of window panel operations. Also used to assign standard symbolic presentations according to national building standards. ::Ifc4x3_add2::IfcWindowPanelOperationEnum::Value OperationType() const; - void setOperationType(::Ifc4x3_add2::IfcWindowPanelOperationEnum::Value v); + void setOperationType(const ::Ifc4x3_add2::IfcWindowPanelOperationEnum::Value& v); /// Position of this panel within the overall window style. ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value PanelPosition() const; - void setPanelPosition(::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value v); + void setPanelPosition(const ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value& v); /// Depth of panel frame, measured from front face to back face horizontally (i.e. perpendicular to the window (elevation) plane. - boost::optional< double > FrameDepth() const; - void setFrameDepth(boost::optional< double > v); + std::optional< double > FrameDepth() const; + void setFrameDepth(const std::optional< double >& v); /// Width of panel frame, measured from inside of panel (at glazing) to outside of panel (at lining), i.e. parallel to the window (elevation) plane. - boost::optional< double > FrameThickness() const; - void setFrameThickness(boost::optional< double > v); + std::optional< double > FrameThickness() const; + void setFrameThickness(const std::optional< double >& v); /// Optional link to a shape aspect definition, which points to the part of the geometric representation of the window style, which is used to represent the panel. /// /// IFC2x4 CHANGE The attribute is deprecated and shall no longer be used, i.e. the value shall be NIL ($). - ::Ifc4x3_add2::IfcShapeAspect* ShapeAspectStyle() const; - void setShapeAspectStyle(::Ifc4x3_add2::IfcShapeAspect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcShapeAspect ShapeAspectStyle() const; + void setShapeAspectStyle(const ::Ifc4x3_add2::IfcShapeAspect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcWindowPanelProperties (IfcEntityInstanceData&& e); - IfcWindowPanelProperties (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcWindowPanelOperationEnum::Value v5_OperationType, ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, ::Ifc4x3_add2::IfcShapeAspect* v9_ShapeAspectStyle); - typedef aggregate_of< IfcWindowPanelProperties > list; + // IfcWindowPanelProperties (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcWindowPanelOperationEnum::Value v5_OperationType, ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value v6_PanelPosition, std::optional< double > v7_FrameDepth, std::optional< double > v8_FrameThickness, ::Ifc4x3_add2::IfcShapeAspect v9_ShapeAspectStyle); }; /// The IfcActor defines all actors or human agents involved in a project during its full life cycle. It facilitates the use of person and organization definitions in the resource part of the IFC object model. This includes name, address, telecommunication addresses, and roles. /// @@ -27011,17 +31383,18 @@ public: /// IfcRelDefinesByProperties relationship. They are accessible by the inverse IsDefinedBy relationship. The following property set definitions specific to IfcActor are part of this IFC release: /// /// Pset_ActorCommon: common property set for all actor occurrences -class IFC_PARSE_API IfcActor : public IfcObject { +class IFC_PARSE_API IfcActor : public IfcObject { public: + IfcActor() {} + explicit IfcActor (const std::weak_ptr& data) : IfcObject(data) {} + /// Information about the actor. - ::Ifc4x3_add2::IfcActorSelect* TheActor() const; - void setTheActor(::Ifc4x3_add2::IfcActorSelect* v); - aggregate_of< IfcRelAssignsToActor >::ptr IsActingUpon() const; // INVERSE IfcRelAssignsToActor::RelatingActor - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcActorSelect TheActor() const; + void setTheActor(const ::Ifc4x3_add2::IfcActorSelect& v); + std::vector< IfcRelAssignsToActor > IsActingUpon() const; // INVERSE IfcRelAssignsToActor::RelatingActor + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcActor (IfcEntityInstanceData&& e); - IfcActor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcActorSelect* v6_TheActor); - typedef aggregate_of< IfcActor > list; + // IfcActor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcActorSelect v6_TheActor); }; /// An advanced B-rep is a boundary /// representation model in which all faces, edges and vertices are @@ -27056,13 +31429,14 @@ public: /// Figure 249 illustrates use of IfcAdvancedBrep for boundary representation models with b-spline surfaces. The diagram shows the topological and geometric representation items that are used for advanced B-reps, based on IfcAdvancedFace. /// /// Figure 249 — Advanced Brep -class IFC_PARSE_API IfcAdvancedBrep : public IfcManifoldSolidBrep { +class IFC_PARSE_API IfcAdvancedBrep : public IfcManifoldSolidBrep { public: - virtual const IfcParse::entity& declaration() const; + IfcAdvancedBrep() {} + explicit IfcAdvancedBrep (const std::weak_ptr& data) : IfcManifoldSolidBrep(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAdvancedBrep (IfcEntityInstanceData&& e); - IfcAdvancedBrep (::Ifc4x3_add2::IfcClosedShell* v1_Outer); - typedef aggregate_of< IfcAdvancedBrep > list; + // IfcAdvancedBrep (::Ifc4x3_add2::IfcClosedShell v1_Outer); }; /// The IfcAdvancedBrepWithVoids is a specialization of an /// advanced B-rep which contains one or more voids in its interior. @@ -27085,15 +31459,16 @@ public: /// All the faces of all the shells in the IfcAdvancedBrep /// and the IfcAdvancedBrepWithVoids.Voids shall be of type /// IfcAdvancedFace. -class IFC_PARSE_API IfcAdvancedBrepWithVoids : public IfcAdvancedBrep { +class IFC_PARSE_API IfcAdvancedBrepWithVoids : public IfcAdvancedBrep { public: - aggregate_of< ::Ifc4x3_add2::IfcClosedShell >::ptr Voids() const; - void setVoids(aggregate_of< ::Ifc4x3_add2::IfcClosedShell >::ptr v); - virtual const IfcParse::entity& declaration() const; + IfcAdvancedBrepWithVoids() {} + explicit IfcAdvancedBrepWithVoids (const std::weak_ptr& data) : IfcAdvancedBrep(data) {} + + std::vector< ::Ifc4x3_add2::IfcClosedShell > Voids() const; + void setVoids(const std::vector< ::Ifc4x3_add2::IfcClosedShell >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAdvancedBrepWithVoids (IfcEntityInstanceData&& e); - IfcAdvancedBrepWithVoids (::Ifc4x3_add2::IfcClosedShell* v1_Outer, aggregate_of< ::Ifc4x3_add2::IfcClosedShell >::ptr v2_Voids); - typedef aggregate_of< IfcAdvancedBrepWithVoids > list; + // IfcAdvancedBrepWithVoids (::Ifc4x3_add2::IfcClosedShell v1_Outer, std::vector< ::Ifc4x3_add2::IfcClosedShell > v2_Voids); }; /// Definition from IAI: An annotation is a graphical /// representation within the geometric (and spatial) context @@ -27268,16 +31643,17 @@ public: /// RepresentationIdentifier : 'Annotation' /// /// RepresentationType : 'GeometricSet' -class IFC_PARSE_API IfcAnnotation : public IfcProduct { +class IFC_PARSE_API IfcAnnotation : public IfcProduct { public: - boost::optional< ::Ifc4x3_add2::IfcAnnotationTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcAnnotationTypeEnum::Value > v); - aggregate_of< IfcRelContainedInSpatialStructure >::ptr ContainedInStructure() const; // INVERSE IfcRelContainedInSpatialStructure::RelatedElements - virtual const IfcParse::entity& declaration() const; + IfcAnnotation() {} + explicit IfcAnnotation (const std::weak_ptr& data) : IfcProduct(data) {} + + std::optional< ::Ifc4x3_add2::IfcAnnotationTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcAnnotationTypeEnum::Value >& v); + std::vector< IfcRelContainedInSpatialStructure > ContainedInStructure() const; // INVERSE IfcRelContainedInSpatialStructure::RelatedElements + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAnnotation (IfcEntityInstanceData&& e); - IfcAnnotation (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc4x3_add2::IfcAnnotationTypeEnum::Value > v8_PredefinedType); - typedef aggregate_of< IfcAnnotation > list; + // IfcAnnotation (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< ::Ifc4x3_add2::IfcAnnotationTypeEnum::Value > v8_PredefinedType); }; /// Definition from ISO/CD 10303-42:1992: A b_spline_surface is a general form of rational or polynomial parametric surface which is represented by control points, basis functions, and possibly, weights. As with the corresponding curve entity it has some special subtypes where some of the data can be derived. /// @@ -27348,34 +31724,35 @@ public: /// NOTE Corresponding ISO 10303 entity: b_spline_surface. Please refer to ISO/IS 10303-42:1994, p. 78 for the final definition of the formal standard. /// /// HISTORY New entity in IFC2x4. -class IFC_PARSE_API IfcBSplineSurface : public IfcBoundedSurface { +class IFC_PARSE_API IfcBSplineSurface : public IfcBoundedSurface { public: + IfcBSplineSurface() {} + explicit IfcBSplineSurface (const std::weak_ptr& data) : IfcBoundedSurface(data) {} + /// Algebraic degree of basis functions in u. int UDegree() const; - void setUDegree(int v); + void setUDegree(const int& v); /// Algebraic degree of basis functions in v. int VDegree() const; - void setVDegree(int v); + void setVDegree(const int& v); /// This is a list of lists of control points. - aggregate_of_aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr ControlPointsList() const; - void setControlPointsList(aggregate_of_aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v); + std::vector< std::vector< ::Ifc4x3_add2::IfcCartesianPoint > > ControlPointsList() const; + void setControlPointsList(const std::vector< std::vector< ::Ifc4x3_add2::IfcCartesianPoint > >& v); /// Indicator of special surface types. ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value SurfaceForm() const; - void setSurfaceForm(::Ifc4x3_add2::IfcBSplineSurfaceForm::Value v); + void setSurfaceForm(const ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value& v); /// Indication of whether the surface is closed in the u direction; this is for information only. boost::logic::tribool UClosed() const; - void setUClosed(boost::logic::tribool v); + void setUClosed(const boost::logic::tribool& v); /// Indication of whether the surface is closed in the v direction; this is for information only. boost::logic::tribool VClosed() const; - void setVClosed(boost::logic::tribool v); + void setVClosed(const boost::logic::tribool& v); /// Flag to indicate whether, or not, surface is self-intersecting; this is for information only. boost::logic::tribool SelfIntersect() const; - void setSelfIntersect(boost::logic::tribool v); - virtual const IfcParse::entity& declaration() const; + void setSelfIntersect(const boost::logic::tribool& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBSplineSurface (IfcEntityInstanceData&& e); - IfcBSplineSurface (int v1_UDegree, int v2_VDegree, aggregate_of_aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v3_ControlPointsList, ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect); - typedef aggregate_of< IfcBSplineSurface > list; + // IfcBSplineSurface (int v1_UDegree, int v2_VDegree, std::vector< std::vector< ::Ifc4x3_add2::IfcCartesianPoint > > v3_ControlPointsList, ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect); }; /// Definition from ISO 10303:42:1994: This is a B-spline surface in which the knot values are explicitly given. This subtype shall be used to represent non-uniform B-spline surfaces, and may also be used for other knot types. /// @@ -27384,28 +31761,29 @@ public: /// NOTE Corresponding ISO 10303 entity: b_spline_surface_with_knots. Please refer to ISO/IS 10303-42:1994, p. 81 for the final definition of the formal standard. /// /// HISTORY New entity in IFC2x4. -class IFC_PARSE_API IfcBSplineSurfaceWithKnots : public IfcBSplineSurface { +class IFC_PARSE_API IfcBSplineSurfaceWithKnots : public IfcBSplineSurface { public: + IfcBSplineSurfaceWithKnots() {} + explicit IfcBSplineSurfaceWithKnots (const std::weak_ptr& data) : IfcBSplineSurface(data) {} + /// The multiplicities of the knots in the u parameter direction. std::vector< int > /*[2:?]*/ UMultiplicities() const; - void setUMultiplicities(std::vector< int > /*[2:?]*/ v); + void setUMultiplicities(const std::vector< int > /*[2:?]*/& v); /// The multiplicities of the knots in the v parameter direction. std::vector< int > /*[2:?]*/ VMultiplicities() const; - void setVMultiplicities(std::vector< int > /*[2:?]*/ v); + void setVMultiplicities(const std::vector< int > /*[2:?]*/& v); /// The list of the distinct knots in the u parameter direction. std::vector< double > /*[2:?]*/ UKnots() const; - void setUKnots(std::vector< double > /*[2:?]*/ v); + void setUKnots(const std::vector< double > /*[2:?]*/& v); /// The list of the distinct knots in the v parameter direction. std::vector< double > /*[2:?]*/ VKnots() const; - void setVKnots(std::vector< double > /*[2:?]*/ v); + void setVKnots(const std::vector< double > /*[2:?]*/& v); /// The description of the knot type. ::Ifc4x3_add2::IfcKnotType::Value KnotSpec() const; - void setKnotSpec(::Ifc4x3_add2::IfcKnotType::Value v); - virtual const IfcParse::entity& declaration() const; + void setKnotSpec(const ::Ifc4x3_add2::IfcKnotType::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBSplineSurfaceWithKnots (IfcEntityInstanceData&& e); - IfcBSplineSurfaceWithKnots (int v1_UDegree, int v2_VDegree, aggregate_of_aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v3_ControlPointsList, ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect, std::vector< int > /*[2:?]*/ v8_UMultiplicities, std::vector< int > /*[2:?]*/ v9_VMultiplicities, std::vector< double > /*[2:?]*/ v10_UKnots, std::vector< double > /*[2:?]*/ v11_VKnots, ::Ifc4x3_add2::IfcKnotType::Value v12_KnotSpec); - typedef aggregate_of< IfcBSplineSurfaceWithKnots > list; + // IfcBSplineSurfaceWithKnots (int v1_UDegree, int v2_VDegree, std::vector< std::vector< ::Ifc4x3_add2::IfcCartesianPoint > > v3_ControlPointsList, ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect, std::vector< int > /*[2:?]*/ v8_UMultiplicities, std::vector< int > /*[2:?]*/ v9_VMultiplicities, std::vector< double > /*[2:?]*/ v10_UKnots, std::vector< double > /*[2:?]*/ v11_VKnots, ::Ifc4x3_add2::IfcKnotType::Value v12_KnotSpec); }; /// The IfcBlock is a Construction Solid Geometry (CSG) 3D /// primitive. It is defined by a position and a positve distance along @@ -27504,22 +31882,23 @@ public: /// +Y /// /// Figure 251 — Block textures -class IFC_PARSE_API IfcBlock : public IfcCsgPrimitive3D { +class IFC_PARSE_API IfcBlock : public IfcCsgPrimitive3D { public: + IfcBlock() {} + explicit IfcBlock (const std::weak_ptr& data) : IfcCsgPrimitive3D(data) {} + /// The size of the block along the placement X axis. It is provided by the inherited axis placement through SELF\IfcCsgPrimitive3D.Position.P[1]. double XLength() const; - void setXLength(double v); + void setXLength(const double& v); /// The size of the block along the placement Y axis. It is provided by the inherited axis placement through SELF\IfcCsgPrimitive3D.Position.P[2]. double YLength() const; - void setYLength(double v); + void setYLength(const double& v); /// The size of the block along the placement Z axis. It is provided by the inherited axis placement through SELF\IfcCsgPrimitive3D.Position.P[3]. double ZLength() const; - void setZLength(double v); - virtual const IfcParse::entity& declaration() const; + void setZLength(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBlock (IfcEntityInstanceData&& e); - IfcBlock (::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_XLength, double v3_YLength, double v4_ZLength); - typedef aggregate_of< IfcBlock > list; + // IfcBlock (::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_XLength, double v3_YLength, double v4_ZLength); }; /// A clipping result is defined as a special subtype of the general Boolean result (IfcBooleanResult). It constrains the operands and the operator of the Boolean result. /// @@ -27528,13 +31907,14 @@ public: /// NOTE The IfcBooleanClippingResult is defined as a special case of the boolean_result, as defined in ISO 10303-42:1994, p. 175. It has been added to apply further constraints to the CSG representation type. /// /// HISTORY New entity in IFC Release 2.x. -class IFC_PARSE_API IfcBooleanClippingResult : public IfcBooleanResult { +class IFC_PARSE_API IfcBooleanClippingResult : public IfcBooleanResult { public: - virtual const IfcParse::entity& declaration() const; + IfcBooleanClippingResult() {} + explicit IfcBooleanClippingResult (const std::weak_ptr& data) : IfcBooleanResult(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBooleanClippingResult (IfcEntityInstanceData&& e); - IfcBooleanClippingResult (::Ifc4x3_add2::IfcBooleanOperator::Value v1_Operator, ::Ifc4x3_add2::IfcBooleanOperand* v2_FirstOperand, ::Ifc4x3_add2::IfcBooleanOperand* v3_SecondOperand); - typedef aggregate_of< IfcBooleanClippingResult > list; + // IfcBooleanClippingResult (::Ifc4x3_add2::IfcBooleanOperator::Value v1_Operator, ::Ifc4x3_add2::IfcBooleanOperand v2_FirstOperand, ::Ifc4x3_add2::IfcBooleanOperand v3_SecondOperand); }; /// Definition from ISO/CD 10303-42:1992: A bounded curve is a curve of finite arc length with identifiable end points. /// @@ -27546,13 +31926,14 @@ public: /// /// A bounded curve has finite arc length. /// A bounded curve has a start point and an end point. -class IFC_PARSE_API IfcBoundedCurve : public IfcCurve, public IfcCurveOrEdgeCurve { +class IFC_PARSE_API IfcBoundedCurve : public IfcCurve { public: - virtual const IfcParse::entity& declaration() const; + IfcBoundedCurve() {} + explicit IfcBoundedCurve (const std::weak_ptr& data) : IfcCurve(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBoundedCurve (IfcEntityInstanceData&& e); - IfcBoundedCurve (); - typedef aggregate_of< IfcBoundedCurve > list; + // IfcBoundedCurve (); }; /// The building storey has an /// elevation and typically represents a (nearly) horizontal @@ -27731,25 +32112,27 @@ public: /// exterior building elements, an independent shape representation /// shall only be given, if the building storey is exposed /// independently from its constituting elements. -class IFC_PARSE_API IfcBuildingStorey : public IfcSpatialStructureElement { +class IFC_PARSE_API IfcBuildingStorey : public IfcSpatialStructureElement { public: + IfcBuildingStorey() {} + explicit IfcBuildingStorey (const std::weak_ptr& data) : IfcSpatialStructureElement(data) {} + /// Elevation of the base of this storey, relative to the 0,00 internal reference height of the building. The 0.00 level is given by the absolute above sea level height by the ElevationOfRefHeight attribute given at IfcBuilding. - boost::optional< double > Elevation() const; - void setElevation(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > Elevation() const; + void setElevation(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBuildingStorey (IfcEntityInstanceData&& e); - IfcBuildingStorey (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< double > v10_Elevation); - typedef aggregate_of< IfcBuildingStorey > list; + // IfcBuildingStorey (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< double > v10_Elevation); }; -class IFC_PARSE_API IfcBuiltElementType : public IfcElementType { +class IFC_PARSE_API IfcBuiltElementType : public IfcElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcBuiltElementType() {} + explicit IfcBuiltElementType (const std::weak_ptr& data) : IfcElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBuiltElementType (IfcEntityInstanceData&& e); - IfcBuiltElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcBuiltElementType > list; + // IfcBuiltElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// Definition from IAI: The IfcChimneyType /// defines a list of commonly shared property set definitions @@ -27776,16 +32159,17 @@ public: /// /// HISTORY New entity in Release /// IFC2x4. -class IFC_PARSE_API IfcChimneyType : public IfcBuiltElementType { +class IFC_PARSE_API IfcChimneyType : public IfcBuiltElementType { public: + IfcChimneyType() {} + explicit IfcChimneyType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a chimney element from which the type required may be set. ::Ifc4x3_add2::IfcChimneyTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcChimneyTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcChimneyTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcChimneyType (IfcEntityInstanceData&& e); - IfcChimneyType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcChimneyTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcChimneyType > list; + // IfcChimneyType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcChimneyTypeEnum::Value v10_PredefinedType); }; /// IfcCircleHollowProfileDef /// defines a section profile that provides the defining parameters of a @@ -27805,36 +32189,39 @@ public: /// By using offsets of the position location, the parameterized profile can be positioned centric (using x,y offsets = 0.), or at any position relative to the profile. Explicit coordinate offsets are used to define cardinal points (for example, upper-left bound). The parameterized profile is defined by a set of parameter attributes. /// /// Figure 312 — Circle hollow profile -class IFC_PARSE_API IfcCircleHollowProfileDef : public IfcCircleProfileDef { +class IFC_PARSE_API IfcCircleHollowProfileDef : public IfcCircleProfileDef { public: + IfcCircleHollowProfileDef() {} + explicit IfcCircleHollowProfileDef (const std::weak_ptr& data) : IfcCircleProfileDef(data) {} + /// Thickness of the material, it is the difference between the outer and inner radius. double WallThickness() const; - void setWallThickness(double v); - virtual const IfcParse::entity& declaration() const; + void setWallThickness(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCircleHollowProfileDef (IfcEntityInstanceData&& e); - IfcCircleHollowProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D* v3_Position, double v4_Radius, double v5_WallThickness); - typedef aggregate_of< IfcCircleHollowProfileDef > list; + // IfcCircleHollowProfileDef (::Ifc4x3_add2::IfcProfileTypeEnum::Value v1_ProfileType, std::optional< std::string > v2_ProfileName, ::Ifc4x3_add2::IfcAxis2Placement2D v3_Position, double v4_Radius, double v5_WallThickness); }; -class IFC_PARSE_API IfcCivilElementType : public IfcElementType { +class IFC_PARSE_API IfcCivilElementType : public IfcElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcCivilElementType() {} + explicit IfcCivilElementType (const std::weak_ptr& data) : IfcElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCivilElementType (IfcEntityInstanceData&& e); - IfcCivilElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcCivilElementType > list; + // IfcCivilElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; -class IFC_PARSE_API IfcClothoid : public IfcSpiral { +class IFC_PARSE_API IfcClothoid : public IfcSpiral { public: + IfcClothoid() {} + explicit IfcClothoid (const std::weak_ptr& data) : IfcSpiral(data) {} + double ClothoidConstant() const; - void setClothoidConstant(double v); - virtual const IfcParse::entity& declaration() const; + void setClothoidConstant(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcClothoid (IfcEntityInstanceData&& e); - IfcClothoid (::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_ClothoidConstant); - typedef aggregate_of< IfcClothoid > list; + // IfcClothoid (::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_ClothoidConstant); }; /// Definition from IAI: The element type /// IfcColumnType defines commonly shared information for @@ -27934,16 +32321,17 @@ public: /// IfcShapeRepresentation are restricted in the same way as /// those for IfcColumn and /// IfcColumnStandardCase -class IFC_PARSE_API IfcColumnType : public IfcBuiltElementType { +class IFC_PARSE_API IfcColumnType : public IfcBuiltElementType { public: + IfcColumnType() {} + explicit IfcColumnType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a column element from which the type required may be set. ::Ifc4x3_add2::IfcColumnTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcColumnTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcColumnTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcColumnType (IfcEntityInstanceData&& e); - IfcColumnType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcColumnTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcColumnType > list; + // IfcColumnType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcColumnTypeEnum::Value v10_PredefinedType); }; /// The IfcComplexPropertyTemplate defines the template for /// all complex properties, either the IfcComplexProperty's, @@ -27953,20 +32341,21 @@ public: /// attribute. /// /// HISTORY  New entity in IFC2x4. -class IFC_PARSE_API IfcComplexPropertyTemplate : public IfcPropertyTemplate { +class IFC_PARSE_API IfcComplexPropertyTemplate : public IfcPropertyTemplate { public: - boost::optional< std::string > UsageName() const; - void setUsageName(boost::optional< std::string > v); - boost::optional< ::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Value > TemplateType() const; - void setTemplateType(boost::optional< ::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Value > v); + IfcComplexPropertyTemplate() {} + explicit IfcComplexPropertyTemplate (const std::weak_ptr& data) : IfcPropertyTemplate(data) {} + + std::optional< std::string > UsageName() const; + void setUsageName(const std::optional< std::string >& v); + std::optional< ::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Value > TemplateType() const; + void setTemplateType(const std::optional< ::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Value >& v); /// Reference to a set of property templates. It should only be provided, if the PropertyType is set to COMPLEX. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertyTemplate >::ptr > HasPropertyTemplates() const; - void setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertyTemplate >::ptr > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< ::Ifc4x3_add2::IfcPropertyTemplate > > HasPropertyTemplates() const; + void setHasPropertyTemplates(const std::optional< std::vector< ::Ifc4x3_add2::IfcPropertyTemplate > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcComplexPropertyTemplate (IfcEntityInstanceData&& e); - IfcComplexPropertyTemplate (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_UsageName, boost::optional< ::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Value > v6_TemplateType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertyTemplate >::ptr > v7_HasPropertyTemplates); - typedef aggregate_of< IfcComplexPropertyTemplate > list; + // IfcComplexPropertyTemplate (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_UsageName, std::optional< ::Ifc4x3_add2::IfcComplexPropertyTemplateTypeEnum::Value > v6_TemplateType, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertyTemplate > > v7_HasPropertyTemplates); }; /// Definition from ISO/CD 10303-42:1992: A composite /// curve is a collection of curves joined end-to-end. The @@ -28034,19 +32423,20 @@ public: /// correctly specifies the senses of the component curves. /// When traversed in the direction indicated by /// SameSense, the segments shall join end-to-end. -class IFC_PARSE_API IfcCompositeCurve : public IfcBoundedCurve { +class IFC_PARSE_API IfcCompositeCurve : public IfcBoundedCurve { public: + IfcCompositeCurve() {} + explicit IfcCompositeCurve (const std::weak_ptr& data) : IfcBoundedCurve(data) {} + /// The component bounded curves, their transitions and senses. The transition attribute for the last segment defines the transition between the end of the last segment and the start of the first; this transition attribute may take the value discontinuous, which indicates an open curve. - aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr Segments() const; - void setSegments(aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr v); + std::vector< ::Ifc4x3_add2::IfcSegment > Segments() const; + void setSegments(const std::vector< ::Ifc4x3_add2::IfcSegment >& v); /// Indication of whether the curve intersects itself or not; this is for information only. boost::logic::tribool SelfIntersect() const; - void setSelfIntersect(boost::logic::tribool v); - virtual const IfcParse::entity& declaration() const; + void setSelfIntersect(const boost::logic::tribool& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCompositeCurve (IfcEntityInstanceData&& e); - IfcCompositeCurve (aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect); - typedef aggregate_of< IfcCompositeCurve > list; + // IfcCompositeCurve (std::vector< ::Ifc4x3_add2::IfcSegment > v1_Segments, boost::logic::tribool v2_SelfIntersect); }; /// Definition from ISO/CD 10303-42:1992 A composite curve on surface is a collection of segments which are curves on a surface. Each segment shall lie on the basis surface. /// @@ -28059,29 +32449,31 @@ public: /// NOTE Corresponding ISO 10303 entity: composite_curve_on_surface. Please refer to ISO/IS 10303-42:1994, p.64 for the final definition of the formal standard. /// /// HISTORY New entity in IFC2x4. -class IFC_PARSE_API IfcCompositeCurveOnSurface : public IfcCompositeCurve, public IfcCurveOnSurface { +class IFC_PARSE_API IfcCompositeCurveOnSurface : public IfcCompositeCurve { public: - virtual const IfcParse::entity& declaration() const; + IfcCompositeCurveOnSurface() {} + explicit IfcCompositeCurveOnSurface (const std::weak_ptr& data) : IfcCompositeCurve(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCompositeCurveOnSurface (IfcEntityInstanceData&& e); - IfcCompositeCurveOnSurface (aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect); - typedef aggregate_of< IfcCompositeCurveOnSurface > list; + // IfcCompositeCurveOnSurface (std::vector< ::Ifc4x3_add2::IfcSegment > v1_Segments, boost::logic::tribool v2_SelfIntersect); }; /// Definition from ISO/CD 10303-42:1992: A conic (IfcConic) is a planar curve which could be produced by intersecting a plane with a cone. A conic is defined in terms of its intrinsic geometric properties rather than being described in terms of other geometry. A conic class always has a placement coordinate system defined by a two or three dimensional placement. The parametric representation is defined in terms of this placement coordinate system. /// /// NOTE Corresponding ISO 10303 entity: conic, only the following subtypes have been incorporated into IFC 1.0, 1.5 & 2.0: circle as IfcCircle, ellipse as IfcEllipse. The derived attribute Dim has been added at this level and was therefore demoted from the geometric_representation_item. Please refer to ISO/IS 10303-42:1994, p. 38 for the final definition of the formal standard. /// /// HISTORY New class in IFC Release 1.0 -class IFC_PARSE_API IfcConic : public IfcCurve { +class IFC_PARSE_API IfcConic : public IfcCurve { public: + IfcConic() {} + explicit IfcConic (const std::weak_ptr& data) : IfcCurve(data) {} + /// The location and orientation of the conic. Further details of the interpretation of this attribute are given for the individual subtypes." - ::Ifc4x3_add2::IfcAxis2Placement* Position() const; - void setPosition(::Ifc4x3_add2::IfcAxis2Placement* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcAxis2Placement Position() const; + void setPosition(const ::Ifc4x3_add2::IfcAxis2Placement& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConic (IfcEntityInstanceData&& e); - IfcConic (::Ifc4x3_add2::IfcAxis2Placement* v1_Position); - typedef aggregate_of< IfcConic > list; + // IfcConic (::Ifc4x3_add2::IfcAxis2Placement v1_Position); }; /// The resource type IfcConstructionEquipmentType defines commonly shared information for occurrences of construction equipment resources. The set of shared information may include: /// @@ -28096,16 +32488,17 @@ public: /// /// Assignment use definition /// In addition to assignments specified at the base class IfcConstructionResourceType, a construction equipment resource type may have assignments of its own using IfcRelAssignsToResource where RelatingResource refers to the IfcConstructionEquipmentResourceType and RelatedObjects contains one or more IfcTypeProduct subtypes. Such relationship indicates the type of equipment to be used as input, which is instantiated as an occurrence assigned for each resource occurrence. There may be multiple chains of production where such product type may have its own task and resource types assigned indicating how to assemble such equipment. -class IFC_PARSE_API IfcConstructionEquipmentResourceType : public IfcConstructionResourceType { +class IFC_PARSE_API IfcConstructionEquipmentResourceType : public IfcConstructionResourceType { public: + IfcConstructionEquipmentResourceType() {} + explicit IfcConstructionEquipmentResourceType (const std::weak_ptr& data) : IfcConstructionResourceType(data) {} + /// Defines types of construction equipment resources. ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConstructionEquipmentResourceType (IfcEntityInstanceData&& e); - IfcConstructionEquipmentResourceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value v12_PredefinedType); - typedef aggregate_of< IfcConstructionEquipmentResourceType > list; + // IfcConstructionEquipmentResourceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v11_BaseQuantity, ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value v12_PredefinedType); }; /// The resource type IfcConstructionMaterialType defines commonly shared information for occurrences of construction material resources. The set of shared information may include: /// @@ -28120,16 +32513,17 @@ public: /// /// Assignment Use Definition /// In addition to assignments specified at the base class IfcConstructionResourceType, a construction material resource type may have assignments of its own using IfcRelAssignsToResource where RelatingResource refers to the IfcConstructionMaterialResourceType and RelatedObjects contains one or more IfcTypeProduct subtypes. Such relationship indicates material specifications to be used as input, which is instantiated as an occurrence assigned for each resource occurrence. The IfcGeographicElementType product type may be used to hold the material representation (via IfcRelAssociatesMaterial. There may be multiple chains of production where such product type may have its own task and resource types assigned indicating how to transport or extract such material. -class IFC_PARSE_API IfcConstructionMaterialResourceType : public IfcConstructionResourceType { +class IFC_PARSE_API IfcConstructionMaterialResourceType : public IfcConstructionResourceType { public: + IfcConstructionMaterialResourceType() {} + explicit IfcConstructionMaterialResourceType (const std::weak_ptr& data) : IfcConstructionResourceType(data) {} + /// Defines types of construction material resources. ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConstructionMaterialResourceType (IfcEntityInstanceData&& e); - IfcConstructionMaterialResourceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value v12_PredefinedType); - typedef aggregate_of< IfcConstructionMaterialResourceType > list; + // IfcConstructionMaterialResourceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v11_BaseQuantity, ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value v12_PredefinedType); }; /// The resource type IfcConstructionProductType defines commonly shared information for occurrences of construction product resources. The set of shared information may include: /// @@ -28144,16 +32538,17 @@ public: /// /// Assignment use definition /// In addition to assignments specified at the base class IfcConstructionResourceType, a construction product resource type may have assignments of its own using IfcRelAssignsToResource where RelatingResource refers to the IfcConstructionProductResourceType and RelatedObjects contains one or more IfcTypeProduct subtypes. Such relationship indicates the type of product to be used as input, which is instantiated as an occurrence assigned for each resource occurrence. There may be multiple chains of production where such product type may have its own task and resource types assigned. -class IFC_PARSE_API IfcConstructionProductResourceType : public IfcConstructionResourceType { +class IFC_PARSE_API IfcConstructionProductResourceType : public IfcConstructionResourceType { public: + IfcConstructionProductResourceType() {} + explicit IfcConstructionProductResourceType (const std::weak_ptr& data) : IfcConstructionResourceType(data) {} + /// Defines types of construction product resources. ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConstructionProductResourceType (IfcEntityInstanceData&& e); - IfcConstructionProductResourceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value v12_PredefinedType); - typedef aggregate_of< IfcConstructionProductResourceType > list; + // IfcConstructionProductResourceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::string > v7_Identification, std::optional< std::string > v8_LongDescription, std::optional< std::string > v9_ResourceType, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v10_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v11_BaseQuantity, ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value v12_PredefinedType); }; /// IfcConstructionResource is an abstract generalization of the different resources used in /// construction projects, mainly labor, material, equipment and product resources, plus subcontracted resources and aggregations such as a crew resource. @@ -28227,19 +32622,20 @@ public: /// IfcWorkSchedule.Name indicating the name of the baseline. /// /// Figure 192 — Construction resource baseline use -class IFC_PARSE_API IfcConstructionResource : public IfcResource { +class IFC_PARSE_API IfcConstructionResource : public IfcResource { public: - ::Ifc4x3_add2::IfcResourceTime* Usage() const; - void setUsage(::Ifc4x3_add2::IfcResourceTime* v); - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > BaseCosts() const; - void setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v); - ::Ifc4x3_add2::IfcPhysicalQuantity* BaseQuantity() const; - void setBaseQuantity(::Ifc4x3_add2::IfcPhysicalQuantity* v); - virtual const IfcParse::entity& declaration() const; + IfcConstructionResource() {} + explicit IfcConstructionResource (const std::weak_ptr& data) : IfcResource(data) {} + + ::Ifc4x3_add2::IfcResourceTime Usage() const; + void setUsage(const ::Ifc4x3_add2::IfcResourceTime& v); + std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > BaseCosts() const; + void setBaseCosts(const std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > >& v); + ::Ifc4x3_add2::IfcPhysicalQuantity BaseQuantity() const; + void setBaseQuantity(const ::Ifc4x3_add2::IfcPhysicalQuantity& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConstructionResource (IfcEntityInstanceData&& e); - IfcConstructionResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v10_BaseQuantity); - typedef aggregate_of< IfcConstructionResource > list; + // IfcConstructionResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime v8_Usage, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v10_BaseQuantity); }; /// IfcControl is the abstract generalization of all concepts that control or constrain the utilization of products, processes, or resources in general. It can be seen as a regulation, cost schedule, request or order, or other requirements applied to a product, process or resource whose requirements and provisions must be fulfilled. /// @@ -28251,33 +32647,35 @@ public: /// /// Relationship use definition /// Controls have assignments from products, processes, or other objects by using the relationship object IfcRelAssignsToControl. -class IFC_PARSE_API IfcControl : public IfcObject { +class IFC_PARSE_API IfcControl : public IfcObject { public: + IfcControl() {} + explicit IfcControl (const std::weak_ptr& data) : IfcObject(data) {} + /// An identifying designation given to a control /// It is the identifier at the occurrence level. /// /// IFC2x4 CHANGE Attribute unified by promoting from various subtypes of IfcControl. - boost::optional< std::string > Identification() const; - void setIdentification(boost::optional< std::string > v); - aggregate_of< IfcRelAssignsToControl >::ptr Controls() const; // INVERSE IfcRelAssignsToControl::RelatingControl - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Identification() const; + void setIdentification(const std::optional< std::string >& v); + std::vector< IfcRelAssignsToControl > Controls() const; // INVERSE IfcRelAssignsToControl::RelatingControl + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcControl (IfcEntityInstanceData&& e); - IfcControl (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification); - typedef aggregate_of< IfcControl > list; + // IfcControl (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification); }; -class IFC_PARSE_API IfcCosineSpiral : public IfcSpiral { +class IFC_PARSE_API IfcCosineSpiral : public IfcSpiral { public: + IfcCosineSpiral() {} + explicit IfcCosineSpiral (const std::weak_ptr& data) : IfcSpiral(data) {} + double CosineTerm() const; - void setCosineTerm(double v); - boost::optional< double > ConstantTerm() const; - void setConstantTerm(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + void setCosineTerm(const double& v); + std::optional< double > ConstantTerm() const; + void setConstantTerm(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCosineSpiral (IfcEntityInstanceData&& e); - IfcCosineSpiral (::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_CosineTerm, boost::optional< double > v3_ConstantTerm); - typedef aggregate_of< IfcCosineSpiral > list; + // IfcCosineSpiral (::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_CosineTerm, std::optional< double > v3_ConstantTerm); }; /// An IfcCostItem describes a cost or financial value together with descriptive information that describes its context in a form that enables it to be used within a cost schedule. An IfcCostItem can be used to represent the cost of goods and services, the execution of works by a process, lifecycle cost and more. /// @@ -28315,13 +32713,16 @@ public: /// Figure 158 illustrates cost item assignment derived from building elements. The IfcRelAssignsToControl relationship indicates building elements for which quantities are derived. Not shown, costs may also be derived from building elements by traversing assignment relationships from the assigned IfcProduct to IfcProcess to IfcResource, where all costs ultimately originate at resources. It is also possible for cost items to have assignments from processes or resources directly. /// /// Figure 168 — Cost assignment -class IFC_PARSE_API IfcCostItem : public IfcControl { +class IFC_PARSE_API IfcCostItem : public IfcControl { public: + IfcCostItem() {} + explicit IfcCostItem (const std::weak_ptr& data) : IfcControl(data) {} + /// Predefined generic type for a cost item that is specified in an enumeration. There may be a property set given specificly for the predefined types. /// /// IFC2x4 CHANGE The attribute has been added. - boost::optional< ::Ifc4x3_add2::IfcCostItemTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCostItemTypeEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcCostItemTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCostItemTypeEnum::Value >& v); /// Component costs for which the total cost for the cost item is calculated, and then multiplied by the total CostQuantities if provided. /// /// If CostQuantities is provided then values indicate unit costs, otherwise values indicate total costs. @@ -28329,18 +32730,16 @@ public: /// For calculation purposes, the cost values may be directly added unless they have qualifications. Cost values with qualifications (e.g. IfcCostValue.ApplicableDate, IfcCostValue.FixedUntilDate) should be excluded from such calculation if they do not apply. /// /// IFC2x4 CHANGE The attribute has been added. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcCostValue >::ptr > CostValues() const; - void setCostValues(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcCostValue >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcCostValue > > CostValues() const; + void setCostValues(const std::optional< std::vector< ::Ifc4x3_add2::IfcCostValue > >& v); /// Component quantities of the same type for which the total quantity for the cost item is calculated as the sum. /// /// IFC2x4 CHANGE The attribute has been added. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr > CostQuantities() const; - void setCostQuantities(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity > > CostQuantities() const; + void setCostQuantities(const std::optional< std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCostItem (IfcEntityInstanceData&& e); - IfcCostItem (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< ::Ifc4x3_add2::IfcCostItemTypeEnum::Value > v7_PredefinedType, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcCostValue >::ptr > v8_CostValues, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPhysicalQuantity >::ptr > v9_CostQuantities); - typedef aggregate_of< IfcCostItem > list; + // IfcCostItem (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< ::Ifc4x3_add2::IfcCostItemTypeEnum::Value > v7_PredefinedType, std::optional< std::vector< ::Ifc4x3_add2::IfcCostValue > > v8_CostValues, std::optional< std::vector< ::Ifc4x3_add2::IfcPhysicalQuantity > > v9_CostQuantities); }; /// An IfcCostSchedule brings together instances of IfcCostItem either for the purpose of identifying purely cost information as in an estimate for constructions costs or for including cost information within another presentation form such as a work order. /// @@ -28365,13 +32764,16 @@ public: /// /// Approval Use Definition /// Approvals may be associated to indicate the status of acceptance or rejection using the IfcRelAssociatesApproval relationship where RelatingApproval refers to an IfcApproval and RelatedObjects contains the IfcCostSchedule. Approvals may be split into sub-approvals using IfcApprovalRelationship to track approval status separately for each party where RelatingApproval refers to the higher-level approval and RelatedApprovals contains one or more lower-level approvals. The hierarchy of approvals implies sequencing such that a higher-level approval is not executed until all of its lower-level approvals have been accepted. -class IFC_PARSE_API IfcCostSchedule : public IfcControl { +class IFC_PARSE_API IfcCostSchedule : public IfcControl { public: + IfcCostSchedule() {} + explicit IfcCostSchedule (const std::weak_ptr& data) : IfcControl(data) {} + /// Predefined generic type for a cost schedule that is specified in an enumeration. There may be a property set given specifically for the predefined types. /// /// IFC2x4 CHANGE The attribute has been made optional. - boost::optional< ::Ifc4x3_add2::IfcCostScheduleTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCostScheduleTypeEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcCostScheduleTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCostScheduleTypeEnum::Value >& v); /// The current status of a cost schedule. Examples of status values that might be used for a cost schedule status include: /// /// PLANNED @@ -28379,34 +32781,33 @@ public: /// AGREED /// ISSUED /// STARTED - boost::optional< std::string > Status() const; - void setStatus(boost::optional< std::string > v); + std::optional< std::string > Status() const; + void setStatus(const std::optional< std::string >& v); /// The date and time on which the cost schedule was submitted. /// /// IFC2x4 CHANGE Type changed from IfcDateTimeSelect. - boost::optional< std::string > SubmittedOn() const; - void setSubmittedOn(boost::optional< std::string > v); + std::optional< std::string > SubmittedOn() const; + void setSubmittedOn(const std::optional< std::string >& v); /// The date and time that this cost schedule is updated; this allows tracking the schedule history. /// /// IFC2x4 CHANGE Type changed from IfcDateTimeSelect. - boost::optional< std::string > UpdateDate() const; - void setUpdateDate(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > UpdateDate() const; + void setUpdateDate(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCostSchedule (IfcEntityInstanceData&& e); - IfcCostSchedule (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< ::Ifc4x3_add2::IfcCostScheduleTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_SubmittedOn, boost::optional< std::string > v10_UpdateDate); - typedef aggregate_of< IfcCostSchedule > list; + // IfcCostSchedule (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< ::Ifc4x3_add2::IfcCostScheduleTypeEnum::Value > v7_PredefinedType, std::optional< std::string > v8_Status, std::optional< std::string > v9_SubmittedOn, std::optional< std::string > v10_UpdateDate); }; -class IFC_PARSE_API IfcCourseType : public IfcBuiltElementType { +class IFC_PARSE_API IfcCourseType : public IfcBuiltElementType { public: + IfcCourseType() {} + explicit IfcCourseType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + ::Ifc4x3_add2::IfcCourseTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcCourseTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcCourseTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCourseType (IfcEntityInstanceData&& e); - IfcCourseType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCourseTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcCourseType > list; + // IfcCourseType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCourseTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: The element type /// IfcCoveringType defines commonly shared information for @@ -28487,16 +32888,17 @@ public: /// RepresentationIdentifier and RepresentationType of /// IfcShapeRepresentation are restricted in the same way as /// those for IfcCoveringType. -class IFC_PARSE_API IfcCoveringType : public IfcBuiltElementType { +class IFC_PARSE_API IfcCoveringType : public IfcBuiltElementType { public: + IfcCoveringType() {} + explicit IfcCoveringType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Predefined types to define the particular type of the covering. There may be property set definitions available for each predefined type. ::Ifc4x3_add2::IfcCoveringTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcCoveringTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcCoveringTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCoveringType (IfcEntityInstanceData&& e); - IfcCoveringType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCoveringTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcCoveringType > list; + // IfcCoveringType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCoveringTypeEnum::Value v10_PredefinedType); }; /// IfcCrewResource represents a collection of internal resources used in construction processes. /// @@ -28508,17 +32910,18 @@ public: /// /// Type use definition /// IfcCrewResource defines the occurrence of any crew resource; common information about crew resource types is handled by IfcCrewResourceType. The IfcCrewResourceType (if present) may establish the common type name, common properties, and common productivities for various task types using IfcRelAssignsToProcess. The IfcCrewResourceType is attached using the IfcRelDefinesByType.RelatingType objectified relationship and is accessible by the inverse IsTypedBy attribute. -class IFC_PARSE_API IfcCrewResource : public IfcConstructionResource { +class IFC_PARSE_API IfcCrewResource : public IfcConstructionResource { public: + IfcCrewResource() {} + explicit IfcCrewResource (const std::weak_ptr& data) : IfcConstructionResource(data) {} + /// Defines types of crew resources. /// IFC2x4 New attribute - boost::optional< ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCrewResource (IfcEntityInstanceData&& e); - IfcCrewResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value > v11_PredefinedType); - typedef aggregate_of< IfcCrewResource > list; + // IfcCrewResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime v8_Usage, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v10_BaseQuantity, std::optional< ::Ifc4x3_add2::IfcCrewResourceTypeEnum::Value > v11_PredefinedType); }; /// Definition from IAI: The element type (IfcCurtainWallType) /// defines a list of commonly shared property set definitions of a curtain @@ -28541,16 +32944,17 @@ public: /// /// HISTORY /// New entity in Release IFC2x Editon 3. -class IFC_PARSE_API IfcCurtainWallType : public IfcBuiltElementType { +class IFC_PARSE_API IfcCurtainWallType : public IfcBuiltElementType { public: + IfcCurtainWallType() {} + explicit IfcCurtainWallType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a curtain wall element from which the type required may be set. ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCurtainWallType (IfcEntityInstanceData&& e); - IfcCurtainWallType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcCurtainWallType > list; + // IfcCurtainWallType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value v10_PredefinedType); }; /// Definition from ISO/CD 10303-42:1992: A cylindrical surface is a surface at a constant distance (the radius) from a straight line. A cylindrical surface is defined by its radius and its orientation and location. The data is to be interpreted as follows: /// @@ -28606,34 +33010,37 @@ public: /// NOTE Corresponding ISO 10303 entity: plane. Please refer to ISO/IS 10303-42:1994, p.70 for the final definition of the formal standard. /// /// HISTORY New class in IFC2x4. -class IFC_PARSE_API IfcCylindricalSurface : public IfcElementarySurface { +class IFC_PARSE_API IfcCylindricalSurface : public IfcElementarySurface { public: + IfcCylindricalSurface() {} + explicit IfcCylindricalSurface (const std::weak_ptr& data) : IfcElementarySurface(data) {} + /// The radius of the cylindrical surface. double Radius() const; - void setRadius(double v); - virtual const IfcParse::entity& declaration() const; + void setRadius(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCylindricalSurface (IfcEntityInstanceData&& e); - IfcCylindricalSurface (::Ifc4x3_add2::IfcAxis2Placement3D* v1_Position, double v2_Radius); - typedef aggregate_of< IfcCylindricalSurface > list; + // IfcCylindricalSurface (::Ifc4x3_add2::IfcAxis2Placement3D v1_Position, double v2_Radius); }; -class IFC_PARSE_API IfcDeepFoundationType : public IfcBuiltElementType { +class IFC_PARSE_API IfcDeepFoundationType : public IfcBuiltElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcDeepFoundationType() {} + explicit IfcDeepFoundationType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDeepFoundationType (IfcEntityInstanceData&& e); - IfcDeepFoundationType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcDeepFoundationType > list; + // IfcDeepFoundationType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; -class IFC_PARSE_API IfcDirectrixDerivedReferenceSweptAreaSolid : public IfcFixedReferenceSweptAreaSolid { +class IFC_PARSE_API IfcDirectrixDerivedReferenceSweptAreaSolid : public IfcFixedReferenceSweptAreaSolid { public: - virtual const IfcParse::entity& declaration() const; + IfcDirectrixDerivedReferenceSweptAreaSolid() {} + explicit IfcDirectrixDerivedReferenceSweptAreaSolid (const std::weak_ptr& data) : IfcFixedReferenceSweptAreaSolid(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDirectrixDerivedReferenceSweptAreaSolid (IfcEntityInstanceData&& e); - IfcDirectrixDerivedReferenceSweptAreaSolid (::Ifc4x3_add2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_add2::IfcCurve* v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect* v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect* v5_EndParam, ::Ifc4x3_add2::IfcDirection* v6_FixedReference); - typedef aggregate_of< IfcDirectrixDerivedReferenceSweptAreaSolid > list; + // IfcDirectrixDerivedReferenceSweptAreaSolid (::Ifc4x3_add2::IfcProfileDef v1_SweptArea, ::Ifc4x3_add2::IfcAxis2Placement3D v2_Position, ::Ifc4x3_add2::IfcCurve v3_Directrix, ::Ifc4x3_add2::IfcCurveMeasureSelect v4_StartParam, ::Ifc4x3_add2::IfcCurveMeasureSelect v5_EndParam, ::Ifc4x3_add2::IfcDirection v6_FixedReference); }; /// Definition from IAI: The /// IfcDistributionElementType defines a list of commonly @@ -28663,13 +33070,14 @@ public: /// IFC2x4 CHANGE The entity is marked /// as deprecated for instantiation - will be made ABSTRACT after /// IFC2x4. -class IFC_PARSE_API IfcDistributionElementType : public IfcElementType { +class IFC_PARSE_API IfcDistributionElementType : public IfcElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcDistributionElementType() {} + explicit IfcDistributionElementType (const std::weak_ptr& data) : IfcElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDistributionElementType (IfcEntityInstanceData&& e); - IfcDistributionElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcDistributionElementType > list; + // IfcDistributionElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// The element type IfcDistributionFlowElementType defines a list of commonly shared property set definitions of an element and an optional set of product representations. It is used to define an element specification (the specific product information that is common to all occurrences of that product type). /// @@ -28736,13 +33144,14 @@ public: /// If an element type is defined parametrically (such as a flow segment type defining common material profile but no particular length or path), then no representations shall be asserted at the type. /// /// NOTE: The product representations are defined as representation maps (at the level of the supertype IfcTypeProduct, which get assigned by an element occurrence instance through the IfcShapeRepresentation.Item[1] being an IfcMappedItem. -class IFC_PARSE_API IfcDistributionFlowElementType : public IfcDistributionElementType { +class IFC_PARSE_API IfcDistributionFlowElementType : public IfcDistributionElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcDistributionFlowElementType() {} + explicit IfcDistributionFlowElementType (const std::weak_ptr& data) : IfcDistributionElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDistributionFlowElementType (IfcEntityInstanceData&& e); - IfcDistributionFlowElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcDistributionFlowElementType > list; + // IfcDistributionFlowElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// The door lining is the frame which /// enables the door leaf to be fixed in position. The door lining is @@ -28839,58 +33248,59 @@ public: /// Figure 172 — Door lining properties /// /// NOTE LiningDepth describes the length of the lining along the reveal of the door opening. It can be given by an absolute value if the door lining has a specific depth depending on the door style. However often it is equal to the wall thickness. If the same door style is used (like the same type of single swing door), but inserted into different walls with different thicknesses, it would be necessary to create a special door style for each wall thickness. Therefore several CAD systems allow to set the value to "automatically aligned" to wall thickness. This should be exchanged by leaving the optional attribute LiningDepth unassigned. The same agreement applies to ThresholdDepth. -class IFC_PARSE_API IfcDoorLiningProperties : public IfcPreDefinedPropertySet { +class IFC_PARSE_API IfcDoorLiningProperties : public IfcPreDefinedPropertySet { public: + IfcDoorLiningProperties() {} + explicit IfcDoorLiningProperties (const std::weak_ptr& data) : IfcPreDefinedPropertySet(data) {} + /// Depth of the door lining, measured perpendicular to the plane of the door lining. If omitted (and with a given value to lining thickness) it indicates an adjustable depth (i.e. a depth that adjusts to the thickness of the wall into which the occurrence of this door style is inserted). - boost::optional< double > LiningDepth() const; - void setLiningDepth(boost::optional< double > v); + std::optional< double > LiningDepth() const; + void setLiningDepth(const std::optional< double >& v); /// Thickness (width in plane parallel to door leaf) of the door lining. - boost::optional< double > LiningThickness() const; - void setLiningThickness(boost::optional< double > v); + std::optional< double > LiningThickness() const; + void setLiningThickness(const std::optional< double >& v); /// Depth (dimension in plane perpendicular to door leaf) of the door threshold. Only given if the door lining includes a threshold. If omitted (and with a given value to threshold thickness) it indicates an adjustable depth (i.e. a depth that adjusts to the thickness of the wall into which the occurrence of this door style is inserted). - boost::optional< double > ThresholdDepth() const; - void setThresholdDepth(boost::optional< double > v); + std::optional< double > ThresholdDepth() const; + void setThresholdDepth(const std::optional< double >& v); /// Thickness (width in plane parallel to door leaf) of the door threshold. Only given if the door lining includes a threshold and the parameter is known. - boost::optional< double > ThresholdThickness() const; - void setThresholdThickness(boost::optional< double > v); + std::optional< double > ThresholdThickness() const; + void setThresholdThickness(const std::optional< double >& v); /// Thickness (width in plane parallel to door leaf) of the transom (if given) which divides the door leaf from a glazing (or window) above. - boost::optional< double > TransomThickness() const; - void setTransomThickness(boost::optional< double > v); + std::optional< double > TransomThickness() const; + void setTransomThickness(const std::optional< double >& v); /// Offset of the transom (if given) which divides the door leaf from a glazing (or window) above. The offset is given from the bottom of the door opening. - boost::optional< double > TransomOffset() const; - void setTransomOffset(boost::optional< double > v); + std::optional< double > TransomOffset() const; + void setTransomOffset(const std::optional< double >& v); /// Offset (dimension in plane perpendicular to door leaf) of the door lining. The offset is given as distance to the x axis of the local placement. - boost::optional< double > LiningOffset() const; - void setLiningOffset(boost::optional< double > v); + std::optional< double > LiningOffset() const; + void setLiningOffset(const std::optional< double >& v); /// Offset (dimension in plane perpendicular to door leaf) of the door threshold. The offset is given as distance to the x axis of the local placement. Only given if the door lining includes a threshold and the parameter is known. - boost::optional< double > ThresholdOffset() const; - void setThresholdOffset(boost::optional< double > v); + std::optional< double > ThresholdOffset() const; + void setThresholdOffset(const std::optional< double >& v); /// Thickness of the casing (dimension in plane of the door leaf). If given it is applied equally to all four sides of the adjacent wall. - boost::optional< double > CasingThickness() const; - void setCasingThickness(boost::optional< double > v); + std::optional< double > CasingThickness() const; + void setCasingThickness(const std::optional< double >& v); /// Depth of the casing (dimension in plane perpendicular to door leaf). If given it is applied equally to all four sides of the adjacent wall. - boost::optional< double > CasingDepth() const; - void setCasingDepth(boost::optional< double > v); + std::optional< double > CasingDepth() const; + void setCasingDepth(const std::optional< double >& v); /// Pointer to the shape aspect, if given. The shape aspect reflects the part of the door shape, which represents the door lining. /// /// IFC2x4 CHANGE The attribute is deprecated and shall no longer be used, i.e. the value shall be NIL ($). - ::Ifc4x3_add2::IfcShapeAspect* ShapeAspectStyle() const; - void setShapeAspectStyle(::Ifc4x3_add2::IfcShapeAspect* v); + ::Ifc4x3_add2::IfcShapeAspect ShapeAspectStyle() const; + void setShapeAspectStyle(const ::Ifc4x3_add2::IfcShapeAspect& v); /// Offset between the lining and the window panel measured along the x-axis of the local placement. /// /// IFC2x4 CHANGE: New attribute added at the end of the entity definition. - boost::optional< double > LiningToPanelOffsetX() const; - void setLiningToPanelOffsetX(boost::optional< double > v); + std::optional< double > LiningToPanelOffsetX() const; + void setLiningToPanelOffsetX(const std::optional< double >& v); /// Offset between the lining and the door panel measured along the y-axis of the local placement. /// /// IFC2x4 CHANGE: New attribute added at the end of the entity definition. - boost::optional< double > LiningToPanelOffsetY() const; - void setLiningToPanelOffsetY(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > LiningToPanelOffsetY() const; + void setLiningToPanelOffsetY(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDoorLiningProperties (IfcEntityInstanceData&& e); - IfcDoorLiningProperties (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_LiningDepth, boost::optional< double > v6_LiningThickness, boost::optional< double > v7_ThresholdDepth, boost::optional< double > v8_ThresholdThickness, boost::optional< double > v9_TransomThickness, boost::optional< double > v10_TransomOffset, boost::optional< double > v11_LiningOffset, boost::optional< double > v12_ThresholdOffset, boost::optional< double > v13_CasingThickness, boost::optional< double > v14_CasingDepth, ::Ifc4x3_add2::IfcShapeAspect* v15_ShapeAspectStyle, boost::optional< double > v16_LiningToPanelOffsetX, boost::optional< double > v17_LiningToPanelOffsetY); - typedef aggregate_of< IfcDoorLiningProperties > list; + // IfcDoorLiningProperties (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< double > v5_LiningDepth, std::optional< double > v6_LiningThickness, std::optional< double > v7_ThresholdDepth, std::optional< double > v8_ThresholdThickness, std::optional< double > v9_TransomThickness, std::optional< double > v10_TransomOffset, std::optional< double > v11_LiningOffset, std::optional< double > v12_ThresholdOffset, std::optional< double > v13_CasingThickness, std::optional< double > v14_CasingDepth, ::Ifc4x3_add2::IfcShapeAspect v15_ShapeAspectStyle, std::optional< double > v16_LiningToPanelOffsetX, std::optional< double > v17_LiningToPanelOffsetY); }; /// A door panel is normally a door leaf that opens to allow people or /// goods to pass. The parameters of the door panel define the @@ -28937,30 +33347,31 @@ public: /// PanelWidth /// /// Figure 173 — Door panel properties -class IFC_PARSE_API IfcDoorPanelProperties : public IfcPreDefinedPropertySet { +class IFC_PARSE_API IfcDoorPanelProperties : public IfcPreDefinedPropertySet { public: + IfcDoorPanelProperties() {} + explicit IfcDoorPanelProperties (const std::weak_ptr& data) : IfcPreDefinedPropertySet(data) {} + /// Depth of the door panel, measured perpendicular to the plane of the door leaf. - boost::optional< double > PanelDepth() const; - void setPanelDepth(boost::optional< double > v); + std::optional< double > PanelDepth() const; + void setPanelDepth(const std::optional< double >& v); /// The PanelOperation defines the way of operation of that panel. The PanelOperation of the door panel has to correspond with the OperationType of the IfcDoorStyle by which it is referenced. ::Ifc4x3_add2::IfcDoorPanelOperationEnum::Value PanelOperation() const; - void setPanelOperation(::Ifc4x3_add2::IfcDoorPanelOperationEnum::Value v); + void setPanelOperation(const ::Ifc4x3_add2::IfcDoorPanelOperationEnum::Value& v); /// Width of this panel, given as ratio relative to the total clear opening width of the door. If omited, it defaults to 1. A value has to be provided for all doors with OperationType's at IfcDoorStyle defining a door with more then one panel. - boost::optional< double > PanelWidth() const; - void setPanelWidth(boost::optional< double > v); + std::optional< double > PanelWidth() const; + void setPanelWidth(const std::optional< double >& v); /// Position of this panel within the door. The PanelPosition of the door panel has to correspond with the OperationType of the IfcDoorStyle by which it is referenced. ::Ifc4x3_add2::IfcDoorPanelPositionEnum::Value PanelPosition() const; - void setPanelPosition(::Ifc4x3_add2::IfcDoorPanelPositionEnum::Value v); + void setPanelPosition(const ::Ifc4x3_add2::IfcDoorPanelPositionEnum::Value& v); /// Pointer to the shape aspect, if given. The shape aspect reflects the part of the door shape, which represents the door panel. /// /// IFC2x4 CHANGE The attribute is deprecated and shall no longer be used, i.e. the value shall be NIL ($). - ::Ifc4x3_add2::IfcShapeAspect* ShapeAspectStyle() const; - void setShapeAspectStyle(::Ifc4x3_add2::IfcShapeAspect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcShapeAspect ShapeAspectStyle() const; + void setShapeAspectStyle(const ::Ifc4x3_add2::IfcShapeAspect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDoorPanelProperties (IfcEntityInstanceData&& e); - IfcDoorPanelProperties (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_PanelDepth, ::Ifc4x3_add2::IfcDoorPanelOperationEnum::Value v6_PanelOperation, boost::optional< double > v7_PanelWidth, ::Ifc4x3_add2::IfcDoorPanelPositionEnum::Value v8_PanelPosition, ::Ifc4x3_add2::IfcShapeAspect* v9_ShapeAspectStyle); - typedef aggregate_of< IfcDoorPanelProperties > list; + // IfcDoorPanelProperties (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< double > v5_PanelDepth, ::Ifc4x3_add2::IfcDoorPanelOperationEnum::Value v6_PanelOperation, std::optional< double > v7_PanelWidth, ::Ifc4x3_add2::IfcDoorPanelPositionEnum::Value v8_PanelPosition, ::Ifc4x3_add2::IfcShapeAspect v9_ShapeAspectStyle); }; /// Definition from IAI: The element type /// IfcDoorType defines commonly shared information @@ -29090,23 +33501,24 @@ public: /// IfcShapeRepresentation are restricted in the same way as /// those for IfcDoor and /// IfcDoorStandardCase -class IFC_PARSE_API IfcDoorType : public IfcBuiltElementType { +class IFC_PARSE_API IfcDoorType : public IfcBuiltElementType { public: + IfcDoorType() {} + explicit IfcDoorType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a door element from which the type required may be set. ::Ifc4x3_add2::IfcDoorTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcDoorTypeEnum::Value v); + void setPredefinedType(const ::Ifc4x3_add2::IfcDoorTypeEnum::Value& v); /// Type defining the general layout and operation of the door type in terms of the partitioning of panels and panel operations. ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value OperationType() const; - void setOperationType(::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value v); - boost::optional< bool > ParameterTakesPrecedence() const; - void setParameterTakesPrecedence(boost::optional< bool > v); - boost::optional< std::string > UserDefinedOperationType() const; - void setUserDefinedOperationType(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + void setOperationType(const ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value& v); + std::optional< bool > ParameterTakesPrecedence() const; + void setParameterTakesPrecedence(const std::optional< bool >& v); + std::optional< std::string > UserDefinedOperationType() const; + void setUserDefinedOperationType(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDoorType (IfcEntityInstanceData&& e); - IfcDoorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDoorTypeEnum::Value v10_PredefinedType, ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value v11_OperationType, boost::optional< bool > v12_ParameterTakesPrecedence, boost::optional< std::string > v13_UserDefinedOperationType); - typedef aggregate_of< IfcDoorType > list; + // IfcDoorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDoorTypeEnum::Value v10_PredefinedType, ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value v11_OperationType, std::optional< bool > v12_ParameterTakesPrecedence, std::optional< std::string > v13_UserDefinedOperationType); }; /// The draughting pre defined colour is a pre defined colour for the purpose to identify a colour by name. Allowable names are: /// @@ -29180,13 +33592,14 @@ public: /// Informal proposition /// /// The value 'by layer' shall only be inserted, if the geometric representation item using the colour definition has an association to IfcPresentationLayerWithStyle, and if that instance of IfcPresentationLayerWithStyle has a valid colour definition for IfcCurveStyle, IfcSymbolStyle, or IfcSurfaceStyle (depending on what is applicable). -class IFC_PARSE_API IfcDraughtingPreDefinedColour : public IfcPreDefinedColour { +class IFC_PARSE_API IfcDraughtingPreDefinedColour : public IfcPreDefinedColour { public: - virtual const IfcParse::entity& declaration() const; + IfcDraughtingPreDefinedColour() {} + explicit IfcDraughtingPreDefinedColour (const std::weak_ptr& data) : IfcPreDefinedColour(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDraughtingPreDefinedColour (IfcEntityInstanceData&& e); - IfcDraughtingPreDefinedColour (std::string v1_Name); - typedef aggregate_of< IfcDraughtingPreDefinedColour > list; + // IfcDraughtingPreDefinedColour (std::string v1_Name); }; /// The draughting predefined curve font type defines a selection of widely used curve fonts for draughting purposes by name. /// @@ -29201,13 +33614,14 @@ public: /// NOTE  Corresponding ISO 10303 name: pre_defined_curve_font. Please refer to ISO/IS 10303-46:1994 TC2, page 12 for the final definition of the formal standard. /// /// HISTORY  New entity in IFC2x2. -class IFC_PARSE_API IfcDraughtingPreDefinedCurveFont : public IfcPreDefinedCurveFont { +class IFC_PARSE_API IfcDraughtingPreDefinedCurveFont : public IfcPreDefinedCurveFont { public: - virtual const IfcParse::entity& declaration() const; + IfcDraughtingPreDefinedCurveFont() {} + explicit IfcDraughtingPreDefinedCurveFont (const std::weak_ptr& data) : IfcPreDefinedCurveFont(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDraughtingPreDefinedCurveFont (IfcEntityInstanceData&& e); - IfcDraughtingPreDefinedCurveFont (std::string v1_Name); - typedef aggregate_of< IfcDraughtingPreDefinedCurveFont > list; + // IfcDraughtingPreDefinedCurveFont (std::string v1_Name); }; /// Definition from IAI: Generalization of all components /// that make up an AEC product. Those elements can be logically @@ -29262,28 +33676,29 @@ public: /// representations. A detailed specification for the local placement /// and shape representaion is introduced at the level of subtypes of /// IfcElement. -class IFC_PARSE_API IfcElement : public IfcProduct, public IfcInterferenceSelect, public IfcStructuralActivityAssignmentSelect { +class IFC_PARSE_API IfcElement : public IfcProduct { public: + IfcElement() {} + explicit IfcElement (const std::weak_ptr& data) : IfcProduct(data) {} + /// The tag (or label) identifier at the particular instance of a product, e.g. the serial number, or the position number. It is the identifier at the occurrence level. - boost::optional< std::string > Tag() const; - void setTag(boost::optional< std::string > v); - aggregate_of< IfcRelFillsElement >::ptr FillsVoids() const; // INVERSE IfcRelFillsElement::RelatedBuildingElement - aggregate_of< IfcRelConnectsElements >::ptr ConnectedTo() const; // INVERSE IfcRelConnectsElements::RelatingElement - aggregate_of< IfcRelInterferesElements >::ptr IsInterferedByElements() const; // INVERSE IfcRelInterferesElements::RelatedElement - aggregate_of< IfcRelInterferesElements >::ptr InterferesElements() const; // INVERSE IfcRelInterferesElements::RelatingElement - aggregate_of< IfcRelProjectsElement >::ptr HasProjections() const; // INVERSE IfcRelProjectsElement::RelatingElement - aggregate_of< IfcRelVoidsElement >::ptr HasOpenings() const; // INVERSE IfcRelVoidsElement::RelatingBuildingElement - aggregate_of< IfcRelConnectsWithRealizingElements >::ptr IsConnectionRealization() const; // INVERSE IfcRelConnectsWithRealizingElements::RealizingElements - aggregate_of< IfcRelSpaceBoundary >::ptr ProvidesBoundaries() const; // INVERSE IfcRelSpaceBoundary::RelatedBuildingElement - aggregate_of< IfcRelConnectsElements >::ptr ConnectedFrom() const; // INVERSE IfcRelConnectsElements::RelatedElement - aggregate_of< IfcRelContainedInSpatialStructure >::ptr ContainedInStructure() const; // INVERSE IfcRelContainedInSpatialStructure::RelatedElements - aggregate_of< IfcRelCoversBldgElements >::ptr HasCoverings() const; // INVERSE IfcRelCoversBldgElements::RelatingBuildingElement - aggregate_of< IfcRelAdheresToElement >::ptr HasSurfaceFeatures() const; // INVERSE IfcRelAdheresToElement::RelatingElement - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Tag() const; + void setTag(const std::optional< std::string >& v); + std::vector< IfcRelFillsElement > FillsVoids() const; // INVERSE IfcRelFillsElement::RelatedBuildingElement + std::vector< IfcRelConnectsElements > ConnectedTo() const; // INVERSE IfcRelConnectsElements::RelatingElement + std::vector< IfcRelInterferesElements > IsInterferedByElements() const; // INVERSE IfcRelInterferesElements::RelatedElement + std::vector< IfcRelInterferesElements > InterferesElements() const; // INVERSE IfcRelInterferesElements::RelatingElement + std::vector< IfcRelProjectsElement > HasProjections() const; // INVERSE IfcRelProjectsElement::RelatingElement + std::vector< IfcRelVoidsElement > HasOpenings() const; // INVERSE IfcRelVoidsElement::RelatingBuildingElement + std::vector< IfcRelConnectsWithRealizingElements > IsConnectionRealization() const; // INVERSE IfcRelConnectsWithRealizingElements::RealizingElements + std::vector< IfcRelSpaceBoundary > ProvidesBoundaries() const; // INVERSE IfcRelSpaceBoundary::RelatedBuildingElement + std::vector< IfcRelConnectsElements > ConnectedFrom() const; // INVERSE IfcRelConnectsElements::RelatedElement + std::vector< IfcRelContainedInSpatialStructure > ContainedInStructure() const; // INVERSE IfcRelContainedInSpatialStructure::RelatedElements + std::vector< IfcRelCoversBldgElements > HasCoverings() const; // INVERSE IfcRelCoversBldgElements::RelatingBuildingElement + std::vector< IfcRelAdheresToElement > HasSurfaceFeatures() const; // INVERSE IfcRelAdheresToElement::RelatingElement + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElement (IfcEntityInstanceData&& e); - IfcElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcElement > list; + // IfcElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// The IfcElementAssembly /// represents complex element assemblies aggregated from several @@ -29379,21 +33794,22 @@ public: /// The IfcElementAssembly shall have an aggregation /// relationship to the contained parts, i.e. the (INV) /// IsDecomposedBy relationship shall be utilzed. -class IFC_PARSE_API IfcElementAssembly : public IfcElement { +class IFC_PARSE_API IfcElementAssembly : public IfcElement { public: + IfcElementAssembly() {} + explicit IfcElementAssembly (const std::weak_ptr& data) : IfcElement(data) {} + /// A designation of where the assembly is intended to take place defined by an Enum. - boost::optional< ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value > AssemblyPlace() const; - void setAssemblyPlace(boost::optional< ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value > AssemblyPlace() const; + void setAssemblyPlace(const std::optional< ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value >& v); /// Predefined generic types for a element assembly that are specified in an enumeration. There might be property sets defined specifically for each predefined type. /// /// IFC2x4 CHANGE  The attribute has been changed to be optional. - boost::optional< ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElementAssembly (IfcEntityInstanceData&& e); - IfcElementAssembly (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value > v9_AssemblyPlace, boost::optional< ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value > v10_PredefinedType); - typedef aggregate_of< IfcElementAssembly > list; + // IfcElementAssembly (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcAssemblyPlaceEnum::Value > v9_AssemblyPlace, std::optional< ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value > v10_PredefinedType); }; /// Definition from IAI: The IfcElementAssemblyType /// defines a list of commonly shared property set definitions of an @@ -29417,16 +33833,17 @@ public: /// represented by instances of IfcElementAssembly. /// HISTORY New entity in /// Release IFC2x Edition 4. -class IFC_PARSE_API IfcElementAssemblyType : public IfcElementType { +class IFC_PARSE_API IfcElementAssemblyType : public IfcElementType { public: + IfcElementAssemblyType() {} + explicit IfcElementAssemblyType (const std::weak_ptr& data) : IfcElementType(data) {} + /// Predefined types to define the particular type of the transport element. There may be property set definitions available for each predefined type. ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElementAssemblyType (IfcEntityInstanceData&& e); - IfcElementAssemblyType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcElementAssemblyType > list; + // IfcElementAssemblyType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElementAssemblyTypeEnum::Value v10_PredefinedType); }; /// An element component is a representation for minor items included in, added to or connecting to or between /// elements, which usually are not of interest from the overall building structure viewpoint. @@ -29505,13 +33922,14 @@ public: /// Representation identifier and type are the same as in single mapped representation. /// The number of mapped items in the representation corresponds with the count of /// element components in the IfcElementQuantity. -class IFC_PARSE_API IfcElementComponent : public IfcElement { +class IFC_PARSE_API IfcElementComponent : public IfcElement { public: - virtual const IfcParse::entity& declaration() const; + IfcElementComponent() {} + explicit IfcElementComponent (const std::weak_ptr& data) : IfcElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElementComponent (IfcEntityInstanceData&& e); - IfcElementComponent (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcElementComponent > list; + // IfcElementComponent (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// Definition from IAI: /// The element type (IfcElementComponentType) represents the supertype for element @@ -29522,13 +33940,14 @@ public: /// /// HISTORY New entity in IFC /// Release 2x2 -class IFC_PARSE_API IfcElementComponentType : public IfcElementType { +class IFC_PARSE_API IfcElementComponentType : public IfcElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcElementComponentType() {} + explicit IfcElementComponentType (const std::weak_ptr& data) : IfcElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElementComponentType (IfcEntityInstanceData&& e); - IfcElementComponentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcElementComponentType > list; + // IfcElementComponentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// Definition from ISO/CD 10303-42:1992: An ellipse (IfcEllipse) is a conic section defined by the lengths of the semi-major and semi-minor diameters and the position (center or mid point of the line joining the foci) and orientation of the curve. Interpretation of the data shall be as follows: /// @@ -29557,19 +33976,20 @@ public: /// Figure 280 illustrates the definition of the IfcEllipse within the (in this case three-dimensional) position coordinate system. /// /// Figure 280 — Ellipse geometry -class IFC_PARSE_API IfcEllipse : public IfcConic { +class IFC_PARSE_API IfcEllipse : public IfcConic { public: + IfcEllipse() {} + explicit IfcEllipse (const std::weak_ptr& data) : IfcConic(data) {} + /// The first radius of the ellipse which shall be positive. Placement.Axes[1] gives the direction of the SemiAxis1. double SemiAxis1() const; - void setSemiAxis1(double v); + void setSemiAxis1(const double& v); /// The second radius of the ellipse which shall be positive. double SemiAxis2() const; - void setSemiAxis2(double v); - virtual const IfcParse::entity& declaration() const; + void setSemiAxis2(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEllipse (IfcEntityInstanceData&& e); - IfcEllipse (::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_SemiAxis1, double v3_SemiAxis2); - typedef aggregate_of< IfcEllipse > list; + // IfcEllipse (::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_SemiAxis1, double v3_SemiAxis2); }; /// The element type IfcEnergyConversionType defines a list of commonly shared property /// set definitions of an energy conversion device and an optional set of product representations. @@ -29594,13 +34014,14 @@ public: /// by instances of IfcEnergyConversionDevice. /// /// HISTORY: New entity in IFC Release 2x2. -class IFC_PARSE_API IfcEnergyConversionDeviceType : public IfcDistributionFlowElementType { +class IFC_PARSE_API IfcEnergyConversionDeviceType : public IfcDistributionFlowElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcEnergyConversionDeviceType() {} + explicit IfcEnergyConversionDeviceType (const std::weak_ptr& data) : IfcDistributionFlowElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEnergyConversionDeviceType (IfcEntityInstanceData&& e); - IfcEnergyConversionDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcEnergyConversionDeviceType > list; + // IfcEnergyConversionDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// The energy conversion device type IfcEngineType defines commonly shared information for occurrences of engines. The set of shared information may include: /// @@ -29628,15 +34049,16 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcEngineType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcEngine for standard port definitions. -class IFC_PARSE_API IfcEngineType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcEngineType : public IfcEnergyConversionDeviceType { public: + IfcEngineType() {} + explicit IfcEngineType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + ::Ifc4x3_add2::IfcEngineTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcEngineTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcEngineTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEngineType (IfcEntityInstanceData&& e); - IfcEngineType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcEngineTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcEngineType > list; + // IfcEngineType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcEngineTypeEnum::Value v10_PredefinedType); }; /// The energy conversion device type IfcEvaporativeCoolerType defines commonly shared information for occurrences of evaporative coolers. The set of shared information may include: /// @@ -29664,16 +34086,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcEvaporativeCoolerType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcEvaporativeCooler for standard port definitions. -class IFC_PARSE_API IfcEvaporativeCoolerType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcEvaporativeCoolerType : public IfcEnergyConversionDeviceType { public: + IfcEvaporativeCoolerType() {} + explicit IfcEvaporativeCoolerType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Defines the type of evaporative cooler. ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEvaporativeCoolerType (IfcEntityInstanceData&& e); - IfcEvaporativeCoolerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcEvaporativeCoolerType > list; + // IfcEvaporativeCoolerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value v10_PredefinedType); }; /// The energy conversion device type IfcEvaporatorType defines commonly shared information for occurrences of evaporators. The set of shared information may include: /// @@ -29701,16 +34124,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcEvaporatorType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcEvaporator for standard port definitions. -class IFC_PARSE_API IfcEvaporatorType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcEvaporatorType : public IfcEnergyConversionDeviceType { public: + IfcEvaporatorType() {} + explicit IfcEvaporatorType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Defines the type of evaporator. ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEvaporatorType (IfcEntityInstanceData&& e); - IfcEvaporatorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcEvaporatorType > list; + // IfcEvaporatorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value v10_PredefinedType); }; /// An IfcEvent is something /// that happens that triggers an action or response. @@ -29789,42 +34213,44 @@ public: /// IfcRelAssignsToProduct), then the IfcEvent must be assigned /// to one or more occurrences of the specified product type /// using IfcRelAssignsToProduct. -class IFC_PARSE_API IfcEvent : public IfcProcess { +class IFC_PARSE_API IfcEvent : public IfcProcess { public: + IfcEvent() {} + explicit IfcEvent (const std::weak_ptr& data) : IfcProcess(data) {} + /// Identifies the predefined types of an event from which /// the type required may be set. - boost::optional< ::Ifc4x3_add2::IfcEventTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcEventTypeEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcEventTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcEventTypeEnum::Value >& v); /// Identifies the predefined types of event trigger from which /// the type required may be set. - boost::optional< ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value > EventTriggerType() const; - void setEventTriggerType(boost::optional< ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value > EventTriggerType() const; + void setEventTriggerType(const std::optional< ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value >& v); /// A user defined event trigger type, the value of which is /// asserted when the value of an event trigger type is declared /// as USERDEFINED. - boost::optional< std::string > UserDefinedEventTriggerType() const; - void setUserDefinedEventTriggerType(boost::optional< std::string > v); + std::optional< std::string > UserDefinedEventTriggerType() const; + void setUserDefinedEventTriggerType(const std::optional< std::string >& v); /// The date and/or time at which an event occurs. - ::Ifc4x3_add2::IfcEventTime* EventOccurenceTime() const; - void setEventOccurenceTime(::Ifc4x3_add2::IfcEventTime* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcEventTime EventOccurenceTime() const; + void setEventOccurenceTime(const ::Ifc4x3_add2::IfcEventTime& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEvent (IfcEntityInstanceData&& e); - IfcEvent (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, boost::optional< ::Ifc4x3_add2::IfcEventTypeEnum::Value > v8_PredefinedType, boost::optional< ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value > v9_EventTriggerType, boost::optional< std::string > v10_UserDefinedEventTriggerType, ::Ifc4x3_add2::IfcEventTime* v11_EventOccurenceTime); - typedef aggregate_of< IfcEvent > list; + // IfcEvent (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, std::optional< ::Ifc4x3_add2::IfcEventTypeEnum::Value > v8_PredefinedType, std::optional< ::Ifc4x3_add2::IfcEventTriggerTypeEnum::Value > v9_EventTriggerType, std::optional< std::string > v10_UserDefinedEventTriggerType, ::Ifc4x3_add2::IfcEventTime v11_EventOccurenceTime); }; /// Definition from IAI: The external spatial structure /// element is an abstract entity provided for different kind of /// external spaces, regions, and volumes. /// HISTORY New entity in /// IFC2x4. -class IFC_PARSE_API IfcExternalSpatialStructureElement : public IfcSpatialElement { +class IFC_PARSE_API IfcExternalSpatialStructureElement : public IfcSpatialElement { public: - virtual const IfcParse::entity& declaration() const; + IfcExternalSpatialStructureElement() {} + explicit IfcExternalSpatialStructureElement (const std::weak_ptr& data) : IfcSpatialElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcExternalSpatialStructureElement (IfcEntityInstanceData&& e); - IfcExternalSpatialStructureElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName); - typedef aggregate_of< IfcExternalSpatialStructureElement > list; + // IfcExternalSpatialStructureElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName); }; /// Definition from ISO/CD 10303-42:1992: A faceted B-rep /// is a simple form of boundary representation model in which all @@ -29850,13 +34276,14 @@ public: /// Figure 257 illustrates use of IfcFacetedBrep for boundary representation models with planar surfaces only. The diagram shows the topological and geometric representation items that are used for faceted breps. Each IfcCartesianPoint, used within the IfcFacetedBrep shall be referenced three times by an IfcPolyLoop bounding a different IfcFace. /// /// Figure 257 — Faceted B-rep -class IFC_PARSE_API IfcFacetedBrep : public IfcManifoldSolidBrep { +class IFC_PARSE_API IfcFacetedBrep : public IfcManifoldSolidBrep { public: - virtual const IfcParse::entity& declaration() const; + IfcFacetedBrep() {} + explicit IfcFacetedBrep (const std::weak_ptr& data) : IfcManifoldSolidBrep(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFacetedBrep (IfcEntityInstanceData&& e); - IfcFacetedBrep (::Ifc4x3_add2::IfcClosedShell* v1_Outer); - typedef aggregate_of< IfcFacetedBrep > list; + // IfcFacetedBrep (::Ifc4x3_add2::IfcClosedShell v1_Outer); }; /// The IfcFacetedBrepWithVoids /// is a specialization of a faceted B-rep which contains one or more @@ -29882,47 +34309,51 @@ public: /// All the bounding loops of all the faces of all the shells in /// the IfcFacetedBrep shall be of type /// IfcPolyLoop. -class IFC_PARSE_API IfcFacetedBrepWithVoids : public IfcFacetedBrep { +class IFC_PARSE_API IfcFacetedBrepWithVoids : public IfcFacetedBrep { public: + IfcFacetedBrepWithVoids() {} + explicit IfcFacetedBrepWithVoids (const std::weak_ptr& data) : IfcFacetedBrep(data) {} + /// Set of closed shells defining voids within the solid. - aggregate_of< ::Ifc4x3_add2::IfcClosedShell >::ptr Voids() const; - void setVoids(aggregate_of< ::Ifc4x3_add2::IfcClosedShell >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcClosedShell > Voids() const; + void setVoids(const std::vector< ::Ifc4x3_add2::IfcClosedShell >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFacetedBrepWithVoids (IfcEntityInstanceData&& e); - IfcFacetedBrepWithVoids (::Ifc4x3_add2::IfcClosedShell* v1_Outer, aggregate_of< ::Ifc4x3_add2::IfcClosedShell >::ptr v2_Voids); - typedef aggregate_of< IfcFacetedBrepWithVoids > list; + // IfcFacetedBrepWithVoids (::Ifc4x3_add2::IfcClosedShell v1_Outer, std::vector< ::Ifc4x3_add2::IfcClosedShell > v2_Voids); }; -class IFC_PARSE_API IfcFacility : public IfcSpatialStructureElement { +class IFC_PARSE_API IfcFacility : public IfcSpatialStructureElement { public: - virtual const IfcParse::entity& declaration() const; + IfcFacility() {} + explicit IfcFacility (const std::weak_ptr& data) : IfcSpatialStructureElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFacility (IfcEntityInstanceData&& e); - IfcFacility (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType); - typedef aggregate_of< IfcFacility > list; + // IfcFacility (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType); }; -class IFC_PARSE_API IfcFacilityPart : public IfcSpatialStructureElement { +class IFC_PARSE_API IfcFacilityPart : public IfcSpatialStructureElement { public: + IfcFacilityPart() {} + explicit IfcFacilityPart (const std::weak_ptr& data) : IfcSpatialStructureElement(data) {} + ::Ifc4x3_add2::IfcFacilityUsageEnum::Value UsageType() const; - void setUsageType(::Ifc4x3_add2::IfcFacilityUsageEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setUsageType(const ::Ifc4x3_add2::IfcFacilityUsageEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFacilityPart (IfcEntityInstanceData&& e); - IfcFacilityPart (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType); - typedef aggregate_of< IfcFacilityPart > list; + // IfcFacilityPart (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType); }; -class IFC_PARSE_API IfcFacilityPartCommon : public IfcFacilityPart { +class IFC_PARSE_API IfcFacilityPartCommon : public IfcFacilityPart { public: - boost::optional< ::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcFacilityPartCommon() {} + explicit IfcFacilityPartCommon (const std::weak_ptr& data) : IfcFacilityPart(data) {} + + std::optional< ::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFacilityPartCommon (IfcEntityInstanceData&& e); - IfcFacilityPartCommon (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, boost::optional< ::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Value > v11_PredefinedType); - typedef aggregate_of< IfcFacilityPartCommon > list; + // IfcFacilityPartCommon (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, std::optional< ::Ifc4x3_add2::IfcFacilityPartCommonTypeEnum::Value > v11_PredefinedType); }; /// Definition from IAI: /// Representations of fixing parts which are used as fasteners to connect or join elements with @@ -29932,16 +34363,17 @@ public: /// /// IFC 2x4 change: /// Attribute PredefinedType added. -class IFC_PARSE_API IfcFastener : public IfcElementComponent { +class IFC_PARSE_API IfcFastener : public IfcElementComponent { public: + IfcFastener() {} + explicit IfcFastener (const std::weak_ptr& data) : IfcElementComponent(data) {} + /// Subtype of fastener - boost::optional< ::Ifc4x3_add2::IfcFastenerTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFastenerTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcFastenerTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFastenerTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFastener (IfcEntityInstanceData&& e); - IfcFastener (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFastenerTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcFastener > list; + // IfcFastener (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFastenerTypeEnum::Value > v9_PredefinedType); }; /// Definition from IAI: /// The element type (IfcFastenerType) defines a list of commonly shared @@ -29966,16 +34398,17 @@ public: /// The following property set definitions are applicable to this entity according to the PredefinedType attribute: /// /// Pset_FastenerWeld (WELD) -class IFC_PARSE_API IfcFastenerType : public IfcElementComponentType { +class IFC_PARSE_API IfcFastenerType : public IfcElementComponentType { public: + IfcFastenerType() {} + explicit IfcFastenerType (const std::weak_ptr& data) : IfcElementComponentType(data) {} + /// Subtype of fastener ::Ifc4x3_add2::IfcFastenerTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcFastenerTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcFastenerTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFastenerType (IfcEntityInstanceData&& e); - IfcFastenerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFastenerTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcFastenerType > list; + // IfcFastenerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFastenerTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: Generalization of all existence /// dependent elements which modify the shape and appearance of the @@ -30071,13 +34504,14 @@ public: /// In some cases it may be useful to also expose a simple /// representation as a bounding box representation of the same /// complex shape. -class IFC_PARSE_API IfcFeatureElement : public IfcElement { +class IFC_PARSE_API IfcFeatureElement : public IfcElement { public: - virtual const IfcParse::entity& declaration() const; + IfcFeatureElement() {} + explicit IfcFeatureElement (const std::weak_ptr& data) : IfcElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFeatureElement (IfcEntityInstanceData&& e); - IfcFeatureElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcFeatureElement > list; + // IfcFeatureElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// Definition from IAI: A specialization of the general /// feature element, that represents an existence dependent @@ -30134,14 +34568,15 @@ public: /// The geometry use definitions for the shape representation /// of the IfcFeatureElementAddition is given at the /// level of its subtypes. -class IFC_PARSE_API IfcFeatureElementAddition : public IfcFeatureElement { +class IFC_PARSE_API IfcFeatureElementAddition : public IfcFeatureElement { public: - aggregate_of< IfcRelProjectsElement >::ptr ProjectsElements() const; // INVERSE IfcRelProjectsElement::RelatedFeatureElement - virtual const IfcParse::entity& declaration() const; + IfcFeatureElementAddition() {} + explicit IfcFeatureElementAddition (const std::weak_ptr& data) : IfcFeatureElement(data) {} + + std::vector< IfcRelProjectsElement > ProjectsElements() const; // INVERSE IfcRelProjectsElement::RelatedFeatureElement + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFeatureElementAddition (IfcEntityInstanceData&& e); - IfcFeatureElementAddition (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcFeatureElementAddition > list; + // IfcFeatureElementAddition (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// The IfcFeatureElementSubtraction is specialization of /// the general feature element, that represents an existence dependent @@ -30193,14 +34628,15 @@ public: /// The geometry use definitions for the shape representation of the /// IfcFeatureElementSubtraction is given at the level of its /// subtypes. -class IFC_PARSE_API IfcFeatureElementSubtraction : public IfcFeatureElement { +class IFC_PARSE_API IfcFeatureElementSubtraction : public IfcFeatureElement { public: - aggregate_of< IfcRelVoidsElement >::ptr VoidsElements() const; // INVERSE IfcRelVoidsElement::RelatedOpeningElement - virtual const IfcParse::entity& declaration() const; + IfcFeatureElementSubtraction() {} + explicit IfcFeatureElementSubtraction (const std::weak_ptr& data) : IfcFeatureElement(data) {} + + std::vector< IfcRelVoidsElement > VoidsElements() const; // INVERSE IfcRelVoidsElement::RelatedOpeningElement + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFeatureElementSubtraction (IfcEntityInstanceData&& e); - IfcFeatureElementSubtraction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcFeatureElementSubtraction > list; + // IfcFeatureElementSubtraction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// The element type IfcFlowControllerType defines a list of commonly shared property /// set definitions of a flow controller and an optional set of product representations. @@ -30224,13 +34660,14 @@ public: /// by instances of IfcFlowController or its subtypes. /// /// HISTORY: New entity in IFC Release 2x2. -class IFC_PARSE_API IfcFlowControllerType : public IfcDistributionFlowElementType { +class IFC_PARSE_API IfcFlowControllerType : public IfcDistributionFlowElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcFlowControllerType() {} + explicit IfcFlowControllerType (const std::weak_ptr& data) : IfcDistributionFlowElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowControllerType (IfcEntityInstanceData&& e); - IfcFlowControllerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcFlowControllerType > list; + // IfcFlowControllerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// The element type IfcFlowFittingType defines a list of commonly shared property /// set definitions of a flow fitting and an optional set of product representations. @@ -30255,13 +34692,14 @@ public: /// by instances of IfcFlowFitting or its subtypes. /// /// HISTORY: New entity in IFC Release 2x2. -class IFC_PARSE_API IfcFlowFittingType : public IfcDistributionFlowElementType { +class IFC_PARSE_API IfcFlowFittingType : public IfcDistributionFlowElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcFlowFittingType() {} + explicit IfcFlowFittingType (const std::weak_ptr& data) : IfcDistributionFlowElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowFittingType (IfcEntityInstanceData&& e); - IfcFlowFittingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcFlowFittingType > list; + // IfcFlowFittingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// The flow controller type IfcFlowMeterType defines commonly shared information for occurrences of flow meters. The set of shared information may include: /// @@ -30295,16 +34733,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcFlowMeterType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcFlowMeter for standard port definitions. -class IFC_PARSE_API IfcFlowMeterType : public IfcFlowControllerType { +class IFC_PARSE_API IfcFlowMeterType : public IfcFlowControllerType { public: + IfcFlowMeterType() {} + explicit IfcFlowMeterType (const std::weak_ptr& data) : IfcFlowControllerType(data) {} + /// Defines the type of flow meter. ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowMeterType (IfcEntityInstanceData&& e); - IfcFlowMeterType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcFlowMeterType > list; + // IfcFlowMeterType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value v10_PredefinedType); }; /// The element type IfcFlowMovingDeviceType defines a list of commonly shared property /// set definitions of a flow moving device and an optional set of product representations. @@ -30328,13 +34767,14 @@ public: /// by instances of IfcFlowMovingDevice. /// /// HISTORY: New entity in IFC Release 2x2. -class IFC_PARSE_API IfcFlowMovingDeviceType : public IfcDistributionFlowElementType { +class IFC_PARSE_API IfcFlowMovingDeviceType : public IfcDistributionFlowElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcFlowMovingDeviceType() {} + explicit IfcFlowMovingDeviceType (const std::weak_ptr& data) : IfcDistributionFlowElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowMovingDeviceType (IfcEntityInstanceData&& e); - IfcFlowMovingDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcFlowMovingDeviceType > list; + // IfcFlowMovingDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// The element type IfcFlowSegmentType defines a list of commonly shared property /// set definitions of a flow segment and an optional set of product representations. @@ -30367,13 +34807,14 @@ public: /// IfcMaterialConstituentSet : For elements containing multiple materials where profiles are not applicable, this indicates materials at named aspects. /// /// IfcMaterial : For elements comprised of a single material where profiles are not applicable, this indicates the material. -class IFC_PARSE_API IfcFlowSegmentType : public IfcDistributionFlowElementType { +class IFC_PARSE_API IfcFlowSegmentType : public IfcDistributionFlowElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcFlowSegmentType() {} + explicit IfcFlowSegmentType (const std::weak_ptr& data) : IfcDistributionFlowElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowSegmentType (IfcEntityInstanceData&& e); - IfcFlowSegmentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcFlowSegmentType > list; + // IfcFlowSegmentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// The element type IfcFlowStorageDeviceType defines a list of commonly shared property set definitions of a flow storage device and an optional set of product representations. It is used to define a flow storage device specification (the specific product information that is common to all occurrences of that product type). /// @@ -30382,13 +34823,14 @@ public: /// The occurrences of the IfcFlowStorageDeviceType are represented by instances of IfcFlowStorageDevice or its subtypes. /// /// HISTORY: New entity in IFC Release 2x2. -class IFC_PARSE_API IfcFlowStorageDeviceType : public IfcDistributionFlowElementType { +class IFC_PARSE_API IfcFlowStorageDeviceType : public IfcDistributionFlowElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcFlowStorageDeviceType() {} + explicit IfcFlowStorageDeviceType (const std::weak_ptr& data) : IfcDistributionFlowElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowStorageDeviceType (IfcEntityInstanceData&& e); - IfcFlowStorageDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcFlowStorageDeviceType > list; + // IfcFlowStorageDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// The element type IfcFlowTerminalType defines a list of commonly shared property set definitions of a flow terminal and an optional set of product representations. It is used to define a flow terminal specification (the specific product information that is common to all occurrences of that product type). /// @@ -30397,13 +34839,14 @@ public: /// The occurrences of the IfcFlowTerminalType are represented by instances of IfcFlowTerminal or its subtypes. /// /// HISTORY: New entity in IFC Release 2x2. -class IFC_PARSE_API IfcFlowTerminalType : public IfcDistributionFlowElementType { +class IFC_PARSE_API IfcFlowTerminalType : public IfcDistributionFlowElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcFlowTerminalType() {} + explicit IfcFlowTerminalType (const std::weak_ptr& data) : IfcDistributionFlowElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowTerminalType (IfcEntityInstanceData&& e); - IfcFlowTerminalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcFlowTerminalType > list; + // IfcFlowTerminalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// The element type IfcFlowTreatmentDeviceType defines a list of commonly shared property set definitions of a flow treatment device and an optional set of product representations. It is used to define a flow treatment device specification (the specific product information that is common to all occurrences of that product type). /// @@ -30413,13 +34856,14 @@ public: /// The occurrences of the IfcFlowTreatmentDeviceType are represented by instances of IfcFlowTreatmentDevice or its subtypes. /// /// HISTORY: New entity in IFC Release 2x2. -class IFC_PARSE_API IfcFlowTreatmentDeviceType : public IfcDistributionFlowElementType { +class IFC_PARSE_API IfcFlowTreatmentDeviceType : public IfcDistributionFlowElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcFlowTreatmentDeviceType() {} + explicit IfcFlowTreatmentDeviceType (const std::weak_ptr& data) : IfcDistributionFlowElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowTreatmentDeviceType (IfcEntityInstanceData&& e); - IfcFlowTreatmentDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcFlowTreatmentDeviceType > list; + // IfcFlowTreatmentDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// Definition from IAI: Provides shared material, decomposition, representation maps, and property sets for instances of IfcFooting. /// @@ -30430,16 +34874,17 @@ public: /// Material Use Definition: /// /// Material profile set or material layer set association analogous to IfcBeamStandardCase or IfcSlabStandardCase should be used when applicable. -class IFC_PARSE_API IfcFootingType : public IfcBuiltElementType { +class IFC_PARSE_API IfcFootingType : public IfcBuiltElementType { public: + IfcFootingType() {} + explicit IfcFootingType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Subtype of footing. ::Ifc4x3_add2::IfcFootingTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcFootingTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcFootingTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFootingType (IfcEntityInstanceData&& e); - IfcFootingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFootingTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcFootingType > list; + // IfcFootingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFootingTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: Generalization of all furniture /// related objects. Furnishing objects are characterized as @@ -30545,13 +34990,14 @@ public: /// 'FootPrint', or 'Body' (depending of the representation map) /// IfcShapeRepresentation.RepresentationType = /// 'MappedRepresentation' -class IFC_PARSE_API IfcFurnishingElement : public IfcElement { +class IFC_PARSE_API IfcFurnishingElement : public IfcElement { public: - virtual const IfcParse::entity& declaration() const; + IfcFurnishingElement() {} + explicit IfcFurnishingElement (const std::weak_ptr& data) : IfcElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFurnishingElement (IfcEntityInstanceData&& e); - IfcFurnishingElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcFurnishingElement > list; + // IfcFurnishingElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// Furniture defines complete furnishings such as a table, desk, chair, or cabinet, which may or may not be permanently attached to a building structure. /// @@ -30584,15 +35030,16 @@ public: /// The IfcFurniture may be decomposed into components using IfcRelAggregates where RelatingObject refers to the enclosing IfcFurniture and RelatedObjects contains one or more components. Composition use is defined for the following predefined types: /// /// (All Types): May contain IfcSystemFurnitureElement components. Modular furniture may be aggregated into components. -class IFC_PARSE_API IfcFurniture : public IfcFurnishingElement { +class IFC_PARSE_API IfcFurniture : public IfcFurnishingElement { public: - boost::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcFurniture() {} + explicit IfcFurniture (const std::weak_ptr& data) : IfcFurnishingElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFurniture (IfcEntityInstanceData&& e); - IfcFurniture (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcFurniture > list; + // IfcFurniture (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFurnitureTypeEnum::Value > v9_PredefinedType); }; /// Definition from IAI: An IfcGeographicElement is /// a generalization of all elements within a geographical landscape. @@ -30734,49 +35181,53 @@ public: /// RepresentationIdentifier : 'FootPrint' for 2D /// representation, 'Body' for 3D representation /// RepresentationType :'MappedRepresentation' -class IFC_PARSE_API IfcGeographicElement : public IfcElement { +class IFC_PARSE_API IfcGeographicElement : public IfcElement { public: + IfcGeographicElement() {} + explicit IfcGeographicElement (const std::weak_ptr& data) : IfcElement(data) {} + /// Predefined generic types for a geographic element that are specified in an enumeration. There might be property sets defined specifically for each predefined type. - boost::optional< ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcGeographicElement (IfcEntityInstanceData&& e); - IfcGeographicElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcGeographicElement > list; + // IfcGeographicElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcGeographicElementTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcGeotechnicalElement : public IfcElement { +class IFC_PARSE_API IfcGeotechnicalElement : public IfcElement { public: - virtual const IfcParse::entity& declaration() const; + IfcGeotechnicalElement() {} + explicit IfcGeotechnicalElement (const std::weak_ptr& data) : IfcElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcGeotechnicalElement (IfcEntityInstanceData&& e); - IfcGeotechnicalElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcGeotechnicalElement > list; + // IfcGeotechnicalElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; -class IFC_PARSE_API IfcGeotechnicalStratum : public IfcGeotechnicalElement { +class IFC_PARSE_API IfcGeotechnicalStratum : public IfcGeotechnicalElement { public: - boost::optional< ::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcGeotechnicalStratum() {} + explicit IfcGeotechnicalStratum (const std::weak_ptr& data) : IfcGeotechnicalElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcGeotechnicalStratum (IfcEntityInstanceData&& e); - IfcGeotechnicalStratum (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcGeotechnicalStratum > list; + // IfcGeotechnicalStratum (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcGeotechnicalStratumTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcGradientCurve : public IfcCompositeCurve { +class IFC_PARSE_API IfcGradientCurve : public IfcCompositeCurve { public: - ::Ifc4x3_add2::IfcBoundedCurve* BaseCurve() const; - void setBaseCurve(::Ifc4x3_add2::IfcBoundedCurve* v); - ::Ifc4x3_add2::IfcPlacement* EndPoint() const; - void setEndPoint(::Ifc4x3_add2::IfcPlacement* v); - virtual const IfcParse::entity& declaration() const; + IfcGradientCurve() {} + explicit IfcGradientCurve (const std::weak_ptr& data) : IfcCompositeCurve(data) {} + + ::Ifc4x3_add2::IfcBoundedCurve BaseCurve() const; + void setBaseCurve(const ::Ifc4x3_add2::IfcBoundedCurve& v); + ::Ifc4x3_add2::IfcPlacement EndPoint() const; + void setEndPoint(const ::Ifc4x3_add2::IfcPlacement& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcGradientCurve (IfcEntityInstanceData&& e); - IfcGradientCurve (aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect, ::Ifc4x3_add2::IfcBoundedCurve* v3_BaseCurve, ::Ifc4x3_add2::IfcPlacement* v4_EndPoint); - typedef aggregate_of< IfcGradientCurve > list; + // IfcGradientCurve (std::vector< ::Ifc4x3_add2::IfcSegment > v1_Segments, boost::logic::tribool v2_SelfIntersect, ::Ifc4x3_add2::IfcBoundedCurve v3_BaseCurve, ::Ifc4x3_add2::IfcPlacement v4_EndPoint); }; /// IfcGroup is an generalization of any arbitrary group. A group is a logical collection of objects. It does not have its own position, nor can it hold its own shape representation. Therefore a group is an aggregation under some non-geometrical / topological grouping aspects. /// @@ -30808,15 +35259,16 @@ public: /// Groups can be subjected to a control. The control information is then assigned: /// /// Controls: affecting the group using IfcRelAssignsToControl -class IFC_PARSE_API IfcGroup : public IfcObject, public IfcSpatialReferenceSelect { +class IFC_PARSE_API IfcGroup : public IfcObject { public: - aggregate_of< IfcRelAssignsToGroup >::ptr IsGroupedBy() const; // INVERSE IfcRelAssignsToGroup::RelatingGroup - aggregate_of< IfcRelReferencedInSpatialStructure >::ptr ReferencedInStructures() const; // INVERSE IfcRelReferencedInSpatialStructure::RelatedElements - virtual const IfcParse::entity& declaration() const; + IfcGroup() {} + explicit IfcGroup (const std::weak_ptr& data) : IfcObject(data) {} + + std::vector< IfcRelAssignsToGroup > IsGroupedBy() const; // INVERSE IfcRelAssignsToGroup::RelatingGroup + std::vector< IfcRelReferencedInSpatialStructure > ReferencedInStructures() const; // INVERSE IfcRelReferencedInSpatialStructure::RelatedElements + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcGroup (IfcEntityInstanceData&& e); - IfcGroup (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType); - typedef aggregate_of< IfcGroup > list; + // IfcGroup (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType); }; /// The energy conversion device type IfcHeatExchangerType defines commonly shared information for occurrences of heat exchangers. The set of shared information may include: /// @@ -30847,16 +35299,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcHeatExchangerType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcHeatExchanger for standard port definitions. -class IFC_PARSE_API IfcHeatExchangerType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcHeatExchangerType : public IfcEnergyConversionDeviceType { public: + IfcHeatExchangerType() {} + explicit IfcHeatExchangerType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Defines the basic types of heat exchanger (e.g., plate, shell and tube, etc.). ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcHeatExchangerType (IfcEntityInstanceData&& e); - IfcHeatExchangerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcHeatExchangerType > list; + // IfcHeatExchangerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value v10_PredefinedType); }; /// The energy conversion device type IfcHumidifierType defines commonly shared information for occurrences of humidifiers. The set of shared information may include: /// @@ -30884,53 +35337,57 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcHumidifierType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcHumidifier for standard port definitions. -class IFC_PARSE_API IfcHumidifierType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcHumidifierType : public IfcEnergyConversionDeviceType { public: + IfcHumidifierType() {} + explicit IfcHumidifierType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Defines the type of humidifier. ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcHumidifierTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcHumidifierType (IfcEntityInstanceData&& e); - IfcHumidifierType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcHumidifierType > list; + // IfcHumidifierType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcImpactProtectionDevice : public IfcElementComponent { +class IFC_PARSE_API IfcImpactProtectionDevice : public IfcElementComponent { public: - boost::optional< ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcImpactProtectionDevice() {} + explicit IfcImpactProtectionDevice (const std::weak_ptr& data) : IfcElementComponent(data) {} + + std::optional< ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcImpactProtectionDevice (IfcEntityInstanceData&& e); - IfcImpactProtectionDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcImpactProtectionDevice > list; + // IfcImpactProtectionDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcImpactProtectionDeviceType : public IfcElementComponentType { +class IFC_PARSE_API IfcImpactProtectionDeviceType : public IfcElementComponentType { public: + IfcImpactProtectionDeviceType() {} + explicit IfcImpactProtectionDeviceType (const std::weak_ptr& data) : IfcElementComponentType(data) {} + ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcImpactProtectionDeviceType (IfcEntityInstanceData&& e); - IfcImpactProtectionDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcImpactProtectionDeviceType > list; + // IfcImpactProtectionDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcImpactProtectionDeviceTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcIndexedPolyCurve : public IfcBoundedCurve { +class IFC_PARSE_API IfcIndexedPolyCurve : public IfcBoundedCurve { public: - ::Ifc4x3_add2::IfcCartesianPointList* Points() const; - void setPoints(::Ifc4x3_add2::IfcCartesianPointList* v); - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcSegmentIndexSelect >::ptr > Segments() const; - void setSegments(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcSegmentIndexSelect >::ptr > v); - boost::optional< bool > SelfIntersect() const; - void setSelfIntersect(boost::optional< bool > v); - virtual const IfcParse::entity& declaration() const; + IfcIndexedPolyCurve() {} + explicit IfcIndexedPolyCurve (const std::weak_ptr& data) : IfcBoundedCurve(data) {} + + ::Ifc4x3_add2::IfcCartesianPointList Points() const; + void setPoints(const ::Ifc4x3_add2::IfcCartesianPointList& v); + std::optional< std::vector< ::Ifc4x3_add2::IfcSegmentIndexSelect > > Segments() const; + void setSegments(const std::optional< std::vector< ::Ifc4x3_add2::IfcSegmentIndexSelect > >& v); + std::optional< bool > SelfIntersect() const; + void setSelfIntersect(const std::optional< bool >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcIndexedPolyCurve (IfcEntityInstanceData&& e); - IfcIndexedPolyCurve (::Ifc4x3_add2::IfcCartesianPointList* v1_Points, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcSegmentIndexSelect >::ptr > v2_Segments, boost::optional< bool > v3_SelfIntersect); - typedef aggregate_of< IfcIndexedPolyCurve > list; + // IfcIndexedPolyCurve (::Ifc4x3_add2::IfcCartesianPointList v1_Points, std::optional< std::vector< ::Ifc4x3_add2::IfcSegmentIndexSelect > > v2_Segments, std::optional< bool > v3_SelfIntersect); }; /// The flow treatment device type IfcInterceptorType defines commonly shared information for occurrences of interceptors. The set of shared information may include: /// @@ -30965,24 +35422,26 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcInterceptorType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcInterceptor for standard port definitions. -class IFC_PARSE_API IfcInterceptorType : public IfcFlowTreatmentDeviceType { +class IFC_PARSE_API IfcInterceptorType : public IfcFlowTreatmentDeviceType { public: + IfcInterceptorType() {} + explicit IfcInterceptorType (const std::weak_ptr& data) : IfcFlowTreatmentDeviceType(data) {} + ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcInterceptorTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcInterceptorType (IfcEntityInstanceData&& e); - IfcInterceptorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcInterceptorType > list; + // IfcInterceptorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcIntersectionCurve : public IfcSurfaceCurve { +class IFC_PARSE_API IfcIntersectionCurve : public IfcSurfaceCurve { public: - virtual const IfcParse::entity& declaration() const; + IfcIntersectionCurve() {} + explicit IfcIntersectionCurve (const std::weak_ptr& data) : IfcSurfaceCurve(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcIntersectionCurve (IfcEntityInstanceData&& e); - IfcIntersectionCurve (::Ifc4x3_add2::IfcCurve* v1_Curve3D, aggregate_of< ::Ifc4x3_add2::IfcPcurve >::ptr v2_AssociatedGeometry, ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation); - typedef aggregate_of< IfcIntersectionCurve > list; + // IfcIntersectionCurve (::Ifc4x3_add2::IfcCurve v1_Curve3D, std::vector< ::Ifc4x3_add2::IfcPcurve > v2_AssociatedGeometry, ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation); }; /// An inventory is a list of items within an enterprise. /// @@ -30995,35 +35454,36 @@ public: /// IfcElement: Elements such as furniture included in the inventory. /// /// IfcSpace: Spaces included in the inventory. -class IFC_PARSE_API IfcInventory : public IfcGroup { +class IFC_PARSE_API IfcInventory : public IfcGroup { public: + IfcInventory() {} + explicit IfcInventory (const std::weak_ptr& data) : IfcGroup(data) {} + /// A list of the types of inventories from which that required may be selected. /// /// IFC2x4 CHANGE Attribute made optional. - boost::optional< ::Ifc4x3_add2::IfcInventoryTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcInventoryTypeEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcInventoryTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcInventoryTypeEnum::Value >& v); /// The organizational unit to which the inventory is applicable. - ::Ifc4x3_add2::IfcActorSelect* Jurisdiction() const; - void setJurisdiction(::Ifc4x3_add2::IfcActorSelect* v); + ::Ifc4x3_add2::IfcActorSelect Jurisdiction() const; + void setJurisdiction(const ::Ifc4x3_add2::IfcActorSelect& v); /// Persons who are responsible for the inventory. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > ResponsiblePersons() const; - void setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > > ResponsiblePersons() const; + void setResponsiblePersons(const std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > >& v); /// The date on which the last update of the inventory was carried out. /// /// IFC2x4 CHANGE Type changed from IfcDateTimeSelect. - boost::optional< std::string > LastUpdateDate() const; - void setLastUpdateDate(boost::optional< std::string > v); + std::optional< std::string > LastUpdateDate() const; + void setLastUpdateDate(const std::optional< std::string >& v); /// An estimate of the current cost value of the inventory. - ::Ifc4x3_add2::IfcCostValue* CurrentValue() const; - void setCurrentValue(::Ifc4x3_add2::IfcCostValue* v); + ::Ifc4x3_add2::IfcCostValue CurrentValue() const; + void setCurrentValue(const ::Ifc4x3_add2::IfcCostValue& v); /// An estimate of the original cost value of the inventory. - ::Ifc4x3_add2::IfcCostValue* OriginalValue() const; - void setOriginalValue(::Ifc4x3_add2::IfcCostValue* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcCostValue OriginalValue() const; + void setOriginalValue(const ::Ifc4x3_add2::IfcCostValue& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcInventory (IfcEntityInstanceData&& e); - IfcInventory (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< ::Ifc4x3_add2::IfcInventoryTypeEnum::Value > v6_PredefinedType, ::Ifc4x3_add2::IfcActorSelect* v7_Jurisdiction, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > v8_ResponsiblePersons, boost::optional< std::string > v9_LastUpdateDate, ::Ifc4x3_add2::IfcCostValue* v10_CurrentValue, ::Ifc4x3_add2::IfcCostValue* v11_OriginalValue); - typedef aggregate_of< IfcInventory > list; + // IfcInventory (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< ::Ifc4x3_add2::IfcInventoryTypeEnum::Value > v6_PredefinedType, ::Ifc4x3_add2::IfcActorSelect v7_Jurisdiction, std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > > v8_ResponsiblePersons, std::optional< std::string > v9_LastUpdateDate, ::Ifc4x3_add2::IfcCostValue v10_CurrentValue, ::Ifc4x3_add2::IfcCostValue v11_OriginalValue); }; /// The flow fitting type IfcJunctionBoxType defines commonly shared information for occurrences of junction boxs. The set of shared information may include: /// @@ -31052,27 +35512,29 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcJunctionBoxType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcJunctionBox for standard port definitions. -class IFC_PARSE_API IfcJunctionBoxType : public IfcFlowFittingType { +class IFC_PARSE_API IfcJunctionBoxType : public IfcFlowFittingType { public: + IfcJunctionBoxType() {} + explicit IfcJunctionBoxType (const std::weak_ptr& data) : IfcFlowFittingType(data) {} + /// Identifies the predefined types of junction boxes from which the type required may be set. ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcJunctionBoxType (IfcEntityInstanceData&& e); - IfcJunctionBoxType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcJunctionBoxType > list; + // IfcJunctionBoxType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcKerbType : public IfcBuiltElementType { +class IFC_PARSE_API IfcKerbType : public IfcBuiltElementType { public: + IfcKerbType() {} + explicit IfcKerbType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + ::Ifc4x3_add2::IfcKerbTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcKerbTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcKerbTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcKerbType (IfcEntityInstanceData&& e); - IfcKerbType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcKerbTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcKerbType > list; + // IfcKerbType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcKerbTypeEnum::Value v10_PredefinedType); }; /// An IfcLaborResource is used in construction with particular skills or crafts required to perform certain types of construction or management related work. /// @@ -31098,17 +35560,18 @@ public: /// In addition to assignments specified at the base class IfcConstructionResource, a labor resource may have assignments of its own using IfcRelAssignsToResource where RelatingResource refers to the IfcLaborResource and RelatedObjects contains one or more IfcActor subtypes as shown in Figure 194. Such relationship indicates the specific people used as input for the resource. Such actors are nested according to organizational structure with the root organization assigned to the IfcProject. The IfcActor entity is used to represent the people or organizations. /// /// Figure 194 — Labor resource assignment use -class IFC_PARSE_API IfcLaborResource : public IfcConstructionResource { +class IFC_PARSE_API IfcLaborResource : public IfcConstructionResource { public: + IfcLaborResource() {} + explicit IfcLaborResource (const std::weak_ptr& data) : IfcConstructionResource(data) {} + /// Defines types of labor resources. /// IFC2x4 New attribute - boost::optional< ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLaborResource (IfcEntityInstanceData&& e); - IfcLaborResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value > v11_PredefinedType); - typedef aggregate_of< IfcLaborResource > list; + // IfcLaborResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime v8_Usage, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v10_BaseQuantity, std::optional< ::Ifc4x3_add2::IfcLaborResourceTypeEnum::Value > v11_PredefinedType); }; /// The flow terminal type IfcLampType defines commonly shared information for occurrences of lamps. The set of shared information may include: /// @@ -31139,16 +35602,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcLampType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcLamp for standard port definitions. -class IFC_PARSE_API IfcLampType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcLampType : public IfcFlowTerminalType { public: + IfcLampType() {} + explicit IfcLampType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + /// Identifies the predefined types of lamp from which the type required may be set. ::Ifc4x3_add2::IfcLampTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcLampTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcLampTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLampType (IfcEntityInstanceData&& e); - IfcLampType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcLampTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcLampType > list; + // IfcLampType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcLampTypeEnum::Value v10_PredefinedType); }; /// The flow terminal type IfcLightFixtureType defines commonly shared information for occurrences of light fixtures. The set of shared information may include: /// @@ -31181,58 +35645,63 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcLightFixtureType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcLightFixture for standard port definitions. -class IFC_PARSE_API IfcLightFixtureType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcLightFixtureType : public IfcFlowTerminalType { public: + IfcLightFixtureType() {} + explicit IfcLightFixtureType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + /// Identifies the predefined types of light fixture from which the type required may be set. ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLightFixtureType (IfcEntityInstanceData&& e); - IfcLightFixtureType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcLightFixtureType > list; + // IfcLightFixtureType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcLinearElement : public IfcProduct { +class IFC_PARSE_API IfcLinearElement : public IfcProduct { public: - virtual const IfcParse::entity& declaration() const; + IfcLinearElement() {} + explicit IfcLinearElement (const std::weak_ptr& data) : IfcProduct(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLinearElement (IfcEntityInstanceData&& e); - IfcLinearElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation); - typedef aggregate_of< IfcLinearElement > list; + // IfcLinearElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation); }; -class IFC_PARSE_API IfcLiquidTerminalType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcLiquidTerminalType : public IfcFlowTerminalType { public: + IfcLiquidTerminalType() {} + explicit IfcLiquidTerminalType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLiquidTerminalType (IfcEntityInstanceData&& e); - IfcLiquidTerminalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcLiquidTerminalType > list; + // IfcLiquidTerminalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcMarineFacility : public IfcFacility { +class IFC_PARSE_API IfcMarineFacility : public IfcFacility { public: - boost::optional< ::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcMarineFacility() {} + explicit IfcMarineFacility (const std::weak_ptr& data) : IfcFacility(data) {} + + std::optional< ::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMarineFacility (IfcEntityInstanceData&& e); - IfcMarineFacility (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< ::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Value > v10_PredefinedType); - typedef aggregate_of< IfcMarineFacility > list; + // IfcMarineFacility (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< ::Ifc4x3_add2::IfcMarineFacilityTypeEnum::Value > v10_PredefinedType); }; -class IFC_PARSE_API IfcMarinePart : public IfcFacilityPart { +class IFC_PARSE_API IfcMarinePart : public IfcFacilityPart { public: - boost::optional< ::Ifc4x3_add2::IfcMarinePartTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMarinePartTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcMarinePart() {} + explicit IfcMarinePart (const std::weak_ptr& data) : IfcFacilityPart(data) {} + + std::optional< ::Ifc4x3_add2::IfcMarinePartTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMarinePartTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMarinePart (IfcEntityInstanceData&& e); - IfcMarinePart (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, boost::optional< ::Ifc4x3_add2::IfcMarinePartTypeEnum::Value > v11_PredefinedType); - typedef aggregate_of< IfcMarinePart > list; + // IfcMarinePart (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, std::optional< ::Ifc4x3_add2::IfcMarinePartTypeEnum::Value > v11_PredefinedType); }; /// Definition from IAI: Fasteners connecting building elements mechanically. A single instance of this class may represent one or many of actual mechanical fasteners, for example an array of bolts or a row of nails. /// @@ -31263,20 +35732,21 @@ public: /// the IfcMechanicalFastener via IfcRelDefinesByProperties. The quantity should contain an /// IfcQuantityCount named 'Count' with the number of fasteners and an IfcQuantityLength /// named 'Spacing' which expresses the center-to-center distances of fasteners. -class IFC_PARSE_API IfcMechanicalFastener : public IfcElementComponent { +class IFC_PARSE_API IfcMechanicalFastener : public IfcElementComponent { public: - boost::optional< double > NominalDiameter() const; - void setNominalDiameter(boost::optional< double > v); - boost::optional< double > NominalLength() const; - void setNominalLength(boost::optional< double > v); + IfcMechanicalFastener() {} + explicit IfcMechanicalFastener (const std::weak_ptr& data) : IfcElementComponent(data) {} + + std::optional< double > NominalDiameter() const; + void setNominalDiameter(const std::optional< double >& v); + std::optional< double > NominalLength() const; + void setNominalLength(const std::optional< double >& v); /// Subtype of mechanical fastener - boost::optional< ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMechanicalFastener (IfcEntityInstanceData&& e); - IfcMechanicalFastener (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_NominalDiameter, boost::optional< double > v10_NominalLength, boost::optional< ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value > v11_PredefinedType); - typedef aggregate_of< IfcMechanicalFastener > list; + // IfcMechanicalFastener (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< double > v9_NominalDiameter, std::optional< double > v10_NominalLength, std::optional< ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value > v11_PredefinedType); }; /// Definition from IAI: The element type (IfcMechanicalFastenerType) defines a list of commonly shared property set definitions of a fastener and an optional set of product representations. It is used to define mechanical fasteners mainly within structural and building services domains (i.e. the specific type information common to all occurrences of that type). /// @@ -31313,22 +35783,23 @@ public: /// The following property set definitions are applicable to this entity according to the PredefinedType attribute: /// /// Pset_MechanicalFastenerBolt (BOLT) -class IFC_PARSE_API IfcMechanicalFastenerType : public IfcElementComponentType { +class IFC_PARSE_API IfcMechanicalFastenerType : public IfcElementComponentType { public: + IfcMechanicalFastenerType() {} + explicit IfcMechanicalFastenerType (const std::weak_ptr& data) : IfcElementComponentType(data) {} + /// Subtype of mechanical fastener ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value v); + void setPredefinedType(const ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value& v); /// The nominal diameter describing the cross-section size of the fastener type. - boost::optional< double > NominalDiameter() const; - void setNominalDiameter(boost::optional< double > v); + std::optional< double > NominalDiameter() const; + void setNominalDiameter(const std::optional< double >& v); /// The nominal length describing the longitudinal dimensions of the fastener type. - boost::optional< double > NominalLength() const; - void setNominalLength(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > NominalLength() const; + void setNominalLength(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMechanicalFastenerType (IfcEntityInstanceData&& e); - IfcMechanicalFastenerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_NominalLength); - typedef aggregate_of< IfcMechanicalFastenerType > list; + // IfcMechanicalFastenerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMechanicalFastenerTypeEnum::Value v10_PredefinedType, std::optional< double > v11_NominalDiameter, std::optional< double > v12_NominalLength); }; /// The flow terminal type IfcMedicalDeviceType defines commonly shared information for occurrences of medical devices. The set of shared information may include: /// @@ -31356,15 +35827,16 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcMedicalDeviceType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcMedicalDevice for standard port definitions. -class IFC_PARSE_API IfcMedicalDeviceType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcMedicalDeviceType : public IfcFlowTerminalType { public: + IfcMedicalDeviceType() {} + explicit IfcMedicalDeviceType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMedicalDeviceType (IfcEntityInstanceData&& e); - IfcMedicalDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcMedicalDeviceType > list; + // IfcMedicalDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: The element type /// IfcMemberType defines commonly shared information for @@ -31467,38 +35939,41 @@ public: /// IfcShapeRepresentation are restricted in the same way as /// those for IfcMember and /// IfcMemberStandardCase -class IFC_PARSE_API IfcMemberType : public IfcBuiltElementType { +class IFC_PARSE_API IfcMemberType : public IfcBuiltElementType { public: + IfcMemberType() {} + explicit IfcMemberType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a linear structural member element from which the type required may be set. ::Ifc4x3_add2::IfcMemberTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcMemberTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcMemberTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMemberType (IfcEntityInstanceData&& e); - IfcMemberType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMemberTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcMemberType > list; + // IfcMemberType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMemberTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcMobileTelecommunicationsApplianceType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcMobileTelecommunicationsApplianceType : public IfcFlowTerminalType { public: + IfcMobileTelecommunicationsApplianceType() {} + explicit IfcMobileTelecommunicationsApplianceType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMobileTelecommunicationsApplianceType (IfcEntityInstanceData&& e); - IfcMobileTelecommunicationsApplianceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcMobileTelecommunicationsApplianceType > list; + // IfcMobileTelecommunicationsApplianceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcMooringDeviceType : public IfcBuiltElementType { +class IFC_PARSE_API IfcMooringDeviceType : public IfcBuiltElementType { public: + IfcMooringDeviceType() {} + explicit IfcMooringDeviceType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMooringDeviceType (IfcEntityInstanceData&& e); - IfcMooringDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcMooringDeviceType > list; + // IfcMooringDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value v10_PredefinedType); }; /// The energy conversion device type IfcMotorConnectionType defines commonly shared information for occurrences of motor connections. The set of shared information may include: /// @@ -31527,27 +36002,29 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcMotorConnectionType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcMotorConnection for standard port definitions. -class IFC_PARSE_API IfcMotorConnectionType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcMotorConnectionType : public IfcEnergyConversionDeviceType { public: + IfcMotorConnectionType() {} + explicit IfcMotorConnectionType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Identifies the predefined types of motor connection from which the type required may be set. ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMotorConnectionType (IfcEntityInstanceData&& e); - IfcMotorConnectionType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcMotorConnectionType > list; + // IfcMotorConnectionType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcNavigationElementType : public IfcBuiltElementType { +class IFC_PARSE_API IfcNavigationElementType : public IfcBuiltElementType { public: + IfcNavigationElementType() {} + explicit IfcNavigationElementType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcNavigationElementType (IfcEntityInstanceData&& e); - IfcNavigationElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcNavigationElementType > list; + // IfcNavigationElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value v10_PredefinedType); }; /// An occupant is a type of actor that defines the form of occupancy of a property. /// @@ -31556,18 +36033,19 @@ public: /// Assignment Use Definition /// The IfcOccupant may have assignments of its own using the IfcRelAssignsToActor relationship where RelatingActor refers to the IfcOccupant and RelatedObjects contains one or more objects of the following types: /// IfcSpatialStructureElement: Indicates the property to be occupied. Particular details of the agreement relating to the occupancy of a property are dealt within the Pset_PropertyAgreement that is defined for the instance of IfcSpatialStructureElement. This means that an occupant may be related to a site, building, building storey or space through the IfcSpatialStructureElement.ElementComposition attribute. For instance, if the property concerned is several office spaces on a building storey, it might be appropriate to reference IfcBuildingStorey.ElementComposition=PARTIAL. Occupants of a property may be considered to be the parties to an agreement. The roles that the occupant may play in respect to an agreement are defined in the IfcOccupantTypeEnum enumeration. If the role is not specified by the predefined contents of this enumeration, the value USERDEFINED may be set and the ObjectType attribute asserted. -class IFC_PARSE_API IfcOccupant : public IfcActor { +class IFC_PARSE_API IfcOccupant : public IfcActor { public: + IfcOccupant() {} + explicit IfcOccupant (const std::weak_ptr& data) : IfcActor(data) {} + /// Predefined occupant types from which that required may be set. /// /// IFC2x4 CHANGE Attribute made optional. - boost::optional< ::Ifc4x3_add2::IfcOccupantTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcOccupantTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcOccupantTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcOccupantTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcOccupant (IfcEntityInstanceData&& e); - IfcOccupant (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcActorSelect* v6_TheActor, boost::optional< ::Ifc4x3_add2::IfcOccupantTypeEnum::Value > v7_PredefinedType); - typedef aggregate_of< IfcOccupant > list; + // IfcOccupant (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcActorSelect v6_TheActor, std::optional< ::Ifc4x3_add2::IfcOccupantTypeEnum::Value > v7_PredefinedType); }; /// The opening element stands for /// opening, recess or chase, all reflecting voids. It represents a @@ -31771,19 +36249,20 @@ public: /// NOTE The local placement directions for the IfcOpeningElement are only given as an example, other directions are valid as well. /// /// Figure 36 — Opening with multiple extrusions -class IFC_PARSE_API IfcOpeningElement : public IfcFeatureElementSubtraction { +class IFC_PARSE_API IfcOpeningElement : public IfcFeatureElementSubtraction { public: + IfcOpeningElement() {} + explicit IfcOpeningElement (const std::weak_ptr& data) : IfcFeatureElementSubtraction(data) {} + /// Predefined generic type for an opening that is specified in an enumeration. There may be a property set given specificly for the predefined types. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< ::Ifc4x3_add2::IfcOpeningElementTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcOpeningElementTypeEnum::Value > v); - aggregate_of< IfcRelFillsElement >::ptr HasFillings() const; // INVERSE IfcRelFillsElement::RelatingOpeningElement - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcOpeningElementTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcOpeningElementTypeEnum::Value >& v); + std::vector< IfcRelFillsElement > HasFillings() const; // INVERSE IfcRelFillsElement::RelatingOpeningElement + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcOpeningElement (IfcEntityInstanceData&& e); - IfcOpeningElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcOpeningElementTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcOpeningElement > list; + // IfcOpeningElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcOpeningElementTypeEnum::Value > v9_PredefinedType); }; /// The flow terminal type IfcOutletType defines commonly shared information for occurrences of outlets. The set of shared information may include: /// @@ -31814,48 +36293,51 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcOutletType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcOutlet for standard port definitions. -class IFC_PARSE_API IfcOutletType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcOutletType : public IfcFlowTerminalType { public: + IfcOutletType() {} + explicit IfcOutletType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + /// Identifies the predefined types of outlet from which the type required may be set. ::Ifc4x3_add2::IfcOutletTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcOutletTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcOutletTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcOutletType (IfcEntityInstanceData&& e); - IfcOutletType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcOutletTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcOutletType > list; + // IfcOutletType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcOutletTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcPavementType : public IfcBuiltElementType { +class IFC_PARSE_API IfcPavementType : public IfcBuiltElementType { public: + IfcPavementType() {} + explicit IfcPavementType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + ::Ifc4x3_add2::IfcPavementTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcPavementTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcPavementTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPavementType (IfcEntityInstanceData&& e); - IfcPavementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPavementTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcPavementType > list; + // IfcPavementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPavementTypeEnum::Value v10_PredefinedType); }; /// IfcPerformanceHistory is used to document the actual performance of an occurrence instance over time. In practice, performance-related data are generally not easy to obtain as they can originate from different sources (predicted, simulated, or measured) and occur during different stages of the building life-cycle. Such time-related data cover a large spectrum, including meteorological data, schedules, operational status measurements, trend reports, etc. /// /// IfcPerformanceHistory is assigned to other objects (represented by subtypes of IfcObjectDefinition, excluding subtypes of IfcControl), by the objectified relationship IfcRelAssignsToControl. /// /// HISTORY: New entity in Release IFC2x Edition 2. -class IFC_PARSE_API IfcPerformanceHistory : public IfcControl { +class IFC_PARSE_API IfcPerformanceHistory : public IfcControl { public: + IfcPerformanceHistory() {} + explicit IfcPerformanceHistory (const std::weak_ptr& data) : IfcControl(data) {} + /// Describes the applicable building life-cycle phase. Typical values should be DESIGNDEVELOPMENT, SCHEMATICDEVELOPMENT, CONSTRUCTIONDOCUMENT, CONSTRUCTION, ASBUILT, COMMISSIONING, OPERATION, etc. std::string LifeCyclePhase() const; - void setLifeCyclePhase(std::string v); + void setLifeCyclePhase(const std::string& v); /// Predefined generic type for a performace history that is specified in an enumeration. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< ::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPerformanceHistory (IfcEntityInstanceData&& e); - IfcPerformanceHistory (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_LifeCyclePhase, boost::optional< ::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Value > v8_PredefinedType); - typedef aggregate_of< IfcPerformanceHistory > list; + // IfcPerformanceHistory (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::string v7_LifeCyclePhase, std::optional< ::Ifc4x3_add2::IfcPerformanceHistoryTypeEnum::Value > v8_PredefinedType); }; /// This entity is a description of a panel within a /// door or window (as fillers for opening) which allows for air @@ -31888,28 +36370,29 @@ public: /// As shown in Figure 174, the panel is applied to the position within the lining, as defined by the panel position attribute. The following parameters apply to that panel: FrameDepth, FrameThickness. /// /// Figure 174 — Permeable covering properties -class IFC_PARSE_API IfcPermeableCoveringProperties : public IfcPreDefinedPropertySet { +class IFC_PARSE_API IfcPermeableCoveringProperties : public IfcPreDefinedPropertySet { public: + IfcPermeableCoveringProperties() {} + explicit IfcPermeableCoveringProperties (const std::weak_ptr& data) : IfcPreDefinedPropertySet(data) {} + /// Types of permeable covering operations. Also used to assign standard symbolic presentations according to national building standards. ::Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Value OperationType() const; - void setOperationType(::Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Value v); + void setOperationType(const ::Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Value& v); /// Position of this permeable covering panel within the overall window or door type. ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value PanelPosition() const; - void setPanelPosition(::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value v); + void setPanelPosition(const ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value& v); /// Depth of panel frame (used to include the permeable covering), measured from front face to back face horizontally (i.e. perpendicular to the window or door (elevation) plane. - boost::optional< double > FrameDepth() const; - void setFrameDepth(boost::optional< double > v); + std::optional< double > FrameDepth() const; + void setFrameDepth(const std::optional< double >& v); /// Width of panel frame (used to include the permeable covering), measured from inside of panel (at permeable covering) to outside of panel (at lining), i.e. parallel to the window or door (elevation) plane. - boost::optional< double > FrameThickness() const; - void setFrameThickness(boost::optional< double > v); + std::optional< double > FrameThickness() const; + void setFrameThickness(const std::optional< double >& v); /// Optional link to a shape aspect definition, which points to the part of the geometric representation of the window style, which is used to represent the permeable covering. - ::Ifc4x3_add2::IfcShapeAspect* ShapeAspectStyle() const; - void setShapeAspectStyle(::Ifc4x3_add2::IfcShapeAspect* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcShapeAspect ShapeAspectStyle() const; + void setShapeAspectStyle(const ::Ifc4x3_add2::IfcShapeAspect& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPermeableCoveringProperties (IfcEntityInstanceData&& e); - IfcPermeableCoveringProperties (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Value v5_OperationType, ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, ::Ifc4x3_add2::IfcShapeAspect* v9_ShapeAspectStyle); - typedef aggregate_of< IfcPermeableCoveringProperties > list; + // IfcPermeableCoveringProperties (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcPermeableCoveringOperationEnum::Value v5_OperationType, ::Ifc4x3_add2::IfcWindowPanelPositionEnum::Value v6_PanelPosition, std::optional< double > v7_FrameDepth, std::optional< double > v8_FrameThickness, ::Ifc4x3_add2::IfcShapeAspect v9_ShapeAspectStyle); }; /// A permit is a permission to perform work in places and on artifacts where regulatory, security or other access restrictions apply. /// @@ -31948,28 +36431,29 @@ public: /// /// Approval Use Definition /// Approvals may be associated to indicate the status of acceptance or rejection using the IfcRelAssociatesApproval relationship where RelatingApproval refers to an IfcApproval and RelatedObjects contains the IfcPermit. Approvals may be split into sub-approvals using IfcApprovalRelationship to track approval status separately for each party where RelatingApproval refers to the higher-level approval and RelatedApprovals contains one or more lower-level approvals. The hierarchy of approvals implies sequencing such that a higher-level approval is not executed until all of its lower-level approvals have been accepted. -class IFC_PARSE_API IfcPermit : public IfcControl { +class IFC_PARSE_API IfcPermit : public IfcControl { public: + IfcPermit() {} + explicit IfcPermit (const std::weak_ptr& data) : IfcControl(data) {} + /// Identifies the predefined types of permit that can be granted. /// /// IFC2x4 CHANGE The attribute has been added. - boost::optional< ::Ifc4x3_add2::IfcPermitTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPermitTypeEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcPermitTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPermitTypeEnum::Value >& v); /// The status currently assigned to the permit. /// /// IFC2x4 CHANGE The attribute has been added. - boost::optional< std::string > Status() const; - void setStatus(boost::optional< std::string > v); + std::optional< std::string > Status() const; + void setStatus(const std::optional< std::string >& v); /// Detailed description of the request. /// /// IFC2x4 CHANGE The attribute has been added. - boost::optional< std::string > LongDescription() const; - void setLongDescription(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > LongDescription() const; + void setLongDescription(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPermit (IfcEntityInstanceData&& e); - IfcPermit (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< ::Ifc4x3_add2::IfcPermitTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription); - typedef aggregate_of< IfcPermit > list; + // IfcPermit (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< ::Ifc4x3_add2::IfcPermitTypeEnum::Value > v7_PredefinedType, std::optional< std::string > v8_Status, std::optional< std::string > v9_LongDescription); }; /// Definition from IAI: Provides shared material, decomposition, representation maps, and property sets for instances of IfcPile. /// @@ -31978,16 +36462,17 @@ public: /// Material Use Definition: /// /// Material profile set association analogous to IfcColumnStandardCase should be used when applicable. -class IFC_PARSE_API IfcPileType : public IfcDeepFoundationType { +class IFC_PARSE_API IfcPileType : public IfcDeepFoundationType { public: + IfcPileType() {} + explicit IfcPileType (const std::weak_ptr& data) : IfcDeepFoundationType(data) {} + /// Subtype of pile. ::Ifc4x3_add2::IfcPileTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcPileTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcPileTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPileType (IfcEntityInstanceData&& e); - IfcPileType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPileTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcPileType > list; + // IfcPileType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPileTypeEnum::Value v10_PredefinedType); }; /// The flow fitting type IfcPipeFittingType defines commonly shared information for occurrences of pipe fittings. The set of shared information may include: /// @@ -32018,16 +36503,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcPipeFittingType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcPipeFitting for standard port definitions. -class IFC_PARSE_API IfcPipeFittingType : public IfcFlowFittingType { +class IFC_PARSE_API IfcPipeFittingType : public IfcFlowFittingType { public: + IfcPipeFittingType() {} + explicit IfcPipeFittingType (const std::weak_ptr& data) : IfcFlowFittingType(data) {} + /// The type of pipe fitting. ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPipeFittingType (IfcEntityInstanceData&& e); - IfcPipeFittingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcPipeFittingType > list; + // IfcPipeFittingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value v10_PredefinedType); }; /// The flow segment type IfcPipeSegmentType defines commonly shared information for occurrences of pipe segments. The set of shared information may include: /// @@ -32062,16 +36548,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcPipeSegmentType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcPipeSegment for standard port definitions. -class IFC_PARSE_API IfcPipeSegmentType : public IfcFlowSegmentType { +class IFC_PARSE_API IfcPipeSegmentType : public IfcFlowSegmentType { public: + IfcPipeSegmentType() {} + explicit IfcPipeSegmentType (const std::weak_ptr& data) : IfcFlowSegmentType(data) {} + /// The type of pipe segment. ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPipeSegmentType (IfcEntityInstanceData&& e); - IfcPipeSegmentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcPipeSegmentType > list; + // IfcPipeSegmentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value v10_PredefinedType); }; /// The element type IfcPlateType defines commonly shared /// information for occurrences of plates. The set of shared @@ -32150,31 +36637,33 @@ public: /// /// Pset_PlateCommon: common property set for all /// plate types. -class IFC_PARSE_API IfcPlateType : public IfcBuiltElementType { +class IFC_PARSE_API IfcPlateType : public IfcBuiltElementType { public: + IfcPlateType() {} + explicit IfcPlateType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a planar member element from which the type required may be set. ::Ifc4x3_add2::IfcPlateTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcPlateTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcPlateTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPlateType (IfcEntityInstanceData&& e); - IfcPlateType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPlateTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcPlateType > list; + // IfcPlateType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPlateTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcPolygonalFaceSet : public IfcTessellatedFaceSet { +class IFC_PARSE_API IfcPolygonalFaceSet : public IfcTessellatedFaceSet { public: - boost::optional< bool > Closed() const; - void setClosed(boost::optional< bool > v); - aggregate_of< ::Ifc4x3_add2::IfcIndexedPolygonalFace >::ptr Faces() const; - void setFaces(aggregate_of< ::Ifc4x3_add2::IfcIndexedPolygonalFace >::ptr v); - boost::optional< std::vector< int > /*[1:?]*/ > PnIndex() const; - void setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v); - virtual const IfcParse::entity& declaration() const; + IfcPolygonalFaceSet() {} + explicit IfcPolygonalFaceSet (const std::weak_ptr& data) : IfcTessellatedFaceSet(data) {} + + std::optional< bool > Closed() const; + void setClosed(const std::optional< bool >& v); + std::vector< ::Ifc4x3_add2::IfcIndexedPolygonalFace > Faces() const; + void setFaces(const std::vector< ::Ifc4x3_add2::IfcIndexedPolygonalFace >& v); + std::optional< std::vector< int > /*[1:?]*/ > PnIndex() const; + void setPnIndex(const std::optional< std::vector< int > /*[1:?]*/ >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPolygonalFaceSet (IfcEntityInstanceData&& e); - IfcPolygonalFaceSet (::Ifc4x3_add2::IfcCartesianPointList3D* v1_Coordinates, boost::optional< bool > v2_Closed, aggregate_of< ::Ifc4x3_add2::IfcIndexedPolygonalFace >::ptr v3_Faces, boost::optional< std::vector< int > /*[1:?]*/ > v4_PnIndex); - typedef aggregate_of< IfcPolygonalFaceSet > list; + // IfcPolygonalFaceSet (::Ifc4x3_add2::IfcCartesianPointList3D v1_Coordinates, std::optional< bool > v2_Closed, std::vector< ::Ifc4x3_add2::IfcIndexedPolygonalFace > v3_Faces, std::optional< std::vector< int > /*[1:?]*/ > v4_PnIndex); }; /// Definition from ISO/CD 10303-42:1992: A polyline /// is a bounded curve of n - 1 linear segments, defined by a @@ -32190,16 +36679,17 @@ public: /// NOTE  Corresponding ISO 10303 entity: polyline. Please refer to ISO/IS 10303-42:1994, p. 45 for the final definition of the formal standard. /// /// HISTORY  New class in IFC Release 1.0 -class IFC_PARSE_API IfcPolyline : public IfcBoundedCurve { +class IFC_PARSE_API IfcPolyline : public IfcBoundedCurve { public: + IfcPolyline() {} + explicit IfcPolyline (const std::weak_ptr& data) : IfcBoundedCurve(data) {} + /// The points defining the polyline. - aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr Points() const; - void setPoints(aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcCartesianPoint > Points() const; + void setPoints(const std::vector< ::Ifc4x3_add2::IfcCartesianPoint >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPolyline (IfcEntityInstanceData&& e); - IfcPolyline (aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v1_Points); - typedef aggregate_of< IfcPolyline > list; + // IfcPolyline (std::vector< ::Ifc4x3_add2::IfcCartesianPoint > v1_Points); }; /// Definition from IAI: An IfcPort provides the /// means for an element to connect to other elements. @@ -32254,27 +36744,29 @@ public: /// The geometry use definitions for the shape representation /// of the IfcPort is given at the level of /// its subtypes. -class IFC_PARSE_API IfcPort : public IfcProduct { +class IFC_PARSE_API IfcPort : public IfcProduct { public: - aggregate_of< IfcRelConnectsPortToElement >::ptr ContainedIn() const; // INVERSE IfcRelConnectsPortToElement::RelatingPort - aggregate_of< IfcRelConnectsPorts >::ptr ConnectedFrom() const; // INVERSE IfcRelConnectsPorts::RelatedPort - aggregate_of< IfcRelConnectsPorts >::ptr ConnectedTo() const; // INVERSE IfcRelConnectsPorts::RelatingPort - virtual const IfcParse::entity& declaration() const; + IfcPort() {} + explicit IfcPort (const std::weak_ptr& data) : IfcProduct(data) {} + + std::vector< IfcRelConnectsPortToElement > ContainedIn() const; // INVERSE IfcRelConnectsPortToElement::RelatingPort + std::vector< IfcRelConnectsPorts > ConnectedFrom() const; // INVERSE IfcRelConnectsPorts::RelatedPort + std::vector< IfcRelConnectsPorts > ConnectedTo() const; // INVERSE IfcRelConnectsPorts::RelatingPort + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPort (IfcEntityInstanceData&& e); - IfcPort (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation); - typedef aggregate_of< IfcPort > list; + // IfcPort (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation); }; -class IFC_PARSE_API IfcPositioningElement : public IfcProduct { +class IFC_PARSE_API IfcPositioningElement : public IfcProduct { public: - aggregate_of< IfcRelContainedInSpatialStructure >::ptr ContainedInStructure() const; // INVERSE IfcRelContainedInSpatialStructure::RelatedElements - aggregate_of< IfcRelPositions >::ptr Positions() const; // INVERSE IfcRelPositions::RelatingPositioningElement - virtual const IfcParse::entity& declaration() const; + IfcPositioningElement() {} + explicit IfcPositioningElement (const std::weak_ptr& data) : IfcProduct(data) {} + + std::vector< IfcRelContainedInSpatialStructure > ContainedInStructure() const; // INVERSE IfcRelContainedInSpatialStructure::RelatedElements + std::vector< IfcRelPositions > Positions() const; // INVERSE IfcRelPositions::RelatingPositioningElement + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPositioningElement (IfcEntityInstanceData&& e); - IfcPositioningElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation); - typedef aggregate_of< IfcPositioningElement > list; + // IfcPositioningElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation); }; /// An IfcProcedure is a /// logical set of actions to be taken in response to an event @@ -32380,17 +36872,18 @@ public: /// item as a whole but provides inner detail of the item. /// /// Figure 12 — Procedure relationships -class IFC_PARSE_API IfcProcedure : public IfcProcess { +class IFC_PARSE_API IfcProcedure : public IfcProcess { public: + IfcProcedure() {} + explicit IfcProcedure (const std::weak_ptr& data) : IfcProcess(data) {} + /// Identifies the predefined types of a procedure from which /// the type required may be set. - boost::optional< ::Ifc4x3_add2::IfcProcedureTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcProcedureTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcProcedureTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcProcedureTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProcedure (IfcEntityInstanceData&& e); - IfcProcedure (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, boost::optional< ::Ifc4x3_add2::IfcProcedureTypeEnum::Value > v8_PredefinedType); - typedef aggregate_of< IfcProcedure > list; + // IfcProcedure (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, std::optional< ::Ifc4x3_add2::IfcProcedureTypeEnum::Value > v8_PredefinedType); }; /// A project order is a directive to purchase products and/or perform work, such as for construction or facilities management. /// @@ -32435,13 +36928,16 @@ public: /// /// Approval Use Definition /// Approvals may be associated to indicate the status of acceptance or rejection using the IfcRelAssociatesApproval relationship where RelatingApproval refers to an IfcApproval and RelatedObjects contains the IfcProjectOrder. Approvals may be split into sub-approvals using IfcApprovalRelationship to track approval status separately for each party where RelatingApproval refers to the higher-level approval and RelatedApprovals contains one or more lower-level approvals. The hierarchy of approvals implies sequencing such that a higher-level approval is not executed until all of its lower-level approvals have been accepted. -class IFC_PARSE_API IfcProjectOrder : public IfcControl { +class IFC_PARSE_API IfcProjectOrder : public IfcControl { public: + IfcProjectOrder() {} + explicit IfcProjectOrder (const std::weak_ptr& data) : IfcControl(data) {} + /// Predefined generic type for a project order that is specified in an enumeration. There may be a property set given specificly for the predefined types. /// /// IFC2x4 CHANGE The attribute has been made optional. - boost::optional< ::Ifc4x3_add2::IfcProjectOrderTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcProjectOrderTypeEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcProjectOrderTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcProjectOrderTypeEnum::Value >& v); /// The current status of a project order.Examples of status values that might be used for a project order status include: /// /// PLANNED @@ -32451,16 +36947,14 @@ public: /// STARTED /// DELAYED /// DONE - boost::optional< std::string > Status() const; - void setStatus(boost::optional< std::string > v); + std::optional< std::string > Status() const; + void setStatus(const std::optional< std::string >& v); /// A detailed description of the project order describing the work to be completed. - boost::optional< std::string > LongDescription() const; - void setLongDescription(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > LongDescription() const; + void setLongDescription(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProjectOrder (IfcEntityInstanceData&& e); - IfcProjectOrder (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< ::Ifc4x3_add2::IfcProjectOrderTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription); - typedef aggregate_of< IfcProjectOrder > list; + // IfcProjectOrder (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< ::Ifc4x3_add2::IfcProjectOrderTypeEnum::Value > v7_PredefinedType, std::optional< std::string > v8_Status, std::optional< std::string > v9_LongDescription); }; /// The projection element is a /// specialization of the general feature element to represent @@ -32569,18 +37063,19 @@ public: /// /// RepresentationIdentifier : 'Body' /// RepresentationType : 'Brep' -class IFC_PARSE_API IfcProjectionElement : public IfcFeatureElementAddition { +class IFC_PARSE_API IfcProjectionElement : public IfcFeatureElementAddition { public: + IfcProjectionElement() {} + explicit IfcProjectionElement (const std::weak_ptr& data) : IfcFeatureElementAddition(data) {} + /// Predefined generic type for a projection element that is specified in an enumeration. There may be a property set given specificly for the predefined types. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< ::Ifc4x3_add2::IfcProjectionElementTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcProjectionElementTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcProjectionElementTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcProjectionElementTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProjectionElement (IfcEntityInstanceData&& e); - IfcProjectionElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcProjectionElementTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcProjectionElement > list; + // IfcProjectionElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcProjectionElementTypeEnum::Value > v9_PredefinedType); }; /// The flow controller type IfcProtectiveDeviceType defines commonly shared information for occurrences of protective devices. The set of shared information may include: /// @@ -32617,16 +37112,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcProtectiveDeviceType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcProtectiveDevice for standard port definitions. -class IFC_PARSE_API IfcProtectiveDeviceType : public IfcFlowControllerType { +class IFC_PARSE_API IfcProtectiveDeviceType : public IfcFlowControllerType { public: + IfcProtectiveDeviceType() {} + explicit IfcProtectiveDeviceType (const std::weak_ptr& data) : IfcFlowControllerType(data) {} + /// Identifies the predefined types of protective device from which the type required may be set. ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProtectiveDeviceType (IfcEntityInstanceData&& e); - IfcProtectiveDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcProtectiveDeviceType > list; + // IfcProtectiveDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value v10_PredefinedType); }; /// The flow moving device type IfcPumpType defines commonly shared information for occurrences of pumps. The set of shared information may include: /// @@ -32656,27 +37152,29 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcPumpType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcPump for standard port definitions. -class IFC_PARSE_API IfcPumpType : public IfcFlowMovingDeviceType { +class IFC_PARSE_API IfcPumpType : public IfcFlowMovingDeviceType { public: + IfcPumpType() {} + explicit IfcPumpType (const std::weak_ptr& data) : IfcFlowMovingDeviceType(data) {} + /// Defines the type of pump typically used in building services. ::Ifc4x3_add2::IfcPumpTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcPumpTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcPumpTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPumpType (IfcEntityInstanceData&& e); - IfcPumpType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPumpTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcPumpType > list; + // IfcPumpType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcPumpTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcRailType : public IfcBuiltElementType { +class IFC_PARSE_API IfcRailType : public IfcBuiltElementType { public: + IfcRailType() {} + explicit IfcRailType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + ::Ifc4x3_add2::IfcRailTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcRailTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcRailTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRailType (IfcEntityInstanceData&& e); - IfcRailType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRailTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcRailType > list; + // IfcRailType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRailTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: The element type (IfcRailingType) /// defines a list of commonly shared property set definitions of a railing element @@ -32698,38 +37196,41 @@ public: /// /// HISTORY New entity in Release IFC2x /// Editon 2. -class IFC_PARSE_API IfcRailingType : public IfcBuiltElementType { +class IFC_PARSE_API IfcRailingType : public IfcBuiltElementType { public: + IfcRailingType() {} + explicit IfcRailingType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a railing element from which the type required may be set. ::Ifc4x3_add2::IfcRailingTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcRailingTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcRailingTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRailingType (IfcEntityInstanceData&& e); - IfcRailingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRailingTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcRailingType > list; + // IfcRailingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRailingTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcRailway : public IfcFacility { +class IFC_PARSE_API IfcRailway : public IfcFacility { public: - boost::optional< ::Ifc4x3_add2::IfcRailwayTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRailwayTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcRailway() {} + explicit IfcRailway (const std::weak_ptr& data) : IfcFacility(data) {} + + std::optional< ::Ifc4x3_add2::IfcRailwayTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRailwayTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRailway (IfcEntityInstanceData&& e); - IfcRailway (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< ::Ifc4x3_add2::IfcRailwayTypeEnum::Value > v10_PredefinedType); - typedef aggregate_of< IfcRailway > list; + // IfcRailway (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< ::Ifc4x3_add2::IfcRailwayTypeEnum::Value > v10_PredefinedType); }; -class IFC_PARSE_API IfcRailwayPart : public IfcFacilityPart { +class IFC_PARSE_API IfcRailwayPart : public IfcFacilityPart { public: - boost::optional< ::Ifc4x3_add2::IfcRailwayPartTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRailwayPartTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcRailwayPart() {} + explicit IfcRailwayPart (const std::weak_ptr& data) : IfcFacilityPart(data) {} + + std::optional< ::Ifc4x3_add2::IfcRailwayPartTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRailwayPartTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRailwayPart (IfcEntityInstanceData&& e); - IfcRailwayPart (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, boost::optional< ::Ifc4x3_add2::IfcRailwayPartTypeEnum::Value > v11_PredefinedType); - typedef aggregate_of< IfcRailwayPart > list; + // IfcRailwayPart (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, std::optional< ::Ifc4x3_add2::IfcRailwayPartTypeEnum::Value > v11_PredefinedType); }; /// Definition from IAI: The element type (IfcRampFlightType) /// defines a list of commonly shared property set definitions of a ramp flight and @@ -32751,16 +37252,17 @@ public: /// /// HISTORY New entity in Release IFC2x /// Edition 2. -class IFC_PARSE_API IfcRampFlightType : public IfcBuiltElementType { +class IFC_PARSE_API IfcRampFlightType : public IfcBuiltElementType { public: + IfcRampFlightType() {} + explicit IfcRampFlightType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a ramp flight element from which the type required may be set. ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcRampFlightTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRampFlightType (IfcEntityInstanceData&& e); - IfcRampFlightType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcRampFlightType > list; + // IfcRampFlightType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: The element type /// IfcRampType defines a list of commonly shared @@ -32795,16 +37297,17 @@ public: /// /// HISTORY New entity in Release /// IFC2x Edition 4. -class IFC_PARSE_API IfcRampType : public IfcBuiltElementType { +class IFC_PARSE_API IfcRampType : public IfcBuiltElementType { public: + IfcRampType() {} + explicit IfcRampType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a ramp element from which the type required may be set. ::Ifc4x3_add2::IfcRampTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcRampTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcRampTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRampType (IfcEntityInstanceData&& e); - IfcRampType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRampTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcRampType > list; + // IfcRampType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRampTypeEnum::Value v10_PredefinedType); }; /// A rational B-spline surface with knots is a piecewise parametric rational surface described in terms of control points, and associated weight values. /// @@ -32819,27 +37322,29 @@ public: /// NOTE: Corresponding ISO 10303 entity: rational_b_spline_surface. Please refer to ISO/IS 10303-42:1994, p. 85 for the final definition of the formal standard. /// /// HISTORY: New entity in IFC2x4. -class IFC_PARSE_API IfcRationalBSplineSurfaceWithKnots : public IfcBSplineSurfaceWithKnots { +class IFC_PARSE_API IfcRationalBSplineSurfaceWithKnots : public IfcBSplineSurfaceWithKnots { public: + IfcRationalBSplineSurfaceWithKnots() {} + explicit IfcRationalBSplineSurfaceWithKnots (const std::weak_ptr& data) : IfcBSplineSurfaceWithKnots(data) {} + /// The weights associated with the control points in the rational case. std::vector< std::vector< double > > WeightsData() const; - void setWeightsData(std::vector< std::vector< double > > v); - virtual const IfcParse::entity& declaration() const; + void setWeightsData(const std::vector< std::vector< double > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRationalBSplineSurfaceWithKnots (IfcEntityInstanceData&& e); - IfcRationalBSplineSurfaceWithKnots (int v1_UDegree, int v2_VDegree, aggregate_of_aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v3_ControlPointsList, ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect, std::vector< int > /*[2:?]*/ v8_UMultiplicities, std::vector< int > /*[2:?]*/ v9_VMultiplicities, std::vector< double > /*[2:?]*/ v10_UKnots, std::vector< double > /*[2:?]*/ v11_VKnots, ::Ifc4x3_add2::IfcKnotType::Value v12_KnotSpec, std::vector< std::vector< double > > v13_WeightsData); - typedef aggregate_of< IfcRationalBSplineSurfaceWithKnots > list; + // IfcRationalBSplineSurfaceWithKnots (int v1_UDegree, int v2_VDegree, std::vector< std::vector< ::Ifc4x3_add2::IfcCartesianPoint > > v3_ControlPointsList, ::Ifc4x3_add2::IfcBSplineSurfaceForm::Value v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect, std::vector< int > /*[2:?]*/ v8_UMultiplicities, std::vector< int > /*[2:?]*/ v9_VMultiplicities, std::vector< double > /*[2:?]*/ v10_UKnots, std::vector< double > /*[2:?]*/ v11_VKnots, ::Ifc4x3_add2::IfcKnotType::Value v12_KnotSpec, std::vector< std::vector< double > > v13_WeightsData); }; -class IFC_PARSE_API IfcReferent : public IfcPositioningElement { +class IFC_PARSE_API IfcReferent : public IfcPositioningElement { public: - boost::optional< ::Ifc4x3_add2::IfcReferentTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcReferentTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcReferent() {} + explicit IfcReferent (const std::weak_ptr& data) : IfcPositioningElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcReferentTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcReferentTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcReferent (IfcEntityInstanceData&& e); - IfcReferent (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc4x3_add2::IfcReferentTypeEnum::Value > v8_PredefinedType); - typedef aggregate_of< IfcReferent > list; + // IfcReferent (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< ::Ifc4x3_add2::IfcReferentTypeEnum::Value > v8_PredefinedType); }; /// Definition from IAI: Bars, wires, strands, meshes, tendons, and other components embedded in concrete in such a manner that the reinforcement and the concrete act together in resisting forces. /// @@ -32849,26 +37354,28 @@ public: /// Subtypes IfcTendon and IfcTendonAnchor removed. /// Attribute SteelGrade removed. /// Attributes PredefinedType and Role added. -class IFC_PARSE_API IfcReinforcingElement : public IfcElementComponent { +class IFC_PARSE_API IfcReinforcingElement : public IfcElementComponent { public: - boost::optional< std::string > SteelGrade() const; - void setSteelGrade(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + IfcReinforcingElement() {} + explicit IfcReinforcingElement (const std::weak_ptr& data) : IfcElementComponent(data) {} + + std::optional< std::string > SteelGrade() const; + void setSteelGrade(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcReinforcingElement (IfcEntityInstanceData&& e); - IfcReinforcingElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade); - typedef aggregate_of< IfcReinforcingElement > list; + // IfcReinforcingElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< std::string > v9_SteelGrade); }; /// Definition from IAI: Types of bars, wires, strands, meshes, tendons, and other components embedded in concrete in such a manner that the reinforcement and the concrete act together in resisting forces. /// /// HISTORY New entity in IFC Release 2x4 -class IFC_PARSE_API IfcReinforcingElementType : public IfcElementComponentType { +class IFC_PARSE_API IfcReinforcingElementType : public IfcElementComponentType { public: - virtual const IfcParse::entity& declaration() const; + IfcReinforcingElementType() {} + explicit IfcReinforcingElementType (const std::weak_ptr& data) : IfcElementComponentType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcReinforcingElementType (IfcEntityInstanceData&& e); - IfcReinforcingElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcReinforcingElementType > list; + // IfcReinforcingElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// Definition from IAI: A series of longitudinal and transverse wires or bars of various gauges, arranged at right angles to each other and welded at all points of intersection; usually used for concrete slab reinforcement. Also known as welded wire fabric. /// @@ -32894,32 +37401,33 @@ public: /// /// Simplified Geometric Representation /// Simplified geometric representations may be used based on local agreements. -class IFC_PARSE_API IfcReinforcingMesh : public IfcReinforcingElement { +class IFC_PARSE_API IfcReinforcingMesh : public IfcReinforcingElement { public: - boost::optional< double > MeshLength() const; - void setMeshLength(boost::optional< double > v); - boost::optional< double > MeshWidth() const; - void setMeshWidth(boost::optional< double > v); - boost::optional< double > LongitudinalBarNominalDiameter() const; - void setLongitudinalBarNominalDiameter(boost::optional< double > v); - boost::optional< double > TransverseBarNominalDiameter() const; - void setTransverseBarNominalDiameter(boost::optional< double > v); - boost::optional< double > LongitudinalBarCrossSectionArea() const; - void setLongitudinalBarCrossSectionArea(boost::optional< double > v); - boost::optional< double > TransverseBarCrossSectionArea() const; - void setTransverseBarCrossSectionArea(boost::optional< double > v); - boost::optional< double > LongitudinalBarSpacing() const; - void setLongitudinalBarSpacing(boost::optional< double > v); - boost::optional< double > TransverseBarSpacing() const; - void setTransverseBarSpacing(boost::optional< double > v); + IfcReinforcingMesh() {} + explicit IfcReinforcingMesh (const std::weak_ptr& data) : IfcReinforcingElement(data) {} + + std::optional< double > MeshLength() const; + void setMeshLength(const std::optional< double >& v); + std::optional< double > MeshWidth() const; + void setMeshWidth(const std::optional< double >& v); + std::optional< double > LongitudinalBarNominalDiameter() const; + void setLongitudinalBarNominalDiameter(const std::optional< double >& v); + std::optional< double > TransverseBarNominalDiameter() const; + void setTransverseBarNominalDiameter(const std::optional< double >& v); + std::optional< double > LongitudinalBarCrossSectionArea() const; + void setLongitudinalBarCrossSectionArea(const std::optional< double >& v); + std::optional< double > TransverseBarCrossSectionArea() const; + void setTransverseBarCrossSectionArea(const std::optional< double >& v); + std::optional< double > LongitudinalBarSpacing() const; + void setLongitudinalBarSpacing(const std::optional< double >& v); + std::optional< double > TransverseBarSpacing() const; + void setTransverseBarSpacing(const std::optional< double >& v); /// The predefined type is always MESH. - boost::optional< ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcReinforcingMesh (IfcEntityInstanceData&& e); - IfcReinforcingMesh (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< double > v10_MeshLength, boost::optional< double > v11_MeshWidth, boost::optional< double > v12_LongitudinalBarNominalDiameter, boost::optional< double > v13_TransverseBarNominalDiameter, boost::optional< double > v14_LongitudinalBarCrossSectionArea, boost::optional< double > v15_TransverseBarCrossSectionArea, boost::optional< double > v16_LongitudinalBarSpacing, boost::optional< double > v17_TransverseBarSpacing, boost::optional< ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value > v18_PredefinedType); - typedef aggregate_of< IfcReinforcingMesh > list; + // IfcReinforcingMesh (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< std::string > v9_SteelGrade, std::optional< double > v10_MeshLength, std::optional< double > v11_MeshWidth, std::optional< double > v12_LongitudinalBarNominalDiameter, std::optional< double > v13_TransverseBarNominalDiameter, std::optional< double > v14_LongitudinalBarCrossSectionArea, std::optional< double > v15_TransverseBarCrossSectionArea, std::optional< double > v16_LongitudinalBarSpacing, std::optional< double > v17_TransverseBarSpacing, std::optional< ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value > v18_PredefinedType); }; /// Definition from IAI: A series of longitudinal and transverse wires or bars of various gauges, arranged at right angles to each other and welded at all points of intersection; usually used for concrete slab reinforcement. Also known as welded wire fabric. /// @@ -32932,57 +37440,59 @@ public: /// Geometry Use Definition: /// /// The IfcReinforcingMeshType may define the shared geometric representation for all mesh occurrences. The RepresentationMaps attribute refers to a list of IfcRepresentationMap's, that allow for multiple geometric representations. -class IFC_PARSE_API IfcReinforcingMeshType : public IfcReinforcingElementType { +class IFC_PARSE_API IfcReinforcingMeshType : public IfcReinforcingElementType { public: + IfcReinforcingMeshType() {} + explicit IfcReinforcingMeshType (const std::weak_ptr& data) : IfcReinforcingElementType(data) {} + /// The predefined type is always MESH. ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value v); + void setPredefinedType(const ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value& v); /// The overall length of the mesh measured in its longitudinal direction. - boost::optional< double > MeshLength() const; - void setMeshLength(boost::optional< double > v); + std::optional< double > MeshLength() const; + void setMeshLength(const std::optional< double >& v); /// The overall width of the mesh measured in its transversal direction. - boost::optional< double > MeshWidth() const; - void setMeshWidth(boost::optional< double > v); + std::optional< double > MeshWidth() const; + void setMeshWidth(const std::optional< double >& v); /// The nominal diameter denoting the cross-section size of the longitudinal bars. - boost::optional< double > LongitudinalBarNominalDiameter() const; - void setLongitudinalBarNominalDiameter(boost::optional< double > v); + std::optional< double > LongitudinalBarNominalDiameter() const; + void setLongitudinalBarNominalDiameter(const std::optional< double >& v); /// The nominal diameter denoting the cross-section size of the transverse bars. - boost::optional< double > TransverseBarNominalDiameter() const; - void setTransverseBarNominalDiameter(boost::optional< double > v); + std::optional< double > TransverseBarNominalDiameter() const; + void setTransverseBarNominalDiameter(const std::optional< double >& v); /// The effective cross-section area of the longitudinal bars of the mesh. - boost::optional< double > LongitudinalBarCrossSectionArea() const; - void setLongitudinalBarCrossSectionArea(boost::optional< double > v); + std::optional< double > LongitudinalBarCrossSectionArea() const; + void setLongitudinalBarCrossSectionArea(const std::optional< double >& v); /// The effective cross-section area of the transverse bars of the mesh. - boost::optional< double > TransverseBarCrossSectionArea() const; - void setTransverseBarCrossSectionArea(boost::optional< double > v); + std::optional< double > TransverseBarCrossSectionArea() const; + void setTransverseBarCrossSectionArea(const std::optional< double >& v); /// The spacing between the longitudinal bars. Note: an even distribution of bars is presumed; other cases are handled by classification or property sets. - boost::optional< double > LongitudinalBarSpacing() const; - void setLongitudinalBarSpacing(boost::optional< double > v); + std::optional< double > LongitudinalBarSpacing() const; + void setLongitudinalBarSpacing(const std::optional< double >& v); /// The spacing between the transverse bars. Note: an even distribution of bars is presumed; other cases are handled by classification or property sets. - boost::optional< double > TransverseBarSpacing() const; - void setTransverseBarSpacing(boost::optional< double > v); - boost::optional< std::string > BendingShapeCode() const; - void setBendingShapeCode(boost::optional< std::string > v); - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcBendingParameterSelect >::ptr > BendingParameters() const; - void setBendingParameters(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcBendingParameterSelect >::ptr > v); - virtual const IfcParse::entity& declaration() const; + std::optional< double > TransverseBarSpacing() const; + void setTransverseBarSpacing(const std::optional< double >& v); + std::optional< std::string > BendingShapeCode() const; + void setBendingShapeCode(const std::optional< std::string >& v); + std::optional< std::vector< ::Ifc4x3_add2::IfcBendingParameterSelect > > BendingParameters() const; + void setBendingParameters(const std::optional< std::vector< ::Ifc4x3_add2::IfcBendingParameterSelect > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcReinforcingMeshType (IfcEntityInstanceData&& e); - IfcReinforcingMeshType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_MeshLength, boost::optional< double > v12_MeshWidth, boost::optional< double > v13_LongitudinalBarNominalDiameter, boost::optional< double > v14_TransverseBarNominalDiameter, boost::optional< double > v15_LongitudinalBarCrossSectionArea, boost::optional< double > v16_TransverseBarCrossSectionArea, boost::optional< double > v17_LongitudinalBarSpacing, boost::optional< double > v18_TransverseBarSpacing, boost::optional< std::string > v19_BendingShapeCode, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcBendingParameterSelect >::ptr > v20_BendingParameters); - typedef aggregate_of< IfcReinforcingMeshType > list; + // IfcReinforcingMeshType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcReinforcingMeshTypeEnum::Value v10_PredefinedType, std::optional< double > v11_MeshLength, std::optional< double > v12_MeshWidth, std::optional< double > v13_LongitudinalBarNominalDiameter, std::optional< double > v14_TransverseBarNominalDiameter, std::optional< double > v15_LongitudinalBarCrossSectionArea, std::optional< double > v16_TransverseBarCrossSectionArea, std::optional< double > v17_LongitudinalBarSpacing, std::optional< double > v18_TransverseBarSpacing, std::optional< std::string > v19_BendingShapeCode, std::optional< std::vector< ::Ifc4x3_add2::IfcBendingParameterSelect > > v20_BendingParameters); }; -class IFC_PARSE_API IfcRelAdheresToElement : public IfcRelDecomposes { +class IFC_PARSE_API IfcRelAdheresToElement : public IfcRelDecomposes { public: - ::Ifc4x3_add2::IfcElement* RelatingElement() const; - void setRelatingElement(::Ifc4x3_add2::IfcElement* v); - aggregate_of< ::Ifc4x3_add2::IfcSurfaceFeature >::ptr RelatedSurfaceFeatures() const; - void setRelatedSurfaceFeatures(aggregate_of< ::Ifc4x3_add2::IfcSurfaceFeature >::ptr v); - virtual const IfcParse::entity& declaration() const; + IfcRelAdheresToElement() {} + explicit IfcRelAdheresToElement (const std::weak_ptr& data) : IfcRelDecomposes(data) {} + + ::Ifc4x3_add2::IfcElement RelatingElement() const; + void setRelatingElement(const ::Ifc4x3_add2::IfcElement& v); + std::vector< ::Ifc4x3_add2::IfcSurfaceFeature > RelatedSurfaceFeatures() const; + void setRelatedSurfaceFeatures(const std::vector< ::Ifc4x3_add2::IfcSurfaceFeature >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAdheresToElement (IfcEntityInstanceData&& e); - IfcRelAdheresToElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement* v5_RelatingElement, aggregate_of< ::Ifc4x3_add2::IfcSurfaceFeature >::ptr v6_RelatedSurfaceFeatures); - typedef aggregate_of< IfcRelAdheresToElement > list; + // IfcRelAdheresToElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcElement v5_RelatingElement, std::vector< ::Ifc4x3_add2::IfcSurfaceFeature > v6_RelatedSurfaceFeatures); }; /// The aggregation relationship /// IfcRelAggregates is a special type of the general @@ -33006,45 +37516,48 @@ public: /// HISTORY New entity in IFC Release 2x. /// /// IFC2x4 CHANGE The attributes RelatingObject and RelatedObjects are demoted from the supertype IfcRelDecomposes. -class IFC_PARSE_API IfcRelAggregates : public IfcRelDecomposes { +class IFC_PARSE_API IfcRelAggregates : public IfcRelDecomposes { public: + IfcRelAggregates() {} + explicit IfcRelAggregates (const std::weak_ptr& data) : IfcRelDecomposes(data) {} + /// The object definition, either an object type or an object occurrence, that represents the aggregation. It is the whole within the whole/part relationship. /// /// IFC2x4 CHANGE  The attribute has been demoted from the supertype IfcRelDecomposes and defines the non-ordered aggregation relationship. - ::Ifc4x3_add2::IfcObjectDefinition* RelatingObject() const; - void setRelatingObject(::Ifc4x3_add2::IfcObjectDefinition* v); + ::Ifc4x3_add2::IfcObjectDefinition RelatingObject() const; + void setRelatingObject(const ::Ifc4x3_add2::IfcObjectDefinition& v); /// The object definitions, either object occurrences or object types, that are being aggregated. They are defined as the parts in the whole/part relationship. No order is implied between the parts. /// /// IFC2x4 CHANGE  The attribute has been demoted from the supertype IfcRelDecomposes and defines the non-ordered set of parts within the aggregation. - aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr RelatedObjects() const; - void setRelatedObjects(aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v); - virtual const IfcParse::entity& declaration() const; + std::vector< ::Ifc4x3_add2::IfcObjectDefinition > RelatedObjects() const; + void setRelatedObjects(const std::vector< ::Ifc4x3_add2::IfcObjectDefinition >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRelAggregates (IfcEntityInstanceData&& e); - IfcRelAggregates (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcObjectDefinition* v5_RelatingObject, aggregate_of< ::Ifc4x3_add2::IfcObjectDefinition >::ptr v6_RelatedObjects); - typedef aggregate_of< IfcRelAggregates > list; + // IfcRelAggregates (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, ::Ifc4x3_add2::IfcObjectDefinition v5_RelatingObject, std::vector< ::Ifc4x3_add2::IfcObjectDefinition > v6_RelatedObjects); }; -class IFC_PARSE_API IfcRoad : public IfcFacility { +class IFC_PARSE_API IfcRoad : public IfcFacility { public: - boost::optional< ::Ifc4x3_add2::IfcRoadTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRoadTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcRoad() {} + explicit IfcRoad (const std::weak_ptr& data) : IfcFacility(data) {} + + std::optional< ::Ifc4x3_add2::IfcRoadTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRoadTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRoad (IfcEntityInstanceData&& e); - IfcRoad (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< ::Ifc4x3_add2::IfcRoadTypeEnum::Value > v10_PredefinedType); - typedef aggregate_of< IfcRoad > list; + // IfcRoad (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< ::Ifc4x3_add2::IfcRoadTypeEnum::Value > v10_PredefinedType); }; -class IFC_PARSE_API IfcRoadPart : public IfcFacilityPart { +class IFC_PARSE_API IfcRoadPart : public IfcFacilityPart { public: - boost::optional< ::Ifc4x3_add2::IfcRoadPartTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRoadPartTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcRoadPart() {} + explicit IfcRoadPart (const std::weak_ptr& data) : IfcFacilityPart(data) {} + + std::optional< ::Ifc4x3_add2::IfcRoadPartTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRoadPartTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRoadPart (IfcEntityInstanceData&& e); - IfcRoadPart (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, boost::optional< ::Ifc4x3_add2::IfcRoadPartTypeEnum::Value > v11_PredefinedType); - typedef aggregate_of< IfcRoadPart > list; + // IfcRoadPart (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, std::optional< ::Ifc4x3_add2::IfcRoadPartTypeEnum::Value > v11_PredefinedType); }; /// Definition from IAI: The element type /// IfcRoofType defines a list of commonly shared @@ -33078,16 +37591,17 @@ public: /// /// HISTORY New entity in Release /// IFC2x Edition 4. -class IFC_PARSE_API IfcRoofType : public IfcBuiltElementType { +class IFC_PARSE_API IfcRoofType : public IfcBuiltElementType { public: + IfcRoofType() {} + explicit IfcRoofType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a roof element from which the type required may be set. ::Ifc4x3_add2::IfcRoofTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcRoofTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcRoofTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRoofType (IfcEntityInstanceData&& e); - IfcRoofType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRoofTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcRoofType > list; + // IfcRoofType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcRoofTypeEnum::Value v10_PredefinedType); }; /// The flow terminal type IfcSanitaryTerminalType defines commonly shared information for occurrences of sanitary terminals. The set of shared information may include: /// @@ -33126,78 +37640,83 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcSanitaryTerminalType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcSanitaryTerminal for standard port definitions. -class IFC_PARSE_API IfcSanitaryTerminalType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcSanitaryTerminalType : public IfcFlowTerminalType { public: + IfcSanitaryTerminalType() {} + explicit IfcSanitaryTerminalType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + /// Identifies the predefined types of sanitary terminal from which the type required may be set. ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSanitaryTerminalType (IfcEntityInstanceData&& e); - IfcSanitaryTerminalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcSanitaryTerminalType > list; + // IfcSanitaryTerminalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcSeamCurve : public IfcSurfaceCurve { +class IFC_PARSE_API IfcSeamCurve : public IfcSurfaceCurve { public: - virtual const IfcParse::entity& declaration() const; + IfcSeamCurve() {} + explicit IfcSeamCurve (const std::weak_ptr& data) : IfcSurfaceCurve(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSeamCurve (IfcEntityInstanceData&& e); - IfcSeamCurve (::Ifc4x3_add2::IfcCurve* v1_Curve3D, aggregate_of< ::Ifc4x3_add2::IfcPcurve >::ptr v2_AssociatedGeometry, ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation); - typedef aggregate_of< IfcSeamCurve > list; + // IfcSeamCurve (::Ifc4x3_add2::IfcCurve v1_Curve3D, std::vector< ::Ifc4x3_add2::IfcPcurve > v2_AssociatedGeometry, ::Ifc4x3_add2::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation); }; -class IFC_PARSE_API IfcSecondOrderPolynomialSpiral : public IfcSpiral { +class IFC_PARSE_API IfcSecondOrderPolynomialSpiral : public IfcSpiral { public: + IfcSecondOrderPolynomialSpiral() {} + explicit IfcSecondOrderPolynomialSpiral (const std::weak_ptr& data) : IfcSpiral(data) {} + double QuadraticTerm() const; - void setQuadraticTerm(double v); - boost::optional< double > LinearTerm() const; - void setLinearTerm(boost::optional< double > v); - boost::optional< double > ConstantTerm() const; - void setConstantTerm(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + void setQuadraticTerm(const double& v); + std::optional< double > LinearTerm() const; + void setLinearTerm(const std::optional< double >& v); + std::optional< double > ConstantTerm() const; + void setConstantTerm(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSecondOrderPolynomialSpiral (IfcEntityInstanceData&& e); - IfcSecondOrderPolynomialSpiral (::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_QuadraticTerm, boost::optional< double > v3_LinearTerm, boost::optional< double > v4_ConstantTerm); - typedef aggregate_of< IfcSecondOrderPolynomialSpiral > list; + // IfcSecondOrderPolynomialSpiral (::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_QuadraticTerm, std::optional< double > v3_LinearTerm, std::optional< double > v4_ConstantTerm); }; -class IFC_PARSE_API IfcSegmentedReferenceCurve : public IfcCompositeCurve { +class IFC_PARSE_API IfcSegmentedReferenceCurve : public IfcCompositeCurve { public: - ::Ifc4x3_add2::IfcBoundedCurve* BaseCurve() const; - void setBaseCurve(::Ifc4x3_add2::IfcBoundedCurve* v); - ::Ifc4x3_add2::IfcPlacement* EndPoint() const; - void setEndPoint(::Ifc4x3_add2::IfcPlacement* v); - virtual const IfcParse::entity& declaration() const; + IfcSegmentedReferenceCurve() {} + explicit IfcSegmentedReferenceCurve (const std::weak_ptr& data) : IfcCompositeCurve(data) {} + + ::Ifc4x3_add2::IfcBoundedCurve BaseCurve() const; + void setBaseCurve(const ::Ifc4x3_add2::IfcBoundedCurve& v); + ::Ifc4x3_add2::IfcPlacement EndPoint() const; + void setEndPoint(const ::Ifc4x3_add2::IfcPlacement& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSegmentedReferenceCurve (IfcEntityInstanceData&& e); - IfcSegmentedReferenceCurve (aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect, ::Ifc4x3_add2::IfcBoundedCurve* v3_BaseCurve, ::Ifc4x3_add2::IfcPlacement* v4_EndPoint); - typedef aggregate_of< IfcSegmentedReferenceCurve > list; + // IfcSegmentedReferenceCurve (std::vector< ::Ifc4x3_add2::IfcSegment > v1_Segments, boost::logic::tribool v2_SelfIntersect, ::Ifc4x3_add2::IfcBoundedCurve v3_BaseCurve, ::Ifc4x3_add2::IfcPlacement v4_EndPoint); }; -class IFC_PARSE_API IfcSeventhOrderPolynomialSpiral : public IfcSpiral { +class IFC_PARSE_API IfcSeventhOrderPolynomialSpiral : public IfcSpiral { public: + IfcSeventhOrderPolynomialSpiral() {} + explicit IfcSeventhOrderPolynomialSpiral (const std::weak_ptr& data) : IfcSpiral(data) {} + double SepticTerm() const; - void setSepticTerm(double v); - boost::optional< double > SexticTerm() const; - void setSexticTerm(boost::optional< double > v); - boost::optional< double > QuinticTerm() const; - void setQuinticTerm(boost::optional< double > v); - boost::optional< double > QuarticTerm() const; - void setQuarticTerm(boost::optional< double > v); - boost::optional< double > CubicTerm() const; - void setCubicTerm(boost::optional< double > v); - boost::optional< double > QuadraticTerm() const; - void setQuadraticTerm(boost::optional< double > v); - boost::optional< double > LinearTerm() const; - void setLinearTerm(boost::optional< double > v); - boost::optional< double > ConstantTerm() const; - void setConstantTerm(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + void setSepticTerm(const double& v); + std::optional< double > SexticTerm() const; + void setSexticTerm(const std::optional< double >& v); + std::optional< double > QuinticTerm() const; + void setQuinticTerm(const std::optional< double >& v); + std::optional< double > QuarticTerm() const; + void setQuarticTerm(const std::optional< double >& v); + std::optional< double > CubicTerm() const; + void setCubicTerm(const std::optional< double >& v); + std::optional< double > QuadraticTerm() const; + void setQuadraticTerm(const std::optional< double >& v); + std::optional< double > LinearTerm() const; + void setLinearTerm(const std::optional< double >& v); + std::optional< double > ConstantTerm() const; + void setConstantTerm(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSeventhOrderPolynomialSpiral (IfcEntityInstanceData&& e); - IfcSeventhOrderPolynomialSpiral (::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_SepticTerm, boost::optional< double > v3_SexticTerm, boost::optional< double > v4_QuinticTerm, boost::optional< double > v5_QuarticTerm, boost::optional< double > v6_CubicTerm, boost::optional< double > v7_QuadraticTerm, boost::optional< double > v8_LinearTerm, boost::optional< double > v9_ConstantTerm); - typedef aggregate_of< IfcSeventhOrderPolynomialSpiral > list; + // IfcSeventhOrderPolynomialSpiral (::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_SepticTerm, std::optional< double > v3_SexticTerm, std::optional< double > v4_QuinticTerm, std::optional< double > v5_QuarticTerm, std::optional< double > v6_CubicTerm, std::optional< double > v7_QuadraticTerm, std::optional< double > v8_LinearTerm, std::optional< double > v9_ConstantTerm); }; /// Definition from IAI: The IfcShadingDeviceType /// defines a list of commonly shared property set definitions of a @@ -33220,64 +37739,69 @@ public: /// represented by instances of IfcShadingDevice. /// HISTORY New entity in /// Release IFC2x4. -class IFC_PARSE_API IfcShadingDeviceType : public IfcBuiltElementType { +class IFC_PARSE_API IfcShadingDeviceType : public IfcBuiltElementType { public: + IfcShadingDeviceType() {} + explicit IfcShadingDeviceType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a shading device element from which the type required may be set. ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcShadingDeviceType (IfcEntityInstanceData&& e); - IfcShadingDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcShadingDeviceType > list; + // IfcShadingDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcSign : public IfcElementComponent { +class IFC_PARSE_API IfcSign : public IfcElementComponent { public: - boost::optional< ::Ifc4x3_add2::IfcSignTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSignTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcSign() {} + explicit IfcSign (const std::weak_ptr& data) : IfcElementComponent(data) {} + + std::optional< ::Ifc4x3_add2::IfcSignTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSignTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSign (IfcEntityInstanceData&& e); - IfcSign (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSignTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcSign > list; + // IfcSign (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSignTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcSignType : public IfcElementComponentType { +class IFC_PARSE_API IfcSignType : public IfcElementComponentType { public: + IfcSignType() {} + explicit IfcSignType (const std::weak_ptr& data) : IfcElementComponentType(data) {} + ::Ifc4x3_add2::IfcSignTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcSignTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcSignTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSignType (IfcEntityInstanceData&& e); - IfcSignType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSignTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcSignType > list; + // IfcSignType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSignTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcSignalType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcSignalType : public IfcFlowTerminalType { public: + IfcSignalType() {} + explicit IfcSignalType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + ::Ifc4x3_add2::IfcSignalTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcSignalTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcSignalTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSignalType (IfcEntityInstanceData&& e); - IfcSignalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSignalTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcSignalType > list; + // IfcSignalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSignalTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcSineSpiral : public IfcSpiral { +class IFC_PARSE_API IfcSineSpiral : public IfcSpiral { public: + IfcSineSpiral() {} + explicit IfcSineSpiral (const std::weak_ptr& data) : IfcSpiral(data) {} + double SineTerm() const; - void setSineTerm(double v); - boost::optional< double > LinearTerm() const; - void setLinearTerm(boost::optional< double > v); - boost::optional< double > ConstantTerm() const; - void setConstantTerm(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + void setSineTerm(const double& v); + std::optional< double > LinearTerm() const; + void setLinearTerm(const std::optional< double >& v); + std::optional< double > ConstantTerm() const; + void setConstantTerm(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSineSpiral (IfcEntityInstanceData&& e); - IfcSineSpiral (::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_SineTerm, boost::optional< double > v3_LinearTerm, boost::optional< double > v4_ConstantTerm); - typedef aggregate_of< IfcSineSpiral > list; + // IfcSineSpiral (::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_SineTerm, std::optional< double > v3_LinearTerm, std::optional< double > v4_ConstantTerm); }; /// Definition from ISO 6707-1:1989: Area where construction /// works are undertaken. @@ -33468,31 +37992,32 @@ public: /// 'Body' /// IfcShapeRepresentation.RepresentationType = 'Brep', or /// 'SurfaceModel' -class IFC_PARSE_API IfcSite : public IfcSpatialStructureElement { +class IFC_PARSE_API IfcSite : public IfcSpatialStructureElement { public: + IfcSite() {} + explicit IfcSite (const std::weak_ptr& data) : IfcSpatialStructureElement(data) {} + /// World Latitude at reference point (most likely defined in legal description). Defined as integer values for degrees, minutes, seconds, and, optionally, millionths of seconds with respect to the world geodetic system WGS84. /// Latitudes are measured relative to the geodetic equator, north of the equator by positive values - from 0 till +90, south of the equator by negative values - from 0 till -90. - boost::optional< std::vector< int > /*[3:4]*/ > RefLatitude() const; - void setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v); + std::optional< std::vector< int > /*[3:4]*/ > RefLatitude() const; + void setRefLatitude(const std::optional< std::vector< int > /*[3:4]*/ >& v); /// World Longitude at reference point (most likely defined in legal description). Defined as integer values for degrees, minutes, seconds, and, optionally, millionths of seconds with respect to the world geodetic system WGS84. /// Longitudes are measured relative to the geodetic zero meridian, nominally the same as the Greenwich prime meridian: longitudes west of the zero meridian have negative values - from 0 till -180, longitudes east of the zero meridian have positive values - from 0 till -180. /// Example: Chicago Harbor Light has according to WGS84 a longitude -87.35.40 (or 87.35.40W) and a latitude 41.53.30 (or 41.53.30N). - boost::optional< std::vector< int > /*[3:4]*/ > RefLongitude() const; - void setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v); + std::optional< std::vector< int > /*[3:4]*/ > RefLongitude() const; + void setRefLongitude(const std::optional< std::vector< int > /*[3:4]*/ >& v); /// Datum elevation relative to sea level. - boost::optional< double > RefElevation() const; - void setRefElevation(boost::optional< double > v); + std::optional< double > RefElevation() const; + void setRefElevation(const std::optional< double >& v); /// The land title number (designation of the site within a regional system). - boost::optional< std::string > LandTitleNumber() const; - void setLandTitleNumber(boost::optional< std::string > v); + std::optional< std::string > LandTitleNumber() const; + void setLandTitleNumber(const std::optional< std::string >& v); /// Address given to the site for postal purposes. - ::Ifc4x3_add2::IfcPostalAddress* SiteAddress() const; - void setSiteAddress(::Ifc4x3_add2::IfcPostalAddress* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcPostalAddress SiteAddress() const; + void setSiteAddress(const ::Ifc4x3_add2::IfcPostalAddress& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSite (IfcEntityInstanceData&& e); - IfcSite (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< std::vector< int > /*[3:4]*/ > v10_RefLatitude, boost::optional< std::vector< int > /*[3:4]*/ > v11_RefLongitude, boost::optional< double > v12_RefElevation, boost::optional< std::string > v13_LandTitleNumber, ::Ifc4x3_add2::IfcPostalAddress* v14_SiteAddress); - typedef aggregate_of< IfcSite > list; + // IfcSite (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< std::vector< int > /*[3:4]*/ > v10_RefLatitude, std::optional< std::vector< int > /*[3:4]*/ > v11_RefLongitude, std::optional< double > v12_RefElevation, std::optional< std::string > v13_LandTitleNumber, ::Ifc4x3_add2::IfcPostalAddress v14_SiteAddress); }; /// The element type IfcSlabType defines commonly shared /// information for occurrences of slabs. The set of shared information @@ -33571,16 +38096,17 @@ public: /// /// Pset_SlabCommon: common property set for all /// slab types. -class IFC_PARSE_API IfcSlabType : public IfcBuiltElementType { +class IFC_PARSE_API IfcSlabType : public IfcBuiltElementType { public: + IfcSlabType() {} + explicit IfcSlabType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a slab element from which the type required may be set. ::Ifc4x3_add2::IfcSlabTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcSlabTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcSlabTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSlabType (IfcEntityInstanceData&& e); - IfcSlabType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSlabTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcSlabType > list; + // IfcSlabType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSlabTypeEnum::Value v10_PredefinedType); }; /// The energy conversion device type IfcSolarDeviceType defines commonly shared information for occurrences of solar devices. The set of shared information may include: /// @@ -33608,15 +38134,16 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcSolarDeviceType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcSolarDevice for standard port definitions. -class IFC_PARSE_API IfcSolarDeviceType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcSolarDeviceType : public IfcEnergyConversionDeviceType { public: + IfcSolarDeviceType() {} + explicit IfcSolarDeviceType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSolarDeviceType (IfcEntityInstanceData&& e); - IfcSolarDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcSolarDeviceType > list; + // IfcSolarDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value v10_PredefinedType); }; /// A space represents an area or volume /// bounded actually or theoretically. Spaces are areas or volumes that @@ -33868,25 +38395,26 @@ public: /// 'Body' /// IfcShapeRepresentation.RepresentationType : /// 'Brep' -class IFC_PARSE_API IfcSpace : public IfcSpatialStructureElement, public IfcSpaceBoundarySelect { +class IFC_PARSE_API IfcSpace : public IfcSpatialStructureElement { public: + IfcSpace() {} + explicit IfcSpace (const std::weak_ptr& data) : IfcSpatialStructureElement(data) {} + /// Predefined generic types for a space that are specified in an enumeration. There might be property sets defined specifically for each predefined type. /// /// Previous use, prior to IFC2x4, had been to indicates whether the IfcSpace is an interior space by value INTERNAL, or an exterior space by value EXTERNAL. This use is now deprecated, the property 'IsExternal' at 'Pset_SpaceCommon' should be used instead. /// /// IFC2x4 CHANGE  The attribute has been renamed from ExteriorOrInteriorSpace with upward compatibility for file based exchange. - boost::optional< ::Ifc4x3_add2::IfcSpaceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSpaceTypeEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcSpaceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSpaceTypeEnum::Value >& v); /// Level of flooring of this space; the average shall be taken, if the space ground surface is sloping or if there are level differences within this space. - boost::optional< double > ElevationWithFlooring() const; - void setElevationWithFlooring(boost::optional< double > v); - aggregate_of< IfcRelCoversSpaces >::ptr HasCoverings() const; // INVERSE IfcRelCoversSpaces::RelatingSpace - aggregate_of< IfcRelSpaceBoundary >::ptr BoundedBy() const; // INVERSE IfcRelSpaceBoundary::RelatingSpace - virtual const IfcParse::entity& declaration() const; + std::optional< double > ElevationWithFlooring() const; + void setElevationWithFlooring(const std::optional< double >& v); + std::vector< IfcRelCoversSpaces > HasCoverings() const; // INVERSE IfcRelCoversSpaces::RelatingSpace + std::vector< IfcRelSpaceBoundary > BoundedBy() const; // INVERSE IfcRelSpaceBoundary::RelatingSpace + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSpace (IfcEntityInstanceData&& e); - IfcSpace (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< ::Ifc4x3_add2::IfcSpaceTypeEnum::Value > v10_PredefinedType, boost::optional< double > v11_ElevationWithFlooring); - typedef aggregate_of< IfcSpace > list; + // IfcSpace (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< ::Ifc4x3_add2::IfcSpaceTypeEnum::Value > v10_PredefinedType, std::optional< double > v11_ElevationWithFlooring); }; /// The energy conversion device type IfcSpaceHeaterType defines commonly shared information for occurrences of space heaters. The set of shared information may include: /// @@ -33918,16 +38446,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcSpaceHeaterType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcSpaceHeater for standard port definitions. -class IFC_PARSE_API IfcSpaceHeaterType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcSpaceHeaterType : public IfcFlowTerminalType { public: + IfcSpaceHeaterType() {} + explicit IfcSpaceHeaterType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + /// Enumeration of possible types of space heater (e.g., baseboard heater, convector, radiator, etc.). ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSpaceHeaterType (IfcEntityInstanceData&& e); - IfcSpaceHeaterType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcSpaceHeaterType > list; + // IfcSpaceHeaterType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: A space represents an area or /// volume bounded actually or theoretically. Spaces are areas or @@ -34010,18 +38539,19 @@ public: /// agreements may prevent the usage of shared geometry for /// spaces. /// . -class IFC_PARSE_API IfcSpaceType : public IfcSpatialStructureElementType { +class IFC_PARSE_API IfcSpaceType : public IfcSpatialStructureElementType { public: + IfcSpaceType() {} + explicit IfcSpaceType (const std::weak_ptr& data) : IfcSpatialStructureElementType(data) {} + /// Predefined types to define the particular type of space. There may be property set definitions available for each predefined type. ::Ifc4x3_add2::IfcSpaceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcSpaceTypeEnum::Value v); - boost::optional< std::string > LongName() const; - void setLongName(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcSpaceTypeEnum::Value& v); + std::optional< std::string > LongName() const; + void setLongName(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSpaceType (IfcEntityInstanceData&& e); - IfcSpaceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSpaceTypeEnum::Value v10_PredefinedType, boost::optional< std::string > v11_LongName); - typedef aggregate_of< IfcSpaceType > list; + // IfcSpaceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSpaceTypeEnum::Value v10_PredefinedType, std::optional< std::string > v11_LongName); }; /// The flow terminal type IfcStackTerminalType defines commonly shared information for occurrences of stack terminals. The set of shared information may include: /// @@ -34049,16 +38579,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcStackTerminalType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcStackTerminal for standard port definitions. -class IFC_PARSE_API IfcStackTerminalType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcStackTerminalType : public IfcFlowTerminalType { public: + IfcStackTerminalType() {} + explicit IfcStackTerminalType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + /// Identifies the predefined types of stack terminal from which the type required may be set. ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStackTerminalType (IfcEntityInstanceData&& e); - IfcStackTerminalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcStackTerminalType > list; + // IfcStackTerminalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: The element type (IfcStairFlightType) /// defines a list of commonly shared property set definitions of a stair flight @@ -34080,16 +38611,17 @@ public: /// /// HISTORY: New entity in Release IFC2x /// Edition 2. -class IFC_PARSE_API IfcStairFlightType : public IfcBuiltElementType { +class IFC_PARSE_API IfcStairFlightType : public IfcBuiltElementType { public: + IfcStairFlightType() {} + explicit IfcStairFlightType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a stair flight element from which the type required may be set. ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcStairFlightTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStairFlightType (IfcEntityInstanceData&& e); - IfcStairFlightType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcStairFlightType > list; + // IfcStairFlightType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: The element type /// IfcStairType defines a list of commonly shared @@ -34124,16 +38656,17 @@ public: /// /// HISTORY New entity in Release /// IFC2x Edition 4. -class IFC_PARSE_API IfcStairType : public IfcBuiltElementType { +class IFC_PARSE_API IfcStairType : public IfcBuiltElementType { public: + IfcStairType() {} + explicit IfcStairType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a stair element from which the type required may be set. ::Ifc4x3_add2::IfcStairTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcStairTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcStairTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStairType (IfcEntityInstanceData&& e); - IfcStairType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcStairTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcStairType > list; + // IfcStairType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcStairTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: A structural action is a structural activity that acts upon /// a structural item or building element. @@ -34154,31 +38687,33 @@ public: /// IfcRelAssignsToProduct relationship object. IfcRelAssignsToProduct.Name is set to /// 'Causes' and IfcRelAssignsToProduct.RelatedObjects refers to an instance of a subtype of /// IfcStructuralReaction. -class IFC_PARSE_API IfcStructuralAction : public IfcStructuralActivity { +class IFC_PARSE_API IfcStructuralAction : public IfcStructuralActivity { public: + IfcStructuralAction() {} + explicit IfcStructuralAction (const std::weak_ptr& data) : IfcStructuralActivity(data) {} + /// Indicates if this action may cause a stability problem. If it is 'FALSE', no further investigations regarding stability problems are necessary. - boost::optional< bool > DestabilizingLoad() const; - void setDestabilizingLoad(boost::optional< bool > v); - virtual const IfcParse::entity& declaration() const; + std::optional< bool > DestabilizingLoad() const; + void setDestabilizingLoad(const std::optional< bool >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralAction (IfcEntityInstanceData&& e); - IfcStructuralAction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad); - typedef aggregate_of< IfcStructuralAction > list; + // IfcStructuralAction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, std::optional< bool > v10_DestabilizingLoad); }; /// Definition from IAI: An IfcStructuralConnection represents a structural connection object (node i.e. vertex connection, or edge connection, or surface connection) or supports. /// /// HISTORY: New entity in IFC 2x2. -class IFC_PARSE_API IfcStructuralConnection : public IfcStructuralItem { +class IFC_PARSE_API IfcStructuralConnection : public IfcStructuralItem { public: + IfcStructuralConnection() {} + explicit IfcStructuralConnection (const std::weak_ptr& data) : IfcStructuralItem(data) {} + /// Optional boundary conditions which define support conditions of this connection object, given in local coordinate directions of the connection object. If left unspecified, the connection object is assumed to have no supports besides being connected with members. - ::Ifc4x3_add2::IfcBoundaryCondition* AppliedCondition() const; - void setAppliedCondition(::Ifc4x3_add2::IfcBoundaryCondition* v); - aggregate_of< IfcRelConnectsStructuralMember >::ptr ConnectsStructuralMembers() const; // INVERSE IfcRelConnectsStructuralMember::RelatedStructuralConnection - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcBoundaryCondition AppliedCondition() const; + void setAppliedCondition(const ::Ifc4x3_add2::IfcBoundaryCondition& v); + std::vector< IfcRelConnectsStructuralMember > ConnectsStructuralMembers() const; // INVERSE IfcRelConnectsStructuralMember::RelatedStructuralConnection + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralConnection (IfcEntityInstanceData&& e); - IfcStructuralConnection (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition* v8_AppliedCondition); - typedef aggregate_of< IfcStructuralConnection > list; + // IfcStructuralConnection (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition v8_AppliedCondition); }; /// Definition from IAI: Defines an action which is distributed over a curve. /// A curve action may be connected with a curve member or curve connection, or @@ -34236,19 +38771,20 @@ public: /// (Single point loads are modeled by IfcStructuralPointAction.) /// All items in SELF\IfcStructuralActivity.AppliedLoad\IfcStructuralLoadConfiguration.Values /// shall be of the same entity type. -class IFC_PARSE_API IfcStructuralCurveAction : public IfcStructuralAction { +class IFC_PARSE_API IfcStructuralCurveAction : public IfcStructuralAction { public: + IfcStructuralCurveAction() {} + explicit IfcStructuralCurveAction (const std::weak_ptr& data) : IfcStructuralAction(data) {} + /// Defines whether load values are given per true length of the curve on which they act, or per length of the projection of the curve in load direction. The latter is only applicable to loads which act in global coordinate directions. - boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > ProjectedOrTrue() const; - void setProjectedOrTrue(boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > ProjectedOrTrue() const; + void setProjectedOrTrue(const std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value >& v); /// Type of action according to its distribution of load values. ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralCurveAction (IfcEntityInstanceData&& e); - IfcStructuralCurveAction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v12_PredefinedType); - typedef aggregate_of< IfcStructuralCurveAction > list; + // IfcStructuralCurveAction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, std::optional< bool > v10_DestabilizingLoad, std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v12_PredefinedType); }; /// Definition from IAI: Instances of IfcStructuralCurveConnection describe edge 'nodes', i.e. edges where two or more surface members are joined, or edge supports. Edge curves may be straight or curved. /// @@ -34267,15 +38803,16 @@ public: /// Informal propositions: /// /// The reference curve must not be parallel with Axis at any point within the curve connections's domain. -class IFC_PARSE_API IfcStructuralCurveConnection : public IfcStructuralConnection { +class IFC_PARSE_API IfcStructuralCurveConnection : public IfcStructuralConnection { public: - ::Ifc4x3_add2::IfcDirection* AxisDirection() const; - void setAxisDirection(::Ifc4x3_add2::IfcDirection* v); - virtual const IfcParse::entity& declaration() const; + IfcStructuralCurveConnection() {} + explicit IfcStructuralCurveConnection (const std::weak_ptr& data) : IfcStructuralConnection(data) {} + + ::Ifc4x3_add2::IfcDirection AxisDirection() const; + void setAxisDirection(const ::Ifc4x3_add2::IfcDirection& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralCurveConnection (IfcEntityInstanceData&& e); - IfcStructuralCurveConnection (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition* v8_AppliedCondition, ::Ifc4x3_add2::IfcDirection* v9_AxisDirection); - typedef aggregate_of< IfcStructuralCurveConnection > list; + // IfcStructuralCurveConnection (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition v8_AppliedCondition, ::Ifc4x3_add2::IfcDirection v9_AxisDirection); }; /// Definition from IAI: Instances of IfcStructuralCurveMember describe edge members, i.e. structural analysis idealizations of beams, columns, rods etc.. Curve members may be straight or curved. /// @@ -34314,21 +38851,22 @@ public: /// Informal propositions: /// /// The reference curve must not be parallel with Axis at any point within the curve member's domain. -class IFC_PARSE_API IfcStructuralCurveMember : public IfcStructuralMember { +class IFC_PARSE_API IfcStructuralCurveMember : public IfcStructuralMember { public: + IfcStructuralCurveMember() {} + explicit IfcStructuralCurveMember (const std::weak_ptr& data) : IfcStructuralMember(data) {} + /// Type of member with respect to its load carrying behavior in this analysis idealization. ::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Value v); + void setPredefinedType(const ::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Value& v); /// Direction which is used in the definition of the local z axis. Axis is specified relative to the so-called global coordinate system, i.e. the SELF\IfcProduct.ObjectPlacement. /// /// NOTE  It is desirable and usually possible that many instances of IfcStructuralCurveConnection and IfcStructuralCurveMember share a common instance of IfcDirection as their Axis attribute. - ::Ifc4x3_add2::IfcDirection* Axis() const; - void setAxis(::Ifc4x3_add2::IfcDirection* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcDirection Axis() const; + void setAxis(const ::Ifc4x3_add2::IfcDirection& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralCurveMember (IfcEntityInstanceData&& e); - IfcStructuralCurveMember (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Value v8_PredefinedType, ::Ifc4x3_add2::IfcDirection* v9_Axis); - typedef aggregate_of< IfcStructuralCurveMember > list; + // IfcStructuralCurveMember (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Value v8_PredefinedType, ::Ifc4x3_add2::IfcDirection v9_Axis); }; /// Definition from IAI: Describes edge members with varying profile properties. Each instance of IfcStructuralCurveMemberVarying is composed of two or more instances of IfcStructuralCurveMember with differing profile properties. These subordinate members relate to the instance of IfcStructuralCurveMemberVarying by IfcRelAggregates. /// @@ -34350,13 +38888,14 @@ public: /// Topology Use Definitions: /// /// Instances of IfcStructuralCurveMemberVarying may have a topology representation which contains a single IfcEdgeLoop, based upon the edges of the parts. -class IFC_PARSE_API IfcStructuralCurveMemberVarying : public IfcStructuralCurveMember { +class IFC_PARSE_API IfcStructuralCurveMemberVarying : public IfcStructuralCurveMember { public: - virtual const IfcParse::entity& declaration() const; + IfcStructuralCurveMemberVarying() {} + explicit IfcStructuralCurveMemberVarying (const std::weak_ptr& data) : IfcStructuralCurveMember(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralCurveMemberVarying (IfcEntityInstanceData&& e); - IfcStructuralCurveMemberVarying (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Value v8_PredefinedType, ::Ifc4x3_add2::IfcDirection* v9_Axis); - typedef aggregate_of< IfcStructuralCurveMemberVarying > list; + // IfcStructuralCurveMemberVarying (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralCurveMemberTypeEnum::Value v8_PredefinedType, ::Ifc4x3_add2::IfcDirection v9_Axis); }; /// Definition from IAI: Defines a reaction which occurs distributed over a curve. /// A curve reaction may be connected with a curve member or curve connection, @@ -34408,16 +38947,17 @@ public: /// item are located at the beginning and end of the result distribution, respectively. /// All items in SELF\IfcStructuralActivity.AppliedLoad\IfcStructuralLoadConfiguration.Values /// shall be of the same entity type. -class IFC_PARSE_API IfcStructuralCurveReaction : public IfcStructuralReaction { +class IFC_PARSE_API IfcStructuralCurveReaction : public IfcStructuralReaction { public: + IfcStructuralCurveReaction() {} + explicit IfcStructuralCurveReaction (const std::weak_ptr& data) : IfcStructuralReaction(data) {} + /// Type of reaction according to its distribution of load values. ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralCurveReaction (IfcEntityInstanceData&& e); - IfcStructuralCurveReaction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcStructuralCurveReaction > list; + // IfcStructuralCurveReaction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: Defines an action with constant value which is distributed over a curve. /// @@ -34426,13 +38966,14 @@ public: /// IFC 2x4 change: Intermediate supertype IfcStructuralCurveAction inserted. Derived attribute PredefinedType added. /// /// NOTE  Like its supertype IfcStructuralCurveAction, this action type may also act on curved edges. -class IFC_PARSE_API IfcStructuralLinearAction : public IfcStructuralCurveAction { +class IFC_PARSE_API IfcStructuralLinearAction : public IfcStructuralCurveAction { public: - virtual const IfcParse::entity& declaration() const; + IfcStructuralLinearAction() {} + explicit IfcStructuralLinearAction (const std::weak_ptr& data) : IfcStructuralCurveAction(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralLinearAction (IfcEntityInstanceData&& e); - IfcStructuralLinearAction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v12_PredefinedType); - typedef aggregate_of< IfcStructuralLinearAction > list; + // IfcStructuralLinearAction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, std::optional< bool > v10_DestabilizingLoad, std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralCurveActivityTypeEnum::Value v12_PredefinedType); }; /// Definition from IAI: The entity IfcStructuralLoadGroup is used to structure the /// physical impacts. By using the grouping features inherited from IfcGroup, instances of @@ -34467,30 +39008,31 @@ public: /// Instances of IfcStructuralLoadCase shall only contain instances of IfcStructuralAction /// or/ and instances of IfcStructuralLoadGroup of type LOAD_GROUP. /// Load groups of type LOAD_COMBINATION shall only contain instances of IfcStructuralLoadCase. -class IFC_PARSE_API IfcStructuralLoadGroup : public IfcGroup { +class IFC_PARSE_API IfcStructuralLoadGroup : public IfcGroup { public: + IfcStructuralLoadGroup() {} + explicit IfcStructuralLoadGroup (const std::weak_ptr& data) : IfcGroup(data) {} + /// Selects a predefined type for the load group. It can be differentiated between load groups, load cases, load combinations, or userdefined grouping levels. ::Ifc4x3_add2::IfcLoadGroupTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcLoadGroupTypeEnum::Value v); + void setPredefinedType(const ::Ifc4x3_add2::IfcLoadGroupTypeEnum::Value& v); /// Type of actions in the group. Normally needed if 'PredefinedType' specifies a LOAD_CASE. ::Ifc4x3_add2::IfcActionTypeEnum::Value ActionType() const; - void setActionType(::Ifc4x3_add2::IfcActionTypeEnum::Value v); + void setActionType(const ::Ifc4x3_add2::IfcActionTypeEnum::Value& v); /// Source of actions in the group. Normally needed if 'PredefinedType' specifies a LOAD_CASE. ::Ifc4x3_add2::IfcActionSourceTypeEnum::Value ActionSource() const; - void setActionSource(::Ifc4x3_add2::IfcActionSourceTypeEnum::Value v); + void setActionSource(const ::Ifc4x3_add2::IfcActionSourceTypeEnum::Value& v); /// Load factor. If omitted, a factor is not yet known or not specified. A load factor of 1.0 shall be explicitly exported as Coefficient = 1.0. - boost::optional< double > Coefficient() const; - void setCoefficient(boost::optional< double > v); + std::optional< double > Coefficient() const; + void setCoefficient(const std::optional< double >& v); /// Description of the purpose of this instance. Among else, possible values of the Purpose of load combinations are 'SLS', 'ULS', 'ALS' to indicate serviceability, ultimate, or accidental limit state. - boost::optional< std::string > Purpose() const; - void setPurpose(boost::optional< std::string > v); - aggregate_of< IfcStructuralResultGroup >::ptr SourceOfResultGroup() const; // INVERSE IfcStructuralResultGroup::ResultForLoadGroup - aggregate_of< IfcStructuralAnalysisModel >::ptr LoadGroupFor() const; // INVERSE IfcStructuralAnalysisModel::LoadedBy - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > Purpose() const; + void setPurpose(const std::optional< std::string >& v); + std::vector< IfcStructuralResultGroup > SourceOfResultGroup() const; // INVERSE IfcStructuralResultGroup::ResultForLoadGroup + std::vector< IfcStructuralAnalysisModel > LoadGroupFor() const; // INVERSE IfcStructuralAnalysisModel::LoadedBy + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralLoadGroup (IfcEntityInstanceData&& e); - IfcStructuralLoadGroup (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcLoadGroupTypeEnum::Value v6_PredefinedType, ::Ifc4x3_add2::IfcActionTypeEnum::Value v7_ActionType, ::Ifc4x3_add2::IfcActionSourceTypeEnum::Value v8_ActionSource, boost::optional< double > v9_Coefficient, boost::optional< std::string > v10_Purpose); - typedef aggregate_of< IfcStructuralLoadGroup > list; + // IfcStructuralLoadGroup (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcLoadGroupTypeEnum::Value v6_PredefinedType, ::Ifc4x3_add2::IfcActionTypeEnum::Value v7_ActionType, ::Ifc4x3_add2::IfcActionSourceTypeEnum::Value v8_ActionSource, std::optional< double > v9_Coefficient, std::optional< std::string > v10_Purpose); }; /// Definition from IAI: Defines an action which acts on a point. /// A point action is typically connected with a point connection. @@ -34537,13 +39079,14 @@ public: /// SELF\IfcStructuralActivity.AppliedLoad shall be of type /// IfcStructuralLoadSingleForce or /// IfcStructuralLoadSingleDisplacement. -class IFC_PARSE_API IfcStructuralPointAction : public IfcStructuralAction { +class IFC_PARSE_API IfcStructuralPointAction : public IfcStructuralAction { public: - virtual const IfcParse::entity& declaration() const; + IfcStructuralPointAction() {} + explicit IfcStructuralPointAction (const std::weak_ptr& data) : IfcStructuralAction(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralPointAction (IfcEntityInstanceData&& e); - IfcStructuralPointAction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad); - typedef aggregate_of< IfcStructuralPointAction > list; + // IfcStructuralPointAction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, std::optional< bool > v10_DestabilizingLoad); }; /// Definition from IAI: Instances of IfcStructuralPointConnection describe structural nodes or point supports. /// @@ -34558,16 +39101,17 @@ public: /// Topology Use Definitions: /// /// Instances of IfcStructuralPointConnection shall have a topology representation which consists of one IfcVertexPoint, representing the reference point of the point connection. See definitions at IfcStructuralItem for further specifications. -class IFC_PARSE_API IfcStructuralPointConnection : public IfcStructuralConnection { +class IFC_PARSE_API IfcStructuralPointConnection : public IfcStructuralConnection { public: + IfcStructuralPointConnection() {} + explicit IfcStructuralPointConnection (const std::weak_ptr& data) : IfcStructuralConnection(data) {} + /// Defines a coordinate system used for the description of the support condition properties in SELF\IfcStructuralConnection.SupportCondition, specified relative to the global coordinate system (global to the structural analysis model) established by SELF.\IfcProduct.ObjectPlacement. If left unspecified, the placement IfcAxis2Placement3D((x,y,z), ?, ?) is implied with x,y,z being the coordinates of the reference point of this IfcStructuralPointConnection and the default axes directions being in parallel with the global axes. - ::Ifc4x3_add2::IfcAxis2Placement3D* ConditionCoordinateSystem() const; - void setConditionCoordinateSystem(::Ifc4x3_add2::IfcAxis2Placement3D* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcAxis2Placement3D ConditionCoordinateSystem() const; + void setConditionCoordinateSystem(const ::Ifc4x3_add2::IfcAxis2Placement3D& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralPointConnection (IfcEntityInstanceData&& e); - IfcStructuralPointConnection (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition* v8_AppliedCondition, ::Ifc4x3_add2::IfcAxis2Placement3D* v9_ConditionCoordinateSystem); - typedef aggregate_of< IfcStructuralPointConnection > list; + // IfcStructuralPointConnection (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition v8_AppliedCondition, ::Ifc4x3_add2::IfcAxis2Placement3D v9_ConditionCoordinateSystem); }; /// Definition from IAI: Defines a reaction which occurs at a point. /// A point reaction is typically connected with a point connection. @@ -34612,35 +39156,37 @@ public: /// SELF\IfcStructuralActivity.AppliedLoad shall be of type /// IfcStructuralLoadSingleForce or /// IfcStructuralLoadSingleDisplacement. -class IFC_PARSE_API IfcStructuralPointReaction : public IfcStructuralReaction { +class IFC_PARSE_API IfcStructuralPointReaction : public IfcStructuralReaction { public: - virtual const IfcParse::entity& declaration() const; + IfcStructuralPointReaction() {} + explicit IfcStructuralPointReaction (const std::weak_ptr& data) : IfcStructuralReaction(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralPointReaction (IfcEntityInstanceData&& e); - IfcStructuralPointReaction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal); - typedef aggregate_of< IfcStructuralPointReaction > list; + // IfcStructuralPointReaction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal); }; /// Definition from IAI: Instances of the entity IfcStructuralResultGroup are used to group results of structural analysis calculations and to capture the connection to the underlying basic load group. The basic functionality for grouping inherited from IfcGroup is used to collect instances from IfcStructuralReaction or its respective subclasses. /// /// HISTORY: New entity in IFC 2x2. /// IFC 2x4 change: WHERE rule added. -class IFC_PARSE_API IfcStructuralResultGroup : public IfcGroup { +class IFC_PARSE_API IfcStructuralResultGroup : public IfcGroup { public: + IfcStructuralResultGroup() {} + explicit IfcStructuralResultGroup (const std::weak_ptr& data) : IfcGroup(data) {} + /// Specifies the analysis theory used to obtain the respective results. ::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Value TheoryType() const; - void setTheoryType(::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Value v); + void setTheoryType(const ::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Value& v); /// Reference to an instance of IfcStructuralLoadGroup for which this instance represents the result. - ::Ifc4x3_add2::IfcStructuralLoadGroup* ResultForLoadGroup() const; - void setResultForLoadGroup(::Ifc4x3_add2::IfcStructuralLoadGroup* v); + ::Ifc4x3_add2::IfcStructuralLoadGroup ResultForLoadGroup() const; + void setResultForLoadGroup(const ::Ifc4x3_add2::IfcStructuralLoadGroup& v); /// This value allows to easily recognize whether a linear analysis has been applied (allowing the superposition of analysis results). bool IsLinear() const; - void setIsLinear(bool v); - aggregate_of< IfcStructuralAnalysisModel >::ptr ResultGroupFor() const; // INVERSE IfcStructuralAnalysisModel::HasResults - virtual const IfcParse::entity& declaration() const; + void setIsLinear(const bool& v); + std::vector< IfcStructuralAnalysisModel > ResultGroupFor() const; // INVERSE IfcStructuralAnalysisModel::HasResults + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralResultGroup (IfcEntityInstanceData&& e); - IfcStructuralResultGroup (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Value v6_TheoryType, ::Ifc4x3_add2::IfcStructuralLoadGroup* v7_ResultForLoadGroup, bool v8_IsLinear); - typedef aggregate_of< IfcStructuralResultGroup > list; + // IfcStructuralResultGroup (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcAnalysisTheoryTypeEnum::Value v6_TheoryType, ::Ifc4x3_add2::IfcStructuralLoadGroup v7_ResultForLoadGroup, bool v8_IsLinear); }; /// Definition from IAI: Defines an action which is distributed over a surface. /// A surface action may be connected with a surface member or surface connection. @@ -34694,19 +39240,20 @@ public: /// (Single point loads are modeled by IfcStructuralPointLoad.) /// All items in SELF\IfcStructuralActivity.AppliedLoad\IfcStructuralLoadConfiguration.Values /// shall be of the same entity type. -class IFC_PARSE_API IfcStructuralSurfaceAction : public IfcStructuralAction { +class IFC_PARSE_API IfcStructuralSurfaceAction : public IfcStructuralAction { public: + IfcStructuralSurfaceAction() {} + explicit IfcStructuralSurfaceAction (const std::weak_ptr& data) : IfcStructuralAction(data) {} + /// Defines whether load values are given per true lengths of the surface on which they act, or per lengths of the projection of the surface in load direction. The latter is only applicable to loads which act in global coordinate directions. - boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > ProjectedOrTrue() const; - void setProjectedOrTrue(boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > ProjectedOrTrue() const; + void setProjectedOrTrue(const std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value >& v); /// Type of action according to its distribution of load values. ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralSurfaceAction (IfcEntityInstanceData&& e); - IfcStructuralSurfaceAction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v12_PredefinedType); - typedef aggregate_of< IfcStructuralSurfaceAction > list; + // IfcStructuralSurfaceAction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, std::optional< bool > v10_DestabilizingLoad, std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v12_PredefinedType); }; /// Definition from IAI: Instances of IfcStructuralSurfaceConnection describe face 'nodes', i.e. faces where two or more surface members are joined, or face supports. Face surfaces may be planar or curved. /// @@ -34720,13 +39267,14 @@ public: /// Topology Use Definitions: /// /// Instances of IfcStructuralSurfaceConnection shall have a topology representation which consists of one IfcFaceSurface, representing the reference surface of the surface connection. See definitions at IfcStructuralItem for further specifications. -class IFC_PARSE_API IfcStructuralSurfaceConnection : public IfcStructuralConnection { +class IFC_PARSE_API IfcStructuralSurfaceConnection : public IfcStructuralConnection { public: - virtual const IfcParse::entity& declaration() const; + IfcStructuralSurfaceConnection() {} + explicit IfcStructuralSurfaceConnection (const std::weak_ptr& data) : IfcStructuralConnection(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralSurfaceConnection (IfcEntityInstanceData&& e); - IfcStructuralSurfaceConnection (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition* v8_AppliedCondition); - typedef aggregate_of< IfcStructuralSurfaceConnection > list; + // IfcStructuralSurfaceConnection (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcBoundaryCondition v8_AppliedCondition); }; /// IfcSubContractResource is a construction resource needed in a construction process that represents a sub-contractor. /// @@ -34752,17 +39300,18 @@ public: /// In addition to assignments specified at the base class IfcConstructionResource, a subcontract resource may have assignments of its own using IfcRelAssignsToResource where RelatingResource refers to the IfcSubContractResource and RelatedObjects contains one or more IfcActor, IfcCostSchedule, and/or IfcWorkOrder objects as shown in Figure 195. An IfcActor indicates a specific organization to be considered to fulfill the resource or invited to bid on the resource. An IfcCostSchedule indicates a bid or price quote made on behalf of an organization. An IfcProjectOrder indicates a specific work order committed to fulfill the resource. /// /// Figure 195 — Subcontract assignment use -class IFC_PARSE_API IfcSubContractResource : public IfcConstructionResource { +class IFC_PARSE_API IfcSubContractResource : public IfcConstructionResource { public: + IfcSubContractResource() {} + explicit IfcSubContractResource (const std::weak_ptr& data) : IfcConstructionResource(data) {} + /// Defines types of subcontract resources. /// IFC2x4 New attribute - boost::optional< ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSubContractResource (IfcEntityInstanceData&& e); - IfcSubContractResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value > v11_PredefinedType); - typedef aggregate_of< IfcSubContractResource > list; + // IfcSubContractResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime v8_Usage, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v10_BaseQuantity, std::optional< ::Ifc4x3_add2::IfcSubContractResourceTypeEnum::Value > v11_PredefinedType); }; /// Definition from IAI: A surface feature is a modification at (onto, or into) of the surface of an element. Parts of the surface of the entire surface may be affected. The volume and mass of the element may be increased, remain unchanged, or be decreased by the surface feature, depending on manufacturing technology. /// @@ -34796,17 +39345,18 @@ public: /// Surface representations of treated parts of the lement surface by means of IfcShellBasedSurfaceModel. The faces within the surface model may be included into a B-Rep model within a representation map of the parent element type. /// /// Higher-level parameters (geometric and non-geometric) may be provided by property sets based on local agreements. -class IFC_PARSE_API IfcSurfaceFeature : public IfcFeatureElement { +class IFC_PARSE_API IfcSurfaceFeature : public IfcFeatureElement { public: + IfcSurfaceFeature() {} + explicit IfcSurfaceFeature (const std::weak_ptr& data) : IfcFeatureElement(data) {} + /// Indicates the kind of surface feature. - boost::optional< ::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Value > v); - aggregate_of< IfcRelAdheresToElement >::ptr AdheresToElement() const; // INVERSE IfcRelAdheresToElement::RelatedSurfaceFeatures - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Value >& v); + std::vector< IfcRelAdheresToElement > AdheresToElement() const; // INVERSE IfcRelAdheresToElement::RelatedSurfaceFeatures + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSurfaceFeature (IfcEntityInstanceData&& e); - IfcSurfaceFeature (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcSurfaceFeature > list; + // IfcSurfaceFeature (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSurfaceFeatureTypeEnum::Value > v9_PredefinedType); }; /// The flow controller type IfcSwitchingDeviceType defines commonly shared information for occurrences of switching devices. The set of shared information may include: /// @@ -34848,16 +39398,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcSwitchingDeviceType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcSwitchingDevice for standard port definitions. -class IFC_PARSE_API IfcSwitchingDeviceType : public IfcFlowControllerType { +class IFC_PARSE_API IfcSwitchingDeviceType : public IfcFlowControllerType { public: + IfcSwitchingDeviceType() {} + explicit IfcSwitchingDeviceType (const std::weak_ptr& data) : IfcFlowControllerType(data) {} + /// Identifies the predefined types of switch from which the type required may be set. ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSwitchingDeviceType (IfcEntityInstanceData&& e); - IfcSwitchingDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcSwitchingDeviceType > list; + // IfcSwitchingDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: Organized combination of /// related parts within an AEC product, composed for a common @@ -34876,15 +39427,16 @@ public: /// /// HISTORY: New entity in /// IFC Release 1.0 -class IFC_PARSE_API IfcSystem : public IfcGroup { +class IFC_PARSE_API IfcSystem : public IfcGroup { public: - aggregate_of< IfcRelServicesBuildings >::ptr ServicesBuildings() const; // INVERSE IfcRelServicesBuildings::RelatingSystem - aggregate_of< IfcRelReferencedInSpatialStructure >::ptr ServicesFacilities() const; // INVERSE IfcRelReferencedInSpatialStructure::RelatedElements - virtual const IfcParse::entity& declaration() const; + IfcSystem() {} + explicit IfcSystem (const std::weak_ptr& data) : IfcGroup(data) {} + + std::vector< IfcRelServicesBuildings > ServicesBuildings() const; // INVERSE IfcRelServicesBuildings::RelatingSystem + std::vector< IfcRelReferencedInSpatialStructure > ServicesFacilities() const; // INVERSE IfcRelReferencedInSpatialStructure::RelatedElements + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSystem (IfcEntityInstanceData&& e); - IfcSystem (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType); - typedef aggregate_of< IfcSystem > list; + // IfcSystem (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType); }; /// A system furniture element defines components of modular furniture which are not directly placed in a building structure but aggregated inside furniture. /// @@ -34910,15 +39462,16 @@ public: /// 'Hardware': Finish hardware such as knobs or handles. /// 'Padding': Padding such as cushions. /// 'Panel': Panels such as glass. -class IFC_PARSE_API IfcSystemFurnitureElement : public IfcFurnishingElement { +class IFC_PARSE_API IfcSystemFurnitureElement : public IfcFurnishingElement { public: - boost::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcSystemFurnitureElement() {} + explicit IfcSystemFurnitureElement (const std::weak_ptr& data) : IfcFurnishingElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSystemFurnitureElement (IfcEntityInstanceData&& e); - IfcSystemFurnitureElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcSystemFurnitureElement > list; + // IfcSystemFurnitureElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSystemFurnitureElementTypeEnum::Value > v9_PredefinedType); }; /// The flow storage device type IfcTankType defines commonly shared information for occurrences of tanks. The set of shared information may include: /// @@ -34952,113 +39505,121 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcTankType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcTank for standard port definitions. -class IFC_PARSE_API IfcTankType : public IfcFlowStorageDeviceType { +class IFC_PARSE_API IfcTankType : public IfcFlowStorageDeviceType { public: + IfcTankType() {} + explicit IfcTankType (const std::weak_ptr& data) : IfcFlowStorageDeviceType(data) {} + /// Defines the type of tank. ::Ifc4x3_add2::IfcTankTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcTankTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcTankTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTankType (IfcEntityInstanceData&& e); - IfcTankType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTankTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcTankType > list; + // IfcTankType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTankTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcTendon : public IfcReinforcingElement { +class IFC_PARSE_API IfcTendon : public IfcReinforcingElement { public: - boost::optional< ::Ifc4x3_add2::IfcTendonTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTendonTypeEnum::Value > v); - boost::optional< double > NominalDiameter() const; - void setNominalDiameter(boost::optional< double > v); - boost::optional< double > CrossSectionArea() const; - void setCrossSectionArea(boost::optional< double > v); - boost::optional< double > TensionForce() const; - void setTensionForce(boost::optional< double > v); - boost::optional< double > PreStress() const; - void setPreStress(boost::optional< double > v); - boost::optional< double > FrictionCoefficient() const; - void setFrictionCoefficient(boost::optional< double > v); - boost::optional< double > AnchorageSlip() const; - void setAnchorageSlip(boost::optional< double > v); - boost::optional< double > MinCurvatureRadius() const; - void setMinCurvatureRadius(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + IfcTendon() {} + explicit IfcTendon (const std::weak_ptr& data) : IfcReinforcingElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcTendonTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTendonTypeEnum::Value >& v); + std::optional< double > NominalDiameter() const; + void setNominalDiameter(const std::optional< double >& v); + std::optional< double > CrossSectionArea() const; + void setCrossSectionArea(const std::optional< double >& v); + std::optional< double > TensionForce() const; + void setTensionForce(const std::optional< double >& v); + std::optional< double > PreStress() const; + void setPreStress(const std::optional< double >& v); + std::optional< double > FrictionCoefficient() const; + void setFrictionCoefficient(const std::optional< double >& v); + std::optional< double > AnchorageSlip() const; + void setAnchorageSlip(const std::optional< double >& v); + std::optional< double > MinCurvatureRadius() const; + void setMinCurvatureRadius(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTendon (IfcEntityInstanceData&& e); - IfcTendon (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< ::Ifc4x3_add2::IfcTendonTypeEnum::Value > v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_TensionForce, boost::optional< double > v14_PreStress, boost::optional< double > v15_FrictionCoefficient, boost::optional< double > v16_AnchorageSlip, boost::optional< double > v17_MinCurvatureRadius); - typedef aggregate_of< IfcTendon > list; + // IfcTendon (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< std::string > v9_SteelGrade, std::optional< ::Ifc4x3_add2::IfcTendonTypeEnum::Value > v10_PredefinedType, std::optional< double > v11_NominalDiameter, std::optional< double > v12_CrossSectionArea, std::optional< double > v13_TensionForce, std::optional< double > v14_PreStress, std::optional< double > v15_FrictionCoefficient, std::optional< double > v16_AnchorageSlip, std::optional< double > v17_MinCurvatureRadius); }; -class IFC_PARSE_API IfcTendonAnchor : public IfcReinforcingElement { +class IFC_PARSE_API IfcTendonAnchor : public IfcReinforcingElement { public: - boost::optional< ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcTendonAnchor() {} + explicit IfcTendonAnchor (const std::weak_ptr& data) : IfcReinforcingElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTendonAnchor (IfcEntityInstanceData&& e); - IfcTendonAnchor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value > v10_PredefinedType); - typedef aggregate_of< IfcTendonAnchor > list; + // IfcTendonAnchor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< std::string > v9_SteelGrade, std::optional< ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value > v10_PredefinedType); }; -class IFC_PARSE_API IfcTendonAnchorType : public IfcReinforcingElementType { +class IFC_PARSE_API IfcTendonAnchorType : public IfcReinforcingElementType { public: + IfcTendonAnchorType() {} + explicit IfcTendonAnchorType (const std::weak_ptr& data) : IfcReinforcingElementType(data) {} + ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTendonAnchorType (IfcEntityInstanceData&& e); - IfcTendonAnchorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcTendonAnchorType > list; + // IfcTendonAnchorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTendonAnchorTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcTendonConduit : public IfcReinforcingElement { +class IFC_PARSE_API IfcTendonConduit : public IfcReinforcingElement { public: - boost::optional< ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcTendonConduit() {} + explicit IfcTendonConduit (const std::weak_ptr& data) : IfcReinforcingElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTendonConduit (IfcEntityInstanceData&& e); - IfcTendonConduit (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value > v10_PredefinedType); - typedef aggregate_of< IfcTendonConduit > list; + // IfcTendonConduit (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< std::string > v9_SteelGrade, std::optional< ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value > v10_PredefinedType); }; -class IFC_PARSE_API IfcTendonConduitType : public IfcReinforcingElementType { +class IFC_PARSE_API IfcTendonConduitType : public IfcReinforcingElementType { public: + IfcTendonConduitType() {} + explicit IfcTendonConduitType (const std::weak_ptr& data) : IfcReinforcingElementType(data) {} + ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTendonConduitType (IfcEntityInstanceData&& e); - IfcTendonConduitType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcTendonConduitType > list; + // IfcTendonConduitType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTendonConduitTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcTendonType : public IfcReinforcingElementType { +class IFC_PARSE_API IfcTendonType : public IfcReinforcingElementType { public: + IfcTendonType() {} + explicit IfcTendonType (const std::weak_ptr& data) : IfcReinforcingElementType(data) {} + ::Ifc4x3_add2::IfcTendonTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcTendonTypeEnum::Value v); - boost::optional< double > NominalDiameter() const; - void setNominalDiameter(boost::optional< double > v); - boost::optional< double > CrossSectionArea() const; - void setCrossSectionArea(boost::optional< double > v); - boost::optional< double > SheathDiameter() const; - void setSheathDiameter(boost::optional< double > v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcTendonTypeEnum::Value& v); + std::optional< double > NominalDiameter() const; + void setNominalDiameter(const std::optional< double >& v); + std::optional< double > CrossSectionArea() const; + void setCrossSectionArea(const std::optional< double >& v); + std::optional< double > SheathDiameter() const; + void setSheathDiameter(const std::optional< double >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTendonType (IfcEntityInstanceData&& e); - IfcTendonType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTendonTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_SheathDiameter); - typedef aggregate_of< IfcTendonType > list; + // IfcTendonType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTendonTypeEnum::Value v10_PredefinedType, std::optional< double > v11_NominalDiameter, std::optional< double > v12_CrossSectionArea, std::optional< double > v13_SheathDiameter); }; -class IFC_PARSE_API IfcTrackElementType : public IfcBuiltElementType { +class IFC_PARSE_API IfcTrackElementType : public IfcBuiltElementType { public: + IfcTrackElementType() {} + explicit IfcTrackElementType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcTrackElementTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTrackElementType (IfcEntityInstanceData&& e); - IfcTrackElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcTrackElementType > list; + // IfcTrackElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value v10_PredefinedType); }; /// The energy conversion device type IfcTransformerType defines commonly shared information for occurrences of transformers. The set of shared information may include: /// @@ -35087,16 +39648,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcTransformerType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcTransformer for standard port definitions. -class IFC_PARSE_API IfcTransformerType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcTransformerType : public IfcEnergyConversionDeviceType { public: + IfcTransformerType() {} + explicit IfcTransformerType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Identifies the predefined types of transformer from which the type required may be set. ::Ifc4x3_add2::IfcTransformerTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcTransformerTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcTransformerTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTransformerType (IfcEntityInstanceData&& e); - IfcTransformerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTransformerTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcTransformerType > list; + // IfcTransformerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTransformerTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: The element type /// IfcTransportElementType defines commonly shared @@ -35161,25 +39723,27 @@ public: /// RepresentationIdentifier and RepresentationType of /// IfcShapeRepresentation are restricted in the same way as /// those for IfcTransportElementType. -class IFC_PARSE_API IfcTransportElementType : public IfcTransportationDeviceType { +class IFC_PARSE_API IfcTransportElementType : public IfcTransportationDeviceType { public: + IfcTransportElementType() {} + explicit IfcTransportElementType (const std::weak_ptr& data) : IfcTransportationDeviceType(data) {} + /// Predefined types to define the particular type of the transport element. There may be property set definitions available for each predefined type. ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcTransportElementTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTransportElementType (IfcEntityInstanceData&& e); - IfcTransportElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcTransportElementType > list; + // IfcTransportElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcTransportationDevice : public IfcElement { +class IFC_PARSE_API IfcTransportationDevice : public IfcElement { public: - virtual const IfcParse::entity& declaration() const; + IfcTransportationDevice() {} + explicit IfcTransportationDevice (const std::weak_ptr& data) : IfcElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTransportationDevice (IfcEntityInstanceData&& e); - IfcTransportationDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcTransportationDevice > list; + // IfcTransportationDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// Definition from ISO/CD 10303-42:1992: /// A trimmed curve is a bounded curve which is created by taking a selected @@ -35259,28 +39823,29 @@ public: /// required to be consistent with the parameter values of Trim1 /// and Trim1, so the rule (sense = parameter 1 /// < parameter 2) may not be fulfilled. -class IFC_PARSE_API IfcTrimmedCurve : public IfcBoundedCurve { +class IFC_PARSE_API IfcTrimmedCurve : public IfcBoundedCurve { public: + IfcTrimmedCurve() {} + explicit IfcTrimmedCurve (const std::weak_ptr& data) : IfcBoundedCurve(data) {} + /// The curve to be trimmed. For curves with multiple representations any parameter values given as Trim1 or Trim2 refer to the master representation of the BasisCurve only. - ::Ifc4x3_add2::IfcCurve* BasisCurve() const; - void setBasisCurve(::Ifc4x3_add2::IfcCurve* v); + ::Ifc4x3_add2::IfcCurve BasisCurve() const; + void setBasisCurve(const ::Ifc4x3_add2::IfcCurve& v); /// The first trimming point which may be specified as a Cartesian point, as a real parameter or both. - aggregate_of< ::Ifc4x3_add2::IfcTrimmingSelect >::ptr Trim1() const; - void setTrim1(aggregate_of< ::Ifc4x3_add2::IfcTrimmingSelect >::ptr v); + std::vector< ::Ifc4x3_add2::IfcTrimmingSelect > Trim1() const; + void setTrim1(const std::vector< ::Ifc4x3_add2::IfcTrimmingSelect >& v); /// The second trimming point which may be specified as a Cartesian point, as a real parameter or both. - aggregate_of< ::Ifc4x3_add2::IfcTrimmingSelect >::ptr Trim2() const; - void setTrim2(aggregate_of< ::Ifc4x3_add2::IfcTrimmingSelect >::ptr v); + std::vector< ::Ifc4x3_add2::IfcTrimmingSelect > Trim2() const; + void setTrim2(const std::vector< ::Ifc4x3_add2::IfcTrimmingSelect >& v); /// Flag to indicate whether the direction of the trimmed curve agrees with or is opposed to the direction of the basis curve. bool SenseAgreement() const; - void setSenseAgreement(bool v); + void setSenseAgreement(const bool& v); /// Where both parameter and point are present at either end of the curve this indicates the preferred form. ::Ifc4x3_add2::IfcTrimmingPreference::Value MasterRepresentation() const; - void setMasterRepresentation(::Ifc4x3_add2::IfcTrimmingPreference::Value v); - virtual const IfcParse::entity& declaration() const; + void setMasterRepresentation(const ::Ifc4x3_add2::IfcTrimmingPreference::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTrimmedCurve (IfcEntityInstanceData&& e); - IfcTrimmedCurve (::Ifc4x3_add2::IfcCurve* v1_BasisCurve, aggregate_of< ::Ifc4x3_add2::IfcTrimmingSelect >::ptr v2_Trim1, aggregate_of< ::Ifc4x3_add2::IfcTrimmingSelect >::ptr v3_Trim2, bool v4_SenseAgreement, ::Ifc4x3_add2::IfcTrimmingPreference::Value v5_MasterRepresentation); - typedef aggregate_of< IfcTrimmedCurve > list; + // IfcTrimmedCurve (::Ifc4x3_add2::IfcCurve v1_BasisCurve, std::vector< ::Ifc4x3_add2::IfcTrimmingSelect > v2_Trim1, std::vector< ::Ifc4x3_add2::IfcTrimmingSelect > v3_Trim2, bool v4_SenseAgreement, ::Ifc4x3_add2::IfcTrimmingPreference::Value v5_MasterRepresentation); }; /// The energy conversion device type IfcTubeBundleType defines commonly shared information for occurrences of tube bundles. The set of shared information may include: /// @@ -35311,16 +39876,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcTubeBundleType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcTubeBundle for standard port definitions. -class IFC_PARSE_API IfcTubeBundleType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcTubeBundleType : public IfcEnergyConversionDeviceType { public: + IfcTubeBundleType() {} + explicit IfcTubeBundleType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Defines the type of tube bundle. ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTubeBundleType (IfcEntityInstanceData&& e); - IfcTubeBundleType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcTubeBundleType > list; + // IfcTubeBundleType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value v10_PredefinedType); }; /// The energy conversion device type IfcUnitaryEquipmentType defines commonly shared information for occurrences of unitary equipments. The set of shared information may include: /// @@ -35350,16 +39916,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcUnitaryEquipmentType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcUnitaryEquipment for standard port definitions. -class IFC_PARSE_API IfcUnitaryEquipmentType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcUnitaryEquipmentType : public IfcEnergyConversionDeviceType { public: + IfcUnitaryEquipmentType() {} + explicit IfcUnitaryEquipmentType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// The type of unitary equipment. ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcUnitaryEquipmentType (IfcEntityInstanceData&& e); - IfcUnitaryEquipmentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcUnitaryEquipmentType > list; + // IfcUnitaryEquipmentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value v10_PredefinedType); }; /// The flow controller type IfcValveType defines commonly shared information for occurrences of valves. The set of shared information may include: /// @@ -35399,49 +39966,53 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcValveType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcValve for standard port definitions. -class IFC_PARSE_API IfcValveType : public IfcFlowControllerType { +class IFC_PARSE_API IfcValveType : public IfcFlowControllerType { public: + IfcValveType() {} + explicit IfcValveType (const std::weak_ptr& data) : IfcFlowControllerType(data) {} + /// The type of valve. ::Ifc4x3_add2::IfcValveTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcValveTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcValveTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcValveType (IfcEntityInstanceData&& e); - IfcValveType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcValveTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcValveType > list; + // IfcValveType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcValveTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcVehicle : public IfcTransportationDevice { +class IFC_PARSE_API IfcVehicle : public IfcTransportationDevice { public: - boost::optional< ::Ifc4x3_add2::IfcVehicleTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcVehicleTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcVehicle() {} + explicit IfcVehicle (const std::weak_ptr& data) : IfcTransportationDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcVehicleTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcVehicleTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcVehicle (IfcEntityInstanceData&& e); - IfcVehicle (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcVehicleTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcVehicle > list; + // IfcVehicle (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcVehicleTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcVibrationDamper : public IfcElementComponent { +class IFC_PARSE_API IfcVibrationDamper : public IfcElementComponent { public: - boost::optional< ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcVibrationDamper() {} + explicit IfcVibrationDamper (const std::weak_ptr& data) : IfcElementComponent(data) {} + + std::optional< ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcVibrationDamper (IfcEntityInstanceData&& e); - IfcVibrationDamper (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcVibrationDamper > list; + // IfcVibrationDamper (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcVibrationDamperType : public IfcElementComponentType { +class IFC_PARSE_API IfcVibrationDamperType : public IfcElementComponentType { public: + IfcVibrationDamperType() {} + explicit IfcVibrationDamperType (const std::weak_ptr& data) : IfcElementComponentType(data) {} + ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcVibrationDamperType (IfcEntityInstanceData&& e); - IfcVibrationDamperType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcVibrationDamperType > list; + // IfcVibrationDamperType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcVibrationDamperTypeEnum::Value v10_PredefinedType); }; /// A vibration isolator is a device used to minimize the effects of vibration transmissibility in a building. /// @@ -35477,15 +40048,16 @@ public: /// /// Body: The primary material from which the object is constructed. /// Damping: Material from which the damping element of the vibration isolator is constructed. -class IFC_PARSE_API IfcVibrationIsolator : public IfcElementComponent { +class IFC_PARSE_API IfcVibrationIsolator : public IfcElementComponent { public: - boost::optional< ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcVibrationIsolator() {} + explicit IfcVibrationIsolator (const std::weak_ptr& data) : IfcElementComponent(data) {} + + std::optional< ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcVibrationIsolator (IfcEntityInstanceData&& e); - IfcVibrationIsolator (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcVibrationIsolator > list; + // IfcVibrationIsolator (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value > v9_PredefinedType); }; /// The element component type IfcVibrationIsolatorType defines commonly shared information for occurrences of vibration isolators. The set of shared information may include: /// @@ -35509,16 +40081,17 @@ public: /// The material of the IfcVibrationIsolatorType is defined by IfcMaterialConstituentSet or as a fallback by IfcMaterial, and attached by the RelatingMaterial attribute on the IfcRelAssociatesMaterial relationship. It is accessible by the HasAssociations inverse attribute. The following keywords for IfcMaterialConstituentSet.MaterialConstituents[n].Name shall be used: /// /// 'Damping': Material from which the damping element of the vibration isolator is constructed. -class IFC_PARSE_API IfcVibrationIsolatorType : public IfcElementComponentType { +class IFC_PARSE_API IfcVibrationIsolatorType : public IfcElementComponentType { public: + IfcVibrationIsolatorType() {} + explicit IfcVibrationIsolatorType (const std::weak_ptr& data) : IfcElementComponentType(data) {} + /// Defines the type of vibration isolator. ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcVibrationIsolatorType (IfcEntityInstanceData&& e); - IfcVibrationIsolatorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcVibrationIsolatorType > list; + // IfcVibrationIsolatorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcVibrationIsolatorTypeEnum::Value v10_PredefinedType); }; /// A virtual element is a special element used to provide imaginary boundaries, such as between two adjacent, but not separated, spaces. Virtual elements are usually not displayed and does not have quantities and other measures. Therefore IfcVirtualElement does not have material information and quantities attached. /// @@ -35606,15 +40179,16 @@ public: /// /// 'GeometricSet': a list of 3D surfaces within the constraints /// shown above. -class IFC_PARSE_API IfcVirtualElement : public IfcElement { +class IFC_PARSE_API IfcVirtualElement : public IfcElement { public: - boost::optional< ::Ifc4x3_add2::IfcVirtualElementTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcVirtualElementTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcVirtualElement() {} + explicit IfcVirtualElement (const std::weak_ptr& data) : IfcElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcVirtualElementTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcVirtualElementTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcVirtualElement (IfcEntityInstanceData&& e); - IfcVirtualElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcVirtualElementTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcVirtualElement > list; + // IfcVirtualElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcVirtualElementTypeEnum::Value > v9_PredefinedType); }; /// Definition from IAI: A voiding feature is a modification of an element which reduces its volume. Such a feature may be manufactured in different ways, for example by cutting, drilling, or milling of members made of various materials, or by inlays into the formwork of cast members made of materials such as concrete. /// @@ -35648,16 +40222,17 @@ public: /// Surface representations of cutting planes by means of IfcShellBasedSurfaceModel. The faces within the surface model may be included into a B-Rep model within a representation map of the parent element type. /// /// Higher-level parameters (geometric and non-geometric) may be provided by property sets based on local agreements. -class IFC_PARSE_API IfcVoidingFeature : public IfcFeatureElementSubtraction { +class IFC_PARSE_API IfcVoidingFeature : public IfcFeatureElementSubtraction { public: + IfcVoidingFeature() {} + explicit IfcVoidingFeature (const std::weak_ptr& data) : IfcFeatureElementSubtraction(data) {} + /// Qualifies the feature regarding its shape and configuration relative to the voided element. - boost::optional< ::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcVoidingFeature (IfcEntityInstanceData&& e); - IfcVoidingFeature (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcVoidingFeature > list; + // IfcVoidingFeature (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcVoidingFeatureTypeEnum::Value > v9_PredefinedType); }; /// Definition from IAI: The element type /// IfcWallType defines commonly shared information for @@ -35743,16 +40318,17 @@ public: /// /// Pset_WallCommon: common property set for all /// wall types. -class IFC_PARSE_API IfcWallType : public IfcBuiltElementType { +class IFC_PARSE_API IfcWallType : public IfcBuiltElementType { public: + IfcWallType() {} + explicit IfcWallType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a wall element from which the type required may be set. ::Ifc4x3_add2::IfcWallTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcWallTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcWallTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcWallType (IfcEntityInstanceData&& e); - IfcWallType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcWallTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcWallType > list; + // IfcWallType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcWallTypeEnum::Value v10_PredefinedType); }; /// The flow terminal type IfcWasteTerminalType defines commonly shared information for occurrences of waste terminals. The set of shared information may include: /// @@ -35790,16 +40366,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcWasteTerminalType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcWasteTerminal for standard port definitions. -class IFC_PARSE_API IfcWasteTerminalType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcWasteTerminalType : public IfcFlowTerminalType { public: + IfcWasteTerminalType() {} + explicit IfcWasteTerminalType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + /// Identifies the predefined types of waste terminal from which the type required may be set. ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcWasteTerminalType (IfcEntityInstanceData&& e); - IfcWasteTerminalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcWasteTerminalType > list; + // IfcWasteTerminalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: The element type /// IfcWindowType defines commonly shared information for @@ -35922,23 +40499,24 @@ public: /// IfcShapeRepresentation are restricted in the same way as /// those for IfcWindow and /// IfcWindowStandardCase -class IFC_PARSE_API IfcWindowType : public IfcBuiltElementType { +class IFC_PARSE_API IfcWindowType : public IfcBuiltElementType { public: + IfcWindowType() {} + explicit IfcWindowType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a window element from which the type required may be set. ::Ifc4x3_add2::IfcWindowTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcWindowTypeEnum::Value v); + void setPredefinedType(const ::Ifc4x3_add2::IfcWindowTypeEnum::Value& v); /// Type defining the general layout of the window type in terms of the partitioning of panels. ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value PartitioningType() const; - void setPartitioningType(::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value v); - boost::optional< bool > ParameterTakesPrecedence() const; - void setParameterTakesPrecedence(boost::optional< bool > v); - boost::optional< std::string > UserDefinedPartitioningType() const; - void setUserDefinedPartitioningType(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + void setPartitioningType(const ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value& v); + std::optional< bool > ParameterTakesPrecedence() const; + void setParameterTakesPrecedence(const std::optional< bool >& v); + std::optional< std::string > UserDefinedPartitioningType() const; + void setUserDefinedPartitioningType(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcWindowType (IfcEntityInstanceData&& e); - IfcWindowType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcWindowTypeEnum::Value v10_PredefinedType, ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value v11_PartitioningType, boost::optional< bool > v12_ParameterTakesPrecedence, boost::optional< std::string > v13_UserDefinedPartitioningType); - typedef aggregate_of< IfcWindowType > list; + // IfcWindowType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcWindowTypeEnum::Value v10_PredefinedType, ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value v11_PartitioningType, std::optional< bool > v12_ParameterTakesPrecedence, std::optional< std::string > v13_UserDefinedPartitioningType); }; /// An IfcWorkCalendar defines working and non-working time periods for tasks and resources. It enables to define both specific time periods, such as from 7:00 till 12:00 on 25th August 2009, as well as repetitive time periods based on frequently used recurrence patterns, such as each Monday from 7:00 till 12:00 between 1st March 2009 and 31st December 2009. /// @@ -35953,29 +40531,30 @@ public: /// Figure 17 shows the definition of a work calendar, which is defined by a set of work times and exception times. The work times are defined as recurring patterns with optional boundaries (applying from and/or to a specific date). The shown example defines a simple work calendar with working times Monday to Thursday 8:00 to 12:00 and 13:00 to 17:00, Friday 8:00 to 14:00 and as exception every 1st Monday in a month the work starts one hour later - i.e. the working time on every 1st Monday in a month is overriden to be 9:00 to 12:00 and 13:00 to 17:00. Both the working time and the exception time is valid for the period of 01.09.2010 till 30.08.2011. /// /// Figure 17 — Work calendar instantiation -class IFC_PARSE_API IfcWorkCalendar : public IfcControl { +class IFC_PARSE_API IfcWorkCalendar : public IfcControl { public: + IfcWorkCalendar() {} + explicit IfcWorkCalendar (const std::weak_ptr& data) : IfcControl(data) {} + /// Set of times periods that are regarded as an initial set-up /// of working times. Exception times can then further restrict /// these working times. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcWorkTime >::ptr > WorkingTimes() const; - void setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcWorkTime >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcWorkTime > > WorkingTimes() const; + void setWorkingTimes(const std::optional< std::vector< ::Ifc4x3_add2::IfcWorkTime > >& v); /// Set of times periods that define exceptions (non-working /// times) for the given working times including the base /// calendar, if provided. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcWorkTime >::ptr > ExceptionTimes() const; - void setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcWorkTime >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcWorkTime > > ExceptionTimes() const; + void setExceptionTimes(const std::optional< std::vector< ::Ifc4x3_add2::IfcWorkTime > >& v); /// Identifies the predefined types of a work calendar from which /// the type required may be set. /// /// Added in IFC 2x4 - boost::optional< ::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcWorkCalendar (IfcEntityInstanceData&& e); - IfcWorkCalendar (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcWorkTime >::ptr > v7_WorkingTimes, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcWorkTime >::ptr > v8_ExceptionTimes, boost::optional< ::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcWorkCalendar > list; + // IfcWorkCalendar (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::vector< ::Ifc4x3_add2::IfcWorkTime > > v7_WorkingTimes, std::optional< std::vector< ::Ifc4x3_add2::IfcWorkTime > > v8_ExceptionTimes, std::optional< ::Ifc4x3_add2::IfcWorkCalendarTypeEnum::Value > v9_PredefinedType); }; /// An IfcWorkControl is an abstract supertype which captures information that is common to both IfcWorkPlan and IfcWorkSchedule. /// @@ -36021,34 +40600,35 @@ public: /// /// Pset_WorkControlCommon: common /// property set for work control -class IFC_PARSE_API IfcWorkControl : public IfcControl { +class IFC_PARSE_API IfcWorkControl : public IfcControl { public: + IfcWorkControl() {} + explicit IfcWorkControl (const std::weak_ptr& data) : IfcControl(data) {} + /// The date that the plan is created. std::string CreationDate() const; - void setCreationDate(std::string v); + void setCreationDate(const std::string& v); /// The authors of the work plan. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > Creators() const; - void setCreators(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > > Creators() const; + void setCreators(const std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > >& v); /// A description of the purpose of the work schedule. - boost::optional< std::string > Purpose() const; - void setPurpose(boost::optional< std::string > v); + std::optional< std::string > Purpose() const; + void setPurpose(const std::optional< std::string >& v); /// The total duration of the entire work schedule. - boost::optional< std::string > Duration() const; - void setDuration(boost::optional< std::string > v); + std::optional< std::string > Duration() const; + void setDuration(const std::optional< std::string >& v); /// The total time float of the entire work schedule. - boost::optional< std::string > TotalFloat() const; - void setTotalFloat(boost::optional< std::string > v); + std::optional< std::string > TotalFloat() const; + void setTotalFloat(const std::optional< std::string >& v); /// The start time of the schedule. std::string StartTime() const; - void setStartTime(std::string v); + void setStartTime(const std::string& v); /// The finish time of the schedule. - boost::optional< std::string > FinishTime() const; - void setFinishTime(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > FinishTime() const; + void setFinishTime(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcWorkControl (IfcEntityInstanceData&& e); - IfcWorkControl (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_CreationDate, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< std::string > v10_Duration, boost::optional< std::string > v11_TotalFloat, std::string v12_StartTime, boost::optional< std::string > v13_FinishTime); - typedef aggregate_of< IfcWorkControl > list; + // IfcWorkControl (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::string v7_CreationDate, std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > > v8_Creators, std::optional< std::string > v9_Purpose, std::optional< std::string > v10_Duration, std::optional< std::string > v11_TotalFloat, std::string v12_StartTime, std::optional< std::string > v13_FinishTime); }; /// An IfcWorkPlan represents work plans in a construction or a facilities management project. /// @@ -36075,17 +40655,18 @@ public: /// through IfcRelAssignsToControl. /// /// Figure 18 — Work plan relationships -class IFC_PARSE_API IfcWorkPlan : public IfcWorkControl { +class IFC_PARSE_API IfcWorkPlan : public IfcWorkControl { public: + IfcWorkPlan() {} + explicit IfcWorkPlan (const std::weak_ptr& data) : IfcWorkControl(data) {} + /// Identifies the predefined types of a work plan from which /// the type required may be set. - boost::optional< ::Ifc4x3_add2::IfcWorkPlanTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcWorkPlanTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcWorkPlanTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcWorkPlanTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcWorkPlan (IfcEntityInstanceData&& e); - IfcWorkPlan (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_CreationDate, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< std::string > v10_Duration, boost::optional< std::string > v11_TotalFloat, std::string v12_StartTime, boost::optional< std::string > v13_FinishTime, boost::optional< ::Ifc4x3_add2::IfcWorkPlanTypeEnum::Value > v14_PredefinedType); - typedef aggregate_of< IfcWorkPlan > list; + // IfcWorkPlan (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::string v7_CreationDate, std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > > v8_Creators, std::optional< std::string > v9_Purpose, std::optional< std::string > v10_Duration, std::optional< std::string > v11_TotalFloat, std::string v12_StartTime, std::optional< std::string > v13_FinishTime, std::optional< ::Ifc4x3_add2::IfcWorkPlanTypeEnum::Value > v14_PredefinedType); }; /// An IfcWorkSchedule /// represents a task schedule of a work plan, which in turn @@ -36127,17 +40708,18 @@ public: /// task and not the work schedule. /// /// Figure 19 — Work schedule relationships -class IFC_PARSE_API IfcWorkSchedule : public IfcWorkControl { +class IFC_PARSE_API IfcWorkSchedule : public IfcWorkControl { public: + IfcWorkSchedule() {} + explicit IfcWorkSchedule (const std::weak_ptr& data) : IfcWorkControl(data) {} + /// Identifies the predefined types of a work schedule from which /// the type required may be set. - boost::optional< ::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcWorkSchedule (IfcEntityInstanceData&& e); - IfcWorkSchedule (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_CreationDate, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< std::string > v10_Duration, boost::optional< std::string > v11_TotalFloat, std::string v12_StartTime, boost::optional< std::string > v13_FinishTime, boost::optional< ::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Value > v14_PredefinedType); - typedef aggregate_of< IfcWorkSchedule > list; + // IfcWorkSchedule (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::string v7_CreationDate, std::optional< std::vector< ::Ifc4x3_add2::IfcPerson > > v8_Creators, std::optional< std::string > v9_Purpose, std::optional< std::string > v10_Duration, std::optional< std::string > v11_TotalFloat, std::string v12_StartTime, std::optional< std::string > v13_FinishTime, std::optional< ::Ifc4x3_add2::IfcWorkScheduleTypeEnum::Value > v14_PredefinedType); }; /// Definition from IAI: A zone isa group of spaces, /// partial spaces or other zones. Zone structures may not be @@ -36224,20 +40806,21 @@ public: /// Pset_SpaceThermalRequirements: common /// property set for all types of zones to capture the thermal /// requirements -class IFC_PARSE_API IfcZone : public IfcSystem { +class IFC_PARSE_API IfcZone : public IfcSystem { public: + IfcZone() {} + explicit IfcZone (const std::weak_ptr& data) : IfcSystem(data) {} + /// Long name for a zone, used for informal purposes. It should be used, if available, in conjunction with the inherited Name attribute. /// /// NOTE In many scenarios the Name attribute refers to the short name or number of a zone, and the LongName refers to the full name. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< std::string > LongName() const; - void setLongName(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > LongName() const; + void setLongName(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcZone (IfcEntityInstanceData&& e); - IfcZone (std::string v1_GlobalId, ::Ifc4x3_add2::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); - typedef aggregate_of< IfcZone > list; + // IfcZone (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_LongName); }; /// A request is the act or instance of asking for something, such as a request for information, bid submission, or performance of work. /// @@ -36277,13 +40860,16 @@ public: /// /// Approval Use Definition /// Approvals may be associated to indicate the status of acceptance or rejection using the IfcRelAssociatesApproval relationship where RelatingApproval refers to an IfcApproval and RelatedObjects contains the IfcActionRequest. Approvals may be split into sub-approvals using IfcApprovalRelationship to track approval status separately for each party where RelatingApproval refers to the higher-level approval and RelatedApprovals contains one or more lower-level approvals. The hierarchy of approvals implies sequencing such that a higher-level approval is not executed until all of its lower-level approvals have been accepted. -class IFC_PARSE_API IfcActionRequest : public IfcControl { +class IFC_PARSE_API IfcActionRequest : public IfcControl { public: + IfcActionRequest() {} + explicit IfcActionRequest (const std::weak_ptr& data) : IfcControl(data) {} + /// Identifies the predefined type of sources through which a request can be made. /// /// IFC2x4 CHANGE The attribute has been added. - boost::optional< ::Ifc4x3_add2::IfcActionRequestTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcActionRequestTypeEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcActionRequestTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcActionRequestTypeEnum::Value >& v); /// The status currently assigned to the request. Possible values include: /// Hold: wait to see if further requests are received before deciding on action /// NoAction: no action is required on this request @@ -36291,18 +40877,16 @@ public: /// Urgent: take action immediately /// /// IFC2x4 CHANGE The attribute has been added. - boost::optional< std::string > Status() const; - void setStatus(boost::optional< std::string > v); + std::optional< std::string > Status() const; + void setStatus(const std::optional< std::string >& v); /// Detailed description of the permit. /// /// IFC2x4 CHANGE The attribute has been added. - boost::optional< std::string > LongDescription() const; - void setLongDescription(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::string > LongDescription() const; + void setLongDescription(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcActionRequest (IfcEntityInstanceData&& e); - IfcActionRequest (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< ::Ifc4x3_add2::IfcActionRequestTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription); - typedef aggregate_of< IfcActionRequest > list; + // IfcActionRequest (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< ::Ifc4x3_add2::IfcActionRequestTypeEnum::Value > v7_PredefinedType, std::optional< std::string > v8_Status, std::optional< std::string > v9_LongDescription); }; /// The flow controller type IfcAirTerminalBoxType defines commonly shared information for occurrences of air boxes. The set of shared information may include: /// @@ -36330,16 +40914,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcAirTerminalBoxType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcAirTerminalBox for standard port definitions. -class IFC_PARSE_API IfcAirTerminalBoxType : public IfcFlowControllerType { +class IFC_PARSE_API IfcAirTerminalBoxType : public IfcFlowControllerType { public: + IfcAirTerminalBoxType() {} + explicit IfcAirTerminalBoxType (const std::weak_ptr& data) : IfcFlowControllerType(data) {} + /// The air terminal box type. ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAirTerminalBoxType (IfcEntityInstanceData&& e); - IfcAirTerminalBoxType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcAirTerminalBoxType > list; + // IfcAirTerminalBoxType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value v10_PredefinedType); }; /// The flow terminal type IfcAirTerminalType defines commonly shared information for occurrences of air terminals. The set of shared information may include: /// @@ -36367,15 +40952,16 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcAirTerminalType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcAirTerminal for standard port definitions. -class IFC_PARSE_API IfcAirTerminalType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcAirTerminalType : public IfcFlowTerminalType { public: + IfcAirTerminalType() {} + explicit IfcAirTerminalType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAirTerminalType (IfcEntityInstanceData&& e); - IfcAirTerminalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcAirTerminalType > list; + // IfcAirTerminalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value v10_PredefinedType); }; /// The energy conversion device type IfcAirToAirHeatRecoveryType defines commonly shared information for occurrences of air-to-air heat recovery devices. The set of shared information may include: /// @@ -36403,56 +40989,61 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcAirToAirHeatRecoveryType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcAirToAirHeatRecovery for standard port definitions. -class IFC_PARSE_API IfcAirToAirHeatRecoveryType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcAirToAirHeatRecoveryType : public IfcEnergyConversionDeviceType { public: + IfcAirToAirHeatRecoveryType() {} + explicit IfcAirToAirHeatRecoveryType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Defines the type of air to air heat recovery device. ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAirToAirHeatRecoveryType (IfcEntityInstanceData&& e); - IfcAirToAirHeatRecoveryType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcAirToAirHeatRecoveryType > list; + // IfcAirToAirHeatRecoveryType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcAlignmentCant : public IfcLinearElement { +class IFC_PARSE_API IfcAlignmentCant : public IfcLinearElement { public: + IfcAlignmentCant() {} + explicit IfcAlignmentCant (const std::weak_ptr& data) : IfcLinearElement(data) {} + double RailHeadDistance() const; - void setRailHeadDistance(double v); - virtual const IfcParse::entity& declaration() const; + void setRailHeadDistance(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAlignmentCant (IfcEntityInstanceData&& e); - IfcAlignmentCant (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, double v8_RailHeadDistance); - typedef aggregate_of< IfcAlignmentCant > list; + // IfcAlignmentCant (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, double v8_RailHeadDistance); }; -class IFC_PARSE_API IfcAlignmentHorizontal : public IfcLinearElement { +class IFC_PARSE_API IfcAlignmentHorizontal : public IfcLinearElement { public: - virtual const IfcParse::entity& declaration() const; + IfcAlignmentHorizontal() {} + explicit IfcAlignmentHorizontal (const std::weak_ptr& data) : IfcLinearElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAlignmentHorizontal (IfcEntityInstanceData&& e); - IfcAlignmentHorizontal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation); - typedef aggregate_of< IfcAlignmentHorizontal > list; + // IfcAlignmentHorizontal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation); }; -class IFC_PARSE_API IfcAlignmentSegment : public IfcLinearElement { +class IFC_PARSE_API IfcAlignmentSegment : public IfcLinearElement { public: - ::Ifc4x3_add2::IfcAlignmentParameterSegment* DesignParameters() const; - void setDesignParameters(::Ifc4x3_add2::IfcAlignmentParameterSegment* v); - virtual const IfcParse::entity& declaration() const; + IfcAlignmentSegment() {} + explicit IfcAlignmentSegment (const std::weak_ptr& data) : IfcLinearElement(data) {} + + ::Ifc4x3_add2::IfcAlignmentParameterSegment DesignParameters() const; + void setDesignParameters(const ::Ifc4x3_add2::IfcAlignmentParameterSegment& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAlignmentSegment (IfcEntityInstanceData&& e); - IfcAlignmentSegment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcAlignmentParameterSegment* v8_DesignParameters); - typedef aggregate_of< IfcAlignmentSegment > list; + // IfcAlignmentSegment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcAlignmentParameterSegment v8_DesignParameters); }; -class IFC_PARSE_API IfcAlignmentVertical : public IfcLinearElement { +class IFC_PARSE_API IfcAlignmentVertical : public IfcLinearElement { public: - virtual const IfcParse::entity& declaration() const; + IfcAlignmentVertical() {} + explicit IfcAlignmentVertical (const std::weak_ptr& data) : IfcLinearElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAlignmentVertical (IfcEntityInstanceData&& e); - IfcAlignmentVertical (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation); - typedef aggregate_of< IfcAlignmentVertical > list; + // IfcAlignmentVertical (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation); }; /// An asset is a uniquely identifiable grouping of elements acting as a single entity that has a financial value or that can be operated on as a single unit. /// @@ -36478,45 +41069,46 @@ public: /// /// The IfcAsset may have assignments of its own using the IfcRelAssignsToGroup relationship where RelatingGroup refers to the IfcAsset and RelatedObjects contains one or more objects of the following types: /// IfcElement: Physical elements that comprise the asset. -class IFC_PARSE_API IfcAsset : public IfcGroup { +class IFC_PARSE_API IfcAsset : public IfcGroup { public: + IfcAsset() {} + explicit IfcAsset (const std::weak_ptr& data) : IfcGroup(data) {} + /// A unique identification assigned to an asset that enables its differentiation from other assets. /// NOTE: The asset identifier is unique within the asset register. It differs from the globally unique id assigned to the instance of an entity populating a database. - boost::optional< std::string > Identification() const; - void setIdentification(boost::optional< std::string > v); + std::optional< std::string > Identification() const; + void setIdentification(const std::optional< std::string >& v); /// The cost value of the asset at the time of purchase. - ::Ifc4x3_add2::IfcCostValue* OriginalValue() const; - void setOriginalValue(::Ifc4x3_add2::IfcCostValue* v); + ::Ifc4x3_add2::IfcCostValue OriginalValue() const; + void setOriginalValue(const ::Ifc4x3_add2::IfcCostValue& v); /// The current cost value of the asset. - ::Ifc4x3_add2::IfcCostValue* CurrentValue() const; - void setCurrentValue(::Ifc4x3_add2::IfcCostValue* v); + ::Ifc4x3_add2::IfcCostValue CurrentValue() const; + void setCurrentValue(const ::Ifc4x3_add2::IfcCostValue& v); /// The total cost of replacement of the asset. - ::Ifc4x3_add2::IfcCostValue* TotalReplacementCost() const; - void setTotalReplacementCost(::Ifc4x3_add2::IfcCostValue* v); + ::Ifc4x3_add2::IfcCostValue TotalReplacementCost() const; + void setTotalReplacementCost(const ::Ifc4x3_add2::IfcCostValue& v); /// The name of the person or organization that 'owns' the asset. - ::Ifc4x3_add2::IfcActorSelect* Owner() const; - void setOwner(::Ifc4x3_add2::IfcActorSelect* v); + ::Ifc4x3_add2::IfcActorSelect Owner() const; + void setOwner(const ::Ifc4x3_add2::IfcActorSelect& v); /// The name of the person or organization that 'uses' the asset. - ::Ifc4x3_add2::IfcActorSelect* User() const; - void setUser(::Ifc4x3_add2::IfcActorSelect* v); + ::Ifc4x3_add2::IfcActorSelect User() const; + void setUser(const ::Ifc4x3_add2::IfcActorSelect& v); /// The person designated to be responsible for the asset. /// NOTE: In some regulations (for example, UK Health and Safety at Work Act, Electricity at Work Regulations), management of assets must have a person identified as being responsible and to whom regulatory, insurance and other organizations communicate. In places where there is not a legal requirement, the responsible person would be the asset manager but would not have a legal status. - ::Ifc4x3_add2::IfcPerson* ResponsiblePerson() const; - void setResponsiblePerson(::Ifc4x3_add2::IfcPerson* v); + ::Ifc4x3_add2::IfcPerson ResponsiblePerson() const; + void setResponsiblePerson(const ::Ifc4x3_add2::IfcPerson& v); /// The date on which an asset was incorporated into the works, installed, constructed, erected or completed. /// NOTE: This is the date on which an asset is considered to start depreciating. /// /// IFC2x4 CHANGE Type changed from IfcDateTimeSelect. - boost::optional< std::string > IncorporationDate() const; - void setIncorporationDate(boost::optional< std::string > v); + std::optional< std::string > IncorporationDate() const; + void setIncorporationDate(const std::optional< std::string >& v); /// The current value of an asset within the accounting rules and procedures of an organization. - ::Ifc4x3_add2::IfcCostValue* DepreciatedValue() const; - void setDepreciatedValue(::Ifc4x3_add2::IfcCostValue* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcCostValue DepreciatedValue() const; + void setDepreciatedValue(const ::Ifc4x3_add2::IfcCostValue& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAsset (IfcEntityInstanceData&& e); - IfcAsset (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, ::Ifc4x3_add2::IfcCostValue* v7_OriginalValue, ::Ifc4x3_add2::IfcCostValue* v8_CurrentValue, ::Ifc4x3_add2::IfcCostValue* v9_TotalReplacementCost, ::Ifc4x3_add2::IfcActorSelect* v10_Owner, ::Ifc4x3_add2::IfcActorSelect* v11_User, ::Ifc4x3_add2::IfcPerson* v12_ResponsiblePerson, boost::optional< std::string > v13_IncorporationDate, ::Ifc4x3_add2::IfcCostValue* v14_DepreciatedValue); - typedef aggregate_of< IfcAsset > list; + // IfcAsset (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, ::Ifc4x3_add2::IfcCostValue v7_OriginalValue, ::Ifc4x3_add2::IfcCostValue v8_CurrentValue, ::Ifc4x3_add2::IfcCostValue v9_TotalReplacementCost, ::Ifc4x3_add2::IfcActorSelect v10_Owner, ::Ifc4x3_add2::IfcActorSelect v11_User, ::Ifc4x3_add2::IfcPerson v12_ResponsiblePerson, std::optional< std::string > v13_IncorporationDate, ::Ifc4x3_add2::IfcCostValue v14_DepreciatedValue); }; /// The flow terminal type IfcAudioVisualApplianceType defines commonly shared information for occurrences of audio-visual appliances. The set of shared information may include: /// @@ -36560,16 +41152,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcAudioVisualApplianceType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcAudioVisualAppliance for standard port definitions. -class IFC_PARSE_API IfcAudioVisualApplianceType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcAudioVisualApplianceType : public IfcFlowTerminalType { public: + IfcAudioVisualApplianceType() {} + explicit IfcAudioVisualApplianceType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + /// Identifies the predefined types of audio-visual appliance from which the type required may be set. ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAudioVisualApplianceType (IfcEntityInstanceData&& e); - IfcAudioVisualApplianceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcAudioVisualApplianceType > list; + // IfcAudioVisualApplianceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value v10_PredefinedType); }; /// Definition from ISO/CD 10303-42:1992: A B-spline curve is a piecewise parametric polynomial or rational curve described in terms of control points and basis functions. The B-spline curve has been selected as the most stable format to represent all types of polynomial or rational parametric curves. With appropriate attribute values it is capable of representing single span or spline curves of explicit polynomial, rational, Bezier or B-spline type. /// @@ -36620,28 +41213,29 @@ public: /// NOTE  Corresponding ISO 10303 entity: b_spline_curve. Please refer to ISO/IS 10303-42:1994, p. 45 for the final definition of the formal standard. /// /// HISTORY  New entity in Release IFC2x2. -class IFC_PARSE_API IfcBSplineCurve : public IfcBoundedCurve { +class IFC_PARSE_API IfcBSplineCurve : public IfcBoundedCurve { public: + IfcBSplineCurve() {} + explicit IfcBSplineCurve (const std::weak_ptr& data) : IfcBoundedCurve(data) {} + /// The algebraic degree of the basis functions. int Degree() const; - void setDegree(int v); + void setDegree(const int& v); /// The list of control points for the curve. - aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr ControlPointsList() const; - void setControlPointsList(aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v); + std::vector< ::Ifc4x3_add2::IfcCartesianPoint > ControlPointsList() const; + void setControlPointsList(const std::vector< ::Ifc4x3_add2::IfcCartesianPoint >& v); /// Used to identify particular types of curve; it is for information only. ::Ifc4x3_add2::IfcBSplineCurveForm::Value CurveForm() const; - void setCurveForm(::Ifc4x3_add2::IfcBSplineCurveForm::Value v); + void setCurveForm(const ::Ifc4x3_add2::IfcBSplineCurveForm::Value& v); /// Indication of whether the curve is closed; it is for information only. boost::logic::tribool ClosedCurve() const; - void setClosedCurve(boost::logic::tribool v); + void setClosedCurve(const boost::logic::tribool& v); /// Indication whether the curve self-intersects or not; it is for information only. boost::logic::tribool SelfIntersect() const; - void setSelfIntersect(boost::logic::tribool v); - virtual const IfcParse::entity& declaration() const; + void setSelfIntersect(const boost::logic::tribool& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBSplineCurve (IfcEntityInstanceData&& e); - IfcBSplineCurve (int v1_Degree, aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc4x3_add2::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect); - typedef aggregate_of< IfcBSplineCurve > list; + // IfcBSplineCurve (int v1_Degree, std::vector< ::Ifc4x3_add2::IfcCartesianPoint > v2_ControlPointsList, ::Ifc4x3_add2::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect); }; /// Definition from ISO 10303:42:1994: This is the type of b-spline curve for which the knot values are explicitly given. This subtype shall be used to represent non-uniform B-spline curves and may be used for other knot types. /// @@ -36660,22 +41254,23 @@ public: /// NOTE Corresponding ISO 10303 entity: b_spline_curve_with_knots. Please refer to ISO/IS 10303-42:1994, p. 46 for the final definition of the formal standard. /// /// HISTORY New entity in IFC2x4. -class IFC_PARSE_API IfcBSplineCurveWithKnots : public IfcBSplineCurve { +class IFC_PARSE_API IfcBSplineCurveWithKnots : public IfcBSplineCurve { public: + IfcBSplineCurveWithKnots() {} + explicit IfcBSplineCurveWithKnots (const std::weak_ptr& data) : IfcBSplineCurve(data) {} + /// The multiplicities of the knots. This list defines the number of times each knot in the knots list is to be repeated in constructing the knot array. std::vector< int > /*[2:?]*/ KnotMultiplicities() const; - void setKnotMultiplicities(std::vector< int > /*[2:?]*/ v); + void setKnotMultiplicities(const std::vector< int > /*[2:?]*/& v); /// The list of distinct knots used to define the B-spline basis functions. std::vector< double > /*[2:?]*/ Knots() const; - void setKnots(std::vector< double > /*[2:?]*/ v); + void setKnots(const std::vector< double > /*[2:?]*/& v); /// The description of the knot type. This is for information only. ::Ifc4x3_add2::IfcKnotType::Value KnotSpec() const; - void setKnotSpec(::Ifc4x3_add2::IfcKnotType::Value v); - virtual const IfcParse::entity& declaration() const; + void setKnotSpec(const ::Ifc4x3_add2::IfcKnotType::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBSplineCurveWithKnots (IfcEntityInstanceData&& e); - IfcBSplineCurveWithKnots (int v1_Degree, aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc4x3_add2::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect, std::vector< int > /*[2:?]*/ v6_KnotMultiplicities, std::vector< double > /*[2:?]*/ v7_Knots, ::Ifc4x3_add2::IfcKnotType::Value v8_KnotSpec); - typedef aggregate_of< IfcBSplineCurveWithKnots > list; + // IfcBSplineCurveWithKnots (int v1_Degree, std::vector< ::Ifc4x3_add2::IfcCartesianPoint > v2_ControlPointsList, ::Ifc4x3_add2::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect, std::vector< int > /*[2:?]*/ v6_KnotMultiplicities, std::vector< double > /*[2:?]*/ v7_Knots, ::Ifc4x3_add2::IfcKnotType::Value v8_KnotSpec); }; /// Definition from IAI: The element type /// IfcBeamType defines commonly shared information for @@ -36775,27 +41370,29 @@ public: /// IfcShapeRepresentation are restricted in the same way as /// those for IfcBeam and /// IfcBeamStandardCase -class IFC_PARSE_API IfcBeamType : public IfcBuiltElementType { +class IFC_PARSE_API IfcBeamType : public IfcBuiltElementType { public: + IfcBeamType() {} + explicit IfcBeamType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Identifies the predefined types of a beam element from which the type required may be set. ::Ifc4x3_add2::IfcBeamTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcBeamTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcBeamTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBeamType (IfcEntityInstanceData&& e); - IfcBeamType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBeamTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcBeamType > list; + // IfcBeamType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBeamTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcBearingType : public IfcBuiltElementType { +class IFC_PARSE_API IfcBearingType : public IfcBuiltElementType { public: + IfcBearingType() {} + explicit IfcBearingType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + ::Ifc4x3_add2::IfcBearingTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcBearingTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcBearingTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBearingType (IfcEntityInstanceData&& e); - IfcBearingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBearingTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcBearingType > list; + // IfcBearingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBearingTypeEnum::Value v10_PredefinedType); }; /// The energy conversion device type IfcBoilerType defines commonly shared information for occurrences of boilers. The set of shared information may include: /// @@ -36826,16 +41423,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcBoilerType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcBoiler for standard port definitions. -class IFC_PARSE_API IfcBoilerType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcBoilerType : public IfcEnergyConversionDeviceType { public: + IfcBoilerType() {} + explicit IfcBoilerType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Defines types of boilers. ::Ifc4x3_add2::IfcBoilerTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcBoilerTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcBoilerTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBoilerType (IfcEntityInstanceData&& e); - IfcBoilerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBoilerTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcBoilerType > list; + // IfcBoilerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBoilerTypeEnum::Value v10_PredefinedType); }; /// Definition from ISO/CD 10303-42:1992 A boundary curve /// is a type of bounded curve suitable for the definition of a @@ -36844,35 +41442,38 @@ public: /// NOTE Corresponding ISO 10303 entity: boundary_curve. Please refer to ISO/IS 10303-42:1994, p.89 for the final definition of the formal standard. /// /// HISTORY New entity in IFC2x4. -class IFC_PARSE_API IfcBoundaryCurve : public IfcCompositeCurveOnSurface { +class IFC_PARSE_API IfcBoundaryCurve : public IfcCompositeCurveOnSurface { public: - virtual const IfcParse::entity& declaration() const; + IfcBoundaryCurve() {} + explicit IfcBoundaryCurve (const std::weak_ptr& data) : IfcCompositeCurveOnSurface(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBoundaryCurve (IfcEntityInstanceData&& e); - IfcBoundaryCurve (aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect); - typedef aggregate_of< IfcBoundaryCurve > list; + // IfcBoundaryCurve (std::vector< ::Ifc4x3_add2::IfcSegment > v1_Segments, boost::logic::tribool v2_SelfIntersect); }; -class IFC_PARSE_API IfcBridge : public IfcFacility { +class IFC_PARSE_API IfcBridge : public IfcFacility { public: - boost::optional< ::Ifc4x3_add2::IfcBridgeTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBridgeTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcBridge() {} + explicit IfcBridge (const std::weak_ptr& data) : IfcFacility(data) {} + + std::optional< ::Ifc4x3_add2::IfcBridgeTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBridgeTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBridge (IfcEntityInstanceData&& e); - IfcBridge (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< ::Ifc4x3_add2::IfcBridgeTypeEnum::Value > v10_PredefinedType); - typedef aggregate_of< IfcBridge > list; + // IfcBridge (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< ::Ifc4x3_add2::IfcBridgeTypeEnum::Value > v10_PredefinedType); }; -class IFC_PARSE_API IfcBridgePart : public IfcFacilityPart { +class IFC_PARSE_API IfcBridgePart : public IfcFacilityPart { public: - boost::optional< ::Ifc4x3_add2::IfcBridgePartTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBridgePartTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcBridgePart() {} + explicit IfcBridgePart (const std::weak_ptr& data) : IfcFacilityPart(data) {} + + std::optional< ::Ifc4x3_add2::IfcBridgePartTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBridgePartTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBridgePart (IfcEntityInstanceData&& e); - IfcBridgePart (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, boost::optional< ::Ifc4x3_add2::IfcBridgePartTypeEnum::Value > v11_PredefinedType); - typedef aggregate_of< IfcBridgePart > list; + // IfcBridgePart (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_add2::IfcFacilityUsageEnum::Value v10_UsageType, std::optional< ::Ifc4x3_add2::IfcBridgePartTypeEnum::Value > v11_PredefinedType); }; /// Definition from ISO 6707-1:1989: Construction work that /// has the provision of shelter for its occupants or contents as one @@ -37048,22 +41649,23 @@ public: /// building elements, an independent shape representation shall only /// be given, if the building is exposed independently from its /// constituting elements. -class IFC_PARSE_API IfcBuilding : public IfcFacility { +class IFC_PARSE_API IfcBuilding : public IfcFacility { public: + IfcBuilding() {} + explicit IfcBuilding (const std::weak_ptr& data) : IfcFacility(data) {} + /// Elevation above sea level of the reference height used for all storey elevation measures, equals to height 0.0. It is usually the ground floor level. - boost::optional< double > ElevationOfRefHeight() const; - void setElevationOfRefHeight(boost::optional< double > v); + std::optional< double > ElevationOfRefHeight() const; + void setElevationOfRefHeight(const std::optional< double >& v); /// Elevation above the minimal terrain level around the foot print of the building, given in elevation above sea level. - boost::optional< double > ElevationOfTerrain() const; - void setElevationOfTerrain(boost::optional< double > v); + std::optional< double > ElevationOfTerrain() const; + void setElevationOfTerrain(const std::optional< double >& v); /// Address given to the building for postal purposes. - ::Ifc4x3_add2::IfcPostalAddress* BuildingAddress() const; - void setBuildingAddress(::Ifc4x3_add2::IfcPostalAddress* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcPostalAddress BuildingAddress() const; + void setBuildingAddress(const ::Ifc4x3_add2::IfcPostalAddress& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBuilding (IfcEntityInstanceData&& e); - IfcBuilding (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< double > v10_ElevationOfRefHeight, boost::optional< double > v11_ElevationOfTerrain, ::Ifc4x3_add2::IfcPostalAddress* v12_BuildingAddress); - typedef aggregate_of< IfcBuilding > list; + // IfcBuilding (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcElementCompositionEnum::Value > v9_CompositionType, std::optional< double > v10_ElevationOfRefHeight, std::optional< double > v11_ElevationOfTerrain, ::Ifc4x3_add2::IfcPostalAddress v12_BuildingAddress); }; /// Definition from IAI: Layers or major components as subordinate /// parts of a building element. Typical usage examples include precast concrete @@ -37082,31 +41684,33 @@ public: /// Moved from from IfcStructuralElementsDomain schema to /// IfcSharedComponentElements schema, compatible change of supertype, /// attribute PredefinedType added. -class IFC_PARSE_API IfcBuildingElementPart : public IfcElementComponent { +class IFC_PARSE_API IfcBuildingElementPart : public IfcElementComponent { public: + IfcBuildingElementPart() {} + explicit IfcBuildingElementPart (const std::weak_ptr& data) : IfcElementComponent(data) {} + /// Subtype of building element part - boost::optional< ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBuildingElementPart (IfcEntityInstanceData&& e); - IfcBuildingElementPart (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcBuildingElementPart > list; + // IfcBuildingElementPart (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value > v9_PredefinedType); }; /// Definition from IAI: The building element part type defines /// lists of commonly shared property set definitions and representation maps of parts of a building element. /// /// HISTORY New entity in IFC Release 2x4 -class IFC_PARSE_API IfcBuildingElementPartType : public IfcElementComponentType { +class IFC_PARSE_API IfcBuildingElementPartType : public IfcElementComponentType { public: + IfcBuildingElementPartType() {} + explicit IfcBuildingElementPartType (const std::weak_ptr& data) : IfcElementComponentType(data) {} + /// Subtype of building element part ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBuildingElementPartType (IfcEntityInstanceData&& e); - IfcBuildingElementPartType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcBuildingElementPartType > list; + // IfcBuildingElementPartType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBuildingElementPartTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: /// TheIfcBuildingElementProxyType defines a list of @@ -37142,16 +41746,17 @@ public: /// /// HISTORY New entity in /// Release IFC2x Edition 3. -class IFC_PARSE_API IfcBuildingElementProxyType : public IfcBuiltElementType { +class IFC_PARSE_API IfcBuildingElementProxyType : public IfcBuiltElementType { public: + IfcBuildingElementProxyType() {} + explicit IfcBuildingElementProxyType (const std::weak_ptr& data) : IfcBuiltElementType(data) {} + /// Predefined types to define the particular type of an building element proxy. There may be property set definitions available for each predefined or user defined type. ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBuildingElementProxyType (IfcEntityInstanceData&& e); - IfcBuildingElementProxyType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcBuildingElementProxyType > list; + // IfcBuildingElementProxyType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: A building system is a /// group by which building elements are group according to a common @@ -37189,40 +41794,43 @@ public: /// /// Pset_BuildingSystemCommon: common property /// set for building system occurrences -class IFC_PARSE_API IfcBuildingSystem : public IfcSystem { +class IFC_PARSE_API IfcBuildingSystem : public IfcSystem { public: + IfcBuildingSystem() {} + explicit IfcBuildingSystem (const std::weak_ptr& data) : IfcSystem(data) {} + /// Predefined types of distribution systems. - boost::optional< ::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Value > v); - boost::optional< std::string > LongName() const; - void setLongName(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Value >& v); + std::optional< std::string > LongName() const; + void setLongName(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBuildingSystem (IfcEntityInstanceData&& e); - IfcBuildingSystem (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< ::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Value > v6_PredefinedType, boost::optional< std::string > v7_LongName); - typedef aggregate_of< IfcBuildingSystem > list; + // IfcBuildingSystem (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< ::Ifc4x3_add2::IfcBuildingSystemTypeEnum::Value > v6_PredefinedType, std::optional< std::string > v7_LongName); }; -class IFC_PARSE_API IfcBuiltElement : public IfcElement { +class IFC_PARSE_API IfcBuiltElement : public IfcElement { public: - virtual const IfcParse::entity& declaration() const; + IfcBuiltElement() {} + explicit IfcBuiltElement (const std::weak_ptr& data) : IfcElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBuiltElement (IfcEntityInstanceData&& e); - IfcBuiltElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcBuiltElement > list; + // IfcBuiltElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; -class IFC_PARSE_API IfcBuiltSystem : public IfcSystem { +class IFC_PARSE_API IfcBuiltSystem : public IfcSystem { public: - boost::optional< ::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Value > v); - boost::optional< std::string > LongName() const; - void setLongName(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + IfcBuiltSystem() {} + explicit IfcBuiltSystem (const std::weak_ptr& data) : IfcSystem(data) {} + + std::optional< ::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Value >& v); + std::optional< std::string > LongName() const; + void setLongName(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBuiltSystem (IfcEntityInstanceData&& e); - IfcBuiltSystem (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< ::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Value > v6_PredefinedType, boost::optional< std::string > v7_LongName); - typedef aggregate_of< IfcBuiltSystem > list; + // IfcBuiltSystem (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< ::Ifc4x3_add2::IfcBuiltSystemTypeEnum::Value > v6_PredefinedType, std::optional< std::string > v7_LongName); }; /// The energy conversion device type IfcBurnerType defines commonly shared information for occurrences of burners. The set of shared information may include: /// @@ -37251,15 +41859,16 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcBurnerType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcBurner for standard port definitions. -class IFC_PARSE_API IfcBurnerType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcBurnerType : public IfcEnergyConversionDeviceType { public: + IfcBurnerType() {} + explicit IfcBurnerType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + ::Ifc4x3_add2::IfcBurnerTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcBurnerTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcBurnerTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBurnerType (IfcEntityInstanceData&& e); - IfcBurnerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBurnerTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcBurnerType > list; + // IfcBurnerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcBurnerTypeEnum::Value v10_PredefinedType); }; /// The flow fitting type IfcCableCarrierFittingType defines commonly shared information for occurrences of cable carrier fittings. The set of shared information may include: /// @@ -37287,16 +41896,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcCableCarrierFittingType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcCableCarrierFitting for standard port definitions. -class IFC_PARSE_API IfcCableCarrierFittingType : public IfcFlowFittingType { +class IFC_PARSE_API IfcCableCarrierFittingType : public IfcFlowFittingType { public: + IfcCableCarrierFittingType() {} + explicit IfcCableCarrierFittingType (const std::weak_ptr& data) : IfcFlowFittingType(data) {} + /// Identifies the predefined types of cable carrier fitting from which the type required may be set. ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCableCarrierFittingType (IfcEntityInstanceData&& e); - IfcCableCarrierFittingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcCableCarrierFittingType > list; + // IfcCableCarrierFittingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value v10_PredefinedType); }; /// The flow segment type IfcCableCarrierSegmentType defines commonly shared information for occurrences of cable carrier segments. The set of shared information may include: /// @@ -37330,16 +41940,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcCableCarrierSegmentType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcCableCarrierSegment for standard port definitions. -class IFC_PARSE_API IfcCableCarrierSegmentType : public IfcFlowSegmentType { +class IFC_PARSE_API IfcCableCarrierSegmentType : public IfcFlowSegmentType { public: + IfcCableCarrierSegmentType() {} + explicit IfcCableCarrierSegmentType (const std::weak_ptr& data) : IfcFlowSegmentType(data) {} + /// Identifies the predefined types of cable carrier segment from which the type required may be set. ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCableCarrierSegmentType (IfcEntityInstanceData&& e); - IfcCableCarrierSegmentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcCableCarrierSegmentType > list; + // IfcCableCarrierSegmentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value v10_PredefinedType); }; /// The flow fitting type IfcCableFittingType defines commonly shared information for occurrences of cable fittings. The set of shared information may include: /// @@ -37369,16 +41980,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcCableFittingType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcCableFitting for standard port definitions. -class IFC_PARSE_API IfcCableFittingType : public IfcFlowFittingType { +class IFC_PARSE_API IfcCableFittingType : public IfcFlowFittingType { public: + IfcCableFittingType() {} + explicit IfcCableFittingType (const std::weak_ptr& data) : IfcFlowFittingType(data) {} + /// Identifies the predefined types of cable fitting from which the type required may be set. ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcCableFittingTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCableFittingType (IfcEntityInstanceData&& e); - IfcCableFittingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcCableFittingType > list; + // IfcCableFittingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value v10_PredefinedType); }; /// The flow segment type IfcCableSegmentType defines commonly shared information for occurrences of cable segments. The set of shared information may include: /// @@ -37421,27 +42033,29 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcCableSegmentType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcCableSegment for standard port definitions. -class IFC_PARSE_API IfcCableSegmentType : public IfcFlowSegmentType { +class IFC_PARSE_API IfcCableSegmentType : public IfcFlowSegmentType { public: + IfcCableSegmentType() {} + explicit IfcCableSegmentType (const std::weak_ptr& data) : IfcFlowSegmentType(data) {} + /// Identifies the predefined types of cable segment from which the type required may be set. ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCableSegmentType (IfcEntityInstanceData&& e); - IfcCableSegmentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcCableSegmentType > list; + // IfcCableSegmentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcCaissonFoundationType : public IfcDeepFoundationType { +class IFC_PARSE_API IfcCaissonFoundationType : public IfcDeepFoundationType { public: + IfcCaissonFoundationType() {} + explicit IfcCaissonFoundationType (const std::weak_ptr& data) : IfcDeepFoundationType(data) {} + ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCaissonFoundationType (IfcEntityInstanceData&& e); - IfcCaissonFoundationType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcCaissonFoundationType > list; + // IfcCaissonFoundationType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value v10_PredefinedType); }; /// The energy conversion device type IfcChillerType defines commonly shared information for occurrences of chillers. The set of shared information may include: /// @@ -37475,16 +42089,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcChillerType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcChiller for standard port definitions. -class IFC_PARSE_API IfcChillerType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcChillerType : public IfcEnergyConversionDeviceType { public: + IfcChillerType() {} + explicit IfcChillerType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Defines the typical types of chillers (e.g., air-cooled, water-cooled, etc.). ::Ifc4x3_add2::IfcChillerTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcChillerTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcChillerTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcChillerType (IfcEntityInstanceData&& e); - IfcChillerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcChillerTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcChillerType > list; + // IfcChillerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcChillerTypeEnum::Value v10_PredefinedType); }; /// Definition from ISO 6707-1:1989: Construction /// containing one or more flues. Flue: Duct designed to convey the @@ -37527,17 +42142,18 @@ public: /// /// Qto_ChimneyBaseQuantities: base quantities /// for all chimney occurrences. -class IFC_PARSE_API IfcChimney : public IfcBuiltElement { +class IFC_PARSE_API IfcChimney : public IfcBuiltElement { public: + IfcChimney() {} + explicit IfcChimney (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Predefined generic type for a chimney that is specified in an enumeration. There may be a property set given specificly for the predefined types. /// NOTE The PredefinedType shall only be used, if no type object IfcChimneyType is assigned, providing its own IfcChimneyType.PredefinedType. - boost::optional< ::Ifc4x3_add2::IfcChimneyTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcChimneyTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcChimneyTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcChimneyTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcChimney (IfcEntityInstanceData&& e); - IfcChimney (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcChimneyTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcChimney > list; + // IfcChimney (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcChimneyTypeEnum::Value > v9_PredefinedType); }; /// Definition from ISO/CD 10303-42:1992: An IfcCircle is defined by a radius and the location and orientation of the circle. Interpretation of data should be as follows: /// @@ -37566,25 +42182,27 @@ public: /// Figure 278 illustrates the definition of the IfcCircle within the (in this case three-dimensional) position coordinate system. /// /// Figure 278 — Circle geometry -class IFC_PARSE_API IfcCircle : public IfcConic { +class IFC_PARSE_API IfcCircle : public IfcConic { public: + IfcCircle() {} + explicit IfcCircle (const std::weak_ptr& data) : IfcConic(data) {} + /// The radius of the circle, which shall be greater than zero. double Radius() const; - void setRadius(double v); - virtual const IfcParse::entity& declaration() const; + void setRadius(const double& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCircle (IfcEntityInstanceData&& e); - IfcCircle (::Ifc4x3_add2::IfcAxis2Placement* v1_Position, double v2_Radius); - typedef aggregate_of< IfcCircle > list; + // IfcCircle (::Ifc4x3_add2::IfcAxis2Placement v1_Position, double v2_Radius); }; -class IFC_PARSE_API IfcCivilElement : public IfcElement { +class IFC_PARSE_API IfcCivilElement : public IfcElement { public: - virtual const IfcParse::entity& declaration() const; + IfcCivilElement() {} + explicit IfcCivilElement (const std::weak_ptr& data) : IfcElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCivilElement (IfcEntityInstanceData&& e); - IfcCivilElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcCivilElement > list; + // IfcCivilElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// The energy conversion device type IfcCoilType defines commonly shared information for occurrences of coils. The set of shared information may include: /// @@ -37613,16 +42231,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcCoilType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcCoil for standard port definitions. -class IFC_PARSE_API IfcCoilType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcCoilType : public IfcEnergyConversionDeviceType { public: + IfcCoilType() {} + explicit IfcCoilType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Defines typical types of coils (e.g., Cooling, Heating, etc.) ::Ifc4x3_add2::IfcCoilTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcCoilTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcCoilTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCoilType (IfcEntityInstanceData&& e); - IfcCoilType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCoilTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcCoilType > list; + // IfcCoilType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCoilTypeEnum::Value v10_PredefinedType); }; /// Definition from ISO 6707-1:1989: Structural member of /// slender form, usually vertical, that transmits to its base the @@ -37895,19 +42514,20 @@ public: /// geometric representation, shall apply to the /// MappedRepresentation of the /// IfcRepresentationMap. -class IFC_PARSE_API IfcColumn : public IfcBuiltElement { +class IFC_PARSE_API IfcColumn : public IfcBuiltElement { public: + IfcColumn() {} + explicit IfcColumn (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Predefined generic type for a column that is specified in an enumeration. There may be a property set given specificly for the predefined types. /// NOTE The PredefinedType shall only be used, if no type object IfcColumnType is assigned, providing its own IfcColumnType.PredefinedType. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< ::Ifc4x3_add2::IfcColumnTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcColumnTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcColumnTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcColumnTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcColumn (IfcEntityInstanceData&& e); - IfcColumn (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcColumnTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcColumn > list; + // IfcColumn (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcColumnTypeEnum::Value > v9_PredefinedType); }; /// The flow terminal type IfcCommunicationsApplianceType defines commonly shared information for occurrences of communications appliances. The set of shared information may include: /// @@ -37941,16 +42561,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcCommunicationsApplianceType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcCommunicationsAppliance for standard port definitions. -class IFC_PARSE_API IfcCommunicationsApplianceType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcCommunicationsApplianceType : public IfcFlowTerminalType { public: + IfcCommunicationsApplianceType() {} + explicit IfcCommunicationsApplianceType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + /// Identifies the predefined types of communications appliance from which the type required may be set. ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCommunicationsApplianceType (IfcEntityInstanceData&& e); - IfcCommunicationsApplianceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcCommunicationsApplianceType > list; + // IfcCommunicationsApplianceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value v10_PredefinedType); }; /// The flow moving device type IfcCompressorType defines commonly shared information for occurrences of compressors. The set of shared information may include: /// @@ -37979,16 +42600,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcCompressorType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcCompressor for standard port definitions. -class IFC_PARSE_API IfcCompressorType : public IfcFlowMovingDeviceType { +class IFC_PARSE_API IfcCompressorType : public IfcFlowMovingDeviceType { public: + IfcCompressorType() {} + explicit IfcCompressorType (const std::weak_ptr& data) : IfcFlowMovingDeviceType(data) {} + /// Defines the type of compressor (e.g., hermetic, reciprocating, etc.). ::Ifc4x3_add2::IfcCompressorTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcCompressorTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcCompressorTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCompressorType (IfcEntityInstanceData&& e); - IfcCompressorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCompressorTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcCompressorType > list; + // IfcCompressorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCompressorTypeEnum::Value v10_PredefinedType); }; /// The energy conversion device type IfcCondenserType defines commonly shared information for occurrences of condensers. The set of shared information may include: /// @@ -38017,16 +42639,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcCondenserType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcCondenser for standard port definitions. -class IFC_PARSE_API IfcCondenserType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcCondenserType : public IfcEnergyConversionDeviceType { public: + IfcCondenserType() {} + explicit IfcCondenserType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Defines the type of condenser. ::Ifc4x3_add2::IfcCondenserTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcCondenserTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcCondenserTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCondenserType (IfcEntityInstanceData&& e); - IfcCondenserType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCondenserTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcCondenserType > list; + // IfcCondenserType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCondenserTypeEnum::Value v10_PredefinedType); }; /// IfcConstructionEquipmentResource is usage of construction equipment to assist in the performance of construction. Construction Equipment resources are wholly or partially consumed or occupied in the performance of construction. /// @@ -38050,17 +42673,18 @@ public: /// In addition to assignments specified at the base class IfcConstructionResource, a construction equipment resource may have assignments of its own using IfcRelAssignsToResource where RelatingResource refers to the IfcConstructionEquipmentResource and RelatedObjects contains one or more IfcProduct subtypes as shown in Figure 183. Such relationship indicates the equipment used as input for the resource. Such products are not contained within a building structure but are referenced within a construction spatial zone, specifically IfcSpatialZone with PredefinedType=CONSTRUCTION, which is aggregated within the IfcProject. There may be multiple chains of production such that the assigned equipment may have their own task and resource assignments for assembling such equipment. /// /// Figure 183 — Construction equipment resource assignment -class IFC_PARSE_API IfcConstructionEquipmentResource : public IfcConstructionResource { +class IFC_PARSE_API IfcConstructionEquipmentResource : public IfcConstructionResource { public: + IfcConstructionEquipmentResource() {} + explicit IfcConstructionEquipmentResource (const std::weak_ptr& data) : IfcConstructionResource(data) {} + /// Defines types of construction equipment resources. /// IFC2x4 New attribute - boost::optional< ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConstructionEquipmentResource (IfcEntityInstanceData&& e); - IfcConstructionEquipmentResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value > v11_PredefinedType); - typedef aggregate_of< IfcConstructionEquipmentResource > list; + // IfcConstructionEquipmentResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime v8_Usage, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v10_BaseQuantity, std::optional< ::Ifc4x3_add2::IfcConstructionEquipmentResourceTypeEnum::Value > v11_PredefinedType); }; /// IfcConstructionMaterialResource identifies a material resource type in a construction project. /// @@ -38088,17 +42712,18 @@ public: /// In addition to assignments specified at the base class IfcConstructionResource, a construction material resource may have assignments of its own using IfcRelAssignsToResource where RelatingResource refers to the IfcConstructionMaterialResource and RelatedObjects contains one or more IfcProduct subtypes as shown in Figure 184. Such relationship indicates the physical material used as input for the resource. Such products are not contained within a building structure but are referenced within a construction spatial zone, specifically IfcSpatialZone with PredefinedType=CONSTRUCTION, which is aggregated within the IfcProject. The IfcGeographicElement object is used to represent the physical material occurrence, which may optionally have placement and representation indicating intended storage on the construction site. There may be multiple chains of production such that the assigned product material(s) may have their own task and resource assignments for transporting or extracting such material. /// /// Figure 184 — Construction material resource assignment -class IFC_PARSE_API IfcConstructionMaterialResource : public IfcConstructionResource { +class IFC_PARSE_API IfcConstructionMaterialResource : public IfcConstructionResource { public: + IfcConstructionMaterialResource() {} + explicit IfcConstructionMaterialResource (const std::weak_ptr& data) : IfcConstructionResource(data) {} + /// Defines types of construction material resources. /// IFC2x4 New attribute - boost::optional< ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConstructionMaterialResource (IfcEntityInstanceData&& e); - IfcConstructionMaterialResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value > v11_PredefinedType); - typedef aggregate_of< IfcConstructionMaterialResource > list; + // IfcConstructionMaterialResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime v8_Usage, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v10_BaseQuantity, std::optional< ::Ifc4x3_add2::IfcConstructionMaterialResourceTypeEnum::Value > v11_PredefinedType); }; /// IfcConstructionProductResource defines the role of a product that is consumed (wholly or partially), or occupied in the performance of construction. /// @@ -38115,28 +42740,30 @@ public: /// In addition to assignments specified at the base class IfcConstructionResource, a construction product resource may have assignments of its own using IfcRelAssignsToResource where RelatingResource refers to the IfcConstructionProductResource and RelatedObjects contains one or more IfcProduct subtypes as shown in Figure 185. Such relationship indicates the products used as input for the resource. Such products are not contained within a building structure but are referenced within a construction spatial zone, specifically IfcSpatialZone with PredefinedType=CONSTRUCTION, which is aggregated within the IfcProject. There may be multiple chains of production such that the assigned products may have their own task and resource assignments. /// /// Figure 185 — Construction product resource assignment -class IFC_PARSE_API IfcConstructionProductResource : public IfcConstructionResource { +class IFC_PARSE_API IfcConstructionProductResource : public IfcConstructionResource { public: + IfcConstructionProductResource() {} + explicit IfcConstructionProductResource (const std::weak_ptr& data) : IfcConstructionResource(data) {} + /// Defines types of construction product resources. /// IFC2x4 New attribute - boost::optional< ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConstructionProductResource (IfcEntityInstanceData&& e); - IfcConstructionProductResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value > v11_PredefinedType); - typedef aggregate_of< IfcConstructionProductResource > list; + // IfcConstructionProductResource (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_Identification, std::optional< std::string > v7_LongDescription, ::Ifc4x3_add2::IfcResourceTime v8_Usage, std::optional< std::vector< ::Ifc4x3_add2::IfcAppliedValue > > v9_BaseCosts, ::Ifc4x3_add2::IfcPhysicalQuantity v10_BaseQuantity, std::optional< ::Ifc4x3_add2::IfcConstructionProductResourceTypeEnum::Value > v11_PredefinedType); }; -class IFC_PARSE_API IfcConveyorSegmentType : public IfcFlowSegmentType { +class IFC_PARSE_API IfcConveyorSegmentType : public IfcFlowSegmentType { public: + IfcConveyorSegmentType() {} + explicit IfcConveyorSegmentType (const std::weak_ptr& data) : IfcFlowSegmentType(data) {} + ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConveyorSegmentType (IfcEntityInstanceData&& e); - IfcConveyorSegmentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcConveyorSegmentType > list; + // IfcConveyorSegmentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value v10_PredefinedType); }; /// The energy conversion device type IfcCooledBeamType defines commonly shared information for occurrences of cooled beams. The set of shared information may include: /// @@ -38167,16 +42794,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcCooledBeamType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcCooledBeam for standard port definitions. -class IFC_PARSE_API IfcCooledBeamType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcCooledBeamType : public IfcEnergyConversionDeviceType { public: + IfcCooledBeamType() {} + explicit IfcCooledBeamType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Defines the type of cooled beam. ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCooledBeamType (IfcEntityInstanceData&& e); - IfcCooledBeamType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcCooledBeamType > list; + // IfcCooledBeamType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value v10_PredefinedType); }; /// The energy conversion device type IfcCoolingTowerType defines commonly shared information for occurrences of cooling towers. The set of shared information may include: /// @@ -38211,27 +42839,29 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcCoolingTowerType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcCoolingTower for standard port definitions. -class IFC_PARSE_API IfcCoolingTowerType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcCoolingTowerType : public IfcEnergyConversionDeviceType { public: + IfcCoolingTowerType() {} + explicit IfcCoolingTowerType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Defines the typical types of cooling towers (e.g., OpenTower, ClosedTower, CrossFlow, etc.). ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCoolingTowerType (IfcEntityInstanceData&& e); - IfcCoolingTowerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcCoolingTowerType > list; + // IfcCoolingTowerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcCourse : public IfcBuiltElement { +class IFC_PARSE_API IfcCourse : public IfcBuiltElement { public: - boost::optional< ::Ifc4x3_add2::IfcCourseTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCourseTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcCourse() {} + explicit IfcCourse (const std::weak_ptr& data) : IfcBuiltElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcCourseTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCourseTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCourse (IfcEntityInstanceData&& e); - IfcCourse (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCourseTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcCourse > list; + // IfcCourse (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCourseTypeEnum::Value > v9_PredefinedType); }; /// Definition from ISO 6707-1:1989: term used: Finishing - /// final coverings and treatments of surfaces and their @@ -38457,18 +43087,19 @@ public: /// IfcArbitraryClosedProfileDef - in cases of faceted representation also a closed IfcPolyline). It is extruded along the plane of the base surface using the Depth parameter of the IfcSurfaceOfLinearExtrusion. /// /// Figure 95 — Covering body circular -class IFC_PARSE_API IfcCovering : public IfcBuiltElement { +class IFC_PARSE_API IfcCovering : public IfcBuiltElement { public: + IfcCovering() {} + explicit IfcCovering (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Predefined types to define the particular type of the covering. There may be property set definitions available for each predefined type. - boost::optional< ::Ifc4x3_add2::IfcCoveringTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCoveringTypeEnum::Value > v); - aggregate_of< IfcRelCoversSpaces >::ptr CoversSpaces() const; // INVERSE IfcRelCoversSpaces::RelatedCoverings - aggregate_of< IfcRelCoversBldgElements >::ptr CoversElements() const; // INVERSE IfcRelCoversBldgElements::RelatedCoverings - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcCoveringTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCoveringTypeEnum::Value >& v); + std::vector< IfcRelCoversSpaces > CoversSpaces() const; // INVERSE IfcRelCoversSpaces::RelatedCoverings + std::vector< IfcRelCoversBldgElements > CoversElements() const; // INVERSE IfcRelCoversBldgElements::RelatedCoverings + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCovering (IfcEntityInstanceData&& e); - IfcCovering (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCoveringTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcCovering > list; + // IfcCovering (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCoveringTypeEnum::Value > v9_PredefinedType); }; /// Definition from ISO 6707-1:1989: Non load bearing wall /// positioned on the outside of a building and enclosing it. @@ -38608,19 +43239,20 @@ public: /// /// An own 'Body' representation shall only be included if no /// components of the curtain wall are defined. -class IFC_PARSE_API IfcCurtainWall : public IfcBuiltElement { +class IFC_PARSE_API IfcCurtainWall : public IfcBuiltElement { public: + IfcCurtainWall() {} + explicit IfcCurtainWall (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Predefined generic type for a curtain wall that is specified in an enumeration. There may be a property set given specificly for the predefined types. /// NOTE The PredefinedType shall only be used, if no type object IfcCurtainWallType is assigned, providing its own IfcCurtainWallType.PredefinedType. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCurtainWall (IfcEntityInstanceData&& e); - IfcCurtainWall (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcCurtainWall > list; + // IfcCurtainWall (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCurtainWallTypeEnum::Value > v9_PredefinedType); }; /// The flow controller type IfcDamperType defines commonly shared information for occurrences of dampers. The set of shared information may include: /// @@ -38656,25 +43288,27 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcDamperType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcDamper for standard port definitions. -class IFC_PARSE_API IfcDamperType : public IfcFlowControllerType { +class IFC_PARSE_API IfcDamperType : public IfcFlowControllerType { public: + IfcDamperType() {} + explicit IfcDamperType (const std::weak_ptr& data) : IfcFlowControllerType(data) {} + /// Type of damper. ::Ifc4x3_add2::IfcDamperTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcDamperTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcDamperTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDamperType (IfcEntityInstanceData&& e); - IfcDamperType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDamperTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcDamperType > list; + // IfcDamperType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDamperTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcDeepFoundation : public IfcBuiltElement { +class IFC_PARSE_API IfcDeepFoundation : public IfcBuiltElement { public: - virtual const IfcParse::entity& declaration() const; + IfcDeepFoundation() {} + explicit IfcDeepFoundation (const std::weak_ptr& data) : IfcBuiltElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDeepFoundation (IfcEntityInstanceData&& e); - IfcDeepFoundation (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcDeepFoundation > list; + // IfcDeepFoundation (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// Definition from IAI: Representation of different kinds of /// accessories included in or added to elements. @@ -38849,16 +43483,17 @@ public: /// 'Support section' /// A section of material that is used as an intermediate support upon /// which multiple brackets can be mounted. -class IFC_PARSE_API IfcDiscreteAccessory : public IfcElementComponent { +class IFC_PARSE_API IfcDiscreteAccessory : public IfcElementComponent { public: + IfcDiscreteAccessory() {} + explicit IfcDiscreteAccessory (const std::weak_ptr& data) : IfcElementComponent(data) {} + /// Subtype of discrete accessory - boost::optional< ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDiscreteAccessory (IfcEntityInstanceData&& e); - IfcDiscreteAccessory (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcDiscreteAccessory > list; + // IfcDiscreteAccessory (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value > v9_PredefinedType); }; /// Definition from IAI: The element type /// (IfcDiscreteAccessoryType) defines a list of commonly shared property @@ -39048,27 +43683,29 @@ public: /// 'Support section' /// A section of material that is used as an intermediate support upon /// which multiple brackets can be mounted. -class IFC_PARSE_API IfcDiscreteAccessoryType : public IfcElementComponentType { +class IFC_PARSE_API IfcDiscreteAccessoryType : public IfcElementComponentType { public: + IfcDiscreteAccessoryType() {} + explicit IfcDiscreteAccessoryType (const std::weak_ptr& data) : IfcElementComponentType(data) {} + /// Subtype of discrete accessory ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDiscreteAccessoryType (IfcEntityInstanceData&& e); - IfcDiscreteAccessoryType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcDiscreteAccessoryType > list; + // IfcDiscreteAccessoryType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDiscreteAccessoryTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcDistributionBoardType : public IfcFlowControllerType { +class IFC_PARSE_API IfcDistributionBoardType : public IfcFlowControllerType { public: + IfcDistributionBoardType() {} + explicit IfcDistributionBoardType (const std::weak_ptr& data) : IfcFlowControllerType(data) {} + ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDistributionBoardType (IfcEntityInstanceData&& e); - IfcDistributionBoardType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcDistributionBoardType > list; + // IfcDistributionBoardType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value v10_PredefinedType); }; /// The distribution flow element type IfcDistributionChamberElementType defines commonly shared information for occurrences of distribution chamber elements. The set of shared information may include: /// @@ -39107,16 +43744,17 @@ public: /// 'Cover': The material from which the access cover to the chamber is constructed. /// 'Fill': The material that is used to fill the duct (where used). /// 'Wall': The material from which the wall of the duct is constructed. -class IFC_PARSE_API IfcDistributionChamberElementType : public IfcDistributionFlowElementType { +class IFC_PARSE_API IfcDistributionChamberElementType : public IfcDistributionFlowElementType { public: + IfcDistributionChamberElementType() {} + explicit IfcDistributionChamberElementType (const std::weak_ptr& data) : IfcDistributionFlowElementType(data) {} + /// Predefined types of distribution chambers. ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDistributionChamberElementType (IfcEntityInstanceData&& e); - IfcDistributionChamberElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcDistributionChamberElementType > list; + // IfcDistributionChamberElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value v10_PredefinedType); }; /// The element type IfcDistributionControlElementType defines a list of commonly shared property set definitions of an element and an optional set of product representations. It is used to define an element specification (the specific product information that is common to all occurrences of that product type). /// @@ -39172,13 +43810,14 @@ public: /// 'Clearance': Represents the 3D clearance volume of the item having RepresentationType of 'Surface3D'. Such clearance region indicates space that should not intersect with the 'Body' representation between element occurrences, though may intersect with the 'Clearance' representation of other element occurrences. The particular use of clearance space may be for safety, maintenance, or other purpose. /// /// NOTE: The product representations are defined as representation maps (at the level of the supertype IfcTypeProduct, which get assigned by an element occurrence instance through the IfcShapeRepresentation.Item[1] being an IfcMappedItem. -class IFC_PARSE_API IfcDistributionControlElementType : public IfcDistributionElementType { +class IFC_PARSE_API IfcDistributionControlElementType : public IfcDistributionElementType { public: - virtual const IfcParse::entity& declaration() const; + IfcDistributionControlElementType() {} + explicit IfcDistributionControlElementType (const std::weak_ptr& data) : IfcDistributionElementType(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDistributionControlElementType (IfcEntityInstanceData&& e); - IfcDistributionControlElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType); - typedef aggregate_of< IfcDistributionControlElementType > list; + // IfcDistributionControlElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType); }; /// Definition from IAI: Generalization of all elements /// that participate in a distribution system. Typical examples of @@ -39342,14 +43981,15 @@ public: /// /// RepresentationIdentifier : 'Body' /// RepresentationType : 'SectionedSpine' -class IFC_PARSE_API IfcDistributionElement : public IfcElement { +class IFC_PARSE_API IfcDistributionElement : public IfcElement { public: - aggregate_of< IfcRelConnectsPortToElement >::ptr HasPorts() const; // INVERSE IfcRelConnectsPortToElement::RelatedElement - virtual const IfcParse::entity& declaration() const; + IfcDistributionElement() {} + explicit IfcDistributionElement (const std::weak_ptr& data) : IfcElement(data) {} + + std::vector< IfcRelConnectsPortToElement > HasPorts() const; // INVERSE IfcRelConnectsPortToElement::RelatedElement + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDistributionElement (IfcEntityInstanceData&& e); - IfcDistributionElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcDistributionElement > list; + // IfcDistributionElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// The distribution element IfcDistributionFlowElement defines occurrence elements of a distribution system that facilitate the distribution of energy or matter, such as air, water or power. /// @@ -39419,14 +44059,15 @@ public: /// If materials are defined, geometry of each representation (most typically the 'Body' representation) may be organized into shape aspects where styles may be derived by correlating IfcShapeAspect.Name to a corresponding material (IfcMaterialConstituent.Name or IfcMaterialProfile.Name). /// /// Representations are further defined at subtypes; for example, parametric flow segments align material profiles with the 'Axis' representation. -class IFC_PARSE_API IfcDistributionFlowElement : public IfcDistributionElement { +class IFC_PARSE_API IfcDistributionFlowElement : public IfcDistributionElement { public: - aggregate_of< IfcRelFlowControlElements >::ptr HasControlElements() const; // INVERSE IfcRelFlowControlElements::RelatingFlowElement - virtual const IfcParse::entity& declaration() const; + IfcDistributionFlowElement() {} + explicit IfcDistributionFlowElement (const std::weak_ptr& data) : IfcDistributionElement(data) {} + + std::vector< IfcRelFlowControlElements > HasControlElements() const; // INVERSE IfcRelFlowControlElements::RelatingFlowElement + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDistributionFlowElement (IfcEntityInstanceData&& e); - IfcDistributionFlowElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcDistributionFlowElement > list; + // IfcDistributionFlowElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// A distribution port is an inlet or outlet of a product through which a particular substance may flow. /// @@ -39510,21 +44151,22 @@ public: /// IfcShapeRepresentation: The optional shape representation describes the connection volume and supports indication of the port position and orientation. The position is typically the midpoint of the physical connection, and the orientation points in the flow direction normal to the physical connection. Upon connecting elements through ports with rigid connections, each object is aligned such that the effective Location, Axis, and RefDirection of each port is aligned to be equal. /// /// 'Body': The shape of the port. -class IFC_PARSE_API IfcDistributionPort : public IfcPort { +class IFC_PARSE_API IfcDistributionPort : public IfcPort { public: + IfcDistributionPort() {} + explicit IfcDistributionPort (const std::weak_ptr& data) : IfcPort(data) {} + /// Enumeration that identifies if this port is a Sink (inlet), a Source (outlet) or both a SinkAndSource. - boost::optional< ::Ifc4x3_add2::IfcFlowDirectionEnum::Value > FlowDirection() const; - void setFlowDirection(boost::optional< ::Ifc4x3_add2::IfcFlowDirectionEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcFlowDirectionEnum::Value > FlowDirection() const; + void setFlowDirection(const std::optional< ::Ifc4x3_add2::IfcFlowDirectionEnum::Value >& v); /// Enumeration that identifies the system type. If a system type is defined, the port may only be connected to other ports having the same system type. - boost::optional< ::Ifc4x3_add2::IfcDistributionPortTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDistributionPortTypeEnum::Value > v); - boost::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > SystemType() const; - void setSystemType(boost::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcDistributionPortTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDistributionPortTypeEnum::Value >& v); + std::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > SystemType() const; + void setSystemType(const std::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDistributionPort (IfcEntityInstanceData&& e); - IfcDistributionPort (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc4x3_add2::IfcFlowDirectionEnum::Value > v8_FlowDirection, boost::optional< ::Ifc4x3_add2::IfcDistributionPortTypeEnum::Value > v9_PredefinedType, boost::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v10_SystemType); - typedef aggregate_of< IfcDistributionPort > list; + // IfcDistributionPort (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< ::Ifc4x3_add2::IfcFlowDirectionEnum::Value > v8_FlowDirection, std::optional< ::Ifc4x3_add2::IfcDistributionPortTypeEnum::Value > v9_PredefinedType, std::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v10_SystemType); }; /// A distribution system is a network designed to receive, store, maintain, distribute, or control the flow of a distribution media. A common example is a heating hot water system that consists of a pump, a tank, and an interconnected piping system for distributing hot water to terminals. /// @@ -39566,21 +44208,22 @@ public: /// Figure 150 illustrates a distribution system for an electrical circuit. /// /// Figure 150 — Distribution system assignment -class IFC_PARSE_API IfcDistributionSystem : public IfcSystem { +class IFC_PARSE_API IfcDistributionSystem : public IfcSystem { public: + IfcDistributionSystem() {} + explicit IfcDistributionSystem (const std::weak_ptr& data) : IfcSystem(data) {} + /// Long name for a system, used for informal purposes. It should be used, if available, in conjunction with the inherited Name attribute. /// /// NOTE In many scenarios the Name attribute refers to the short name or number of a distribution system or branch circuit, and the LongName refers to a descriptive name. - boost::optional< std::string > LongName() const; - void setLongName(boost::optional< std::string > v); + std::optional< std::string > LongName() const; + void setLongName(const std::optional< std::string >& v); /// Predefined types of distribution systems. - boost::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDistributionSystem (IfcEntityInstanceData&& e); - IfcDistributionSystem (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v7_PredefinedType); - typedef aggregate_of< IfcDistributionSystem > list; + // IfcDistributionSystem (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_LongName, std::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v7_PredefinedType); }; /// Definition from ISO 6707-1:1989: Construction for /// closing an opening, intended primarily for access with hinged, @@ -39938,38 +44581,39 @@ public: /// pictures). /// /// Figure 97 — Door swing -class IFC_PARSE_API IfcDoor : public IfcBuiltElement { +class IFC_PARSE_API IfcDoor : public IfcBuiltElement { public: + IfcDoor() {} + explicit IfcDoor (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Overall measure of the height, it reflects the Z Dimension of a bounding box, enclosing the body of the door opening. If omitted, the OverallHeight should be taken from the geometric representation of the IfcOpening in which the door is inserted. /// /// NOTE  The body of the door might be taller then the door opening (e.g. in cases where the door lining includes a casing). In these cases the OverallHeight shall still be given as the door opening height, and not as the total height of the door lining. - boost::optional< double > OverallHeight() const; - void setOverallHeight(boost::optional< double > v); + std::optional< double > OverallHeight() const; + void setOverallHeight(const std::optional< double >& v); /// Overall measure of the width, it reflects the X Dimension of a bounding box, enclosing the body of the door opening. If omitted, the OverallWidth should be taken from the geometric representation of the IfcOpening in which the door is inserted. /// /// NOTE  The body of the door might be wider then the door opening (e.g. in cases where the door lining includes a casing). In these cases the OverallWidth shall still be given as the door opening width, and not as the total width of the door lining. - boost::optional< double > OverallWidth() const; - void setOverallWidth(boost::optional< double > v); + std::optional< double > OverallWidth() const; + void setOverallWidth(const std::optional< double >& v); /// Predefined generic type for a door that is specified in an enumeration. There may be a property set given specificly for the predefined types. /// NOTE The PredefinedType shall only be used, if no type object IfcDoorType is assigned, providing its own IfcDoorType.PredefinedType. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< ::Ifc4x3_add2::IfcDoorTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDoorTypeEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcDoorTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDoorTypeEnum::Value >& v); /// Type defining the general layout and operation of the door type in terms of the partitioning of panels and panel operations. /// /// NOTE The OperationType shall only be used, if no type object IfcDoorType is assigned, providing its own IfcDoorType.OperationType. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value > OperationType() const; - void setOperationType(boost::optional< ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value > v); - boost::optional< std::string > UserDefinedOperationType() const; - void setUserDefinedOperationType(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value > OperationType() const; + void setOperationType(const std::optional< ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value >& v); + std::optional< std::string > UserDefinedOperationType() const; + void setUserDefinedOperationType(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDoor (IfcEntityInstanceData&& e); - IfcDoor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4x3_add2::IfcDoorTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value > v12_OperationType, boost::optional< std::string > v13_UserDefinedOperationType); - typedef aggregate_of< IfcDoor > list; + // IfcDoor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< double > v9_OverallHeight, std::optional< double > v10_OverallWidth, std::optional< ::Ifc4x3_add2::IfcDoorTypeEnum::Value > v11_PredefinedType, std::optional< ::Ifc4x3_add2::IfcDoorTypeOperationEnum::Value > v12_OperationType, std::optional< std::string > v13_UserDefinedOperationType); }; /// The flow fitting type IfcDuctFittingType defines commonly shared information for occurrences of duct fittings. The set of shared information may include: /// @@ -40000,16 +44644,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcDuctFittingType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcDuctFitting for standard port definitions. -class IFC_PARSE_API IfcDuctFittingType : public IfcFlowFittingType { +class IFC_PARSE_API IfcDuctFittingType : public IfcFlowFittingType { public: + IfcDuctFittingType() {} + explicit IfcDuctFittingType (const std::weak_ptr& data) : IfcFlowFittingType(data) {} + /// The type of duct fitting. ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDuctFittingType (IfcEntityInstanceData&& e); - IfcDuctFittingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcDuctFittingType > list; + // IfcDuctFittingType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value v10_PredefinedType); }; /// The flow segment type IfcDuctSegmentType defines commonly shared information for occurrences of duct segments. The set of shared information may include: /// @@ -40040,16 +44685,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcDuctSegmentType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcDuctSegment for standard port definitions. -class IFC_PARSE_API IfcDuctSegmentType : public IfcFlowSegmentType { +class IFC_PARSE_API IfcDuctSegmentType : public IfcFlowSegmentType { public: + IfcDuctSegmentType() {} + explicit IfcDuctSegmentType (const std::weak_ptr& data) : IfcFlowSegmentType(data) {} + /// The type of duct segment. ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDuctSegmentType (IfcEntityInstanceData&& e); - IfcDuctSegmentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcDuctSegmentType > list; + // IfcDuctSegmentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value v10_PredefinedType); }; /// The flow treatment device type IfcDuctSilencerType defines commonly shared information for occurrences of duct silencers. The set of shared information may include: /// @@ -40077,47 +44723,51 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcDuctSilencerType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcDuctSilencer for standard port definitions. -class IFC_PARSE_API IfcDuctSilencerType : public IfcFlowTreatmentDeviceType { +class IFC_PARSE_API IfcDuctSilencerType : public IfcFlowTreatmentDeviceType { public: + IfcDuctSilencerType() {} + explicit IfcDuctSilencerType (const std::weak_ptr& data) : IfcFlowTreatmentDeviceType(data) {} + /// The type of duct silencer. ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDuctSilencerType (IfcEntityInstanceData&& e); - IfcDuctSilencerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcDuctSilencerType > list; + // IfcDuctSilencerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcEarthworksCut : public IfcFeatureElementSubtraction { +class IFC_PARSE_API IfcEarthworksCut : public IfcFeatureElementSubtraction { public: - boost::optional< ::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcEarthworksCut() {} + explicit IfcEarthworksCut (const std::weak_ptr& data) : IfcFeatureElementSubtraction(data) {} + + std::optional< ::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEarthworksCut (IfcEntityInstanceData&& e); - IfcEarthworksCut (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcEarthworksCut > list; + // IfcEarthworksCut (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcEarthworksCutTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcEarthworksElement : public IfcBuiltElement { +class IFC_PARSE_API IfcEarthworksElement : public IfcBuiltElement { public: - virtual const IfcParse::entity& declaration() const; + IfcEarthworksElement() {} + explicit IfcEarthworksElement (const std::weak_ptr& data) : IfcBuiltElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEarthworksElement (IfcEntityInstanceData&& e); - IfcEarthworksElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcEarthworksElement > list; + // IfcEarthworksElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; -class IFC_PARSE_API IfcEarthworksFill : public IfcEarthworksElement { +class IFC_PARSE_API IfcEarthworksFill : public IfcEarthworksElement { public: - boost::optional< ::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcEarthworksFill() {} + explicit IfcEarthworksFill (const std::weak_ptr& data) : IfcEarthworksElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEarthworksFill (IfcEntityInstanceData&& e); - IfcEarthworksFill (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcEarthworksFill > list; + // IfcEarthworksFill (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcEarthworksFillTypeEnum::Value > v9_PredefinedType); }; /// The flow terminal type IfcElectricApplianceType defines commonly shared information for occurrences of electric appliances. The set of shared information may include: /// @@ -40148,16 +44798,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcElectricApplianceType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcElectricAppliance for standard port definitions. -class IFC_PARSE_API IfcElectricApplianceType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcElectricApplianceType : public IfcFlowTerminalType { public: + IfcElectricApplianceType() {} + explicit IfcElectricApplianceType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + /// Identifies the predefined types of electrical appliance from which the type required may be set. ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElectricApplianceType (IfcEntityInstanceData&& e); - IfcElectricApplianceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcElectricApplianceType > list; + // IfcElectricApplianceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value v10_PredefinedType); }; /// The flow controller type IfcElectricDistributionBoardType defines commonly shared information for occurrences of distribution boards. The set of shared information may include: /// @@ -40186,16 +44837,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcElectricDistributionBoardType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcElectricDistributionBoard for standard port definitions. -class IFC_PARSE_API IfcElectricDistributionBoardType : public IfcFlowControllerType { +class IFC_PARSE_API IfcElectricDistributionBoardType : public IfcFlowControllerType { public: + IfcElectricDistributionBoardType() {} + explicit IfcElectricDistributionBoardType (const std::weak_ptr& data) : IfcFlowControllerType(data) {} + /// Identifies the predefined types of electric distribution type from which the type required may be set. ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElectricDistributionBoardType (IfcEntityInstanceData&& e); - IfcElectricDistributionBoardType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcElectricDistributionBoardType > list; + // IfcElectricDistributionBoardType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value v10_PredefinedType); }; /// The flow storage device type IfcElectricFlowStorageDeviceType defines commonly shared information for occurrences of electric flow storage devices. The set of shared information may include: /// @@ -40224,27 +44876,29 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcElectricFlowStorageDeviceType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcElectricFlowStorageDevice for standard port definitions. -class IFC_PARSE_API IfcElectricFlowStorageDeviceType : public IfcFlowStorageDeviceType { +class IFC_PARSE_API IfcElectricFlowStorageDeviceType : public IfcFlowStorageDeviceType { public: + IfcElectricFlowStorageDeviceType() {} + explicit IfcElectricFlowStorageDeviceType (const std::weak_ptr& data) : IfcFlowStorageDeviceType(data) {} + /// Identifies the predefined types of electric flow storage devices from which the type required may be set. ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElectricFlowStorageDeviceType (IfcEntityInstanceData&& e); - IfcElectricFlowStorageDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcElectricFlowStorageDeviceType > list; + // IfcElectricFlowStorageDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcElectricFlowTreatmentDeviceType : public IfcFlowTreatmentDeviceType { +class IFC_PARSE_API IfcElectricFlowTreatmentDeviceType : public IfcFlowTreatmentDeviceType { public: + IfcElectricFlowTreatmentDeviceType() {} + explicit IfcElectricFlowTreatmentDeviceType (const std::weak_ptr& data) : IfcFlowTreatmentDeviceType(data) {} + ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElectricFlowTreatmentDeviceType (IfcEntityInstanceData&& e); - IfcElectricFlowTreatmentDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcElectricFlowTreatmentDeviceType > list; + // IfcElectricFlowTreatmentDeviceType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value v10_PredefinedType); }; /// The energy conversion device type IfcElectricGeneratorType defines commonly shared information for occurrences of electric generators. The set of shared information may include: /// @@ -40278,16 +44932,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcElectricGeneratorType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcElectricGenerator for standard port definitions. -class IFC_PARSE_API IfcElectricGeneratorType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcElectricGeneratorType : public IfcEnergyConversionDeviceType { public: + IfcElectricGeneratorType() {} + explicit IfcElectricGeneratorType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Identifies the predefined types of electric generators from which the type required may be set. ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElectricGeneratorType (IfcEntityInstanceData&& e); - IfcElectricGeneratorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcElectricGeneratorType > list; + // IfcElectricGeneratorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value v10_PredefinedType); }; /// The energy conversion device type IfcElectricMotorType defines commonly shared information for occurrences of electric motors. The set of shared information may include: /// @@ -40316,16 +44971,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcElectricMotorType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcElectricMotor for standard port definitions. -class IFC_PARSE_API IfcElectricMotorType : public IfcEnergyConversionDeviceType { +class IFC_PARSE_API IfcElectricMotorType : public IfcEnergyConversionDeviceType { public: + IfcElectricMotorType() {} + explicit IfcElectricMotorType (const std::weak_ptr& data) : IfcEnergyConversionDeviceType(data) {} + /// Identifies the predefined types of electric motor from which the type required may be set. ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElectricMotorType (IfcEntityInstanceData&& e); - IfcElectricMotorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcElectricMotorType > list; + // IfcElectricMotorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value v10_PredefinedType); }; /// The flow controller type IfcElectricTimeControlType defines commonly shared information for occurrences of electric time controls. The set of shared information may include: /// @@ -40354,16 +45010,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcElectricTimeControlType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcElectricTimeControl for standard port definitions. -class IFC_PARSE_API IfcElectricTimeControlType : public IfcFlowControllerType { +class IFC_PARSE_API IfcElectricTimeControlType : public IfcFlowControllerType { public: + IfcElectricTimeControlType() {} + explicit IfcElectricTimeControlType (const std::weak_ptr& data) : IfcFlowControllerType(data) {} + /// Identifies the predefined types of electrical time control from which the type required may be set. ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElectricTimeControlType (IfcEntityInstanceData&& e); - IfcElectricTimeControlType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcElectricTimeControlType > list; + // IfcElectricTimeControlType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value v10_PredefinedType); }; /// The distribution flow element IfcEnergyConversionDevice defines /// the occurrence of a device used to perform @@ -40374,13 +45031,14 @@ public: /// HISTORY: New entity in IFC R2.0. /// /// IFC 2x4 NOTE: This entity has been deprecated for instantiation and will become ABSTRACT in a future release; new subtypes should now be used instead. -class IFC_PARSE_API IfcEnergyConversionDevice : public IfcDistributionFlowElement { +class IFC_PARSE_API IfcEnergyConversionDevice : public IfcDistributionFlowElement { public: - virtual const IfcParse::entity& declaration() const; + IfcEnergyConversionDevice() {} + explicit IfcEnergyConversionDevice (const std::weak_ptr& data) : IfcDistributionFlowElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEnergyConversionDevice (IfcEntityInstanceData&& e); - IfcEnergyConversionDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcEnergyConversionDevice > list; + // IfcEnergyConversionDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// An engine is a device that converts fuel into mechanical energy through combustion. /// @@ -40423,15 +45081,16 @@ public: /// /// Fuel (GAS, SINK): The fuel inlet. /// Drive (NOTDEFINED, SOURCE): Connection to the driven source. -class IFC_PARSE_API IfcEngine : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcEngine : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcEngineTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcEngineTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcEngine() {} + explicit IfcEngine (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcEngineTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcEngineTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEngine (IfcEntityInstanceData&& e); - IfcEngine (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcEngineTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcEngine > list; + // IfcEngine (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcEngineTypeEnum::Value > v9_PredefinedType); }; /// An evaporative cooler is a device that cools air by saturating it with water vapor. /// @@ -40477,15 +45136,16 @@ public: /// WaterIn (DOMESTICCOLDWATER, SINK): Incoming water. /// AirIn (AIRCONDITIONING, SINK): Incoming air. /// AirOut (AIRCONDITIONING, SOURCE): Outgoing air saturated with vapor. -class IFC_PARSE_API IfcEvaporativeCooler : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcEvaporativeCooler : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcEvaporativeCooler() {} + explicit IfcEvaporativeCooler (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEvaporativeCooler (IfcEntityInstanceData&& e); - IfcEvaporativeCooler (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcEvaporativeCooler > list; + // IfcEvaporativeCooler (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcEvaporativeCoolerTypeEnum::Value > v9_PredefinedType); }; /// An evaporator is a device in which a liquid refrigerent is vaporized and absorbs heat from the surrounding fluid. /// @@ -40551,15 +45211,16 @@ public: /// /// Figure 223 illustrates evaporator port use. /// Figure 223 — Evaporator port use -class IFC_PARSE_API IfcEvaporator : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcEvaporator : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcEvaporator() {} + explicit IfcEvaporator (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcEvaporator (IfcEntityInstanceData&& e); - IfcEvaporator (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcEvaporator > list; + // IfcEvaporator (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcEvaporatorTypeEnum::Value > v9_PredefinedType); }; /// Definition from IAI: The external spatial element /// defines external regions at the building site. Those regions can @@ -40576,17 +45237,18 @@ public: /// /// HISTORY New entity in /// IFC2x4. -class IFC_PARSE_API IfcExternalSpatialElement : public IfcExternalSpatialStructureElement, public IfcSpaceBoundarySelect { +class IFC_PARSE_API IfcExternalSpatialElement : public IfcExternalSpatialStructureElement { public: + IfcExternalSpatialElement() {} + explicit IfcExternalSpatialElement (const std::weak_ptr& data) : IfcExternalSpatialStructureElement(data) {} + /// Predefined generic types for an external spatial element that are specified in an enumeration. There might be property sets defined specifically for each predefined type. - boost::optional< ::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Value > v); - aggregate_of< IfcRelSpaceBoundary >::ptr BoundedBy() const; // INVERSE IfcRelSpaceBoundary::RelatingSpace - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Value >& v); + std::vector< IfcRelSpaceBoundary > BoundedBy() const; // INVERSE IfcRelSpaceBoundary::RelatingSpace + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcExternalSpatialElement (IfcEntityInstanceData&& e); - IfcExternalSpatialElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcExternalSpatialElement > list; + // IfcExternalSpatialElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_LongName, std::optional< ::Ifc4x3_add2::IfcExternalSpatialElementTypeEnum::Value > v9_PredefinedType); }; /// The flow moving device type IfcFanType defines commonly shared information for occurrences of fans. The set of shared information may include: /// @@ -40616,16 +45278,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcFanType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcFan for standard port definitions. -class IFC_PARSE_API IfcFanType : public IfcFlowMovingDeviceType { +class IFC_PARSE_API IfcFanType : public IfcFlowMovingDeviceType { public: + IfcFanType() {} + explicit IfcFanType (const std::weak_ptr& data) : IfcFlowMovingDeviceType(data) {} + /// Defines the type of fan typically used in building services. ::Ifc4x3_add2::IfcFanTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcFanTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcFanTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFanType (IfcEntityInstanceData&& e); - IfcFanType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFanTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcFanType > list; + // IfcFanType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFanTypeEnum::Value v10_PredefinedType); }; /// The flow treatment device type IfcFilterType defines commonly shared information for occurrences of filters. The set of shared information may include: /// @@ -40656,16 +45319,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcFilterType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcFilter for standard port definitions. -class IFC_PARSE_API IfcFilterType : public IfcFlowTreatmentDeviceType { +class IFC_PARSE_API IfcFilterType : public IfcFlowTreatmentDeviceType { public: + IfcFilterType() {} + explicit IfcFilterType (const std::weak_ptr& data) : IfcFlowTreatmentDeviceType(data) {} + /// The type of air filter. ::Ifc4x3_add2::IfcFilterTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcFilterTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcFilterTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFilterType (IfcEntityInstanceData&& e); - IfcFilterType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFilterTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcFilterType > list; + // IfcFilterType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFilterTypeEnum::Value v10_PredefinedType); }; /// The flow terminal type IfcFireSuppressionTerminalType defines commonly shared information for occurrences of fire suppression terminals. The set of shared information may include: /// @@ -40700,16 +45364,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcFireSuppressionTerminalType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcFireSuppressionTerminal for standard port definitions. -class IFC_PARSE_API IfcFireSuppressionTerminalType : public IfcFlowTerminalType { +class IFC_PARSE_API IfcFireSuppressionTerminalType : public IfcFlowTerminalType { public: + IfcFireSuppressionTerminalType() {} + explicit IfcFireSuppressionTerminalType (const std::weak_ptr& data) : IfcFlowTerminalType(data) {} + /// Identifies the predefined types of fire suppression terminal from which the type required may be set. ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFireSuppressionTerminalType (IfcEntityInstanceData&& e); - IfcFireSuppressionTerminalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcFireSuppressionTerminalType > list; + // IfcFireSuppressionTerminalType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value v10_PredefinedType); }; /// The distribution flow element IfcFlowController defines /// the occurrence of elements of a distribution system that @@ -40720,26 +45385,28 @@ public: /// HISTORY: New entity in IFC R2.0. /// /// IFC 2x4 NOTE: This entity has been deprecated for instantiation and will become ABSTRACT in a future release; new subtypes should now be used instead. -class IFC_PARSE_API IfcFlowController : public IfcDistributionFlowElement { +class IFC_PARSE_API IfcFlowController : public IfcDistributionFlowElement { public: - virtual const IfcParse::entity& declaration() const; + IfcFlowController() {} + explicit IfcFlowController (const std::weak_ptr& data) : IfcDistributionFlowElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowController (IfcEntityInstanceData&& e); - IfcFlowController (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcFlowController > list; + // IfcFlowController (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// The distribution flow element IfcFlowFitting defines the occurrence of a junction or transition in a flow distribution system, such as an elbow or tee. Its type is defined by IfcFlowFittingType or its subtypes. /// /// HISTORY: New entity in IFC R2.0. /// /// IFC 2x4 NOTE: This entity has been deprecated for instantiation and will become ABSTRACT in a future release; new subtypes should now be used instead. -class IFC_PARSE_API IfcFlowFitting : public IfcDistributionFlowElement { +class IFC_PARSE_API IfcFlowFitting : public IfcDistributionFlowElement { public: - virtual const IfcParse::entity& declaration() const; + IfcFlowFitting() {} + explicit IfcFlowFitting (const std::weak_ptr& data) : IfcDistributionFlowElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowFitting (IfcEntityInstanceData&& e); - IfcFlowFitting (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcFlowFitting > list; + // IfcFlowFitting (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// The distribution control element type IfcFlowInstrumentType defines commonly shared information for occurrences of flow instruments. The set of shared information may include: /// @@ -40771,16 +45438,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcFlowInstrumentType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcFlowInstrument for standard port definitions. -class IFC_PARSE_API IfcFlowInstrumentType : public IfcDistributionControlElementType { +class IFC_PARSE_API IfcFlowInstrumentType : public IfcDistributionControlElementType { public: + IfcFlowInstrumentType() {} + explicit IfcFlowInstrumentType (const std::weak_ptr& data) : IfcDistributionControlElementType(data) {} + /// Identifies the predefined types of flow instrument from which the type required may be set. ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowInstrumentType (IfcEntityInstanceData&& e); - IfcFlowInstrumentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcFlowInstrumentType > list; + // IfcFlowInstrumentType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value v10_PredefinedType); }; /// A flow meter is a device that is used to measure the flow rate in a system. /// @@ -40862,28 +45530,30 @@ public: /// /// Figure 226 illustrates flow meter port use. /// Figure 226 — Flow meter port use -class IFC_PARSE_API IfcFlowMeter : public IfcFlowController { +class IFC_PARSE_API IfcFlowMeter : public IfcFlowController { public: - boost::optional< ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcFlowMeter() {} + explicit IfcFlowMeter (const std::weak_ptr& data) : IfcFlowController(data) {} + + std::optional< ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowMeter (IfcEntityInstanceData&& e); - IfcFlowMeter (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcFlowMeter > list; + // IfcFlowMeter (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFlowMeterTypeEnum::Value > v9_PredefinedType); }; /// The distribution flow element IfcFlowMovingDevice defines the occurrence of an apparatus used to distribute, circulate or perform conveyance of fluids, including liquids and gases (such as a pump or fan), and typically participates in a flow distribution system. Its type is defined by IfcFlowMovingDeviceType or its subtypes. /// /// HISTORY: New entity in IFC R2x. /// /// IFC 2x4 NOTE: This entity has been deprecated for instantiation and will become ABSTRACT in a future release; new subtypes should now be used instead. -class IFC_PARSE_API IfcFlowMovingDevice : public IfcDistributionFlowElement { +class IFC_PARSE_API IfcFlowMovingDevice : public IfcDistributionFlowElement { public: - virtual const IfcParse::entity& declaration() const; + IfcFlowMovingDevice() {} + explicit IfcFlowMovingDevice (const std::weak_ptr& data) : IfcDistributionFlowElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowMovingDevice (IfcEntityInstanceData&& e); - IfcFlowMovingDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcFlowMovingDevice > list; + // IfcFlowMovingDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// The distribution flow element IfcFlowSegment defines the occurrence of a segment of a flow distribution system. /// @@ -40908,13 +45578,14 @@ public: /// Representation Use Definition /// /// Standard representations are defined at the supertype IfcDistrubutionFlowElement. For parametric flow segments where IfcMaterialProfileSetUsage is defined and an 'Axis' representation is defined, then the 'Body' representation may be generated using the 'SweptSolid' or 'AdvancedSweptSolid' representation types by sweeping the profile(s) along the axis. -class IFC_PARSE_API IfcFlowSegment : public IfcDistributionFlowElement { +class IFC_PARSE_API IfcFlowSegment : public IfcDistributionFlowElement { public: - virtual const IfcParse::entity& declaration() const; + IfcFlowSegment() {} + explicit IfcFlowSegment (const std::weak_ptr& data) : IfcDistributionFlowElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowSegment (IfcEntityInstanceData&& e); - IfcFlowSegment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcFlowSegment > list; + // IfcFlowSegment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// The distribution flow element IfcFlowStorageDevice defines /// the occurrence of a device that participates in a distribution @@ -40925,13 +45596,14 @@ public: /// HISTORY: New entity in IFC R2x. /// /// IFC 2x4 NOTE: This entity has been deprecated for instantiation and will become ABSTRACT in a future release; new subtypes should now be used instead. -class IFC_PARSE_API IfcFlowStorageDevice : public IfcDistributionFlowElement { +class IFC_PARSE_API IfcFlowStorageDevice : public IfcDistributionFlowElement { public: - virtual const IfcParse::entity& declaration() const; + IfcFlowStorageDevice() {} + explicit IfcFlowStorageDevice (const std::weak_ptr& data) : IfcDistributionFlowElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowStorageDevice (IfcEntityInstanceData&& e); - IfcFlowStorageDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcFlowStorageDevice > list; + // IfcFlowStorageDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// The distribution flow element IfcFlowTerminal defines the /// occurrence of a permanently attached element that acts as a terminus or @@ -40944,26 +45616,28 @@ public: /// HISTORY: New entity in IFC R2.0. /// /// IFC 2x4 NOTE: This entity has been deprecated for instantiation and will become ABSTRACT in a future release; new subtypes should now be used instead. -class IFC_PARSE_API IfcFlowTerminal : public IfcDistributionFlowElement { +class IFC_PARSE_API IfcFlowTerminal : public IfcDistributionFlowElement { public: - virtual const IfcParse::entity& declaration() const; + IfcFlowTerminal() {} + explicit IfcFlowTerminal (const std::weak_ptr& data) : IfcDistributionFlowElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowTerminal (IfcEntityInstanceData&& e); - IfcFlowTerminal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcFlowTerminal > list; + // IfcFlowTerminal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// The distribution flow element IfcFlowTreatmentDevice defines the occurrence of a device typically used to remove unwanted matter from a fluid, either liquid or gas, and typically participates in a flow distribution system. Its type is defined by IfcFlowTreatmentDeviceType or its subtypes. /// /// HISTORY: New entity in IFC R2x. /// /// IFC 2x4 NOTE: This entity has been deprecated for instantiation and will become ABSTRACT in a future release; new subtypes should now be used instead. -class IFC_PARSE_API IfcFlowTreatmentDevice : public IfcDistributionFlowElement { +class IFC_PARSE_API IfcFlowTreatmentDevice : public IfcDistributionFlowElement { public: - virtual const IfcParse::entity& declaration() const; + IfcFlowTreatmentDevice() {} + explicit IfcFlowTreatmentDevice (const std::weak_ptr& data) : IfcDistributionFlowElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowTreatmentDevice (IfcEntityInstanceData&& e); - IfcFlowTreatmentDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcFlowTreatmentDevice > list; + // IfcFlowTreatmentDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// A footing is a part of the foundation of a structure that spreads and transmits the load to the soil, either directly or via piles. /// @@ -40987,27 +45661,29 @@ public: /// Geometry Use Definition /// /// Local placement and product representations are defined by the supertype IfcBuildingElement. Standard representations as defined at IfcBeamStandardCase or IfcSlabStandardCase should be used when applicable. -class IFC_PARSE_API IfcFooting : public IfcBuiltElement { +class IFC_PARSE_API IfcFooting : public IfcBuiltElement { public: + IfcFooting() {} + explicit IfcFooting (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// The generic type of the footing. /// /// IFC 2x4 change:  Attribute made optional. Type information can be provided by IfcRelDefinesByType and IfcFootingType. - boost::optional< ::Ifc4x3_add2::IfcFootingTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFootingTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcFootingTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFootingTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFooting (IfcEntityInstanceData&& e); - IfcFooting (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFootingTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcFooting > list; + // IfcFooting (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFootingTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcGeotechnicalAssembly : public IfcGeotechnicalElement { +class IFC_PARSE_API IfcGeotechnicalAssembly : public IfcGeotechnicalElement { public: - virtual const IfcParse::entity& declaration() const; + IfcGeotechnicalAssembly() {} + explicit IfcGeotechnicalAssembly (const std::weak_ptr& data) : IfcGeotechnicalElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcGeotechnicalAssembly (IfcEntityInstanceData&& e); - IfcGeotechnicalAssembly (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcGeotechnicalAssembly > list; + // IfcGeotechnicalAssembly (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// IfcGrid ia a planar design /// grid defined in 3D space used as an aid in locating structural and @@ -41105,24 +45781,25 @@ public: /// As shown in Figure 33, the attributes UAxes and VAxes define lists of IfcGridAxis within the context of the grid. Each instance of IfcGridAxis refers to the same instance of IfcCurve (here the subtype IfcPolyline) that is contained within the IfcGeometricCurveSet that represents the IfcGrid. /// /// Figure 33 — Grid representation -class IFC_PARSE_API IfcGrid : public IfcPositioningElement { +class IFC_PARSE_API IfcGrid : public IfcPositioningElement { public: + IfcGrid() {} + explicit IfcGrid (const std::weak_ptr& data) : IfcPositioningElement(data) {} + /// List of grid axes defining the first row of grid lines. - aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr UAxes() const; - void setUAxes(aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr v); + std::vector< ::Ifc4x3_add2::IfcGridAxis > UAxes() const; + void setUAxes(const std::vector< ::Ifc4x3_add2::IfcGridAxis >& v); /// List of grid axes defining the second row of grid lines. - aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr VAxes() const; - void setVAxes(aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr v); + std::vector< ::Ifc4x3_add2::IfcGridAxis > VAxes() const; + void setVAxes(const std::vector< ::Ifc4x3_add2::IfcGridAxis >& v); /// List of grid axes defining the third row of grid lines. It may be given in the case of a triangular grid. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr > WAxes() const; - void setWAxes(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr > v); - boost::optional< ::Ifc4x3_add2::IfcGridTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcGridTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< ::Ifc4x3_add2::IfcGridAxis > > WAxes() const; + void setWAxes(const std::optional< std::vector< ::Ifc4x3_add2::IfcGridAxis > >& v); + std::optional< ::Ifc4x3_add2::IfcGridTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcGridTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcGrid (IfcEntityInstanceData&& e); - IfcGrid (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr v8_UAxes, aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr v9_VAxes, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcGridAxis >::ptr > v10_WAxes, boost::optional< ::Ifc4x3_add2::IfcGridTypeEnum::Value > v11_PredefinedType); - typedef aggregate_of< IfcGrid > list; + // IfcGrid (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::vector< ::Ifc4x3_add2::IfcGridAxis > v8_UAxes, std::vector< ::Ifc4x3_add2::IfcGridAxis > v9_VAxes, std::optional< std::vector< ::Ifc4x3_add2::IfcGridAxis > > v10_WAxes, std::optional< ::Ifc4x3_add2::IfcGridTypeEnum::Value > v11_PredefinedType); }; /// A heat exchanger is a device used to provide heat transfer between non-mixing media such as plate and shell and tube heat exchangers. /// IfcHeatExchanger is commonly used on water-side distribution systems to recover energy from a liquid to another liquid (typically water-based), whereas IfcAirToAirHeatRecovery is commonly used on air-side distribution systems to recover energy from a gas to a gas (usually air). @@ -41174,15 +45851,16 @@ public: /// HeatingOutlet (NOTDEFINED, SOURCE): Outlet of substance to be heated. /// CoolingInlet (NOTDEFINED, SINK): Inlet of substance to be cooled. /// CoolingOutlet (NOTDEFINED, SOURCE): Outlet of substance to be cooled. -class IFC_PARSE_API IfcHeatExchanger : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcHeatExchanger : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcHeatExchanger() {} + explicit IfcHeatExchanger (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcHeatExchanger (IfcEntityInstanceData&& e); - IfcHeatExchanger (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcHeatExchanger > list; + // IfcHeatExchanger (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcHeatExchangerTypeEnum::Value > v9_PredefinedType); }; /// A humidifier is a device that adds moisture into the air. /// @@ -41227,15 +45905,16 @@ public: /// WaterIn (DOMESTICCOLDWATER, SINK): Incoming water. /// AirIn (AIRCONDITIONING, SINK): Incoming air. /// AirOut (AIRCONDITIONING, SOURCE): Outgoing air saturated with vapor. -class IFC_PARSE_API IfcHumidifier : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcHumidifier : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcHumidifier() {} + explicit IfcHumidifier (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcHumidifier (IfcEntityInstanceData&& e); - IfcHumidifier (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcHumidifier > list; + // IfcHumidifier (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcHumidifierTypeEnum::Value > v9_PredefinedType); }; /// An interceptor is a device designed and installed in order to separate and retain deleterious, hazardous or undesirable matter while permitting normal sewage or liquids to discharge into a collection system by gravity. /// @@ -41294,15 +45973,16 @@ public: /// /// Inlet (DRAINAGE, SINK): Inlet drainage. /// Outlet (DRAINAGE, SOURCE): Outlet drainage. -class IFC_PARSE_API IfcInterceptor : public IfcFlowTreatmentDevice { +class IFC_PARSE_API IfcInterceptor : public IfcFlowTreatmentDevice { public: - boost::optional< ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcInterceptor() {} + explicit IfcInterceptor (const std::weak_ptr& data) : IfcFlowTreatmentDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcInterceptor (IfcEntityInstanceData&& e); - IfcInterceptor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcInterceptor > list; + // IfcInterceptor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcInterceptorTypeEnum::Value > v9_PredefinedType); }; /// A junction box is an enclosure within which cables are connected. /// Cables may be members of an electrical circuit (for electrical power systems) or be information carriers (in a telecommunications system). A junction box is typically intended to conceal a cable junction from sight, eliminate tampering or provide a safe place for electrical connection. @@ -41370,26 +46050,28 @@ public: /// /// Figure 201 illustrates junction box port use. /// Figure 201 — Junction box port use -class IFC_PARSE_API IfcJunctionBox : public IfcFlowFitting { +class IFC_PARSE_API IfcJunctionBox : public IfcFlowFitting { public: - boost::optional< ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcJunctionBox() {} + explicit IfcJunctionBox (const std::weak_ptr& data) : IfcFlowFitting(data) {} + + std::optional< ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcJunctionBox (IfcEntityInstanceData&& e); - IfcJunctionBox (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcJunctionBox > list; + // IfcJunctionBox (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcJunctionBoxTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcKerb : public IfcBuiltElement { +class IFC_PARSE_API IfcKerb : public IfcBuiltElement { public: - boost::optional< ::Ifc4x3_add2::IfcKerbTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcKerbTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcKerb() {} + explicit IfcKerb (const std::weak_ptr& data) : IfcBuiltElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcKerbTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcKerbTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcKerb (IfcEntityInstanceData&& e); - IfcKerb (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcKerbTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcKerb > list; + // IfcKerb (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcKerbTypeEnum::Value > v9_PredefinedType); }; /// A lamp is an artificial light source such as a light bulb or tube. /// @@ -41438,15 +46120,16 @@ public: /// /// Figure 203 illustrates lamp port use. /// Figure 203 — Lamp port use -class IFC_PARSE_API IfcLamp : public IfcFlowTerminal { +class IFC_PARSE_API IfcLamp : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcLampTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcLampTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcLamp() {} + explicit IfcLamp (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcLampTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcLampTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLamp (IfcEntityInstanceData&& e); - IfcLamp (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcLampTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcLamp > list; + // IfcLamp (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcLampTypeEnum::Value > v9_PredefinedType); }; /// A light fixture is a container that is designed for the purpose of housing one or more lamps and optionally devices that control, restrict or vary their emission. /// @@ -41514,35 +46197,38 @@ public: /// /// Figure 205 illustrates light fixture port use. /// Figure 205 — Light fixture port use -class IFC_PARSE_API IfcLightFixture : public IfcFlowTerminal { +class IFC_PARSE_API IfcLightFixture : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcLightFixture() {} + explicit IfcLightFixture (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLightFixture (IfcEntityInstanceData&& e); - IfcLightFixture (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcLightFixture > list; + // IfcLightFixture (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcLightFixtureTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcLinearPositioningElement : public IfcPositioningElement { +class IFC_PARSE_API IfcLinearPositioningElement : public IfcPositioningElement { public: - virtual const IfcParse::entity& declaration() const; + IfcLinearPositioningElement() {} + explicit IfcLinearPositioningElement (const std::weak_ptr& data) : IfcPositioningElement(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLinearPositioningElement (IfcEntityInstanceData&& e); - IfcLinearPositioningElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation); - typedef aggregate_of< IfcLinearPositioningElement > list; + // IfcLinearPositioningElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation); }; -class IFC_PARSE_API IfcLiquidTerminal : public IfcFlowTerminal { +class IFC_PARSE_API IfcLiquidTerminal : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcLiquidTerminal() {} + explicit IfcLiquidTerminal (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcLiquidTerminal (IfcEntityInstanceData&& e); - IfcLiquidTerminal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcLiquidTerminal > list; + // IfcLiquidTerminal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcLiquidTerminalTypeEnum::Value > v9_PredefinedType); }; /// A medical device is attached to a medical piping system and operates upon medical gases to perform a specific function. Medical gases include medical air, medical vacuum, oxygen, carbon dioxide, nitrogen, and nitrous oxide. /// Outlets for medical gasses should use IfcValve with PredefinedType equal to GASTAP, containing an IfcDistributionPort with FlowDirection=SINK and PredefinedType equal to COMPRESSEDAIR, VACUUM, or CHEMICAL, and having property sets on the port further indicating the gas type and pressure. Tanks for medical gasses should use IfcTank with PredefinedType equal to PRESSUREVESSEL, containing an IfcDistributionPort with FlowDirection=SOURCE and PredefinedType=CHEMICAL, and having property sets on the port further indicating the gas type and pressure range. @@ -41588,15 +46274,16 @@ public: /// /// Power (ELECTRICAL, SINK): Receives electrical power. /// VacuumOut (VACUUM, SOURCE): Provides suction. -class IFC_PARSE_API IfcMedicalDevice : public IfcFlowTerminal { +class IFC_PARSE_API IfcMedicalDevice : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcMedicalDevice() {} + explicit IfcMedicalDevice (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMedicalDevice (IfcEntityInstanceData&& e); - IfcMedicalDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcMedicalDevice > list; + // IfcMedicalDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcMedicalDeviceTypeEnum::Value > v9_PredefinedType); }; /// An IfcMember is a /// structural member designed to carry loads between or beyond @@ -41848,41 +46535,44 @@ public: /// geometric representation, shall apply to the /// MappedRepresentation of the /// IfcRepresentationMap. -class IFC_PARSE_API IfcMember : public IfcBuiltElement { +class IFC_PARSE_API IfcMember : public IfcBuiltElement { public: + IfcMember() {} + explicit IfcMember (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Predefined generic type for a member that is specified in an enumeration. There may be a property set given for the predefined types. /// NOTE The PredefinedType shall only be used, if no type object IfcMemberType is assigned, providing its own IfcMemberType.PredefinedType. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< ::Ifc4x3_add2::IfcMemberTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMemberTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcMemberTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMemberTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMember (IfcEntityInstanceData&& e); - IfcMember (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcMemberTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcMember > list; + // IfcMember (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcMemberTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcMobileTelecommunicationsAppliance : public IfcFlowTerminal { +class IFC_PARSE_API IfcMobileTelecommunicationsAppliance : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcMobileTelecommunicationsAppliance() {} + explicit IfcMobileTelecommunicationsAppliance (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMobileTelecommunicationsAppliance (IfcEntityInstanceData&& e); - IfcMobileTelecommunicationsAppliance (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcMobileTelecommunicationsAppliance > list; + // IfcMobileTelecommunicationsAppliance (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcMooringDevice : public IfcBuiltElement { +class IFC_PARSE_API IfcMooringDevice : public IfcBuiltElement { public: - boost::optional< ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcMooringDevice() {} + explicit IfcMooringDevice (const std::weak_ptr& data) : IfcBuiltElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMooringDevice (IfcEntityInstanceData&& e); - IfcMooringDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcMooringDevice > list; + // IfcMooringDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcMooringDeviceTypeEnum::Value > v9_PredefinedType); }; /// A motor connection provides the means for connecting a motor as the driving device to the driven device. /// @@ -41925,39 +46615,42 @@ public: /// /// Motor (NOTDEFINED, SINK): Connection from the motor. /// Drive (NOTDEFINED, SOURCE): Connection to the driven device. -class IFC_PARSE_API IfcMotorConnection : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcMotorConnection : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcMotorConnection() {} + explicit IfcMotorConnection (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcMotorConnection (IfcEntityInstanceData&& e); - IfcMotorConnection (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcMotorConnection > list; + // IfcMotorConnection (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcMotorConnectionTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcNavigationElement : public IfcBuiltElement { +class IFC_PARSE_API IfcNavigationElement : public IfcBuiltElement { public: - boost::optional< ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcNavigationElement() {} + explicit IfcNavigationElement (const std::weak_ptr& data) : IfcBuiltElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcNavigationElement (IfcEntityInstanceData&& e); - IfcNavigationElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcNavigationElement > list; + // IfcNavigationElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcNavigationElementTypeEnum::Value > v9_PredefinedType); }; /// Definition from ISO/CD 10303-42:1992 This is a special subtype of boundary curve which has the additional semantics of defining an outer boundary of a surface. No more than one such curve shall be included in the set of boundaries of a curve bounded surface. /// /// NOTE Corresponding ISO 10303 entity: outer_boundary_curve. Please refer to ISO/IS 10303-42:1994, p.89 for the final definition of the formal standard. /// /// HISTORY New entity in IFC2x4. -class IFC_PARSE_API IfcOuterBoundaryCurve : public IfcBoundaryCurve { +class IFC_PARSE_API IfcOuterBoundaryCurve : public IfcBoundaryCurve { public: - virtual const IfcParse::entity& declaration() const; + IfcOuterBoundaryCurve() {} + explicit IfcOuterBoundaryCurve (const std::weak_ptr& data) : IfcBoundaryCurve(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcOuterBoundaryCurve (IfcEntityInstanceData&& e); - IfcOuterBoundaryCurve (aggregate_of< ::Ifc4x3_add2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect); - typedef aggregate_of< IfcOuterBoundaryCurve > list; + // IfcOuterBoundaryCurve (std::vector< ::Ifc4x3_add2::IfcSegment > v1_Segments, boost::logic::tribool v2_SelfIntersect); }; /// An outlet is a device installed at a point to receive one or more inserted plugs for electrical power or communications. /// Power outlets are commonly connected within a junction box; data outlets may be directly connected to a wall. For power outlets sharing the same circuit within a junction box, the ports should indicate the logical wiring relationship to the enclosing junction box, even though they may be physically connected to a cable going to another outlet, switch, or fixture. @@ -42025,26 +46718,28 @@ public: /// /// Figure 207 illustrates outlet port use. /// Figure 207 — Outlet port use -class IFC_PARSE_API IfcOutlet : public IfcFlowTerminal { +class IFC_PARSE_API IfcOutlet : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcOutletTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcOutletTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcOutlet() {} + explicit IfcOutlet (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcOutletTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcOutletTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcOutlet (IfcEntityInstanceData&& e); - IfcOutlet (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcOutletTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcOutlet > list; + // IfcOutlet (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcOutletTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcPavement : public IfcBuiltElement { +class IFC_PARSE_API IfcPavement : public IfcBuiltElement { public: - boost::optional< ::Ifc4x3_add2::IfcPavementTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPavementTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcPavement() {} + explicit IfcPavement (const std::weak_ptr& data) : IfcBuiltElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcPavementTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPavementTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPavement (IfcEntityInstanceData&& e); - IfcPavement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcPavementTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcPavement > list; + // IfcPavement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcPavementTypeEnum::Value > v9_PredefinedType); }; /// A pile is a slender timber, concrete, or steel structural element, driven, jetted, or otherwise embedded on end in the ground for the purpose of supporting a load. /// @@ -42064,23 +46759,24 @@ public: /// Geometry Use Definition /// /// Local placement and product representations are defined by the supertype IfcBuildingElement. Standard representations as defined at IfcColumnStandardCase should be used when applicable. -class IFC_PARSE_API IfcPile : public IfcDeepFoundation { +class IFC_PARSE_API IfcPile : public IfcDeepFoundation { public: + IfcPile() {} + explicit IfcPile (const std::weak_ptr& data) : IfcDeepFoundation(data) {} + /// The predefined generic type of the pile according to function. /// /// IFC 2x4 change:  Attribute made optional. Type information can be provided by IfcRelDefinesByType and IfcPileType. - boost::optional< ::Ifc4x3_add2::IfcPileTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPileTypeEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcPileTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPileTypeEnum::Value >& v); /// General designator for how the pile is constructed. /// /// IFC 2x4 change:  Material profile association capability by means of IfcRelAssociatesMaterial has been added. The attribute ConstructionType should not be used whenever its information can be provided by a material profile set, either associated with the IfcPile object or, if present, with a corresponding instance of IfcPileType. - boost::optional< ::Ifc4x3_add2::IfcPileConstructionEnum::Value > ConstructionType() const; - void setConstructionType(boost::optional< ::Ifc4x3_add2::IfcPileConstructionEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcPileConstructionEnum::Value > ConstructionType() const; + void setConstructionType(const std::optional< ::Ifc4x3_add2::IfcPileConstructionEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPile (IfcEntityInstanceData&& e); - IfcPile (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcPileTypeEnum::Value > v9_PredefinedType, boost::optional< ::Ifc4x3_add2::IfcPileConstructionEnum::Value > v10_ConstructionType); - typedef aggregate_of< IfcPile > list; + // IfcPile (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcPileTypeEnum::Value > v9_PredefinedType, std::optional< ::Ifc4x3_add2::IfcPileConstructionEnum::Value > v10_ConstructionType); }; /// A pipe fitting is a junction or transition in a piping flow distribution system or used to connect pipe segments, resulting changes in flow characteristics to the fluid such as direction or flow rate. /// @@ -42167,15 +46863,16 @@ public: /// /// Figure 227 illustrates pipe fitting port use. /// Figure 227 — Pipe fitting port use -class IFC_PARSE_API IfcPipeFitting : public IfcFlowFitting { +class IFC_PARSE_API IfcPipeFitting : public IfcFlowFitting { public: - boost::optional< ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcPipeFitting() {} + explicit IfcPipeFitting (const std::weak_ptr& data) : IfcFlowFitting(data) {} + + std::optional< ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPipeFitting (IfcEntityInstanceData&& e); - IfcPipeFitting (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcPipeFitting > list; + // IfcPipeFitting (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcPipeFittingTypeEnum::Value > v9_PredefinedType); }; /// A pipe segment is used to typically join two sections of a piping network. /// @@ -42237,15 +46934,16 @@ public: /// /// Figure 228 illustrates pipe segment port use. /// Figure 228 — Pipe segment port use -class IFC_PARSE_API IfcPipeSegment : public IfcFlowSegment { +class IFC_PARSE_API IfcPipeSegment : public IfcFlowSegment { public: - boost::optional< ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcPipeSegment() {} + explicit IfcPipeSegment (const std::weak_ptr& data) : IfcFlowSegment(data) {} + + std::optional< ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPipeSegment (IfcEntityInstanceData&& e); - IfcPipeSegment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcPipeSegment > list; + // IfcPipeSegment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcPipeSegmentTypeEnum::Value > v9_PredefinedType); }; /// Definition from IAI: An IfcPlate is a planar and /// often flat part with constant thickness. A plate can be a @@ -42475,19 +47173,20 @@ public: /// 'Clipping', 'SurfaceModel', and 'Brep' geometric representation, /// shall apply to the MappedRepresentation of the /// IfcRepresentationMap. -class IFC_PARSE_API IfcPlate : public IfcBuiltElement { +class IFC_PARSE_API IfcPlate : public IfcBuiltElement { public: + IfcPlate() {} + explicit IfcPlate (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Predefined generic type for a plate that is specified in an enumeration. There may be a property set given specificly for the predefined types. /// NOTE The PredefinedType shall only be used, if no type object IfcPlateType is assigned, providing its own IfcPlateType.PredefinedType. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< ::Ifc4x3_add2::IfcPlateTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPlateTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcPlateTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPlateTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPlate (IfcEntityInstanceData&& e); - IfcPlate (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcPlateTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcPlate > list; + // IfcPlate (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcPlateTypeEnum::Value > v9_PredefinedType); }; /// A protective device breaks an electrical circuit when a stated electric current that passes through it is exceeded. /// A protective device provides protection against electrical current only (not as a general protective device). It may be used to represent the complete set of elements including both the tripping unit and the breaking unit that provide the protection. This may be particularly useful at earlier stages of design where the approach to breaking the electrical supply may be determined but the method of tripping may not. Alternatively, this entity may be used to specifically represent the breaking unit alone (in which case the tripping unit will also be specifically identified). This entity is specific to dedicated protective devices and excludes electrical outlets that may have circuit protection. @@ -42565,15 +47264,16 @@ public: /// /// Line (ELECTRICAL, SINK): The supply line, typically connected from a slot in a distribution board. /// Load (ELECTRICAL, SOURCE): The load protected by this device, typically a cable connected to a device or the first junction box of a circuit. -class IFC_PARSE_API IfcProtectiveDevice : public IfcFlowController { +class IFC_PARSE_API IfcProtectiveDevice : public IfcFlowController { public: - boost::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcProtectiveDevice() {} + explicit IfcProtectiveDevice (const std::weak_ptr& data) : IfcFlowController(data) {} + + std::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProtectiveDevice (IfcEntityInstanceData&& e); - IfcProtectiveDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcProtectiveDevice > list; + // IfcProtectiveDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTypeEnum::Value > v9_PredefinedType); }; /// The distribution control element type IfcProtectiveDeviceTrippingUnitType defines commonly shared information for occurrences of protective device tripping units. The set of shared information may include: /// @@ -42615,16 +47315,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcProtectiveDeviceTrippingUnitType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcProtectiveDeviceTrippingUnit for standard port definitions. -class IFC_PARSE_API IfcProtectiveDeviceTrippingUnitType : public IfcDistributionControlElementType { +class IFC_PARSE_API IfcProtectiveDeviceTrippingUnitType : public IfcDistributionControlElementType { public: + IfcProtectiveDeviceTrippingUnitType() {} + explicit IfcProtectiveDeviceTrippingUnitType (const std::weak_ptr& data) : IfcDistributionControlElementType(data) {} + /// Identifies the predefined types of protective device tripping unit types from which the type required may be set. ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProtectiveDeviceTrippingUnitType (IfcEntityInstanceData&& e); - IfcProtectiveDeviceTrippingUnitType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcProtectiveDeviceTrippingUnitType > list; + // IfcProtectiveDeviceTrippingUnitType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value v10_PredefinedType); }; /// A pump is a device which imparts mechanical work on fluids or slurries to move them through a channel or pipeline. A typical use of a pump is to circulate chilled water or heating hot water in a building services distribution system. /// @@ -42675,26 +47376,28 @@ public: /// /// Figure 229 illustrates pump port use. /// Figure 229 — Pump port use -class IFC_PARSE_API IfcPump : public IfcFlowMovingDevice { +class IFC_PARSE_API IfcPump : public IfcFlowMovingDevice { public: - boost::optional< ::Ifc4x3_add2::IfcPumpTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcPumpTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcPump() {} + explicit IfcPump (const std::weak_ptr& data) : IfcFlowMovingDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcPumpTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcPumpTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcPump (IfcEntityInstanceData&& e); - IfcPump (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcPumpTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcPump > list; + // IfcPump (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcPumpTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcRail : public IfcBuiltElement { +class IFC_PARSE_API IfcRail : public IfcBuiltElement { public: - boost::optional< ::Ifc4x3_add2::IfcRailTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRailTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcRail() {} + explicit IfcRail (const std::weak_ptr& data) : IfcBuiltElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcRailTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRailTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRail (IfcEntityInstanceData&& e); - IfcRail (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcRailTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcRail > list; + // IfcRail (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcRailTypeEnum::Value > v9_PredefinedType); }; /// Definition of IAI: The railing is a frame assembly /// adjacent to human circulation spaces and at some space boundaries @@ -42828,18 +47531,19 @@ public: /// RepresentationIdentifier : 'Body' /// RepresentationType : 'SurfaceModel', 'Brep', /// 'MappedRepresentation' -class IFC_PARSE_API IfcRailing : public IfcBuiltElement { +class IFC_PARSE_API IfcRailing : public IfcBuiltElement { public: + IfcRailing() {} + explicit IfcRailing (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Predefined generic types for a railing that are specified in an enumeration. There may be a property set given for the predefined types. /// NOTE: The use of the predefined type directly at the occurrence object level of IfcRailing is only permitted, if no type object IfcRailingType is assigned. /// IFC2x PLATFORM CHANGE: The attribute has been changed into an OPTIONAL attribute. - boost::optional< ::Ifc4x3_add2::IfcRailingTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRailingTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcRailingTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRailingTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRailing (IfcEntityInstanceData&& e); - IfcRailing (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcRailingTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcRailing > list; + // IfcRailing (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcRailingTypeEnum::Value > v9_PredefinedType); }; /// Definition from ISO 6707-1:1989: Inclined way or floor /// joining two surfaces at different levels. @@ -42974,20 +47678,21 @@ public: /// Figure 111 illustrates IfcRamp defining the local placement for all components. /// /// Figure 111 — Ramp placement -class IFC_PARSE_API IfcRamp : public IfcBuiltElement { +class IFC_PARSE_API IfcRamp : public IfcBuiltElement { public: + IfcRamp() {} + explicit IfcRamp (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Predefined shape types for a ramp that are specified in an enumeration. /// /// NOTE The PredefinedType shall only be used, if no type object IfcRampType is assigned, providing its own IfcRampType.PredefinedType. /// /// IFC2x4 CHANGE The attribute has been renamed from ShapeType and changed to be OPTIONAL with upward compatibility for file based exchange. - boost::optional< ::Ifc4x3_add2::IfcRampTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRampTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcRampTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRampTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRamp (IfcEntityInstanceData&& e); - IfcRamp (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcRampTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcRamp > list; + // IfcRamp (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcRampTypeEnum::Value > v9_PredefinedType); }; /// A ramp is an inclined slab segment, normally /// providing a human circulation link between two landings, floors or @@ -43177,19 +47882,20 @@ public: /// Figure 114 illustrates the body representation. /// /// Figure 114 — Ramp flight body -class IFC_PARSE_API IfcRampFlight : public IfcBuiltElement { +class IFC_PARSE_API IfcRampFlight : public IfcBuiltElement { public: + IfcRampFlight() {} + explicit IfcRampFlight (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Predefined generic type for a ramp flight that is specified in an enumeration. There may be a property set given specificly for the predefined types. /// NOTE The PredefinedType shall only be used, if no type object IfcRampFlightType is assigned, providing its own IfcRampFlightType.PredefinedType. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRampFlight (IfcEntityInstanceData&& e); - IfcRampFlight (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcRampFlight > list; + // IfcRampFlight (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcRampFlightTypeEnum::Value > v9_PredefinedType); }; /// A rational B-spline curve with knots is a B-spline curve /// described in terms of control points and basic functions. It @@ -43227,27 +47933,29 @@ public: /// NOTE  Corresponding ISO 10303 entity: rational_b_spline_curve. Please refer to ISO/IS 10303-42:1994, p. 45 for the final definition of the formal standard. /// /// HISTORY  New entity in IFC2x4. -class IFC_PARSE_API IfcRationalBSplineCurveWithKnots : public IfcBSplineCurveWithKnots { +class IFC_PARSE_API IfcRationalBSplineCurveWithKnots : public IfcBSplineCurveWithKnots { public: + IfcRationalBSplineCurveWithKnots() {} + explicit IfcRationalBSplineCurveWithKnots (const std::weak_ptr& data) : IfcBSplineCurveWithKnots(data) {} + /// The supplied values of the weights. std::vector< double > /*[2:?]*/ WeightsData() const; - void setWeightsData(std::vector< double > /*[2:?]*/ v); - virtual const IfcParse::entity& declaration() const; + void setWeightsData(const std::vector< double > /*[2:?]*/& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRationalBSplineCurveWithKnots (IfcEntityInstanceData&& e); - IfcRationalBSplineCurveWithKnots (int v1_Degree, aggregate_of< ::Ifc4x3_add2::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc4x3_add2::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect, std::vector< int > /*[2:?]*/ v6_KnotMultiplicities, std::vector< double > /*[2:?]*/ v7_Knots, ::Ifc4x3_add2::IfcKnotType::Value v8_KnotSpec, std::vector< double > /*[2:?]*/ v9_WeightsData); - typedef aggregate_of< IfcRationalBSplineCurveWithKnots > list; + // IfcRationalBSplineCurveWithKnots (int v1_Degree, std::vector< ::Ifc4x3_add2::IfcCartesianPoint > v2_ControlPointsList, ::Ifc4x3_add2::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect, std::vector< int > /*[2:?]*/ v6_KnotMultiplicities, std::vector< double > /*[2:?]*/ v7_Knots, ::Ifc4x3_add2::IfcKnotType::Value v8_KnotSpec, std::vector< double > /*[2:?]*/ v9_WeightsData); }; -class IFC_PARSE_API IfcReinforcedSoil : public IfcEarthworksElement { +class IFC_PARSE_API IfcReinforcedSoil : public IfcEarthworksElement { public: - boost::optional< ::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcReinforcedSoil() {} + explicit IfcReinforcedSoil (const std::weak_ptr& data) : IfcEarthworksElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcReinforcedSoil (IfcEntityInstanceData&& e); - IfcReinforcedSoil (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcReinforcedSoil > list; + // IfcReinforcedSoil (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcReinforcedSoilTypeEnum::Value > v9_PredefinedType); }; /// Definition from IAI: A steel bar, usually with manufactured deformations in the surface, /// used in concrete and masonry construction to provide additional strength. A single instance @@ -43277,24 +47985,25 @@ public: /// /// Simplified Geometric Representation /// Simplified geometric representations may be used based on local agreements. -class IFC_PARSE_API IfcReinforcingBar : public IfcReinforcingElement { +class IFC_PARSE_API IfcReinforcingBar : public IfcReinforcingElement { public: - boost::optional< double > NominalDiameter() const; - void setNominalDiameter(boost::optional< double > v); - boost::optional< double > CrossSectionArea() const; - void setCrossSectionArea(boost::optional< double > v); - boost::optional< double > BarLength() const; - void setBarLength(boost::optional< double > v); + IfcReinforcingBar() {} + explicit IfcReinforcingBar (const std::weak_ptr& data) : IfcReinforcingElement(data) {} + + std::optional< double > NominalDiameter() const; + void setNominalDiameter(const std::optional< double >& v); + std::optional< double > CrossSectionArea() const; + void setCrossSectionArea(const std::optional< double >& v); + std::optional< double > BarLength() const; + void setBarLength(const std::optional< double >& v); /// The predefined type is always BAR. - boost::optional< ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value > v); - boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > BarSurface() const; - void setBarSurface(boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value >& v); + std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > BarSurface() const; + void setBarSurface(const std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcReinforcingBar (IfcEntityInstanceData&& e); - IfcReinforcingBar (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< double > v10_NominalDiameter, boost::optional< double > v11_CrossSectionArea, boost::optional< double > v12_BarLength, boost::optional< ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value > v13_PredefinedType, boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v14_BarSurface); - typedef aggregate_of< IfcReinforcingBar > list; + // IfcReinforcingBar (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< std::string > v9_SteelGrade, std::optional< double > v10_NominalDiameter, std::optional< double > v11_CrossSectionArea, std::optional< double > v12_BarLength, std::optional< ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value > v13_PredefinedType, std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v14_BarSurface); }; /// Definition from IAI: A steel bar, usually with manufactured deformations in the surface, /// used in concrete and masonry construction to provide additional strength. @@ -43312,32 +48021,33 @@ public: /// A 'Body' representation map should contain one IfcSweptDiskSolidPolygonal. /// /// Simplified geometric representations may be used based on local agreements. -class IFC_PARSE_API IfcReinforcingBarType : public IfcReinforcingElementType { +class IFC_PARSE_API IfcReinforcingBarType : public IfcReinforcingElementType { public: + IfcReinforcingBarType() {} + explicit IfcReinforcingBarType (const std::weak_ptr& data) : IfcReinforcingElementType(data) {} + /// The predefined type is always BAR. ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value v); + void setPredefinedType(const ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value& v); /// The nominal diameter defining the cross-section size of the reinforcing bar. - boost::optional< double > NominalDiameter() const; - void setNominalDiameter(boost::optional< double > v); + std::optional< double > NominalDiameter() const; + void setNominalDiameter(const std::optional< double >& v); /// The effective cross-section area of the reinforcing bar. - boost::optional< double > CrossSectionArea() const; - void setCrossSectionArea(boost::optional< double > v); + std::optional< double > CrossSectionArea() const; + void setCrossSectionArea(const std::optional< double >& v); /// The total length of the reinforcing bar. The total length of bended bars are calculated according to local standards with corrections for the bends. - boost::optional< double > BarLength() const; - void setBarLength(boost::optional< double > v); + std::optional< double > BarLength() const; + void setBarLength(const std::optional< double >& v); /// Indicator for whether the bar surface is plain or textured. - boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > BarSurface() const; - void setBarSurface(boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v); - boost::optional< std::string > BendingShapeCode() const; - void setBendingShapeCode(boost::optional< std::string > v); - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcBendingParameterSelect >::ptr > BendingParameters() const; - void setBendingParameters(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcBendingParameterSelect >::ptr > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > BarSurface() const; + void setBarSurface(const std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value >& v); + std::optional< std::string > BendingShapeCode() const; + void setBendingShapeCode(const std::optional< std::string >& v); + std::optional< std::vector< ::Ifc4x3_add2::IfcBendingParameterSelect > > BendingParameters() const; + void setBendingParameters(const std::optional< std::vector< ::Ifc4x3_add2::IfcBendingParameterSelect > >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcReinforcingBarType (IfcEntityInstanceData&& e); - IfcReinforcingBarType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_BarLength, boost::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v14_BarSurface, boost::optional< std::string > v15_BendingShapeCode, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcBendingParameterSelect >::ptr > v16_BendingParameters); - typedef aggregate_of< IfcReinforcingBarType > list; + // IfcReinforcingBarType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcReinforcingBarTypeEnum::Value v10_PredefinedType, std::optional< double > v11_NominalDiameter, std::optional< double > v12_CrossSectionArea, std::optional< double > v13_BarLength, std::optional< ::Ifc4x3_add2::IfcReinforcingBarSurfaceEnum::Value > v14_BarSurface, std::optional< std::string > v15_BendingShapeCode, std::optional< std::vector< ::Ifc4x3_add2::IfcBendingParameterSelect > > v16_BendingParameters); }; /// Definition from ISO 6707-1:1989: Construction enclosing the building from above. /// The IfcRoof is a description of the total roof. It acts as a container entity, that aggregates all components of the roof, it represents. The aggregation is handled via the IfcRelAggregates relationship, relating an IfcRoof with the related roof elements, like slabs (represented by IfcSlab), rafters and purlins (represented by IfcBeam), or other included roofs, such as dormers (represented by IfcRoof). @@ -43484,18 +48194,19 @@ public: /// Figure 119 illustrates roof placement, with an IfcRoof defining the local placement for all aggregated elements. /// /// Figure 119 — Roof placement -class IFC_PARSE_API IfcRoof : public IfcBuiltElement { +class IFC_PARSE_API IfcRoof : public IfcBuiltElement { public: + IfcRoof() {} + explicit IfcRoof (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Predefined shape types for a roof that are specified in an enumeration. /// /// IFC2x4 CHANGE The attribute has been renamed from ShapeType and changed to be OPTIONAL with upward compatibility for file based exchange. - boost::optional< ::Ifc4x3_add2::IfcRoofTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcRoofTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcRoofTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcRoofTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcRoof (IfcEntityInstanceData&& e); - IfcRoof (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcRoofTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcRoof > list; + // IfcRoof (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcRoofTypeEnum::Value > v9_PredefinedType); }; /// A sanitary terminal is a fixed appliance or terminal usually supplied with water and used for drinking, cleaning or foul water disposal or that is an item of equipment directly used with such an appliance or terminal. /// @@ -43623,15 +48334,16 @@ public: /// ColdWater (DOMESTICCOLDWATER, SINK): Cold water supply. /// HotWater (DOMESTICHOTWATER, SINK): Hot water supply. /// Drainage (DRAINAGE, SOURCE): Drainage. -class IFC_PARSE_API IfcSanitaryTerminal : public IfcFlowTerminal { +class IFC_PARSE_API IfcSanitaryTerminal : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcSanitaryTerminal() {} + explicit IfcSanitaryTerminal (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSanitaryTerminal (IfcEntityInstanceData&& e); - IfcSanitaryTerminal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcSanitaryTerminal > list; + // IfcSanitaryTerminal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSanitaryTerminalTypeEnum::Value > v9_PredefinedType); }; /// The distribution control element type IfcSensorType defines commonly shared information for occurrences of sensors. The set of shared information may include: /// @@ -43681,16 +48393,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcSensorType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcSensor for standard port definitions. -class IFC_PARSE_API IfcSensorType : public IfcDistributionControlElementType { +class IFC_PARSE_API IfcSensorType : public IfcDistributionControlElementType { public: + IfcSensorType() {} + explicit IfcSensorType (const std::weak_ptr& data) : IfcDistributionControlElementType(data) {} + /// Identifies the predefined types of sensor from which the type required may be set. ::Ifc4x3_add2::IfcSensorTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcSensorTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcSensorTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSensorType (IfcEntityInstanceData&& e); - IfcSensorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSensorTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcSensorType > list; + // IfcSensorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcSensorTypeEnum::Value v10_PredefinedType); }; /// Definition from IAI: Shading devices are purpose built /// devices to protect from the sunlight, from natural light, or @@ -43706,28 +48419,30 @@ public: /// building elements. /// HISTORY New entity in /// IFC2x4 -class IFC_PARSE_API IfcShadingDevice : public IfcBuiltElement { +class IFC_PARSE_API IfcShadingDevice : public IfcBuiltElement { public: + IfcShadingDevice() {} + explicit IfcShadingDevice (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Predefined generic type for a shading device that is specified in an enumeration. There may be a property set given specificly for the predefined types. /// NOTE The PredefinedType shall only be used, if no type object IfcShadingDeviceType is assigned, providing its own IfcShadingDeviceType.PredefinedType. - boost::optional< ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcShadingDevice (IfcEntityInstanceData&& e); - IfcShadingDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcShadingDevice > list; + // IfcShadingDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcShadingDeviceTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcSignal : public IfcFlowTerminal { +class IFC_PARSE_API IfcSignal : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcSignalTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSignalTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcSignal() {} + explicit IfcSignal (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcSignalTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSignalTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSignal (IfcEntityInstanceData&& e); - IfcSignal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSignalTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcSignal > list; + // IfcSignal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSignalTypeEnum::Value > v9_PredefinedType); }; /// A slab is a component of the /// construction that normally encloses a space vertically. The slab @@ -43989,19 +48704,20 @@ public: /// geometric representation. The profile is extruded non-perpendicular and the slab body is clipped at the eave. /// /// Figure 121 — Slab body clipping -class IFC_PARSE_API IfcSlab : public IfcBuiltElement { +class IFC_PARSE_API IfcSlab : public IfcBuiltElement { public: + IfcSlab() {} + explicit IfcSlab (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Predefined generic type for a slab that is specified in an enumeration. There may be a property set given specifically for the predefined types. /// NOTE The PredefinedType shall only be used, if no type object IfcSlabType is assigned, providing its own IfcSlabType.PredefinedType. /// /// FC2x PLATFORM CHANGE: The attribute has been changed into an OPTIONAL attribute. - boost::optional< ::Ifc4x3_add2::IfcSlabTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSlabTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcSlabTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSlabTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSlab (IfcEntityInstanceData&& e); - IfcSlab (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSlabTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcSlab > list; + // IfcSlab (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSlabTypeEnum::Value > v9_PredefinedType); }; /// A solar device converts solar radiation into other energy such as electric current or thermal energy. /// @@ -44050,15 +48766,16 @@ public: /// SOLARPANEL /// /// PowerGeneration (POWERGENERATION, SOURCE): Converted electrical power. -class IFC_PARSE_API IfcSolarDevice : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcSolarDevice : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcSolarDevice() {} + explicit IfcSolarDevice (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSolarDevice (IfcEntityInstanceData&& e); - IfcSolarDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcSolarDevice > list; + // IfcSolarDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSolarDeviceTypeEnum::Value > v9_PredefinedType); }; /// Space heaters utilize a combination of radiation and/or natural convection using a heating source such as electricity, steam or hot water to heat a limited space or area. Examples of space heaters include radiators, convectors, baseboard and finned-tube heaters. /// IfcUnitaryEquipment should be used for packaged units supporting a combination of heating, cooling, and/or dehumidification; IfcCoil should be used for coil-based floor heating. @@ -44122,15 +48839,16 @@ public: /// /// Figure 230 illustrates space heater port use. /// Figure 230 — Space heater port use -class IFC_PARSE_API IfcSpaceHeater : public IfcFlowTerminal { +class IFC_PARSE_API IfcSpaceHeater : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcSpaceHeater() {} + explicit IfcSpaceHeater (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSpaceHeater (IfcEntityInstanceData&& e); - IfcSpaceHeater (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcSpaceHeater > list; + // IfcSpaceHeater (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSpaceHeaterTypeEnum::Value > v9_PredefinedType); }; /// A stack terminal is placed at the top of a ventilating stack (such as to prevent ingress by birds or rainwater) or rainwater pipe (to act as a collector or hopper for discharge from guttering). /// @@ -44182,15 +48900,16 @@ public: /// RAINWATERHOPPER /// /// Rain (RAINWATER, SOURCE): Rainwater outlet. -class IFC_PARSE_API IfcStackTerminal : public IfcFlowTerminal { +class IFC_PARSE_API IfcStackTerminal : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcStackTerminal() {} + explicit IfcStackTerminal (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStackTerminal (IfcEntityInstanceData&& e); - IfcStackTerminal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcStackTerminal > list; + // IfcStackTerminal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcStackTerminalTypeEnum::Value > v9_PredefinedType); }; /// Definition from ISO 6707-1:1989: Construction comprising /// a succession of horizontal stages (steps or landings) that make it @@ -44357,18 +49076,19 @@ public: /// Figure 128 illustrates stair placement, where the IfcStair defines the local placement for all components and the common 'Axis' representation, and each component has its own 'Body' representation. /// /// Figure 128 — Stair placement -class IFC_PARSE_API IfcStair : public IfcBuiltElement { +class IFC_PARSE_API IfcStair : public IfcBuiltElement { public: + IfcStair() {} + explicit IfcStair (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Predefined shape types for a stair that are specified in an enumeration. /// /// IFC2x4 CHANGE The attribute has been renamed from ShapeType and changed to be OPTIONAL with upward compatibility for file based exchange. - boost::optional< ::Ifc4x3_add2::IfcStairTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcStairTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcStairTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcStairTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStair (IfcEntityInstanceData&& e); - IfcStair (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcStairTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcStair > list; + // IfcStair (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcStairTypeEnum::Value > v9_PredefinedType); }; /// A stair flight is an assembly of /// building components in a single "run" of stair steps (not @@ -44537,36 +49257,37 @@ public: /// Figure 131 illustrates the body representation. /// /// Figure 131 — Stair flight body -class IFC_PARSE_API IfcStairFlight : public IfcBuiltElement { +class IFC_PARSE_API IfcStairFlight : public IfcBuiltElement { public: - boost::optional< int > NumberOfRisers() const; - void setNumberOfRisers(boost::optional< int > v); + IfcStairFlight() {} + explicit IfcStairFlight (const std::weak_ptr& data) : IfcBuiltElement(data) {} + + std::optional< int > NumberOfRisers() const; + void setNumberOfRisers(const std::optional< int >& v); /// Number of treads included in the stair flight. /// /// IFC2x4 CHANGE The attribute has been deprecated it shall only be exposed with a NIL value. Use Pset_StairFlightCommon.NumberOfTreads instead. - boost::optional< int > NumberOfTreads() const; - void setNumberOfTreads(boost::optional< int > v); + std::optional< int > NumberOfTreads() const; + void setNumberOfTreads(const std::optional< int >& v); /// Vertical distance from tread to tread. The riser height is supposed to be equal for all stairs in a stair flight. /// /// IFC2x4 CHANGE The attribute has been deprecated it shall only be exposed with a NIL value. Use Pset_StairFlightCommon.RiserHeight instead. - boost::optional< double > RiserHeight() const; - void setRiserHeight(boost::optional< double > v); + std::optional< double > RiserHeight() const; + void setRiserHeight(const std::optional< double >& v); /// Horizontal distance from the front to the back of the tread. The tread length is supposed to be equal for all steps of the stair flight. /// /// IFC2x4 CHANGE The attribute has been deprecated it shall only be exposed with a NIL value. Use Pset_StairFlightCommon.TreadLength instead. - boost::optional< double > TreadLength() const; - void setTreadLength(boost::optional< double > v); + std::optional< double > TreadLength() const; + void setTreadLength(const std::optional< double >& v); /// Predefined generic type for a stair flight that is specified in an enumeration. There may be a property set given specificly for the predefined types. /// NOTE The PredefinedType shall only be used, if no type object IfcStairFlightType is assigned, providing its own IfcStairFlightType.PredefinedType. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStairFlight (IfcEntityInstanceData&& e); - IfcStairFlight (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< int > v9_NumberOfRisers, boost::optional< int > v10_NumberOfTreads, boost::optional< double > v11_RiserHeight, boost::optional< double > v12_TreadLength, boost::optional< ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value > v13_PredefinedType); - typedef aggregate_of< IfcStairFlight > list; + // IfcStairFlight (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< int > v9_NumberOfRisers, std::optional< int > v10_NumberOfTreads, std::optional< double > v11_RiserHeight, std::optional< double > v12_TreadLength, std::optional< ::Ifc4x3_add2::IfcStairFlightTypeEnum::Value > v13_PredefinedType); }; /// Definition from IAI: The IfcStructuralAnalysisModel is used to assemble all information needed to represent a structural analysis model. It encompasses certain general properties (such as analysis type), references to all contained structural members, structural supports or connections, as well as loads and the respective load results. /// @@ -44591,11 +49312,14 @@ public: /// NOTE  This rule is necessary to achieve consistent topology representations. The topology representations of structural items in an analysis model are meant to share vertices and edges und must therefore have the same object placement. /// /// NOTE  A structural item may be grouped into more than one analysis model. In this case, all these models must use the same instance of IfcObjectPlacement. -class IFC_PARSE_API IfcStructuralAnalysisModel : public IfcSystem { +class IFC_PARSE_API IfcStructuralAnalysisModel : public IfcSystem { public: + IfcStructuralAnalysisModel() {} + explicit IfcStructuralAnalysisModel (const std::weak_ptr& data) : IfcSystem(data) {} + /// Defines the type of the structural analysis model. ::Ifc4x3_add2::IfcAnalysisModelTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcAnalysisModelTypeEnum::Value v); + void setPredefinedType(const ::Ifc4x3_add2::IfcAnalysisModelTypeEnum::Value& v); /// If the selected model type (PredefinedType) describes a 2D system, the orientation defines /// the analysis plane (P[1], P[2]) and the normal to the analysis plane (P[3]). This is needed because /// structural items and activities are always defined in three-dimensional space even if they are @@ -44606,44 +49330,43 @@ public: /// In case of predefined type OUT_PLANE_LOADING_2D, only the P[3] component of loads and their /// effects is meant to be analyzed. This is used for beam grids and for typical slab analyses. /// In case of predefined type LOADING_3D, OrientationOf2DPlane shall be omitted. - ::Ifc4x3_add2::IfcAxis2Placement3D* OrientationOf2DPlane() const; - void setOrientationOf2DPlane(::Ifc4x3_add2::IfcAxis2Placement3D* v); + ::Ifc4x3_add2::IfcAxis2Placement3D OrientationOf2DPlane() const; + void setOrientationOf2DPlane(const ::Ifc4x3_add2::IfcAxis2Placement3D& v); /// References to all load groups to be analyzed. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcStructuralLoadGroup >::ptr > LoadedBy() const; - void setLoadedBy(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcStructuralLoadGroup >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcStructuralLoadGroup > > LoadedBy() const; + void setLoadedBy(const std::optional< std::vector< ::Ifc4x3_add2::IfcStructuralLoadGroup > >& v); /// References to all result groups available for this structural analysis model. - boost::optional< aggregate_of< ::Ifc4x3_add2::IfcStructuralResultGroup >::ptr > HasResults() const; - void setHasResults(boost::optional< aggregate_of< ::Ifc4x3_add2::IfcStructuralResultGroup >::ptr > v); + std::optional< std::vector< ::Ifc4x3_add2::IfcStructuralResultGroup > > HasResults() const; + void setHasResults(const std::optional< std::vector< ::Ifc4x3_add2::IfcStructuralResultGroup > >& v); /// Object placement which shall be common to all items and activities which are grouped into this instance of IfcStructuralAnalysisModel. This placement establishes a coordinate system which is referred to as 'global coordinate system' in use definitions of various classes of structural items and activities. /// /// NOTE  Most commonly, but not necessarily, the SharedPlacement is an IfcLocalPlacement whose z axis is parallel with the z axis of the IfcProject's world coordinate system and directed like the WCS z axis (i.e. pointing "upwards") or directed against the WCS z axis (i.e. points "downwards"). /// /// NOTE  Per informal proposition, this attribute is not optional as soon as at least one IfcStructuralItem is grouped into the instance of IfcStructuralAnalysisModel. - ::Ifc4x3_add2::IfcObjectPlacement* SharedPlacement() const; - void setSharedPlacement(::Ifc4x3_add2::IfcObjectPlacement* v); - virtual const IfcParse::entity& declaration() const; + ::Ifc4x3_add2::IfcObjectPlacement SharedPlacement() const; + void setSharedPlacement(const ::Ifc4x3_add2::IfcObjectPlacement& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralAnalysisModel (IfcEntityInstanceData&& e); - IfcStructuralAnalysisModel (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcAnalysisModelTypeEnum::Value v6_PredefinedType, ::Ifc4x3_add2::IfcAxis2Placement3D* v7_OrientationOf2DPlane, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcStructuralLoadGroup >::ptr > v8_LoadedBy, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcStructuralResultGroup >::ptr > v9_HasResults, ::Ifc4x3_add2::IfcObjectPlacement* v10_SharedPlacement); - typedef aggregate_of< IfcStructuralAnalysisModel > list; + // IfcStructuralAnalysisModel (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcAnalysisModelTypeEnum::Value v6_PredefinedType, ::Ifc4x3_add2::IfcAxis2Placement3D v7_OrientationOf2DPlane, std::optional< std::vector< ::Ifc4x3_add2::IfcStructuralLoadGroup > > v8_LoadedBy, std::optional< std::vector< ::Ifc4x3_add2::IfcStructuralResultGroup > > v9_HasResults, ::Ifc4x3_add2::IfcObjectPlacement v10_SharedPlacement); }; /// Definition from IAI: A load case is a load group, commonly used to group loads from the same action source. /// /// HISTORY: New entity in IFC 2x4. -class IFC_PARSE_API IfcStructuralLoadCase : public IfcStructuralLoadGroup { +class IFC_PARSE_API IfcStructuralLoadCase : public IfcStructuralLoadGroup { public: + IfcStructuralLoadCase() {} + explicit IfcStructuralLoadCase (const std::weak_ptr& data) : IfcStructuralLoadGroup(data) {} + /// The self weight coefficients specify ratios at which loads due to weight of members shall be included in the load case. These loads are not explicitly modeled as instances of IfcStructuralAction. Instead they shall be calculated according to geometry, section, and material of each member. /// /// The three components of the self weight vector correspond with the x,y,z directions of the so-called global coordinates, i.e. the directions of the shared ObjectPlacement of all items in an IfcStructuralAnalysisModel. For example, if the object placement defines a z axis which is upright like the IfcProject's world coordinate system, then the self weight coefficients would typically be [0.,0.,-1.] in a load case of dead loads with self weight. /// /// The overall coefficient in the inherited attribute Coefficient shall not be applied to SelfWeightCoefficients of the same instance of IfcStructuralLoadCase. It only applies to actions and load groups which are grouped below the load case, not to the load case's computed self weight. - boost::optional< std::vector< double > /*[3:3]*/ > SelfWeightCoefficients() const; - void setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v); - virtual const IfcParse::entity& declaration() const; + std::optional< std::vector< double > /*[3:3]*/ > SelfWeightCoefficients() const; + void setSelfWeightCoefficients(const std::optional< std::vector< double > /*[3:3]*/ >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralLoadCase (IfcEntityInstanceData&& e); - IfcStructuralLoadCase (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcLoadGroupTypeEnum::Value v6_PredefinedType, ::Ifc4x3_add2::IfcActionTypeEnum::Value v7_ActionType, ::Ifc4x3_add2::IfcActionSourceTypeEnum::Value v8_ActionSource, boost::optional< double > v9_Coefficient, boost::optional< std::string > v10_Purpose, boost::optional< std::vector< double > /*[3:3]*/ > v11_SelfWeightCoefficients); - typedef aggregate_of< IfcStructuralLoadCase > list; + // IfcStructuralLoadCase (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcLoadGroupTypeEnum::Value v6_PredefinedType, ::Ifc4x3_add2::IfcActionTypeEnum::Value v7_ActionType, ::Ifc4x3_add2::IfcActionSourceTypeEnum::Value v8_ActionSource, std::optional< double > v9_Coefficient, std::optional< std::string > v10_Purpose, std::optional< std::vector< double > /*[3:3]*/ > v11_SelfWeightCoefficients); }; /// Definition from IAI: Defines an action with constant value which is distributed over a surface. /// @@ -44652,13 +49375,14 @@ public: /// IFC 2x4 change: Intermediate supertype IfcStructuralSurfaceAction inserted. Derived attribute PredefinedType added. /// /// NOTE  Like its supertype IfcStructuralSurfaceAction, this action type may also act on curved faces. -class IFC_PARSE_API IfcStructuralPlanarAction : public IfcStructuralSurfaceAction { +class IFC_PARSE_API IfcStructuralPlanarAction : public IfcStructuralSurfaceAction { public: - virtual const IfcParse::entity& declaration() const; + IfcStructuralPlanarAction() {} + explicit IfcStructuralPlanarAction (const std::weak_ptr& data) : IfcStructuralSurfaceAction(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcStructuralPlanarAction (IfcEntityInstanceData&& e); - IfcStructuralPlanarAction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v12_PredefinedType); - typedef aggregate_of< IfcStructuralPlanarAction > list; + // IfcStructuralPlanarAction (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, ::Ifc4x3_add2::IfcStructuralLoad v8_AppliedLoad, ::Ifc4x3_add2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, std::optional< bool > v10_DestabilizingLoad, std::optional< ::Ifc4x3_add2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_add2::IfcStructuralSurfaceActivityTypeEnum::Value v12_PredefinedType); }; /// A switch is used in a cable distribution system (electrical circuit) to control or modulate the flow of electricity. /// Switches include those used for electrical power, communications, audio-visual, or other distribution system types as determined by the available ports. @@ -44748,15 +49472,16 @@ public: /// /// Figure 209 illustrates switching device port use. /// Figure 209 — Switching device port use -class IFC_PARSE_API IfcSwitchingDevice : public IfcFlowController { +class IFC_PARSE_API IfcSwitchingDevice : public IfcFlowController { public: - boost::optional< ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcSwitchingDevice() {} + explicit IfcSwitchingDevice (const std::weak_ptr& data) : IfcFlowController(data) {} + + std::optional< ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSwitchingDevice (IfcEntityInstanceData&& e); - IfcSwitchingDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcSwitchingDevice > list; + // IfcSwitchingDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSwitchingDeviceTypeEnum::Value > v9_PredefinedType); }; /// A tank is a vessel or container in which a fluid or gas is stored for later use. /// @@ -44818,26 +49543,28 @@ public: /// /// Inlet (NOTDEFINED, SINK): Inlet. /// Outlet (NOTDEFINED, SOURCE): Outlet. -class IFC_PARSE_API IfcTank : public IfcFlowStorageDevice { +class IFC_PARSE_API IfcTank : public IfcFlowStorageDevice { public: - boost::optional< ::Ifc4x3_add2::IfcTankTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTankTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcTank() {} + explicit IfcTank (const std::weak_ptr& data) : IfcFlowStorageDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcTankTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTankTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTank (IfcEntityInstanceData&& e); - IfcTank (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcTankTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcTank > list; + // IfcTank (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcTankTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcTrackElement : public IfcBuiltElement { +class IFC_PARSE_API IfcTrackElement : public IfcBuiltElement { public: - boost::optional< ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcTrackElement() {} + explicit IfcTrackElement (const std::weak_ptr& data) : IfcBuiltElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTrackElement (IfcEntityInstanceData&& e); - IfcTrackElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcTrackElement > list; + // IfcTrackElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcTrackElementTypeEnum::Value > v9_PredefinedType); }; /// A transformer is an inductive stationary device that transfers electrical energy from one circuit to another. /// IfcTransformer is used to transform electric power; conversion of electric signals for other purposes is handled at other entities: IfcController converts arbitrary signals, IfcAudioVisualAppliance converts signals for audio or video streams, and IfcCommunicationsAppliance converts signals for data or other communications usage. @@ -44881,15 +49608,16 @@ public: /// /// Line (ELECTRICAL, SINK): Line to be transformed. /// Load (ELECTRICAL, SOURCE): Transformed load. -class IFC_PARSE_API IfcTransformer : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcTransformer : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcTransformerTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTransformerTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcTransformer() {} + explicit IfcTransformer (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcTransformerTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTransformerTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTransformer (IfcEntityInstanceData&& e); - IfcTransformer (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcTransformerTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcTransformer > list; + // IfcTransformer (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcTransformerTypeEnum::Value > v9_PredefinedType); }; /// Definition from IAI: Generalization of all transport /// related objects that move people, animals or goods within a @@ -45007,18 +49735,19 @@ public: /// /// RepresentationIdentifier : 'Body' /// RepresentationType : 'MappedRepresentation' -class IFC_PARSE_API IfcTransportElement : public IfcTransportationDevice { +class IFC_PARSE_API IfcTransportElement : public IfcTransportationDevice { public: + IfcTransportElement() {} + explicit IfcTransportElement (const std::weak_ptr& data) : IfcTransportationDevice(data) {} + /// Predefined generic types for a transportation element that are specified in an enumeration. There might be property sets defined specifically for each predefined type. /// /// IFC2x4 CHANGE  The attribute has been changed to be optional. - boost::optional< ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTransportElement (IfcEntityInstanceData&& e); - IfcTransportElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcTransportElement > list; + // IfcTransportElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcTransportElementTypeEnum::Value > v9_PredefinedType); }; /// A tube bundle is a device consisting of tubes and bundles of tubes used for heat transfer and contained typically within other energy conversion devices, such as a chiller or coil. /// @@ -45067,15 +49796,16 @@ public: /// /// Inlet (NOTDEFINED, SINK): Inlet. /// Outlet (NOTDEFINED, SOURCE): Outlet. -class IFC_PARSE_API IfcTubeBundle : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcTubeBundle : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcTubeBundle() {} + explicit IfcTubeBundle (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcTubeBundle (IfcEntityInstanceData&& e); - IfcTubeBundle (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcTubeBundle > list; + // IfcTubeBundle (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcTubeBundleTypeEnum::Value > v9_PredefinedType); }; /// The distribution control element type IfcUnitaryControlElementType defines commonly shared information for occurrences of unitary control elements. The set of shared information may include: /// @@ -45103,16 +49833,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcUnitaryControlElementType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcUnitaryControlElement for standard port definitions. -class IFC_PARSE_API IfcUnitaryControlElementType : public IfcDistributionControlElementType { +class IFC_PARSE_API IfcUnitaryControlElementType : public IfcDistributionControlElementType { public: + IfcUnitaryControlElementType() {} + explicit IfcUnitaryControlElementType (const std::weak_ptr& data) : IfcDistributionControlElementType(data) {} + /// Identifies the predefined types of unitary control element from which the type required may be set. ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcUnitaryControlElementType (IfcEntityInstanceData&& e); - IfcUnitaryControlElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcUnitaryControlElementType > list; + // IfcUnitaryControlElementType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value v10_PredefinedType); }; /// Unitary equipment typically combine a number of components into a single product, such as air handlers, pre-packaged rooftop air-conditioning units, and split systems. /// @@ -45186,15 +49917,16 @@ public: /// /// Figure 232 illustrates unitary equipment port use. /// Figure 232 — Unitary equipment port use -class IFC_PARSE_API IfcUnitaryEquipment : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcUnitaryEquipment : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcUnitaryEquipment() {} + explicit IfcUnitaryEquipment (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcUnitaryEquipment (IfcEntityInstanceData&& e); - IfcUnitaryEquipment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcUnitaryEquipment > list; + // IfcUnitaryEquipment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcUnitaryEquipmentTypeEnum::Value > v9_PredefinedType); }; /// A valve is used in a building services piping distribution system to control or modulate the flow of the fluid. /// @@ -45382,15 +50114,16 @@ public: /// /// Figure 233 illustrates valve port use. /// Figure 233 — Valve port use -class IFC_PARSE_API IfcValve : public IfcFlowController { +class IFC_PARSE_API IfcValve : public IfcFlowController { public: - boost::optional< ::Ifc4x3_add2::IfcValveTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcValveTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcValve() {} + explicit IfcValve (const std::weak_ptr& data) : IfcFlowController(data) {} + + std::optional< ::Ifc4x3_add2::IfcValveTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcValveTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcValve (IfcEntityInstanceData&& e); - IfcValve (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcValveTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcValve > list; + // IfcValve (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcValveTypeEnum::Value > v9_PredefinedType); }; /// Definition from ISO 6707-1:1989: Vertical construction /// usually in masonry or in concrete which bounds or subdivides a @@ -45634,19 +50367,20 @@ public: /// that relationship object is defined at the level of the subtypes /// of IfcWall and at the /// IfcRelConnectsPathElements. -class IFC_PARSE_API IfcWall : public IfcBuiltElement { +class IFC_PARSE_API IfcWall : public IfcBuiltElement { public: + IfcWall() {} + explicit IfcWall (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Predefined generic type for a wall that is specified in an enumeration. There may be a property set given specifically for the predefined types. /// NOTE The PredefinedType shall only be used, if no type object IfcWallType is assigned, providing its own IfcWallType.PredefinedType. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcWall (IfcEntityInstanceData&& e); - IfcWall (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcWall > list; + // IfcWall (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value > v9_PredefinedType); }; /// The IfcWallStandardCase defines a wall with certain /// constraints for the provision of parameters and with certain @@ -45850,13 +50584,14 @@ public: /// /// Figure 139 — Wall body clipping straight /// Figure 140 — Wall body clipping curved -class IFC_PARSE_API IfcWallStandardCase : public IfcWall { +class IFC_PARSE_API IfcWallStandardCase : public IfcWall { public: - virtual const IfcParse::entity& declaration() const; + IfcWallStandardCase() {} + explicit IfcWallStandardCase (const std::weak_ptr& data) : IfcWall(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcWallStandardCase (IfcEntityInstanceData&& e); - IfcWallStandardCase (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcWallStandardCase > list; + // IfcWallStandardCase (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcWallTypeEnum::Value > v9_PredefinedType); }; /// A waste terminal has the purpose of collecting or intercepting waste from one or more sanitary terminals or other fluid waste generating equipment and discharging it into a single waste/drainage system. /// A waste terminal provides for all forms of trap and waste point that collects discharge from a sanitary terminal and discharges it into a waste/drainage subsystem or that collects waste from several terminals and passes it into a single waste/drainage subsystem. This includes the P and S traps from soil sanitary terminals, sinks, and basins as well as floor wastes and gully traps that provide collection points. @@ -45962,15 +50697,16 @@ public: /// /// Inlet (WASTE, SINK): Waste inlet. /// Outlet (WASTE, SOURCE): Waste outlet. -class IFC_PARSE_API IfcWasteTerminal : public IfcFlowTerminal { +class IFC_PARSE_API IfcWasteTerminal : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcWasteTerminal() {} + explicit IfcWasteTerminal (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcWasteTerminal (IfcEntityInstanceData&& e); - IfcWasteTerminal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcWasteTerminal > list; + // IfcWasteTerminal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcWasteTerminalTypeEnum::Value > v9_PredefinedType); }; /// Definition form ISO 6707-1:1989: Construction for /// closing a vertical or near vertical opening in a wall or pitched @@ -46330,38 +51066,39 @@ public: /// . /// /// Figure 144 — Window operations -class IFC_PARSE_API IfcWindow : public IfcBuiltElement { +class IFC_PARSE_API IfcWindow : public IfcBuiltElement { public: + IfcWindow() {} + explicit IfcWindow (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Overall measure of the height, it reflects the Z Dimension of a bounding box, enclosing the body of the window opening. If omitted, the OverallHeight should be taken from the geometric representation of the IfcOpening in which the window is inserted. /// /// NOTE  The body of the window might be taller then the window opening (e.g. in cases where the window lining includes a casing). In these cases the OverallHeight shall still be given as the window opening height, and not as the total height of the window lining. - boost::optional< double > OverallHeight() const; - void setOverallHeight(boost::optional< double > v); + std::optional< double > OverallHeight() const; + void setOverallHeight(const std::optional< double >& v); /// Overall measure of the width, it reflects the X Dimension of a bounding box, enclosing the body of the window opening. If omitted, the OverallWidth should be taken from the geometric representation of the IfcOpening in which the window is inserted. /// /// NOTE  The body of the window might be wider then the window opening (e.g. in cases where the window lining includes a casing). In these cases the OverallWidth shall still be given as the window opening width, and not as the total width of the window lining. - boost::optional< double > OverallWidth() const; - void setOverallWidth(boost::optional< double > v); + std::optional< double > OverallWidth() const; + void setOverallWidth(const std::optional< double >& v); /// Predefined generic type for a window that is specified in an enumeration. There may be a property set given specificly for the predefined types. /// NOTE The PredefinedType shall only be used, if no type object IfcWindowType is assigned, providing its own IfcWindowType.PredefinedType. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< ::Ifc4x3_add2::IfcWindowTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcWindowTypeEnum::Value > v); + std::optional< ::Ifc4x3_add2::IfcWindowTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcWindowTypeEnum::Value >& v); /// Type defining the general layout of the window in terms of the partitioning of panels. /// /// NOTE The PartitioningType shall only be used, if no type object IfcWindowType is assigned, providing its own IfcWindowType.PartitioningType. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value > PartitioningType() const; - void setPartitioningType(boost::optional< ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value > v); - boost::optional< std::string > UserDefinedPartitioningType() const; - void setUserDefinedPartitioningType(boost::optional< std::string > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value > PartitioningType() const; + void setPartitioningType(const std::optional< ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value >& v); + std::optional< std::string > UserDefinedPartitioningType() const; + void setUserDefinedPartitioningType(const std::optional< std::string >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcWindow (IfcEntityInstanceData&& e); - IfcWindow (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4x3_add2::IfcWindowTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value > v12_PartitioningType, boost::optional< std::string > v13_UserDefinedPartitioningType); - typedef aggregate_of< IfcWindow > list; + // IfcWindow (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< double > v9_OverallHeight, std::optional< double > v10_OverallWidth, std::optional< ::Ifc4x3_add2::IfcWindowTypeEnum::Value > v11_PredefinedType, std::optional< ::Ifc4x3_add2::IfcWindowTypePartitioningEnum::Value > v12_PartitioningType, std::optional< std::string > v13_UserDefinedPartitioningType); }; /// The distribution control element type IfcActuatorType defines commonly shared information for occurrences of actuators. The set of shared information may include: /// @@ -46394,16 +51131,17 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcActuatorType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcActuator for standard port definitions. -class IFC_PARSE_API IfcActuatorType : public IfcDistributionControlElementType { +class IFC_PARSE_API IfcActuatorType : public IfcDistributionControlElementType { public: + IfcActuatorType() {} + explicit IfcActuatorType (const std::weak_ptr& data) : IfcDistributionControlElementType(data) {} + /// Identifies the predefined types of actuator from which the type required may be set. ::Ifc4x3_add2::IfcActuatorTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcActuatorTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcActuatorTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcActuatorType (IfcEntityInstanceData&& e); - IfcActuatorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcActuatorTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcActuatorType > list; + // IfcActuatorType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcActuatorTypeEnum::Value v10_PredefinedType); }; /// An air terminal is a terminating or origination point for the transfer of air between distribution system(s) and one or more spaces. It can also be used for the transfer of air between adjacent spaces. /// @@ -46462,15 +51200,16 @@ public: /// /// Figure 211 illustrates air terminal port use. /// Figure 211 — Air terminal port use -class IFC_PARSE_API IfcAirTerminal : public IfcFlowTerminal { +class IFC_PARSE_API IfcAirTerminal : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcAirTerminal() {} + explicit IfcAirTerminal (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAirTerminal (IfcEntityInstanceData&& e); - IfcAirTerminal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcAirTerminal > list; + // IfcAirTerminal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcAirTerminalTypeEnum::Value > v9_PredefinedType); }; /// An air terminal box typically participates in an HVAC duct distribution system and is used to control or modulate the amount of air delivered to its downstream ductwork. An air terminal box type is often referred to as an "air flow regulator". /// @@ -46514,15 +51253,16 @@ public: /// /// Inlet (AIRCONDITIONING, SINK): Incoming air. /// Outlet (AIRCONDITIONING, SOURCE): Outgoing regulated air. -class IFC_PARSE_API IfcAirTerminalBox : public IfcFlowController { +class IFC_PARSE_API IfcAirTerminalBox : public IfcFlowController { public: - boost::optional< ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcAirTerminalBox() {} + explicit IfcAirTerminalBox (const std::weak_ptr& data) : IfcFlowController(data) {} + + std::optional< ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAirTerminalBox (IfcEntityInstanceData&& e); - IfcAirTerminalBox (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcAirTerminalBox > list; + // IfcAirTerminalBox (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcAirTerminalBoxTypeEnum::Value > v9_PredefinedType); }; /// An air-to-air heat recovery device employs a counter-flow heat exchanger between inbound and outbound air flow. It is typically used to transfer heat from warmer air in one chamber to cooler air in the second chamber (i.e., typically used to recover heat from the conditioned air being exhausted and the outside air being supplied to a building), resulting in energy savings from reduced heating (or cooling) requirements. /// @@ -46569,15 +51309,16 @@ public: /// AirOutlet (AIRCONDITIONING, SOURCE): Colder air out. /// ExhaustInlet (VENTILATION, SINK): Hot return air in. /// ExhaustOutlet (VENTILATION, SOURCE): Hotter return air out. -class IFC_PARSE_API IfcAirToAirHeatRecovery : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcAirToAirHeatRecovery : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcAirToAirHeatRecovery() {} + explicit IfcAirToAirHeatRecovery (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAirToAirHeatRecovery (IfcEntityInstanceData&& e); - IfcAirToAirHeatRecovery (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcAirToAirHeatRecovery > list; + // IfcAirToAirHeatRecovery (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcAirToAirHeatRecoveryTypeEnum::Value > v9_PredefinedType); }; /// The distribution control element type IfcAlarmType defines commonly shared information for occurrences of alarms. The set of shared information may include: /// @@ -46605,27 +51346,29 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcAlarmType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcAlarm for standard port definitions. -class IFC_PARSE_API IfcAlarmType : public IfcDistributionControlElementType { +class IFC_PARSE_API IfcAlarmType : public IfcDistributionControlElementType { public: + IfcAlarmType() {} + explicit IfcAlarmType (const std::weak_ptr& data) : IfcDistributionControlElementType(data) {} + /// Identifies the predefined types of alarm from which the type required may be set. ::Ifc4x3_add2::IfcAlarmTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcAlarmTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcAlarmTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAlarmType (IfcEntityInstanceData&& e); - IfcAlarmType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAlarmTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcAlarmType > list; + // IfcAlarmType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcAlarmTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcAlignment : public IfcLinearPositioningElement { +class IFC_PARSE_API IfcAlignment : public IfcLinearPositioningElement { public: - boost::optional< ::Ifc4x3_add2::IfcAlignmentTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcAlignmentTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcAlignment() {} + explicit IfcAlignment (const std::weak_ptr& data) : IfcLinearPositioningElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcAlignmentTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcAlignmentTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAlignment (IfcEntityInstanceData&& e); - IfcAlignment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc4x3_add2::IfcAlignmentTypeEnum::Value > v8_PredefinedType); - typedef aggregate_of< IfcAlignment > list; + // IfcAlignment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< ::Ifc4x3_add2::IfcAlignmentTypeEnum::Value > v8_PredefinedType); }; /// An audio-visual appliance is a device that displays, captures, transmits, or receives audio or video. /// Audio-visual appliances may be fixed in place or may be able to be moved from one space to another. They may require an electrical supply that may be supplied either by an electrical circuit or provided from a local battery source. Audio-visual appliances may be connected to data circuits including specialist circuits for audio visual purposes only. @@ -46805,15 +51548,16 @@ public: /// Control (CONTROL, SINK): Receives control signal. /// Input (TV, SINK): Receives modulated data feed such as satellite, cable, or over-the-air. /// Output (AUDIOVISUAL, SOURCE): Rendered media content. -class IFC_PARSE_API IfcAudioVisualAppliance : public IfcFlowTerminal { +class IFC_PARSE_API IfcAudioVisualAppliance : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcAudioVisualAppliance() {} + explicit IfcAudioVisualAppliance (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAudioVisualAppliance (IfcEntityInstanceData&& e); - IfcAudioVisualAppliance (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcAudioVisualAppliance > list; + // IfcAudioVisualAppliance (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcAudioVisualApplianceTypeEnum::Value > v9_PredefinedType); }; /// Definition from ISO 6707-1:1989: Structural member designed to carry loads between or beyond points of support, usually narrow in relation to its length and horizontal or nearly so. /// @@ -47052,30 +51796,32 @@ public: /// 'AdvancedSweptSolid', 'SurfaceModel', and 'Brep' geometric /// representation, shall apply to the MappedRepresentation of /// the IfcRepresentationMap. -class IFC_PARSE_API IfcBeam : public IfcBuiltElement { +class IFC_PARSE_API IfcBeam : public IfcBuiltElement { public: + IfcBeam() {} + explicit IfcBeam (const std::weak_ptr& data) : IfcBuiltElement(data) {} + /// Predefined generic type for a beam that is specified in an enumeration. There may be a property set given specificly for the predefined types. /// NOTE The PredefinedType shall only be used, if no type object IfcBeamType is assigned, providing its own IfcBeamType.PredefinedType. /// /// IFC2x4 CHANGE The attribute has been added at the end of the entity definition. - boost::optional< ::Ifc4x3_add2::IfcBeamTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBeamTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcBeamTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBeamTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBeam (IfcEntityInstanceData&& e); - IfcBeam (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcBeamTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcBeam > list; + // IfcBeam (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcBeamTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcBearing : public IfcBuiltElement { +class IFC_PARSE_API IfcBearing : public IfcBuiltElement { public: - boost::optional< ::Ifc4x3_add2::IfcBearingTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBearingTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcBearing() {} + explicit IfcBearing (const std::weak_ptr& data) : IfcBuiltElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcBearingTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBearingTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBearing (IfcEntityInstanceData&& e); - IfcBearing (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcBearingTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcBearing > list; + // IfcBearing (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcBearingTypeEnum::Value > v9_PredefinedType); }; /// A boiler is a closed, pressure-rated vessel in which water or other fluid is heated using an energy source such as natural gas, heating oil, or electricity. The fluid in the vessel is then circulated out of the boiler for use in various processes or heating applications. /// IfcBoiler is a vessel solely used for heating of water or other fluids. Storage vessels, such as for drinking water storage are considered as tanks and use the IfcTank entity. @@ -47146,24 +51892,26 @@ public: /// /// Figure 213 illustrates boiler port use. /// Figure 213 — Boiler port use -class IFC_PARSE_API IfcBoiler : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcBoiler : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcBoilerTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBoilerTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcBoiler() {} + explicit IfcBoiler (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcBoilerTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBoilerTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBoiler (IfcEntityInstanceData&& e); - IfcBoiler (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcBoilerTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcBoiler > list; + // IfcBoiler (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcBoilerTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcBorehole : public IfcGeotechnicalAssembly { +class IFC_PARSE_API IfcBorehole : public IfcGeotechnicalAssembly { public: - virtual const IfcParse::entity& declaration() const; + IfcBorehole() {} + explicit IfcBorehole (const std::weak_ptr& data) : IfcGeotechnicalAssembly(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBorehole (IfcEntityInstanceData&& e); - IfcBorehole (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcBorehole > list; + // IfcBorehole (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// Definition from IAI: The IfcBuildingElementProxy /// is a proxy definition that provides the same functionality as an @@ -47355,15 +52103,16 @@ public: /// /// No further restrictions (e.g., for the depths of the CSG tree) /// are defined at this level. -class IFC_PARSE_API IfcBuildingElementProxy : public IfcBuiltElement { +class IFC_PARSE_API IfcBuildingElementProxy : public IfcBuiltElement { public: - boost::optional< ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcBuildingElementProxy() {} + explicit IfcBuildingElementProxy (const std::weak_ptr& data) : IfcBuiltElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBuildingElementProxy (IfcEntityInstanceData&& e); - IfcBuildingElementProxy (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcBuildingElementProxy > list; + // IfcBuildingElementProxy (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcBuildingElementProxyTypeEnum::Value > v9_PredefinedType); }; /// A burner is a device that converts fuel into heat through combustion. It includes gas, oil, and wood burners. /// @@ -47406,15 +52155,16 @@ public: /// Ports are specific to the IfcBurner PredefinedType as follows indicated by the IfcDistributionPort Name, PredefinedType, and FlowDirection: /// /// Gas (GAS, SINK): Gas inlet for burner. -class IFC_PARSE_API IfcBurner : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcBurner : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcBurnerTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcBurnerTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcBurner() {} + explicit IfcBurner (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcBurnerTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcBurnerTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcBurner (IfcEntityInstanceData&& e); - IfcBurner (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcBurnerTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcBurner > list; + // IfcBurner (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcBurnerTypeEnum::Value > v9_PredefinedType); }; /// A cable carrier fitting is a fitting that is placed at junction or transition in a cable carrier system. /// @@ -47477,16 +52227,17 @@ public: /// Head (NOTDEFINED, SINK): Head connection. /// Left (NOTDEFINED, SOURCE): Left connection. /// Right (NOTDEFINED, SOURCE): Right connection. -class IFC_PARSE_API IfcCableCarrierFitting : public IfcFlowFitting { +class IFC_PARSE_API IfcCableCarrierFitting : public IfcFlowFitting { public: + IfcCableCarrierFitting() {} + explicit IfcCableCarrierFitting (const std::weak_ptr& data) : IfcFlowFitting(data) {} + /// Identifies the predefined types of cable carrier fitting from which the type required may be set. - boost::optional< ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCableCarrierFitting (IfcEntityInstanceData&& e); - IfcCableCarrierFitting (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcCableCarrierFitting > list; + // IfcCableCarrierFitting (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCableCarrierFittingTypeEnum::Value > v9_PredefinedType); }; /// A cable carrier segment is a flow segment that is specifically used to carry and support cabling. /// @@ -47547,16 +52298,17 @@ public: /// /// Head (NOTDEFINED, SINK): Head connection. /// Tail (NOTDEFINED, SOURCE): Tail connection. -class IFC_PARSE_API IfcCableCarrierSegment : public IfcFlowSegment { +class IFC_PARSE_API IfcCableCarrierSegment : public IfcFlowSegment { public: + IfcCableCarrierSegment() {} + explicit IfcCableCarrierSegment (const std::weak_ptr& data) : IfcFlowSegment(data) {} + /// Identifies the predefined types of cable carrier segment from which the type required may be set. - boost::optional< ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCableCarrierSegment (IfcEntityInstanceData&& e); - IfcCableCarrierSegment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcCableCarrierSegment > list; + // IfcCableCarrierSegment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCableCarrierSegmentTypeEnum::Value > v9_PredefinedType); }; /// A cable fitting is a fitting that is placed at a junction, transition or termination in a cable system. /// @@ -47632,16 +52384,17 @@ public: /// /// Input (NOTDEFINED, SINK): The input of the connector. /// Output (NOTDEFINED, SOURCE): The output of the connector. -class IFC_PARSE_API IfcCableFitting : public IfcFlowFitting { +class IFC_PARSE_API IfcCableFitting : public IfcFlowFitting { public: + IfcCableFitting() {} + explicit IfcCableFitting (const std::weak_ptr& data) : IfcFlowFitting(data) {} + /// Identifies the predefined types of cable fitting from which the type required may be set. - boost::optional< ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCableFitting (IfcEntityInstanceData&& e); - IfcCableFitting (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcCableFitting > list; + // IfcCableFitting (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCableFittingTypeEnum::Value > v9_PredefinedType); }; /// A cable segment is a flow segment used to carry electrical power, data, or telecommunications signals. /// A cable segment is used to typically join two sections of an electrical network or a network of components carrying the electrical service. @@ -47730,27 +52483,29 @@ public: /// /// Input (NOTDEFINED, SINK): Input end of the conductor. /// Output (NOTDEFINED, SOURCE): Output end of the cable. -class IFC_PARSE_API IfcCableSegment : public IfcFlowSegment { +class IFC_PARSE_API IfcCableSegment : public IfcFlowSegment { public: + IfcCableSegment() {} + explicit IfcCableSegment (const std::weak_ptr& data) : IfcFlowSegment(data) {} + /// Identifies the predefined types of cable segment from which the type required may be set. - boost::optional< ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + std::optional< ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCableSegment (IfcEntityInstanceData&& e); - IfcCableSegment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcCableSegment > list; + // IfcCableSegment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCableSegmentTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcCaissonFoundation : public IfcDeepFoundation { +class IFC_PARSE_API IfcCaissonFoundation : public IfcDeepFoundation { public: - boost::optional< ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcCaissonFoundation() {} + explicit IfcCaissonFoundation (const std::weak_ptr& data) : IfcDeepFoundation(data) {} + + std::optional< ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCaissonFoundation (IfcEntityInstanceData&& e); - IfcCaissonFoundation (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcCaissonFoundation > list; + // IfcCaissonFoundation (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCaissonFoundationTypeEnum::Value > v9_PredefinedType); }; /// A chiller is a device used to remove heat from a liquid via a vapor-compression or absorption refrigeration cycle to cool a fluid, typically water or a mixture of water and glycol. The chilled fluid is then used to cool and dehumidify air in a building. /// @@ -47821,15 +52576,16 @@ public: /// /// Figure 215 illustrates chiller port use. /// Figure 215 — Chiller port use -class IFC_PARSE_API IfcChiller : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcChiller : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcChillerTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcChillerTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcChiller() {} + explicit IfcChiller (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcChillerTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcChillerTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcChiller (IfcEntityInstanceData&& e); - IfcChiller (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcChillerTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcChiller > list; + // IfcChiller (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcChillerTypeEnum::Value > v9_PredefinedType); }; /// A coil is a device used to provide heat transfer between non-mixing media. A common example is a cooling coil, which utilizes a finned coil in which circulates chilled water, antifreeze, or refrigerant that is used to remove heat from air moving across the surface of the coil. A coil may be used either for heating or cooling purposes by placing a series of tubes (the coil) carrying a heating or cooling fluid into an airstream. The coil may be constructed from tubes bundled in a serpentine form or from finned tubes that give a extended heat transfer surface. /// Coils may also be used for non-airflow cases such as embedded in a floor slab. @@ -47897,15 +52653,16 @@ public: /// /// Figure 216 illustrates coil port use. /// Figure 216 — Coil port use -class IFC_PARSE_API IfcCoil : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcCoil : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcCoilTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCoilTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcCoil() {} + explicit IfcCoil (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcCoilTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCoilTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCoil (IfcEntityInstanceData&& e); - IfcCoil (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCoilTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcCoil > list; + // IfcCoil (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCoilTypeEnum::Value > v9_PredefinedType); }; /// A communications appliance transmits and receives electronic or digital information as data or sound. /// Communication appliances may be fixed in place or may be able to be moved from one space to another. Communication appliances require an electrical supply that may be supplied either by an electrical circuit or provided from a local battery source. @@ -48009,15 +52766,16 @@ public: /// Link#6 (DATA, SOURCE): A network link to a routed device such as a cable connecting to a computer. /// Link#7 (DATA, SOURCE): A network link to a routed device such as a cable connecting to a computer. /// Link#8 (DATA, SOURCE): A network link to a routed device such as a cable connecting to a computer. -class IFC_PARSE_API IfcCommunicationsAppliance : public IfcFlowTerminal { +class IFC_PARSE_API IfcCommunicationsAppliance : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcCommunicationsAppliance() {} + explicit IfcCommunicationsAppliance (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCommunicationsAppliance (IfcEntityInstanceData&& e); - IfcCommunicationsAppliance (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcCommunicationsAppliance > list; + // IfcCommunicationsAppliance (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCommunicationsApplianceTypeEnum::Value > v9_PredefinedType); }; /// A compressor is a device that compresses a fluid typically used in a refrigeration circuit. /// @@ -48065,15 +52823,16 @@ public: /// /// Figure 217 illustrates compressor port use. /// Figure 217 — Compressor port use -class IFC_PARSE_API IfcCompressor : public IfcFlowMovingDevice { +class IFC_PARSE_API IfcCompressor : public IfcFlowMovingDevice { public: - boost::optional< ::Ifc4x3_add2::IfcCompressorTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCompressorTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcCompressor() {} + explicit IfcCompressor (const std::weak_ptr& data) : IfcFlowMovingDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcCompressorTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCompressorTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCompressor (IfcEntityInstanceData&& e); - IfcCompressor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCompressorTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcCompressor > list; + // IfcCompressor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCompressorTypeEnum::Value > v9_PredefinedType); }; /// A condenser is a device that is used to dissipate heat, typically by condensing a substance such as a refrigerant from its gaseous to its liquid state. /// @@ -48141,15 +52900,16 @@ public: /// /// Figure 218 illustrates condenser port use. /// Figure 218 — Condenser port use -class IFC_PARSE_API IfcCondenser : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcCondenser : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcCondenserTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCondenserTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcCondenser() {} + explicit IfcCondenser (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcCondenserTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCondenserTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCondenser (IfcEntityInstanceData&& e); - IfcCondenser (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCondenserTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcCondenser > list; + // IfcCondenser (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCondenserTypeEnum::Value > v9_PredefinedType); }; /// The distribution control element type IfcControllerType defines commonly shared information for occurrences of controllers. The set of shared information may include: /// @@ -48187,27 +52947,29 @@ public: /// /// Port Use Definition /// The distribution ports relating to the IfcControllerType type are defined by IfcDistributionPort and attached by the IfcRelConnectsPortToElement relationship. Ports are reflected at occurrences of this type using the IfcRelDefinesByObject relationship. Refer to the documentation at IfcController for standard port definitions. -class IFC_PARSE_API IfcControllerType : public IfcDistributionControlElementType { +class IFC_PARSE_API IfcControllerType : public IfcDistributionControlElementType { public: + IfcControllerType() {} + explicit IfcControllerType (const std::weak_ptr& data) : IfcDistributionControlElementType(data) {} + /// Identifies the predefined types of controller from which the type required may be set. ::Ifc4x3_add2::IfcControllerTypeEnum::Value PredefinedType() const; - void setPredefinedType(::Ifc4x3_add2::IfcControllerTypeEnum::Value v); - virtual const IfcParse::entity& declaration() const; + void setPredefinedType(const ::Ifc4x3_add2::IfcControllerTypeEnum::Value& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcControllerType (IfcEntityInstanceData&& e); - IfcControllerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_add2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcControllerTypeEnum::Value v10_PredefinedType); - typedef aggregate_of< IfcControllerType > list; + // IfcControllerType (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ApplicableOccurrence, std::optional< std::vector< ::Ifc4x3_add2::IfcPropertySetDefinition > > v6_HasPropertySets, std::optional< std::vector< ::Ifc4x3_add2::IfcRepresentationMap > > v7_RepresentationMaps, std::optional< std::string > v8_Tag, std::optional< std::string > v9_ElementType, ::Ifc4x3_add2::IfcControllerTypeEnum::Value v10_PredefinedType); }; -class IFC_PARSE_API IfcConveyorSegment : public IfcFlowSegment { +class IFC_PARSE_API IfcConveyorSegment : public IfcFlowSegment { public: - boost::optional< ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcConveyorSegment() {} + explicit IfcConveyorSegment (const std::weak_ptr& data) : IfcFlowSegment(data) {} + + std::optional< ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcConveyorSegment (IfcEntityInstanceData&& e); - IfcConveyorSegment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcConveyorSegment > list; + // IfcConveyorSegment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcConveyorSegmentTypeEnum::Value > v9_PredefinedType); }; /// A cooled beam (or chilled beam) is a device typically used to cool air by circulating a fluid such as chilled water through exposed finned tubes above a space. Typically mounted overhead near or within a ceiling, the cooled beam uses convection to cool the space below it by acting as a heat sink for the naturally rising warm air of the space. Once cooled, the air naturally drops back to the floor where the cycle begins again. /// @@ -48258,15 +53020,16 @@ public: /// /// ChilledWaterIn (CHILLEDWATER, SINK): Chilled water entering. /// ChilledWaterOut (CHILLEDWATER, SOURCE): Chilled water leaving. -class IFC_PARSE_API IfcCooledBeam : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcCooledBeam : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcCooledBeam() {} + explicit IfcCooledBeam (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCooledBeam (IfcEntityInstanceData&& e); - IfcCooledBeam (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcCooledBeam > list; + // IfcCooledBeam (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCooledBeamTypeEnum::Value > v9_PredefinedType); }; /// A cooling tower is a device which rejects heat to ambient air by circulating a fluid such as water through it to reduce its temperature by partial evaporation. /// @@ -48325,15 +53088,16 @@ public: /// /// Figure 219 illustrates cooling tower port use. /// Figure 219 — Cooling tower port use -class IFC_PARSE_API IfcCoolingTower : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcCoolingTower : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcCoolingTower() {} + explicit IfcCoolingTower (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcCoolingTower (IfcEntityInstanceData&& e); - IfcCoolingTower (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcCoolingTower > list; + // IfcCoolingTower (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcCoolingTowerTypeEnum::Value > v9_PredefinedType); }; /// A damper typically participates in an HVAC duct distribution system and is used to control or modulate the flow of air. /// @@ -48406,26 +53170,28 @@ public: /// /// Figure 220 illustrates damper port use. /// Figure 220 — Damper port use -class IFC_PARSE_API IfcDamper : public IfcFlowController { +class IFC_PARSE_API IfcDamper : public IfcFlowController { public: - boost::optional< ::Ifc4x3_add2::IfcDamperTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDamperTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcDamper() {} + explicit IfcDamper (const std::weak_ptr& data) : IfcFlowController(data) {} + + std::optional< ::Ifc4x3_add2::IfcDamperTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDamperTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDamper (IfcEntityInstanceData&& e); - IfcDamper (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcDamperTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcDamper > list; + // IfcDamper (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcDamperTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcDistributionBoard : public IfcFlowController { +class IFC_PARSE_API IfcDistributionBoard : public IfcFlowController { public: - boost::optional< ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcDistributionBoard() {} + explicit IfcDistributionBoard (const std::weak_ptr& data) : IfcFlowController(data) {} + + std::optional< ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDistributionBoard (IfcEntityInstanceData&& e); - IfcDistributionBoard (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcDistributionBoard > list; + // IfcDistributionBoard (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcDistributionBoardTypeEnum::Value > v9_PredefinedType); }; /// A distribution chamber element defines a place at which distribution systems and their constituent elements may be inspected or through which they may travel. /// @@ -48458,24 +53224,26 @@ public: /// 'Cover': The material from which the access cover to the chamber is constructed. /// 'Fill': The material that is used to fill the duct (where used). /// 'Wall': The material from which the wall of the duct is constructed. -class IFC_PARSE_API IfcDistributionChamberElement : public IfcDistributionFlowElement { +class IFC_PARSE_API IfcDistributionChamberElement : public IfcDistributionFlowElement { public: - boost::optional< ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcDistributionChamberElement() {} + explicit IfcDistributionChamberElement (const std::weak_ptr& data) : IfcDistributionFlowElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDistributionChamberElement (IfcEntityInstanceData&& e); - IfcDistributionChamberElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcDistributionChamberElement > list; + // IfcDistributionChamberElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcDistributionChamberElementTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcDistributionCircuit : public IfcDistributionSystem { +class IFC_PARSE_API IfcDistributionCircuit : public IfcDistributionSystem { public: - virtual const IfcParse::entity& declaration() const; + IfcDistributionCircuit() {} + explicit IfcDistributionCircuit (const std::weak_ptr& data) : IfcDistributionSystem(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDistributionCircuit (IfcEntityInstanceData&& e); - IfcDistributionCircuit (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v7_PredefinedType); - typedef aggregate_of< IfcDistributionCircuit > list; + // IfcDistributionCircuit (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, std::optional< std::string > v6_LongName, std::optional< ::Ifc4x3_add2::IfcDistributionSystemEnum::Value > v7_PredefinedType); }; /// The distribution element IfcDistributionControlElement defines occurrence elements of a building automation control system that are used to impart control over elements of a distribution system. /// @@ -48555,14 +53323,15 @@ public: /// For all representations, if a IfcDistributionControlElement occurrence is defined by a IfcDistributionControlElementType having a representation of the same identifier, then 'MappedRepresentation' should be used at the occurrence unless overridden. /// /// If materials are defined, geometry of each representation (most typically the 'Body' representation) may be organized into shape aspects where styles may be derived by correlating IfcShapeAspect.Name to a corresponding material (IfcMaterialConstituent.Name). -class IFC_PARSE_API IfcDistributionControlElement : public IfcDistributionElement { +class IFC_PARSE_API IfcDistributionControlElement : public IfcDistributionElement { public: - aggregate_of< IfcRelFlowControlElements >::ptr AssignedToFlowElement() const; // INVERSE IfcRelFlowControlElements::RelatedControlElements - virtual const IfcParse::entity& declaration() const; + IfcDistributionControlElement() {} + explicit IfcDistributionControlElement (const std::weak_ptr& data) : IfcDistributionElement(data) {} + + std::vector< IfcRelFlowControlElements > AssignedToFlowElement() const; // INVERSE IfcRelFlowControlElements::RelatedControlElements + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDistributionControlElement (IfcEntityInstanceData&& e); - IfcDistributionControlElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcDistributionControlElement > list; + // IfcDistributionControlElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// A duct fitting is a junction or transition in a ducted flow distribution system or used to connect duct segments, resulting changes in flow characteristics to the fluid such as direction and flow rate. /// @@ -48639,15 +53408,16 @@ public: /// /// Figure 221 illustrates duct fitting port use. /// Figure 221 — Duct fitting port use -class IFC_PARSE_API IfcDuctFitting : public IfcFlowFitting { +class IFC_PARSE_API IfcDuctFitting : public IfcFlowFitting { public: - boost::optional< ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcDuctFitting() {} + explicit IfcDuctFitting (const std::weak_ptr& data) : IfcFlowFitting(data) {} + + std::optional< ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDuctFitting (IfcEntityInstanceData&& e); - IfcDuctFitting (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcDuctFitting > list; + // IfcDuctFitting (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcDuctFittingTypeEnum::Value > v9_PredefinedType); }; /// A duct segment is used to typically join two sections of duct network. /// @@ -48698,15 +53468,16 @@ public: /// /// Figure 222 illustrates duct segment port use. /// Figure 222 — Duct segment port use -class IFC_PARSE_API IfcDuctSegment : public IfcFlowSegment { +class IFC_PARSE_API IfcDuctSegment : public IfcFlowSegment { public: - boost::optional< ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcDuctSegment() {} + explicit IfcDuctSegment (const std::weak_ptr& data) : IfcFlowSegment(data) {} + + std::optional< ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDuctSegment (IfcEntityInstanceData&& e); - IfcDuctSegment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcDuctSegment > list; + // IfcDuctSegment (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcDuctSegmentTypeEnum::Value > v9_PredefinedType); }; /// A duct silencer is a device that is typically installed inside a duct distribution system for the purpose of reducing the noise levels from air movement, fan noise, etc. in the adjacent space or downstream of the duct silencer device. /// @@ -48750,15 +53521,16 @@ public: /// /// Inlet (NOTDEFINED, SINK): The flow inlet. /// Outlet (NOTDEFINED, SOURCE): The flow outlet. -class IFC_PARSE_API IfcDuctSilencer : public IfcFlowTreatmentDevice { +class IFC_PARSE_API IfcDuctSilencer : public IfcFlowTreatmentDevice { public: - boost::optional< ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcDuctSilencer() {} + explicit IfcDuctSilencer (const std::weak_ptr& data) : IfcFlowTreatmentDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcDuctSilencer (IfcEntityInstanceData&& e); - IfcDuctSilencer (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcDuctSilencer > list; + // IfcDuctSilencer (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcDuctSilencerTypeEnum::Value > v9_PredefinedType); }; /// A communications appliance transmits and receives electronic or digital information as data or sound. /// Communication appliances may be fixed in place or may be able to be moved from one space to another. Communication appliances require an electrical supply that may be supplied either by an electrical circuit or provided from a local battery source. @@ -48858,15 +53630,16 @@ public: /// /// Figure 197 illustrates electric appliance port use. /// Figure 197 — Electric appliance port use -class IFC_PARSE_API IfcElectricAppliance : public IfcFlowTerminal { +class IFC_PARSE_API IfcElectricAppliance : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcElectricAppliance() {} + explicit IfcElectricAppliance (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElectricAppliance (IfcEntityInstanceData&& e); - IfcElectricAppliance (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcElectricAppliance > list; + // IfcElectricAppliance (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcElectricApplianceTypeEnum::Value > v9_PredefinedType); }; /// A distribution board is a flow controller in which instances of electrical devices are brought together at a single place for a particular purpose. /// A distribution provides a housing for connected electrical distribution elements so that they can be viewed, operated or acted upon from a single place. Each connected item may have its own geometric representation and location. @@ -48925,15 +53698,16 @@ public: /// /// Figure 199 illustrates electric distribution board port use. /// Figure 199 — Electric distribution board port use -class IFC_PARSE_API IfcElectricDistributionBoard : public IfcFlowController { +class IFC_PARSE_API IfcElectricDistributionBoard : public IfcFlowController { public: - boost::optional< ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcElectricDistributionBoard() {} + explicit IfcElectricDistributionBoard (const std::weak_ptr& data) : IfcFlowController(data) {} + + std::optional< ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElectricDistributionBoard (IfcEntityInstanceData&& e); - IfcElectricDistributionBoard (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcElectricDistributionBoard > list; + // IfcElectricDistributionBoard (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcElectricDistributionBoardTypeEnum::Value > v9_PredefinedType); }; /// An electric flow storage device is a device in which electrical energy is stored and from which energy may be progressively released. /// @@ -48976,26 +53750,28 @@ public: /// /// Line (ELECTRICAL, SINK): Incoming power used to charge the flow storage device. /// Load (ELECTRICAL, SOURCE): Outgoing power backed by the flow storage device. -class IFC_PARSE_API IfcElectricFlowStorageDevice : public IfcFlowStorageDevice { +class IFC_PARSE_API IfcElectricFlowStorageDevice : public IfcFlowStorageDevice { public: - boost::optional< ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcElectricFlowStorageDevice() {} + explicit IfcElectricFlowStorageDevice (const std::weak_ptr& data) : IfcFlowStorageDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElectricFlowStorageDevice (IfcEntityInstanceData&& e); - IfcElectricFlowStorageDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcElectricFlowStorageDevice > list; + // IfcElectricFlowStorageDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcElectricFlowStorageDeviceTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcElectricFlowTreatmentDevice : public IfcFlowTreatmentDevice { +class IFC_PARSE_API IfcElectricFlowTreatmentDevice : public IfcFlowTreatmentDevice { public: - boost::optional< ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcElectricFlowTreatmentDevice() {} + explicit IfcElectricFlowTreatmentDevice (const std::weak_ptr& data) : IfcFlowTreatmentDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElectricFlowTreatmentDevice (IfcEntityInstanceData&& e); - IfcElectricFlowTreatmentDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcElectricFlowTreatmentDevice > list; + // IfcElectricFlowTreatmentDevice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v9_PredefinedType); }; /// An electric generator is an engine that is a machine for converting mechanical energy into electrical energy. /// @@ -49044,15 +53820,16 @@ public: /// Ports are specific to the IfcElectricGenerator PredefinedType as follows indicated by the IfcDistributionPort Name, PredefinedType, and FlowDirection: /// /// Load (ELECTRICAL, SOURCE): Outgoing power from generator. -class IFC_PARSE_API IfcElectricGenerator : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcElectricGenerator : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcElectricGenerator() {} + explicit IfcElectricGenerator (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElectricGenerator (IfcEntityInstanceData&& e); - IfcElectricGenerator (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcElectricGenerator > list; + // IfcElectricGenerator (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcElectricGeneratorTypeEnum::Value > v9_PredefinedType); }; /// An electric motor is an engine that is a machine for converting electrical energy into mechanical energy. /// @@ -49095,15 +53872,16 @@ public: /// /// Line (ELECTRICAL, SINK): Receives electrical power. /// Drive (NOTDEFINED, SOURCE): Motor connection to a driven device. -class IFC_PARSE_API IfcElectricMotor : public IfcEnergyConversionDevice { +class IFC_PARSE_API IfcElectricMotor : public IfcEnergyConversionDevice { public: - boost::optional< ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcElectricMotor() {} + explicit IfcElectricMotor (const std::weak_ptr& data) : IfcEnergyConversionDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElectricMotor (IfcEntityInstanceData&& e); - IfcElectricMotor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcElectricMotor > list; + // IfcElectricMotor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcElectricMotorTypeEnum::Value > v9_PredefinedType); }; /// An electric time control is a device that applies control to the provision or flow of electrical energy over time. /// @@ -49146,15 +53924,16 @@ public: /// /// Line (ELECTRICAL, SINK): Receives electrical power. /// Load (ELECTRICAL, SOURCE): Transmits electrical power according to time. -class IFC_PARSE_API IfcElectricTimeControl : public IfcFlowController { +class IFC_PARSE_API IfcElectricTimeControl : public IfcFlowController { public: - boost::optional< ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcElectricTimeControl() {} + explicit IfcElectricTimeControl (const std::weak_ptr& data) : IfcFlowController(data) {} + + std::optional< ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcElectricTimeControl (IfcEntityInstanceData&& e); - IfcElectricTimeControl (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcElectricTimeControl > list; + // IfcElectricTimeControl (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcElectricTimeControlTypeEnum::Value > v9_PredefinedType); }; /// A fan is a device which imparts mechanical work on a gas. A typical usage of a fan is to induce airflow in a building services air distribution system. /// @@ -49210,15 +53989,16 @@ public: /// /// Figure 224 illustrates fan port use. /// Figure 224 — Fan port use -class IFC_PARSE_API IfcFan : public IfcFlowMovingDevice { +class IFC_PARSE_API IfcFan : public IfcFlowMovingDevice { public: - boost::optional< ::Ifc4x3_add2::IfcFanTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFanTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcFan() {} + explicit IfcFan (const std::weak_ptr& data) : IfcFlowMovingDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcFanTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFanTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFan (IfcEntityInstanceData&& e); - IfcFan (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFanTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcFan > list; + // IfcFan (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFanTypeEnum::Value > v9_PredefinedType); }; /// A filter is an apparatus used to remove particulate or gaseous matter from fluids and gases. /// @@ -49307,15 +54087,16 @@ public: /// /// Figure 225 illustrates filter port use. /// Figure 225 — Filter port use -class IFC_PARSE_API IfcFilter : public IfcFlowTreatmentDevice { +class IFC_PARSE_API IfcFilter : public IfcFlowTreatmentDevice { public: - boost::optional< ::Ifc4x3_add2::IfcFilterTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFilterTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcFilter() {} + explicit IfcFilter (const std::weak_ptr& data) : IfcFlowTreatmentDevice(data) {} + + std::optional< ::Ifc4x3_add2::IfcFilterTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFilterTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFilter (IfcEntityInstanceData&& e); - IfcFilter (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFilterTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcFilter > list; + // IfcFilter (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFilterTypeEnum::Value > v9_PredefinedType); }; /// A fire suppression terminal has the purpose of delivering a fluid (gas or liquid) that will suppress a fire. /// A fire suppression terminal provides for all forms of sprinkler, spreader and other form of terminal that is connected to a pipework system and intended to act in the role of suppressing a fire. @@ -49383,15 +54164,16 @@ public: /// SPRINKLER /// /// Line (FIREPROTECTION, SINK): Fire protection. -class IFC_PARSE_API IfcFireSuppressionTerminal : public IfcFlowTerminal { +class IFC_PARSE_API IfcFireSuppressionTerminal : public IfcFlowTerminal { public: - boost::optional< ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcFireSuppressionTerminal() {} + explicit IfcFireSuppressionTerminal (const std::weak_ptr& data) : IfcFlowTerminal(data) {} + + std::optional< ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFireSuppressionTerminal (IfcEntityInstanceData&& e); - IfcFireSuppressionTerminal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcFireSuppressionTerminal > list; + // IfcFireSuppressionTerminal (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFireSuppressionTerminalTypeEnum::Value > v9_PredefinedType); }; /// A flow instrument reads and displays the value of a particular property of a system at a point, or displays the difference in the value of a property between two points. /// Instrumentation is typically for the purpose of determining the value of the property at a point in time. It is not the purpose of an instrument to record or integrate the values over time (although they may be connected to recording devices that do perform such a function). This entity provides for all forms of mechanical flow instrument (thermometers, pressure gauges etc.) and electrical flow instruments (ammeters, voltmeters etc.) @@ -49445,33 +54227,36 @@ public: /// Ports are specific to the IfcFlowInstrument PredefinedType as follows indicated by the IfcDistributionPort Name, PredefinedType, and FlowDirection: /// /// Input (SIGNAL, SINK): Receives signal. -class IFC_PARSE_API IfcFlowInstrument : public IfcDistributionControlElement { +class IFC_PARSE_API IfcFlowInstrument : public IfcDistributionControlElement { public: - boost::optional< ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcFlowInstrument() {} + explicit IfcFlowInstrument (const std::weak_ptr& data) : IfcDistributionControlElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcFlowInstrument (IfcEntityInstanceData&& e); - IfcFlowInstrument (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcFlowInstrument > list; + // IfcFlowInstrument (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcFlowInstrumentTypeEnum::Value > v9_PredefinedType); }; -class IFC_PARSE_API IfcGeomodel : public IfcGeotechnicalAssembly { +class IFC_PARSE_API IfcGeomodel : public IfcGeotechnicalAssembly { public: - virtual const IfcParse::entity& declaration() const; + IfcGeomodel() {} + explicit IfcGeomodel (const std::weak_ptr& data) : IfcGeotechnicalAssembly(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcGeomodel (IfcEntityInstanceData&& e); - IfcGeomodel (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcGeomodel > list; + // IfcGeomodel (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; -class IFC_PARSE_API IfcGeoslice : public IfcGeotechnicalAssembly { +class IFC_PARSE_API IfcGeoslice : public IfcGeotechnicalAssembly { public: - virtual const IfcParse::entity& declaration() const; + IfcGeoslice() {} + explicit IfcGeoslice (const std::weak_ptr& data) : IfcGeotechnicalAssembly(data) {} + + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcGeoslice (IfcEntityInstanceData&& e); - IfcGeoslice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag); - typedef aggregate_of< IfcGeoslice > list; + // IfcGeoslice (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag); }; /// Entity Definition /// @@ -49525,15 +54310,16 @@ public: /// In this case a valid value for MethodOfMeasurement shall be provided. /// /// Qto_ProtectiveDeviceTrippingUnitBaseQuantities -class IFC_PARSE_API IfcProtectiveDeviceTrippingUnit : public IfcDistributionControlElement { +class IFC_PARSE_API IfcProtectiveDeviceTrippingUnit : public IfcDistributionControlElement { public: - boost::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcProtectiveDeviceTrippingUnit() {} + explicit IfcProtectiveDeviceTrippingUnit (const std::weak_ptr& data) : IfcDistributionControlElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcProtectiveDeviceTrippingUnit (IfcEntityInstanceData&& e); - IfcProtectiveDeviceTrippingUnit (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcProtectiveDeviceTrippingUnit > list; + // IfcProtectiveDeviceTrippingUnit (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v9_PredefinedType); }; /// A sensor is a device that measures a physical quantity and converts it into a signal which can be read by an observer or by an instrument. /// @@ -49669,15 +54455,16 @@ public: /// /// Figure 180 illustrates sensor port use. /// Figure 180 — Sensor port use -class IFC_PARSE_API IfcSensor : public IfcDistributionControlElement { +class IFC_PARSE_API IfcSensor : public IfcDistributionControlElement { public: - boost::optional< ::Ifc4x3_add2::IfcSensorTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcSensorTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcSensor() {} + explicit IfcSensor (const std::weak_ptr& data) : IfcDistributionControlElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcSensorTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcSensorTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcSensor (IfcEntityInstanceData&& e); - IfcSensor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcSensorTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcSensor > list; + // IfcSensor (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcSensorTypeEnum::Value > v9_PredefinedType); }; /// A unitary control element combines a number of control components into a single product, such as a thermostat or humidistat. /// A unitary control element provides a housing for an aggregation of control or electrical distribution elements that, in combination, perform a singular (unitary) purpose. Each item in the aggregation may have its own geometric representation and location. @@ -49734,15 +54521,16 @@ public: /// /// Figure 182 illustrates unitary control element port use. /// Figure 182 — Unitary control element port use -class IFC_PARSE_API IfcUnitaryControlElement : public IfcDistributionControlElement { +class IFC_PARSE_API IfcUnitaryControlElement : public IfcDistributionControlElement { public: - boost::optional< ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcUnitaryControlElement() {} + explicit IfcUnitaryControlElement (const std::weak_ptr& data) : IfcDistributionControlElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcUnitaryControlElement (IfcEntityInstanceData&& e); - IfcUnitaryControlElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcUnitaryControlElement > list; + // IfcUnitaryControlElement (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcUnitaryControlElementTypeEnum::Value > v9_PredefinedType); }; /// An actuator is a mechanical device for moving or controlling a mechanism or system. An actuator takes energy, usually created by air, electricity, or liquid, and converts that into some kind of motion. /// @@ -49806,15 +54594,16 @@ public: /// Ports are specific to the IfcActuator PredefinedType as follows indicated by the IfcDistributionPort Name, PredefinedType, and FlowDirection: /// /// Input (SIGNAL, SINK): Receives signal. -class IFC_PARSE_API IfcActuator : public IfcDistributionControlElement { +class IFC_PARSE_API IfcActuator : public IfcDistributionControlElement { public: - boost::optional< ::Ifc4x3_add2::IfcActuatorTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcActuatorTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcActuator() {} + explicit IfcActuator (const std::weak_ptr& data) : IfcDistributionControlElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcActuatorTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcActuatorTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcActuator (IfcEntityInstanceData&& e); - IfcActuator (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcActuatorTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcActuator > list; + // IfcActuator (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcActuatorTypeEnum::Value > v9_PredefinedType); }; /// An alarm is a device that signals the existence of a condition or situation that is outside the boundaries of normal expectation or that activates such a device. /// Alarms include the provision of break glass buttons and manual pull boxes that are used to activate alarms. @@ -49858,15 +54647,16 @@ public: /// Ports are specific to the IfcAlarm PredefinedType as follows indicated by the IfcDistributionPort Name, PredefinedType, and FlowDirection: /// /// Input (SIGNAL, SINK): Receives signal. -class IFC_PARSE_API IfcAlarm : public IfcDistributionControlElement { +class IFC_PARSE_API IfcAlarm : public IfcDistributionControlElement { public: - boost::optional< ::Ifc4x3_add2::IfcAlarmTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcAlarmTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcAlarm() {} + explicit IfcAlarm (const std::weak_ptr& data) : IfcDistributionControlElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcAlarmTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcAlarmTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcAlarm (IfcEntityInstanceData&& e); - IfcAlarm (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcAlarmTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcAlarm > list; + // IfcAlarm (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcAlarmTypeEnum::Value > v9_PredefinedType); }; /// A controller is a device that monitors inputs and controls outputs within a building automation system. /// A controller may be physical (having placement within a spatial structure) or logical (a software interface or aggregated within a programmable physical controller). @@ -49974,15 +54764,16 @@ public: /// /// Figure 178 illustrates controller port use. /// Figure 178 — Controller port use -class IFC_PARSE_API IfcController : public IfcDistributionControlElement { +class IFC_PARSE_API IfcController : public IfcDistributionControlElement { public: - boost::optional< ::Ifc4x3_add2::IfcControllerTypeEnum::Value > PredefinedType() const; - void setPredefinedType(boost::optional< ::Ifc4x3_add2::IfcControllerTypeEnum::Value > v); - virtual const IfcParse::entity& declaration() const; + IfcController() {} + explicit IfcController (const std::weak_ptr& data) : IfcDistributionControlElement(data) {} + + std::optional< ::Ifc4x3_add2::IfcControllerTypeEnum::Value > PredefinedType() const; + void setPredefinedType(const std::optional< ::Ifc4x3_add2::IfcControllerTypeEnum::Value >& v); + // virtual const IfcParse::entity& declaration() const; static const IfcParse::entity& Class(); - IfcController (IfcEntityInstanceData&& e); - IfcController (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_add2::IfcControllerTypeEnum::Value > v9_PredefinedType); - typedef aggregate_of< IfcController > list; + // IfcController (std::string v1_GlobalId, ::Ifc4x3_add2::IfcOwnerHistory v2_OwnerHistory, std::optional< std::string > v3_Name, std::optional< std::string > v4_Description, std::optional< std::string > v5_ObjectType, ::Ifc4x3_add2::IfcObjectPlacement v6_ObjectPlacement, ::Ifc4x3_add2::IfcProductRepresentation v7_Representation, std::optional< std::string > v8_Tag, std::optional< ::Ifc4x3_add2::IfcControllerTypeEnum::Value > v9_PredefinedType); }; }; diff --git a/src/ifcparse/Ifc4x3_rc1-schema.cpp b/src/ifcparse/Ifc4x3_rc1-schema.cpp index bf8f352619..460b7534d3 100644 --- a/src/ifcparse/Ifc4x3_rc1-schema.cpp +++ b/src/ifcparse/Ifc4x3_rc1-schema.cpp @@ -33,9 +33,6 @@ using namespace IfcParse; declaration* IFC4X3_RC1_types[1317] = {nullptr}; -const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"RAILWAYCROCODILE"s,"RAILWAYDETONATOR"s,"IfcAlignmentTypeEnum"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAnnotationTypeEnum"s,"ASSUMEDPOINT"s,"ASBUILTAREA"s,"ASBUILTLINE"s,"NON_PHYSICAL_SIGNAL"s,"ASSUMEDLINE"s,"WIDTHEVENT"s,"ASSUMEDAREA"s,"SUPERELEVATIONEVENT"s,"ASBUILTPOINT"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"RAILWAY_COMMUNICATION_TERMINAL"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"PLANE_SURF"s,"CYLINDRICAL_SURF"s,"CONICAL_SURF"s,"SPHERICAL_SURF"s,"TOROIDAL_SURF"s,"SURF_OF_REVOLUTION"s,"RULED_SURF"s,"GENERALISED_CONE"s,"QUADRIC_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"HOLLOWCORE"s,"LINTEL"s,"SPANDREL"s,"T_BEAM"s,"GIRDER_SEGMENT"s,"DIAPHRAGM"s,"PIERCAP"s,"HATSTONE"s,"CORNICE"s,"EDGEBEAM"s,"IfcBearingTypeDisplacementEnum"s,"FIXED_MOVEMENT"s,"GUIDED_LONGITUDINAL"s,"GUIDED_TRANSVERSAL"s,"FREE_MOVEMENT"s,"IfcBearingTypeEnum"s,"CYLINDRICAL"s,"SPHERICAL"s,"ELASTOMERIC"s,"POT"s,"GUIDE"s,"ROCKER"s,"ROLLER"s,"DISK"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"INCLUDES"s,"NOTINCLUDES"s,"INCLUDEDIN"s,"NOTINCLUDEDIN"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBridgePartTypeEnum"s,"ABUTMENT"s,"DECK"s,"DECK_SEGMENT"s,"FOUNDATION"s,"PIER"s,"PIER_SEGMENT"s,"PYLON"s,"SUBSTRUCTURE"s,"SUPERSTRUCTURE"s,"SURFACESTRUCTURE"s,"IfcBridgeTypeEnum"s,"ARCHED"s,"CABLE_STAYED"s,"CANTILEVER"s,"CULVERT"s,"FRAMEWORK"s,"GIRDER"s,"SUSPENSION"s,"TRUSS"s,"IfcBuildingElementPartTypeEnum"s,"INSULATION"s,"PRECASTPANEL"s,"APRON"s,"ARMOURUNIT"s,"SAFETYCAGE"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"PROVISIONFORVOID"s,"PROVISIONFORSPACE"s,"IfcBuildingSystemTypeEnum"s,"FENESTRATION"s,"LOADBEARING"s,"OUTERSHELL"s,"SHADING"s,"REINFORCING"s,"PRESTRESSING"s,"EROSIONPREVENTION"s,"IfcBuiltSystemTypeEnum"s,"MOORING"s,"TRACKCIRCUIT"s,"MOORINGSYSTEM"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"CABLEBRACKET"s,"CATENARYWIRE"s,"DROPPER"s,"IfcCableFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"TRANSITION"s,"FANOUT"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CORESEGMENT"s,"CONTACTWIRESEGMENT"s,"FIBERSEGMENT"s,"FIBERTUBE"s,"OPTICALCABLESEGMENT"s,"STITCHWIRE"s,"WIREPAIRSEGMENT"s,"IfcCaissonFoundationTypeEnum"s,"WELL"s,"CAISSON"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PILASTER"s,"PIERSTEM"s,"PIERSTEM_SEGMENT"s,"STANDCOLUMN"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"COMPUTER"s,"GATEWAY"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"PRINTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"AUTOMATON"s,"INTELLIGENT_PERIPHERAL"s,"IP_NETWORK_EQUIPMENT"s,"OPTICAL_NETWORK_UNIT"s,"TELECOMMAND"s,"TELEPHONYEXCHANGE"s,"TRANSITIONCOMPONENT"s,"TRANSPONDER"s,"TRANSPORTEQUIPMENT"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"MULTIPOSITION"s,"TWOPOSITION"s,"IfcConveyorSegmentTypeEnum"s,"CHUTECONVEYOR"s,"BELTCONVEYOR"s,"SCREWCONVEYOR"s,"BUCKETCONVEYOR"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCourseTypeEnum"s,"ARMOUR"s,"FILTER"s,"BALLASTBED"s,"CORE"s,"PAVEMENT"s,"PROTECTION"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"MOLDING"s,"SKIRTINGBOARD"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"COPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BRACKET"s,"SHOE"s,"EXPANSION_JOINT_DEVICE"s,"BIRDPROTECTION"s,"CABLEARRANGER"s,"INSULATOR"s,"LOCK"s,"TENSIONINGEQUIPMENT"s,"RAILPAD"s,"SLIDINGCHAIR"s,"PANEL_STRENGTHENING"s,"RAILBRACE"s,"ELASTIC_CUSHION"s,"SOUNDABSORPTION"s,"RAIL_LUBRICATION"s,"RAIL_MECHANICAL_EQUIPMENT"s,"IfcDistributionBoardTypeEnum"s,"SWITCHBOARD"s,"CONSUMERUNIT"s,"MOTORCONTROLCENTRE"s,"DISTRIBUTIONFRAME"s,"DISTRIBUTIONBOARD"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"WIRELESS"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"CATENARY_SYSTEM"s,"OVERHEAD_CONTACTLINE_SYSTEM"s,"RETURN_CIRCUIT"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"FIXEDPANEL"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoorTypeEnum"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"BOOM_BARRIER"s,"TURNSTILE"s,"IfcDoorTypeOperationEnum"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcEarthworksCutTypeEnum"s,"DREDGING"s,"EXCAVATION"s,"OVEREXCAVATION"s,"TOPSOILREMOVAL"s,"STEPEXCAVATION"s,"PAVEMENTMILLING"s,"CUT"s,"BASE_EXCAVATION"s,"IfcEarthworksFillTypeEnum"s,"BACKFILL"s,"COUNTERWEIGHT"s,"SUBGRADE"s,"EMBANKMENT"s,"TRANSITIONSECTION"s,"SUBGRADEBED"s,"SLOPEFILL"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERHEATER"s,"FREESTANDINGWATERCOOLER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"CAPACITOR"s,"COMPENSATOR"s,"INDUCTOR"s,"RECHARGER"s,"IfcElectricFlowTreatmentDeviceTypeEnum"s,"ELECTRONICFILTER"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"CROSS_BRACING"s,"MAST"s,"SIGNALASSEMBLY"s,"GRID"s,"SHELTER"s,"SUPPORTINGASSEMBLY"s,"SUSPENSIONASSEMBLY"s,"TRACTION_SWITCHING_ASSEMBLY"s,"TRACKPANEL"s,"TURNOUTPANEL"s,"DILATATIONPANEL"s,"RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY"s,"ENTRANCEWORKS"s,"SUMPBUSTER"s,"TRAFFIC_CALMING_DEVICE"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTRULE"s,"EVENTMESSAGE"s,"EVENTTIME"s,"EVENTCOMPLEX"s,"IfcEventTypeEnum"s,"STARTEVENT"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_WATER"s,"EXTERNAL_FIRE"s,"IfcFacilityPartCommonTypeEnum"s,"SEGMENT"s,"ABOVEGROUND"s,"LEVELCROSSING"s,"BELOWGROUND"s,"TERMINAL"s,"IfcFacilityUsageEnum"s,"LATERAL"s,"REGION"s,"VERTICAL"s,"LONGITUDINAL"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"COMBINED"s,"VOLTMETER"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"CHAIR"s,"TABLE"s,"DESK"s,"BED"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"TECHNICALCABINET"s,"IfcGeographicElementTypeEnum"s,"TERRAIN"s,"SOIL_BORING_POINT"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"RADIAL"s,"TRIANGULAR"s,"IRREGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"TURNOUTHEATING"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcImpactProtectionDeviceTypeEnum"s,"CRASHCUSHION"s,"DAMPINGSYSTEM"s,"FENDER"s,"BUMPER"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"UNIFORM_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"PIECEWISE_BEZIER_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLiquidTerminalTypeEnum"s,"LOADINGARM"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"LOGICALXOR"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMarineFacilityTypeEnum"s,"CANAL"s,"WATERWAYSHIPLIFT"s,"LAUNCHRECOVERY"s,"MARINEDEFENCE"s,"HYDROLIFT"s,"SHIPYARD"s,"SHIPLIFT"s,"PORT"s,"QUAY"s,"FLOATINGDOCK"s,"NAVIGATIONALCHANNEL"s,"BREAKWATER"s,"DRYDOCK"s,"JETTY"s,"SHIPLOCK"s,"BARRIERBEACH"s,"SLIPWAY"s,"WATERWAY"s,"IfcMarinePartTypeEnum"s,"CREST"s,"MANUFACTURING"s,"LOWWATERLINE"s,"WATERFIELD"s,"CILL_LEVEL"s,"BERTHINGSTRUCTURE"s,"COPELEVEL"s,"CHAMBER"s,"STORAGE"s,"APPROACHCHANNEL"s,"VEHICLESERVICING"s,"SHIPTRANSFER"s,"GATEHEAD"s,"GUDINGSTRUCTURE"s,"BELOWWATERLINE"s,"WEATHERSIDE"s,"LANDFIELD"s,"LEEWARDSIDE"s,"ABOVEWATERLINE"s,"ANCHORAGE"s,"NAVIGATIONALAREA"s,"HIGHWATERLINE"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RIVET"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"COUPLER"s,"RAILJOINT"s,"RAILFASTENING"s,"CHAIN"s,"ROPE"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"STIFFENING_RIB"s,"ARCH_SEGMENT"s,"SUSPENSION_CABLE"s,"SUSPENDER"s,"STAY_CABLE"s,"STRUCTURALCABLE"s,"TIEBAR"s,"IfcMobileTelecommunicationsApplianceTypeEnum"s,"E_UTRAN_NODE_B"s,"REMOTE_RADIO_UNIT"s,"ACCESSPOINT"s,"BASETRANSCEIVERSTATION"s,"REMOTEUNIT"s,"BASEBANDUNIT"s,"MASTERUNIT"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMooringDeviceTypeEnum"s,"LINETENSIONER"s,"MAGNETICDEVICE"s,"MOORINGHOOKS"s,"VACUUMDEVICE"s,"BOLLARD"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNavigationElementTypeEnum"s,"BEACON"s,"BUOY"s,"IfcNonNegativeLengthMeasure"s,"IfcNullStyle"s,"NULL"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"DATAOUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"DRIVEN"s,"JETGROUTING"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"FLANGE_PLATE"s,"WEB_PLATE"s,"STIFFENER_PLATE"s,"GUSSET_PLATE"s,"COVER_PLATE"s,"SPLICE_PLATE"s,"BASE_PLATE"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"BLISTER"s,"DEVIATOR"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTRONIC"s,"ELECTROMAGNETIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"CIRCUITBREAKER"s,"EARTHLEAKAGECIRCUITBREAKER"s,"EARTHINGSWITCH"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"ANTI_ARCING_DEVICE"s,"SPARKGAP"s,"VOLTAGELIMITER"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailTypeEnum"s,"RACKRAIL"s,"BLADE"s,"GUARDRAIL"s,"STOCKRAIL"s,"CHECKRAIL"s,"RAIL"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"BALUSTRADE"s,"FENCE"s,"IfcRailwayPartTypeEnum"s,"TRACKSTRUCTURE"s,"TRACKSTRUCTUREPART"s,"LINESIDESTRUCTUREPART"s,"DILATATIONSUPERSTRUCTURE"s,"PLAINTRACKSUPESTRUCTURE"s,"LINESIDESTRUCTURE"s,"TURNOUTSUPERSTRUCTURE"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"DAILY"s,"WEEKLY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReferentTypeEnum"s,"KILOPOINT"s,"MILEPOINT"s,"STATION"s,"REFERENCEMARKER"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcedSoilTypeEnum"s,"SURCHARGEPRELOADED"s,"VERTICALLYDRAINED"s,"DYNAMICALLYCOMPACTED"s,"REPLACED"s,"ROLLERCOMPACTED"s,"GROUTED"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"ANCHORING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"SPACEBAR"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoadPartTypeEnum"s,"ROADSIDEPART"s,"BUS_STOP"s,"HARDSHOULDER"s,"PASSINGBAY"s,"ROADWAYPLATEAU"s,"ROADSIDE"s,"REFUGEISLAND"s,"TOLLPLAZA"s,"CENTRALRESERVE"s,"SIDEWALK"s,"PARKINGBAY"s,"RAILWAYCROSSING"s,"PEDESTRIAN_CROSSING"s,"SOFTSHOULDER"s,"BICYCLECROSSING"s,"CENTRALISLAND"s,"SHOULDER"s,"TRAFFICLANE"s,"ROADSEGMENT"s,"ROUNDABOUT"s,"LAYBY"s,"CARRIAGEWAY"s,"TRAFFICISLAND"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"COSENSOR"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"WINDSENSOR"s,"EARTHQUAKESENSOR"s,"FOREIGNOBJECTDETECTIONSENSOR"s,"OBSTACLESENSOR"s,"RAINSENSOR"s,"SNOWDEPTHSENSOR"s,"TRAINSENSOR"s,"TURNOUTCLOSURESENSOR"s,"WHEELSENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcShadingDeviceTypeEnum"s,"JALOUSIE"s,"SHUTTER"s,"AWNING"s,"IfcShearModulusMeasure"s,"IfcSignTypeEnum"s,"MARKER"s,"PICTORAL"s,"IfcSignalTypeEnum"s,"VISUAL"s,"AUDIO"s,"MIXED"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_SINGLEVALUE"s,"P_ENUMERATEDVALUE"s,"P_BOUNDEDVALUE"s,"P_LISTVALUE"s,"P_TABLEVALUE"s,"P_REFERENCEVALUE"s,"Q_LENGTH"s,"Q_AREA"s,"Q_VOLUME"s,"Q_COUNT"s,"Q_WEIGHT"s,"Q_TIME"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"APPROACH_SLAB"s,"WEARING"s,"TRACKSLAB"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"SPACE"s,"PARKING"s,"GFA"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"OCCUPANCY"s,"RESERVATION"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"LADDER"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"POLYGONAL"s,"EQUIDISTANT"s,"SINUS"s,"PARABOLA"s,"DISCRETE"s,"IfcStructuralCurveMemberTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"MARK"s,"TAG"s,"TREATMENT"s,"DEFECT"s,"HATCHMARKING"s,"LINEMARKING"s,"PAVEMENTSURFACEMARKING"s,"SYMBOLMARKING"s,"NONSKIDSURFACING"s,"RUMBLESTRIP"s,"TRANSVERSERUMBLESTRIP"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"START_AND_STOP_EQUIPMENT"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"WORKSURFACE"s,"SUBRACK"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"PRESSUREVESSEL"s,"VESSEL"s,"OILRETENTIONTRAY"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonConduitTypeEnum"s,"GROUTING_DUCT"s,"TRUMPET"s,"DIABOLO"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTrackElementTypeEnum"s,"TRACKENDOFALIGNMENT"s,"BLOCKINGDEVICE"s,"VEHICLESTOP"s,"SLEEPER"s,"HALF_SET_OF_BLADES"s,"SPEEDREGULATOR"s,"DERAILER"s,"FROG"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"CHOPPER"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTransitionCurveType"s,"BIQUADRATICPARABOLA"s,"BLOSSCURVE"s,"CLOTHOIDCURVE"s,"COSINECURVE"s,"CUBICPARABOLA"s,"SINECURVE"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementFixedTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"CRANEWAY"s,"LIFTINGGEAR"s,"IfcTransportElementNonFixedTypeEnum"s,"VEHICLE"s,"VEHICLETRACKED"s,"ROLLINGSTOCK"s,"VEHICLEWHEELED"s,"VEHICLEAIR"s,"CARGO"s,"VEHICLEMARINE"s,"IfcTransportElementTypeSelect"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"HUMIDISTAT"s,"THERMOSTAT"s,"WEATHERSTATION"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"DEHUMIDIFIER"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationDamperTypeEnum"s,"BENDING_YIELD"s,"SHEAR_YIELD"s,"AXIAL_YIELD"s,"VISCOUS"s,"RUBBER"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"BASE"s,"IfcVoidingFeatureTypeEnum"s,"CUTOUT"s,"NOTCH"s,"HOLE"s,"MITER"s,"CHAMFER"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"SOLIDWALL"s,"STANDARD"s,"ELEMENTEDWALL"s,"RETAININGWALL"s,"WAVEWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWindowTypeEnum"s,"WINDOW"s,"SKYLIGHT"s,"LIGHTDOME"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcPresentationStyleAssignment"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcDerivedMeasureValue"s,"IfcFacilityPartTypeSelect"s,"IfcImpactProtectionDeviceTypeSelect"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcStyleAssignmentSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLinearAxisWithInclination"s,"IfcLinearPlacement"s,"IfcLinearPlacementWithInclination"s,"IfcLinearSpanPlacement"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenCrossProfileDef"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientationExpression"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcPresentationStyleSelect"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAlignment2DHorizontal"s,"IfcAlignment2DSegment"s,"IfcAlignment2DVertical"s,"IfcAlignment2DVerticalSegment"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcAxisLateralInclination"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcDirection"s,"IfcDirectrixCurveSweptAreaSolid"s,"IfcDirectrixDistanceSweptAreaSolid"s,"IfcDistanceExpression"s,"IfcDoorStyle"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcInclinedReferenceSweptAreaSolid"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcOffsetCurveByDistances"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelAssociatesProfileDef"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelPositions"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSectionedSolid"s,"IfcSectionedSolidHorizontal"s,"IfcSectionedSurface"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcToroidalSurface"s,"IfcTransportElementType"s,"IfcTriangulatedFaceSet"s,"IfcTriangulatedIrregularNetwork"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcLinearAxisSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAlignment2DCant"s,"IfcAlignment2DCantSegment"s,"IfcAlignment2DHorizontalSegment"s,"IfcAlignment2DVerSegCircularArc"s,"IfcAlignment2DVerSegLine"s,"IfcAlignment2DVerSegParabolicArc"s,"IfcAlignment2DVerSegTransition"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuildingStorey"s,"IfcBuiltElementType"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCourseType"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCurveSegment2D"s,"IfcCylindricalSurface"s,"IfcDeepFoundationType"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFacility"s,"IfcFacilityPart"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGeotechnicalElement"s,"IfcGeotechnicalStratum"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcImpactProtectionDevice"s,"IfcImpactProtectionDeviceType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcKerbType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLineSegment2D"s,"IfcLiquidTerminalType"s,"IfcMarineFacility"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMobileTelecommunicationsApplianceType"s,"IfcMooringDeviceType"s,"IfcMotorConnectionType"s,"IfcNavigationElementType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOpeningStandardCase"s,"IfcOutletType"s,"IfcPavementType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlant"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcPositioningElement"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailType"s,"IfcRailingType"s,"IfcRailway"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReferent"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAggregates"s,"IfcRoad"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcShadingDeviceType"s,"IfcSign"s,"IfcSignType"s,"IfcSignalType"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSolidStratum"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonConduit"s,"IfcTendonConduitType"s,"IfcTendonType"s,"IfcTrackElementType"s,"IfcTransformerType"s,"IfcTransitionCurveSegment2D"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVibrationDamper"s,"IfcVibrationDamperType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVirtualElement"s,"IfcVoidStratum"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWaterStratum"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcInterferenceSelect"s,"IfcSpatialReferenceSelect"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAlignment2DCantSegLine"s,"IfcAlignment2DCantSegTransition"s,"IfcAlignmentCurve"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBearingType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBridge"s,"IfcBridgePart"s,"IfcBuilding"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxyType"s,"IfcBuildingSystem"s,"IfcBuiltElement"s,"IfcBuiltSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcCaissonFoundationType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCircularArcSegment2D"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcColumnStandardCase"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcConveyorSegmentType"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCourse"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDeepFoundation"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionBoardType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDoorStandardCase"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcEarthworksCut"s,"IfcEarthworksElement"s,"IfcEarthworksFill"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricFlowTreatmentDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcGeotechnicalAssembly"s,"IfcGrid"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcKerb"s,"IfcLamp"s,"IfcLightFixture"s,"IfcLinearPositioningElement"s,"IfcLiquidTerminal"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMemberStandardCase"s,"IfcMobileTelecommunicationsAppliance"s,"IfcMooringDevice"s,"IfcMotorConnection"s,"IfcNavigationElement"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPavement"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcPlateStandardCase"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRail"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcedSoil"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSignal"s,"IfcSlab"s,"IfcSlabElementedCase"s,"IfcSlabStandardCase"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTrackElement"s,"IfcTransformer"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallElementedCase"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcWindowStandardCase"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAlignment"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBeamStandardCase"s,"IfcBearing"s,"IfcBoiler"s,"IfcBorehole"s,"IfcBuildingElementProxy"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcCaissonFoundation"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcConveyorSegment"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionBoard"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricFlowTreatmentDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcGeomodel"s,"IfcGeoslice"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"Segments"s,"RailHeadDistance"s,"StartRadius"s,"EndRadius"s,"IsStartRadiusCCW"s,"IsEndRadiusCCW"s,"TransitionCurveType"s,"StartDistAlong"s,"HorizontalLength"s,"StartCantLeft"s,"EndCantLeft"s,"StartCantRight"s,"EndCantRight"s,"CurveGeometry"s,"TangentialContinuity"s,"StartTag"s,"EndTag"s,"Radius"s,"IsConvex"s,"ParabolaConstant"s,"StartHeight"s,"StartGradient"s,"Horizontal"s,"Vertical"s,"Tag"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"TagList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"IsCCW"s,"Source"s,"Edition"s,"EditionDate"s,"Location"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"Transition"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"StartPoint"s,"StartDirection"s,"SegmentLength"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"Directrix"s,"StartParam"s,"EndParam"s,"StartDistance"s,"EndDistance"s,"DistanceAlong"s,"OffsetLateral"s,"OffsetVertical"s,"OffsetLongitudinal"s,"AlongHorizontal"s,"FlowDirection"s,"SystemType"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"UsageType"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"ModelorDraughting"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"FixedAxisVertical"s,"Inclinating"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"Mountable"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"PlacementMeasuredAlong"s,"Distance"s,"CartesianPosition"s,"Span"s,"RelativePlacement"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"Expression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"PlacementRelTo"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"HorizontalWidths"s,"Widths"s,"Slopes"s,"Tags"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"LateralAxisDirection"s,"VerticalAxisDirection"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"Flexible"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Height"s,"ColourComponents"s,"Pixel"s,"Placement"s,"SizeInX"s,"SizeInY"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Closed"s,"Faces"s,"PnIndex"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"Styles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"ProxyType"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"RestartDistance"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"RelatingProfileDef"s,"ConnectionGeometry"s,"RelatingElement"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceType"s,"ImpliedOrder"s,"RelatingPositioningElement"s,"RelatedProducts"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"CrossSections"s,"CrossSectionPositions"s,"SpineCurve"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"Vertices"s,"TexCoordsList"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Flags"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"Start"s,"Finish"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ToCant"s,"ToAlignmentCurve"s,"ToHorizontal"s,"ToVertical"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"ToLinearAxis"s,"PositioningElement"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"UsingCurves"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ToFaceSet"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"Positions"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"PositionedRelativeTo"s,"ReferencedInStructures"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"ServicesFacilities"s,"HasColours"s,"HasTextures"s,"Types"s,"IFC4X3_RC1"s}; - - class IFC4X3_RC1_instance_factory : public IfcParse::instance_factory { virtual IfcUtil::IfcBaseClass* operator()(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) const { switch(decl->index_in_schema()) { @@ -1297,6 +1294,9 @@ class IFC4X3_RC1_instance_factory : public IfcParse::instance_factory { }; IfcParse::schema_definition* IFC4X3_RC1_populate_schema() { + +const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"RAILWAYCROCODILE"s,"RAILWAYDETONATOR"s,"IfcAlignmentTypeEnum"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAnnotationTypeEnum"s,"ASSUMEDPOINT"s,"ASBUILTAREA"s,"ASBUILTLINE"s,"NON_PHYSICAL_SIGNAL"s,"ASSUMEDLINE"s,"WIDTHEVENT"s,"ASSUMEDAREA"s,"SUPERELEVATIONEVENT"s,"ASBUILTPOINT"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"RAILWAY_COMMUNICATION_TERMINAL"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"PLANE_SURF"s,"CYLINDRICAL_SURF"s,"CONICAL_SURF"s,"SPHERICAL_SURF"s,"TOROIDAL_SURF"s,"SURF_OF_REVOLUTION"s,"RULED_SURF"s,"GENERALISED_CONE"s,"QUADRIC_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"HOLLOWCORE"s,"LINTEL"s,"SPANDREL"s,"T_BEAM"s,"GIRDER_SEGMENT"s,"DIAPHRAGM"s,"PIERCAP"s,"HATSTONE"s,"CORNICE"s,"EDGEBEAM"s,"IfcBearingTypeDisplacementEnum"s,"FIXED_MOVEMENT"s,"GUIDED_LONGITUDINAL"s,"GUIDED_TRANSVERSAL"s,"FREE_MOVEMENT"s,"IfcBearingTypeEnum"s,"CYLINDRICAL"s,"SPHERICAL"s,"ELASTOMERIC"s,"POT"s,"GUIDE"s,"ROCKER"s,"ROLLER"s,"DISK"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"INCLUDES"s,"NOTINCLUDES"s,"INCLUDEDIN"s,"NOTINCLUDEDIN"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBridgePartTypeEnum"s,"ABUTMENT"s,"DECK"s,"DECK_SEGMENT"s,"FOUNDATION"s,"PIER"s,"PIER_SEGMENT"s,"PYLON"s,"SUBSTRUCTURE"s,"SUPERSTRUCTURE"s,"SURFACESTRUCTURE"s,"IfcBridgeTypeEnum"s,"ARCHED"s,"CABLE_STAYED"s,"CANTILEVER"s,"CULVERT"s,"FRAMEWORK"s,"GIRDER"s,"SUSPENSION"s,"TRUSS"s,"IfcBuildingElementPartTypeEnum"s,"INSULATION"s,"PRECASTPANEL"s,"APRON"s,"ARMOURUNIT"s,"SAFETYCAGE"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"PROVISIONFORVOID"s,"PROVISIONFORSPACE"s,"IfcBuildingSystemTypeEnum"s,"FENESTRATION"s,"LOADBEARING"s,"OUTERSHELL"s,"SHADING"s,"REINFORCING"s,"PRESTRESSING"s,"EROSIONPREVENTION"s,"IfcBuiltSystemTypeEnum"s,"MOORING"s,"TRACKCIRCUIT"s,"MOORINGSYSTEM"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"CABLEBRACKET"s,"CATENARYWIRE"s,"DROPPER"s,"IfcCableFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"TRANSITION"s,"FANOUT"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CORESEGMENT"s,"CONTACTWIRESEGMENT"s,"FIBERSEGMENT"s,"FIBERTUBE"s,"OPTICALCABLESEGMENT"s,"STITCHWIRE"s,"WIREPAIRSEGMENT"s,"IfcCaissonFoundationTypeEnum"s,"WELL"s,"CAISSON"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PILASTER"s,"PIERSTEM"s,"PIERSTEM_SEGMENT"s,"STANDCOLUMN"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"COMPUTER"s,"GATEWAY"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"PRINTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"AUTOMATON"s,"INTELLIGENT_PERIPHERAL"s,"IP_NETWORK_EQUIPMENT"s,"OPTICAL_NETWORK_UNIT"s,"TELECOMMAND"s,"TELEPHONYEXCHANGE"s,"TRANSITIONCOMPONENT"s,"TRANSPONDER"s,"TRANSPORTEQUIPMENT"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"MULTIPOSITION"s,"TWOPOSITION"s,"IfcConveyorSegmentTypeEnum"s,"CHUTECONVEYOR"s,"BELTCONVEYOR"s,"SCREWCONVEYOR"s,"BUCKETCONVEYOR"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCourseTypeEnum"s,"ARMOUR"s,"FILTER"s,"BALLASTBED"s,"CORE"s,"PAVEMENT"s,"PROTECTION"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"MOLDING"s,"SKIRTINGBOARD"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"COPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BRACKET"s,"SHOE"s,"EXPANSION_JOINT_DEVICE"s,"BIRDPROTECTION"s,"CABLEARRANGER"s,"INSULATOR"s,"LOCK"s,"TENSIONINGEQUIPMENT"s,"RAILPAD"s,"SLIDINGCHAIR"s,"PANEL_STRENGTHENING"s,"RAILBRACE"s,"ELASTIC_CUSHION"s,"SOUNDABSORPTION"s,"RAIL_LUBRICATION"s,"RAIL_MECHANICAL_EQUIPMENT"s,"IfcDistributionBoardTypeEnum"s,"SWITCHBOARD"s,"CONSUMERUNIT"s,"MOTORCONTROLCENTRE"s,"DISTRIBUTIONFRAME"s,"DISTRIBUTIONBOARD"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"WIRELESS"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"CATENARY_SYSTEM"s,"OVERHEAD_CONTACTLINE_SYSTEM"s,"RETURN_CIRCUIT"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"FIXEDPANEL"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoorTypeEnum"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"BOOM_BARRIER"s,"TURNSTILE"s,"IfcDoorTypeOperationEnum"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcEarthworksCutTypeEnum"s,"DREDGING"s,"EXCAVATION"s,"OVEREXCAVATION"s,"TOPSOILREMOVAL"s,"STEPEXCAVATION"s,"PAVEMENTMILLING"s,"CUT"s,"BASE_EXCAVATION"s,"IfcEarthworksFillTypeEnum"s,"BACKFILL"s,"COUNTERWEIGHT"s,"SUBGRADE"s,"EMBANKMENT"s,"TRANSITIONSECTION"s,"SUBGRADEBED"s,"SLOPEFILL"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERHEATER"s,"FREESTANDINGWATERCOOLER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"CAPACITOR"s,"COMPENSATOR"s,"INDUCTOR"s,"RECHARGER"s,"IfcElectricFlowTreatmentDeviceTypeEnum"s,"ELECTRONICFILTER"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"CROSS_BRACING"s,"MAST"s,"SIGNALASSEMBLY"s,"GRID"s,"SHELTER"s,"SUPPORTINGASSEMBLY"s,"SUSPENSIONASSEMBLY"s,"TRACTION_SWITCHING_ASSEMBLY"s,"TRACKPANEL"s,"TURNOUTPANEL"s,"DILATATIONPANEL"s,"RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY"s,"ENTRANCEWORKS"s,"SUMPBUSTER"s,"TRAFFIC_CALMING_DEVICE"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTRULE"s,"EVENTMESSAGE"s,"EVENTTIME"s,"EVENTCOMPLEX"s,"IfcEventTypeEnum"s,"STARTEVENT"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_WATER"s,"EXTERNAL_FIRE"s,"IfcFacilityPartCommonTypeEnum"s,"SEGMENT"s,"ABOVEGROUND"s,"LEVELCROSSING"s,"BELOWGROUND"s,"TERMINAL"s,"IfcFacilityUsageEnum"s,"LATERAL"s,"REGION"s,"VERTICAL"s,"LONGITUDINAL"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"COMBINED"s,"VOLTMETER"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"CHAIR"s,"TABLE"s,"DESK"s,"BED"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"TECHNICALCABINET"s,"IfcGeographicElementTypeEnum"s,"TERRAIN"s,"SOIL_BORING_POINT"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"RADIAL"s,"TRIANGULAR"s,"IRREGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"TURNOUTHEATING"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcImpactProtectionDeviceTypeEnum"s,"CRASHCUSHION"s,"DAMPINGSYSTEM"s,"FENDER"s,"BUMPER"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"UNIFORM_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"PIECEWISE_BEZIER_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLiquidTerminalTypeEnum"s,"LOADINGARM"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"LOGICALXOR"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMarineFacilityTypeEnum"s,"CANAL"s,"WATERWAYSHIPLIFT"s,"LAUNCHRECOVERY"s,"MARINEDEFENCE"s,"HYDROLIFT"s,"SHIPYARD"s,"SHIPLIFT"s,"PORT"s,"QUAY"s,"FLOATINGDOCK"s,"NAVIGATIONALCHANNEL"s,"BREAKWATER"s,"DRYDOCK"s,"JETTY"s,"SHIPLOCK"s,"BARRIERBEACH"s,"SLIPWAY"s,"WATERWAY"s,"IfcMarinePartTypeEnum"s,"CREST"s,"MANUFACTURING"s,"LOWWATERLINE"s,"WATERFIELD"s,"CILL_LEVEL"s,"BERTHINGSTRUCTURE"s,"COPELEVEL"s,"CHAMBER"s,"STORAGE"s,"APPROACHCHANNEL"s,"VEHICLESERVICING"s,"SHIPTRANSFER"s,"GATEHEAD"s,"GUDINGSTRUCTURE"s,"BELOWWATERLINE"s,"WEATHERSIDE"s,"LANDFIELD"s,"LEEWARDSIDE"s,"ABOVEWATERLINE"s,"ANCHORAGE"s,"NAVIGATIONALAREA"s,"HIGHWATERLINE"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RIVET"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"COUPLER"s,"RAILJOINT"s,"RAILFASTENING"s,"CHAIN"s,"ROPE"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"STIFFENING_RIB"s,"ARCH_SEGMENT"s,"SUSPENSION_CABLE"s,"SUSPENDER"s,"STAY_CABLE"s,"STRUCTURALCABLE"s,"TIEBAR"s,"IfcMobileTelecommunicationsApplianceTypeEnum"s,"E_UTRAN_NODE_B"s,"REMOTE_RADIO_UNIT"s,"ACCESSPOINT"s,"BASETRANSCEIVERSTATION"s,"REMOTEUNIT"s,"BASEBANDUNIT"s,"MASTERUNIT"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMooringDeviceTypeEnum"s,"LINETENSIONER"s,"MAGNETICDEVICE"s,"MOORINGHOOKS"s,"VACUUMDEVICE"s,"BOLLARD"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNavigationElementTypeEnum"s,"BEACON"s,"BUOY"s,"IfcNonNegativeLengthMeasure"s,"IfcNullStyle"s,"NULL"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"DATAOUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"DRIVEN"s,"JETGROUTING"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"FLANGE_PLATE"s,"WEB_PLATE"s,"STIFFENER_PLATE"s,"GUSSET_PLATE"s,"COVER_PLATE"s,"SPLICE_PLATE"s,"BASE_PLATE"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"BLISTER"s,"DEVIATOR"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTRONIC"s,"ELECTROMAGNETIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"CIRCUITBREAKER"s,"EARTHLEAKAGECIRCUITBREAKER"s,"EARTHINGSWITCH"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"ANTI_ARCING_DEVICE"s,"SPARKGAP"s,"VOLTAGELIMITER"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailTypeEnum"s,"RACKRAIL"s,"BLADE"s,"GUARDRAIL"s,"STOCKRAIL"s,"CHECKRAIL"s,"RAIL"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"BALUSTRADE"s,"FENCE"s,"IfcRailwayPartTypeEnum"s,"TRACKSTRUCTURE"s,"TRACKSTRUCTUREPART"s,"LINESIDESTRUCTUREPART"s,"DILATATIONSUPERSTRUCTURE"s,"PLAINTRACKSUPESTRUCTURE"s,"LINESIDESTRUCTURE"s,"TURNOUTSUPERSTRUCTURE"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"DAILY"s,"WEEKLY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReferentTypeEnum"s,"KILOPOINT"s,"MILEPOINT"s,"STATION"s,"REFERENCEMARKER"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcedSoilTypeEnum"s,"SURCHARGEPRELOADED"s,"VERTICALLYDRAINED"s,"DYNAMICALLYCOMPACTED"s,"REPLACED"s,"ROLLERCOMPACTED"s,"GROUTED"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"ANCHORING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"SPACEBAR"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoadPartTypeEnum"s,"ROADSIDEPART"s,"BUS_STOP"s,"HARDSHOULDER"s,"PASSINGBAY"s,"ROADWAYPLATEAU"s,"ROADSIDE"s,"REFUGEISLAND"s,"TOLLPLAZA"s,"CENTRALRESERVE"s,"SIDEWALK"s,"PARKINGBAY"s,"RAILWAYCROSSING"s,"PEDESTRIAN_CROSSING"s,"SOFTSHOULDER"s,"BICYCLECROSSING"s,"CENTRALISLAND"s,"SHOULDER"s,"TRAFFICLANE"s,"ROADSEGMENT"s,"ROUNDABOUT"s,"LAYBY"s,"CARRIAGEWAY"s,"TRAFFICISLAND"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"COSENSOR"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"WINDSENSOR"s,"EARTHQUAKESENSOR"s,"FOREIGNOBJECTDETECTIONSENSOR"s,"OBSTACLESENSOR"s,"RAINSENSOR"s,"SNOWDEPTHSENSOR"s,"TRAINSENSOR"s,"TURNOUTCLOSURESENSOR"s,"WHEELSENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcShadingDeviceTypeEnum"s,"JALOUSIE"s,"SHUTTER"s,"AWNING"s,"IfcShearModulusMeasure"s,"IfcSignTypeEnum"s,"MARKER"s,"PICTORAL"s,"IfcSignalTypeEnum"s,"VISUAL"s,"AUDIO"s,"MIXED"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_SINGLEVALUE"s,"P_ENUMERATEDVALUE"s,"P_BOUNDEDVALUE"s,"P_LISTVALUE"s,"P_TABLEVALUE"s,"P_REFERENCEVALUE"s,"Q_LENGTH"s,"Q_AREA"s,"Q_VOLUME"s,"Q_COUNT"s,"Q_WEIGHT"s,"Q_TIME"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"APPROACH_SLAB"s,"WEARING"s,"TRACKSLAB"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"SPACE"s,"PARKING"s,"GFA"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"OCCUPANCY"s,"RESERVATION"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"LADDER"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"POLYGONAL"s,"EQUIDISTANT"s,"SINUS"s,"PARABOLA"s,"DISCRETE"s,"IfcStructuralCurveMemberTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"MARK"s,"TAG"s,"TREATMENT"s,"DEFECT"s,"HATCHMARKING"s,"LINEMARKING"s,"PAVEMENTSURFACEMARKING"s,"SYMBOLMARKING"s,"NONSKIDSURFACING"s,"RUMBLESTRIP"s,"TRANSVERSERUMBLESTRIP"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"START_AND_STOP_EQUIPMENT"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"WORKSURFACE"s,"SUBRACK"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"PRESSUREVESSEL"s,"VESSEL"s,"OILRETENTIONTRAY"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonConduitTypeEnum"s,"GROUTING_DUCT"s,"TRUMPET"s,"DIABOLO"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTrackElementTypeEnum"s,"TRACKENDOFALIGNMENT"s,"BLOCKINGDEVICE"s,"VEHICLESTOP"s,"SLEEPER"s,"HALF_SET_OF_BLADES"s,"SPEEDREGULATOR"s,"DERAILER"s,"FROG"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"CHOPPER"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTransitionCurveType"s,"BIQUADRATICPARABOLA"s,"BLOSSCURVE"s,"CLOTHOIDCURVE"s,"COSINECURVE"s,"CUBICPARABOLA"s,"SINECURVE"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementFixedTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"CRANEWAY"s,"LIFTINGGEAR"s,"IfcTransportElementNonFixedTypeEnum"s,"VEHICLE"s,"VEHICLETRACKED"s,"ROLLINGSTOCK"s,"VEHICLEWHEELED"s,"VEHICLEAIR"s,"CARGO"s,"VEHICLEMARINE"s,"IfcTransportElementTypeSelect"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"HUMIDISTAT"s,"THERMOSTAT"s,"WEATHERSTATION"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"DEHUMIDIFIER"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationDamperTypeEnum"s,"BENDING_YIELD"s,"SHEAR_YIELD"s,"AXIAL_YIELD"s,"VISCOUS"s,"RUBBER"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"BASE"s,"IfcVoidingFeatureTypeEnum"s,"CUTOUT"s,"NOTCH"s,"HOLE"s,"MITER"s,"CHAMFER"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"SOLIDWALL"s,"STANDARD"s,"ELEMENTEDWALL"s,"RETAININGWALL"s,"WAVEWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWindowTypeEnum"s,"WINDOW"s,"SKYLIGHT"s,"LIGHTDOME"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcPresentationStyleAssignment"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcDerivedMeasureValue"s,"IfcFacilityPartTypeSelect"s,"IfcImpactProtectionDeviceTypeSelect"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcStyleAssignmentSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLinearAxisWithInclination"s,"IfcLinearPlacement"s,"IfcLinearPlacementWithInclination"s,"IfcLinearSpanPlacement"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenCrossProfileDef"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientationExpression"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcPresentationStyleSelect"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAlignment2DHorizontal"s,"IfcAlignment2DSegment"s,"IfcAlignment2DVertical"s,"IfcAlignment2DVerticalSegment"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcAxisLateralInclination"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcDirection"s,"IfcDirectrixCurveSweptAreaSolid"s,"IfcDirectrixDistanceSweptAreaSolid"s,"IfcDistanceExpression"s,"IfcDoorStyle"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcInclinedReferenceSweptAreaSolid"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcOffsetCurveByDistances"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelAssociatesProfileDef"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelPositions"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSectionedSolid"s,"IfcSectionedSolidHorizontal"s,"IfcSectionedSurface"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcToroidalSurface"s,"IfcTransportElementType"s,"IfcTriangulatedFaceSet"s,"IfcTriangulatedIrregularNetwork"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcLinearAxisSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAlignment2DCant"s,"IfcAlignment2DCantSegment"s,"IfcAlignment2DHorizontalSegment"s,"IfcAlignment2DVerSegCircularArc"s,"IfcAlignment2DVerSegLine"s,"IfcAlignment2DVerSegParabolicArc"s,"IfcAlignment2DVerSegTransition"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuildingStorey"s,"IfcBuiltElementType"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCourseType"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCurveSegment2D"s,"IfcCylindricalSurface"s,"IfcDeepFoundationType"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFacility"s,"IfcFacilityPart"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGeotechnicalElement"s,"IfcGeotechnicalStratum"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcImpactProtectionDevice"s,"IfcImpactProtectionDeviceType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcKerbType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLineSegment2D"s,"IfcLiquidTerminalType"s,"IfcMarineFacility"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMobileTelecommunicationsApplianceType"s,"IfcMooringDeviceType"s,"IfcMotorConnectionType"s,"IfcNavigationElementType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOpeningStandardCase"s,"IfcOutletType"s,"IfcPavementType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlant"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcPositioningElement"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailType"s,"IfcRailingType"s,"IfcRailway"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReferent"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAggregates"s,"IfcRoad"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcShadingDeviceType"s,"IfcSign"s,"IfcSignType"s,"IfcSignalType"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSolidStratum"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonConduit"s,"IfcTendonConduitType"s,"IfcTendonType"s,"IfcTrackElementType"s,"IfcTransformerType"s,"IfcTransitionCurveSegment2D"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVibrationDamper"s,"IfcVibrationDamperType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVirtualElement"s,"IfcVoidStratum"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWaterStratum"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcInterferenceSelect"s,"IfcSpatialReferenceSelect"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAlignment2DCantSegLine"s,"IfcAlignment2DCantSegTransition"s,"IfcAlignmentCurve"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBearingType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBridge"s,"IfcBridgePart"s,"IfcBuilding"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxyType"s,"IfcBuildingSystem"s,"IfcBuiltElement"s,"IfcBuiltSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcCaissonFoundationType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCircularArcSegment2D"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcColumnStandardCase"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcConveyorSegmentType"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCourse"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDeepFoundation"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionBoardType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDoorStandardCase"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcEarthworksCut"s,"IfcEarthworksElement"s,"IfcEarthworksFill"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricFlowTreatmentDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcGeotechnicalAssembly"s,"IfcGrid"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcKerb"s,"IfcLamp"s,"IfcLightFixture"s,"IfcLinearPositioningElement"s,"IfcLiquidTerminal"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMemberStandardCase"s,"IfcMobileTelecommunicationsAppliance"s,"IfcMooringDevice"s,"IfcMotorConnection"s,"IfcNavigationElement"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPavement"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcPlateStandardCase"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRail"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcedSoil"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSignal"s,"IfcSlab"s,"IfcSlabElementedCase"s,"IfcSlabStandardCase"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTrackElement"s,"IfcTransformer"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallElementedCase"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcWindowStandardCase"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAlignment"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBeamStandardCase"s,"IfcBearing"s,"IfcBoiler"s,"IfcBorehole"s,"IfcBuildingElementProxy"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcCaissonFoundation"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcConveyorSegment"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionBoard"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricFlowTreatmentDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcGeomodel"s,"IfcGeoslice"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"Segments"s,"RailHeadDistance"s,"StartRadius"s,"EndRadius"s,"IsStartRadiusCCW"s,"IsEndRadiusCCW"s,"TransitionCurveType"s,"StartDistAlong"s,"HorizontalLength"s,"StartCantLeft"s,"EndCantLeft"s,"StartCantRight"s,"EndCantRight"s,"CurveGeometry"s,"TangentialContinuity"s,"StartTag"s,"EndTag"s,"Radius"s,"IsConvex"s,"ParabolaConstant"s,"StartHeight"s,"StartGradient"s,"Horizontal"s,"Vertical"s,"Tag"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"TagList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"IsCCW"s,"Source"s,"Edition"s,"EditionDate"s,"Location"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"Transition"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"StartPoint"s,"StartDirection"s,"SegmentLength"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"Directrix"s,"StartParam"s,"EndParam"s,"StartDistance"s,"EndDistance"s,"DistanceAlong"s,"OffsetLateral"s,"OffsetVertical"s,"OffsetLongitudinal"s,"AlongHorizontal"s,"FlowDirection"s,"SystemType"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"UsageType"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"ModelorDraughting"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"FixedAxisVertical"s,"Inclinating"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"Mountable"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"PlacementMeasuredAlong"s,"Distance"s,"CartesianPosition"s,"Span"s,"RelativePlacement"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"Expression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"PlacementRelTo"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"HorizontalWidths"s,"Widths"s,"Slopes"s,"Tags"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"LateralAxisDirection"s,"VerticalAxisDirection"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"Flexible"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Height"s,"ColourComponents"s,"Pixel"s,"Placement"s,"SizeInX"s,"SizeInY"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Closed"s,"Faces"s,"PnIndex"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"Styles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"ProxyType"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"RestartDistance"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"RelatingProfileDef"s,"ConnectionGeometry"s,"RelatingElement"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceType"s,"ImpliedOrder"s,"RelatingPositioningElement"s,"RelatedProducts"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"CrossSections"s,"CrossSectionPositions"s,"SpineCurve"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"Vertices"s,"TexCoordsList"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Flags"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"Start"s,"Finish"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ToCant"s,"ToAlignmentCurve"s,"ToHorizontal"s,"ToVertical"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"ToLinearAxis"s,"PositioningElement"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"UsingCurves"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ToFaceSet"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"Positions"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"PositionedRelativeTo"s,"ReferencedInStructures"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"ServicesFacilities"s,"HasColours"s,"HasTextures"s,"Types"s,"IFC4X3_RC1"s}; + IFC4X3_RC1_types[0] = new type_declaration(strings[0], 0, new simple_type(simple_type::real_type)); IFC4X3_RC1_types[1] = new type_declaration(strings[1], 1, new simple_type(simple_type::real_type)); IFC4X3_RC1_types[3] = new enumeration_type(strings[2], 3, {strings[3],strings[4],strings[5],strings[6],strings[7],strings[8],strings[9]}); diff --git a/src/ifcparse/Ifc4x3_rc2-schema.cpp b/src/ifcparse/Ifc4x3_rc2-schema.cpp index d5e478a85f..fb9c54a804 100644 --- a/src/ifcparse/Ifc4x3_rc2-schema.cpp +++ b/src/ifcparse/Ifc4x3_rc2-schema.cpp @@ -33,9 +33,6 @@ using namespace IfcParse; declaration* IFC4X3_RC2_types[1327] = {nullptr}; -const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"RAILWAYCROCODILE"s,"RAILWAYDETONATOR"s,"IfcAlignmentCantSegmentTypeEnum"s,"CONSTANTCANT"s,"LINEARTRANSITION"s,"BIQUADRATICPARABOLA"s,"BLOSSCURVE"s,"COSINECURVE"s,"SINECURVE"s,"VIENNESEBEND"s,"IfcAlignmentHorizontalSegmentTypeEnum"s,"LINE"s,"CIRCULARARC"s,"CLOTHOID"s,"CUBICSPIRAL"s,"IfcAlignmentTypeEnum"s,"IfcAlignmentVerticalSegmentTypeEnum"s,"CONSTANTGRADIENT"s,"PARABOLICARC"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAnnotationTypeEnum"s,"ASSUMEDPOINT"s,"ASBUILTAREA"s,"ASBUILTLINE"s,"NON_PHYSICAL_SIGNAL"s,"ASSUMEDLINE"s,"WIDTHEVENT"s,"ASSUMEDAREA"s,"SUPERELEVATIONEVENT"s,"ASBUILTPOINT"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"RAILWAY_COMMUNICATION_TERMINAL"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"PLANE_SURF"s,"CYLINDRICAL_SURF"s,"CONICAL_SURF"s,"SPHERICAL_SURF"s,"TOROIDAL_SURF"s,"SURF_OF_REVOLUTION"s,"RULED_SURF"s,"GENERALISED_CONE"s,"QUADRIC_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"HOLLOWCORE"s,"LINTEL"s,"SPANDREL"s,"T_BEAM"s,"GIRDER_SEGMENT"s,"DIAPHRAGM"s,"PIERCAP"s,"HATSTONE"s,"CORNICE"s,"EDGEBEAM"s,"IfcBearingTypeDisplacementEnum"s,"FIXED_MOVEMENT"s,"GUIDED_LONGITUDINAL"s,"GUIDED_TRANSVERSAL"s,"FREE_MOVEMENT"s,"IfcBearingTypeEnum"s,"CYLINDRICAL"s,"SPHERICAL"s,"ELASTOMERIC"s,"POT"s,"GUIDE"s,"ROCKER"s,"ROLLER"s,"DISK"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"INCLUDES"s,"NOTINCLUDES"s,"INCLUDEDIN"s,"NOTINCLUDEDIN"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBridgePartTypeEnum"s,"ABUTMENT"s,"DECK"s,"DECK_SEGMENT"s,"FOUNDATION"s,"PIER"s,"PIER_SEGMENT"s,"PYLON"s,"SUBSTRUCTURE"s,"SUPERSTRUCTURE"s,"SURFACESTRUCTURE"s,"IfcBridgeTypeEnum"s,"ARCHED"s,"CABLE_STAYED"s,"CANTILEVER"s,"CULVERT"s,"FRAMEWORK"s,"GIRDER"s,"SUSPENSION"s,"TRUSS"s,"IfcBuildingElementPartTypeEnum"s,"INSULATION"s,"PRECASTPANEL"s,"APRON"s,"ARMOURUNIT"s,"SAFETYCAGE"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"PROVISIONFORVOID"s,"PROVISIONFORSPACE"s,"IfcBuildingSystemTypeEnum"s,"FENESTRATION"s,"LOADBEARING"s,"OUTERSHELL"s,"SHADING"s,"REINFORCING"s,"PRESTRESSING"s,"EROSIONPREVENTION"s,"IfcBuiltSystemTypeEnum"s,"MOORING"s,"TRACKCIRCUIT"s,"MOORINGSYSTEM"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"CABLEBRACKET"s,"CATENARYWIRE"s,"DROPPER"s,"IfcCableFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"TRANSITION"s,"FANOUT"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CORESEGMENT"s,"CONTACTWIRESEGMENT"s,"FIBERSEGMENT"s,"FIBERTUBE"s,"OPTICALCABLESEGMENT"s,"STITCHWIRE"s,"WIREPAIRSEGMENT"s,"IfcCaissonFoundationTypeEnum"s,"WELL"s,"CAISSON"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PILASTER"s,"PIERSTEM"s,"PIERSTEM_SEGMENT"s,"STANDCOLUMN"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"COMPUTER"s,"GATEWAY"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"PRINTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"AUTOMATON"s,"INTELLIGENT_PERIPHERAL"s,"IP_NETWORK_EQUIPMENT"s,"OPTICAL_NETWORK_UNIT"s,"TELECOMMAND"s,"TELEPHONYEXCHANGE"s,"TRANSITIONCOMPONENT"s,"TRANSPONDER"s,"TRANSPORTEQUIPMENT"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"MULTIPOSITION"s,"TWOPOSITION"s,"IfcConveyorSegmentTypeEnum"s,"CHUTECONVEYOR"s,"BELTCONVEYOR"s,"SCREWCONVEYOR"s,"BUCKETCONVEYOR"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCourseTypeEnum"s,"ARMOUR"s,"FILTER"s,"BALLASTBED"s,"CORE"s,"PAVEMENT"s,"PROTECTION"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"MOLDING"s,"SKIRTINGBOARD"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"COPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BRACKET"s,"SHOE"s,"EXPANSION_JOINT_DEVICE"s,"BIRDPROTECTION"s,"CABLEARRANGER"s,"INSULATOR"s,"LOCK"s,"TENSIONINGEQUIPMENT"s,"RAILPAD"s,"SLIDINGCHAIR"s,"PANEL_STRENGTHENING"s,"RAILBRACE"s,"ELASTIC_CUSHION"s,"SOUNDABSORPTION"s,"RAIL_LUBRICATION"s,"RAIL_MECHANICAL_EQUIPMENT"s,"IfcDistributionBoardTypeEnum"s,"SWITCHBOARD"s,"CONSUMERUNIT"s,"MOTORCONTROLCENTRE"s,"DISTRIBUTIONFRAME"s,"DISTRIBUTIONBOARD"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"WIRELESS"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"CATENARY_SYSTEM"s,"OVERHEAD_CONTACTLINE_SYSTEM"s,"RETURN_CIRCUIT"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"FIXEDPANEL"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoorTypeEnum"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"BOOM_BARRIER"s,"TURNSTILE"s,"IfcDoorTypeOperationEnum"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcEarthworksCutTypeEnum"s,"DREDGING"s,"EXCAVATION"s,"OVEREXCAVATION"s,"TOPSOILREMOVAL"s,"STEPEXCAVATION"s,"PAVEMENTMILLING"s,"CUT"s,"BASE_EXCAVATION"s,"IfcEarthworksFillTypeEnum"s,"BACKFILL"s,"COUNTERWEIGHT"s,"SUBGRADE"s,"EMBANKMENT"s,"TRANSITIONSECTION"s,"SUBGRADEBED"s,"SLOPEFILL"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERHEATER"s,"FREESTANDINGWATERCOOLER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"CAPACITOR"s,"COMPENSATOR"s,"INDUCTOR"s,"RECHARGER"s,"IfcElectricFlowTreatmentDeviceTypeEnum"s,"ELECTRONICFILTER"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"CROSS_BRACING"s,"MAST"s,"SIGNALASSEMBLY"s,"GRID"s,"SHELTER"s,"SUPPORTINGASSEMBLY"s,"SUSPENSIONASSEMBLY"s,"TRACTION_SWITCHING_ASSEMBLY"s,"TRACKPANEL"s,"TURNOUTPANEL"s,"DILATATIONPANEL"s,"RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY"s,"ENTRANCEWORKS"s,"SUMPBUSTER"s,"TRAFFIC_CALMING_DEVICE"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTRULE"s,"EVENTMESSAGE"s,"EVENTTIME"s,"EVENTCOMPLEX"s,"IfcEventTypeEnum"s,"STARTEVENT"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_WATER"s,"EXTERNAL_FIRE"s,"IfcFacilityPartCommonTypeEnum"s,"SEGMENT"s,"ABOVEGROUND"s,"LEVELCROSSING"s,"BELOWGROUND"s,"TERMINAL"s,"IfcFacilityUsageEnum"s,"LATERAL"s,"REGION"s,"VERTICAL"s,"LONGITUDINAL"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"COMBINED"s,"VOLTMETER"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"CHAIR"s,"TABLE"s,"DESK"s,"BED"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"TECHNICALCABINET"s,"IfcGeographicElementTypeEnum"s,"TERRAIN"s,"SOIL_BORING_POINT"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"RADIAL"s,"TRIANGULAR"s,"IRREGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"TURNOUTHEATING"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcImpactProtectionDeviceTypeEnum"s,"CRASHCUSHION"s,"DAMPINGSYSTEM"s,"FENDER"s,"BUMPER"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"UNIFORM_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"PIECEWISE_BEZIER_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLiquidTerminalTypeEnum"s,"LOADINGARM"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"LOGICALXOR"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMarineFacilityTypeEnum"s,"CANAL"s,"WATERWAYSHIPLIFT"s,"LAUNCHRECOVERY"s,"MARINEDEFENCE"s,"HYDROLIFT"s,"SHIPYARD"s,"SHIPLIFT"s,"PORT"s,"QUAY"s,"FLOATINGDOCK"s,"NAVIGATIONALCHANNEL"s,"BREAKWATER"s,"DRYDOCK"s,"JETTY"s,"SHIPLOCK"s,"BARRIERBEACH"s,"SLIPWAY"s,"WATERWAY"s,"IfcMarinePartTypeEnum"s,"CREST"s,"MANUFACTURING"s,"LOWWATERLINE"s,"WATERFIELD"s,"CILL_LEVEL"s,"BERTHINGSTRUCTURE"s,"COPELEVEL"s,"CHAMBER"s,"STORAGE"s,"APPROACHCHANNEL"s,"VEHICLESERVICING"s,"SHIPTRANSFER"s,"GATEHEAD"s,"GUDINGSTRUCTURE"s,"BELOWWATERLINE"s,"WEATHERSIDE"s,"LANDFIELD"s,"LEEWARDSIDE"s,"ABOVEWATERLINE"s,"ANCHORAGE"s,"NAVIGATIONALAREA"s,"HIGHWATERLINE"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RIVET"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"COUPLER"s,"RAILJOINT"s,"RAILFASTENING"s,"CHAIN"s,"ROPE"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"STIFFENING_RIB"s,"ARCH_SEGMENT"s,"SUSPENSION_CABLE"s,"SUSPENDER"s,"STAY_CABLE"s,"STRUCTURALCABLE"s,"TIEBAR"s,"IfcMobileTelecommunicationsApplianceTypeEnum"s,"E_UTRAN_NODE_B"s,"REMOTE_RADIO_UNIT"s,"ACCESSPOINT"s,"BASETRANSCEIVERSTATION"s,"REMOTEUNIT"s,"BASEBANDUNIT"s,"MASTERUNIT"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMooringDeviceTypeEnum"s,"LINETENSIONER"s,"MAGNETICDEVICE"s,"MOORINGHOOKS"s,"VACUUMDEVICE"s,"BOLLARD"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNavigationElementTypeEnum"s,"BEACON"s,"BUOY"s,"IfcNonNegativeLengthMeasure"s,"IfcNullStyle"s,"NULL"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"DATAOUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"DRIVEN"s,"JETGROUTING"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"FLANGE_PLATE"s,"WEB_PLATE"s,"STIFFENER_PLATE"s,"GUSSET_PLATE"s,"COVER_PLATE"s,"SPLICE_PLATE"s,"BASE_PLATE"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"BLISTER"s,"DEVIATOR"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTRONIC"s,"ELECTROMAGNETIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"CIRCUITBREAKER"s,"EARTHLEAKAGECIRCUITBREAKER"s,"EARTHINGSWITCH"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"ANTI_ARCING_DEVICE"s,"SPARKGAP"s,"VOLTAGELIMITER"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailTypeEnum"s,"RACKRAIL"s,"BLADE"s,"GUARDRAIL"s,"STOCKRAIL"s,"CHECKRAIL"s,"RAIL"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"BALUSTRADE"s,"FENCE"s,"IfcRailwayPartTypeEnum"s,"TRACKSTRUCTURE"s,"TRACKSTRUCTUREPART"s,"LINESIDESTRUCTUREPART"s,"DILATATIONSUPERSTRUCTURE"s,"PLAINTRACKSUPESTRUCTURE"s,"LINESIDESTRUCTURE"s,"TURNOUTSUPERSTRUCTURE"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"DAILY"s,"WEEKLY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReferentTypeEnum"s,"KILOPOINT"s,"MILEPOINT"s,"STATION"s,"REFERENCEMARKER"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcedSoilTypeEnum"s,"SURCHARGEPRELOADED"s,"VERTICALLYDRAINED"s,"DYNAMICALLYCOMPACTED"s,"REPLACED"s,"ROLLERCOMPACTED"s,"GROUTED"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"ANCHORING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"SPACEBAR"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoadPartTypeEnum"s,"ROADSIDEPART"s,"BUS_STOP"s,"HARDSHOULDER"s,"PASSINGBAY"s,"ROADWAYPLATEAU"s,"ROADSIDE"s,"REFUGEISLAND"s,"TOLLPLAZA"s,"CENTRALRESERVE"s,"SIDEWALK"s,"PARKINGBAY"s,"RAILWAYCROSSING"s,"PEDESTRIAN_CROSSING"s,"SOFTSHOULDER"s,"BICYCLECROSSING"s,"CENTRALISLAND"s,"SHOULDER"s,"TRAFFICLANE"s,"ROADSEGMENT"s,"ROUNDABOUT"s,"LAYBY"s,"CARRIAGEWAY"s,"TRAFFICISLAND"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"COSENSOR"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"WINDSENSOR"s,"EARTHQUAKESENSOR"s,"FOREIGNOBJECTDETECTIONSENSOR"s,"OBSTACLESENSOR"s,"RAINSENSOR"s,"SNOWDEPTHSENSOR"s,"TRAINSENSOR"s,"TURNOUTCLOSURESENSOR"s,"WHEELSENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcShadingDeviceTypeEnum"s,"JALOUSIE"s,"SHUTTER"s,"AWNING"s,"IfcShearModulusMeasure"s,"IfcSignTypeEnum"s,"MARKER"s,"PICTORAL"s,"IfcSignalTypeEnum"s,"VISUAL"s,"AUDIO"s,"MIXED"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_SINGLEVALUE"s,"P_ENUMERATEDVALUE"s,"P_BOUNDEDVALUE"s,"P_LISTVALUE"s,"P_TABLEVALUE"s,"P_REFERENCEVALUE"s,"Q_LENGTH"s,"Q_AREA"s,"Q_VOLUME"s,"Q_COUNT"s,"Q_WEIGHT"s,"Q_TIME"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"APPROACH_SLAB"s,"WEARING"s,"TRACKSLAB"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"SPACE"s,"PARKING"s,"GFA"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"OCCUPANCY"s,"RESERVATION"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"LADDER"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"POLYGONAL"s,"EQUIDISTANT"s,"SINUS"s,"PARABOLA"s,"DISCRETE"s,"IfcStructuralCurveMemberTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"MARK"s,"TAG"s,"TREATMENT"s,"DEFECT"s,"HATCHMARKING"s,"LINEMARKING"s,"PAVEMENTSURFACEMARKING"s,"SYMBOLMARKING"s,"NONSKIDSURFACING"s,"RUMBLESTRIP"s,"TRANSVERSERUMBLESTRIP"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"START_AND_STOP_EQUIPMENT"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"WORKSURFACE"s,"SUBRACK"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"PRESSUREVESSEL"s,"VESSEL"s,"OILRETENTIONTRAY"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonConduitTypeEnum"s,"GROUTING_DUCT"s,"TRUMPET"s,"DIABOLO"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTrackElementTypeEnum"s,"TRACKENDOFALIGNMENT"s,"BLOCKINGDEVICE"s,"VEHICLESTOP"s,"SLEEPER"s,"HALF_SET_OF_BLADES"s,"SPEEDREGULATOR"s,"DERAILER"s,"FROG"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"CHOPPER"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTransitionCurveType"s,"CLOTHOIDCURVE"s,"CUBICPARABOLA"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementFixedTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"CRANEWAY"s,"LIFTINGGEAR"s,"IfcTransportElementNonFixedTypeEnum"s,"VEHICLE"s,"VEHICLETRACKED"s,"ROLLINGSTOCK"s,"VEHICLEWHEELED"s,"VEHICLEAIR"s,"CARGO"s,"VEHICLEMARINE"s,"IfcTransportElementTypeSelect"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"HUMIDISTAT"s,"THERMOSTAT"s,"WEATHERSTATION"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"DEHUMIDIFIER"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationDamperTypeEnum"s,"BENDING_YIELD"s,"SHEAR_YIELD"s,"AXIAL_YIELD"s,"VISCOUS"s,"RUBBER"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"BASE"s,"IfcVoidingFeatureTypeEnum"s,"CUTOUT"s,"NOTCH"s,"HOLE"s,"MITER"s,"CHAMFER"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"SOLIDWALL"s,"STANDARD"s,"ELEMENTEDWALL"s,"RETAININGWALL"s,"WAVEWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWindowTypeEnum"s,"WINDOW"s,"SKYLIGHT"s,"LIGHTDOME"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcAlignmentParameterSegment"s,"IfcAlignmentVerticalSegment"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcPresentationStyleAssignment"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcCurveMeasureSelect"s,"IfcDerivedMeasureValue"s,"IfcFacilityPartTypeSelect"s,"IfcImpactProtectionDeviceTypeSelect"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcStyleAssignmentSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcAlignment2DVerSegCircularArc"s,"IfcAlignment2DVerSegLine"s,"IfcAlignment2DVerSegParabolicArc"s,"IfcAlignmentCantSegment"s,"IfcAlignmentHorizontalSegment"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLinearAxisWithInclination"s,"IfcLinearPlacement"s,"IfcLinearPlacementWithInclination"s,"IfcLinearSpanPlacement"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenCrossProfileDef"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointByDistanceExpression"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcSegment"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcPresentationStyleSelect"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcAxis2PlacementLinear"s,"IfcAxisLateralInclination"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcCurveSegment"s,"IfcDirection"s,"IfcDirectrixCurveSweptAreaSolid"s,"IfcDirectrixDistanceSweptAreaSolid"s,"IfcDoorStyle"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcInclinedReferenceSweptAreaSolid"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcOffsetCurveByDistances"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelAssociatesProfileDef"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelPositions"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSectionedSolid"s,"IfcSectionedSolidHorizontal"s,"IfcSectionedSurface"s,"IfcSeriesParameterCurve"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcToroidalSurface"s,"IfcTransportElementType"s,"IfcTriangulatedFaceSet"s,"IfcTriangulatedIrregularNetwork"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcLinearAxisSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBlossCurve"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuildingStorey"s,"IfcBuiltElementType"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcClothoid"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCourseType"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCurveSegment2D"s,"IfcCylindricalSurface"s,"IfcDeepFoundationType"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFacility"s,"IfcFacilityPart"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGeotechnicalElement"s,"IfcGeotechnicalStratum"s,"IfcGradientCurve"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcImpactProtectionDevice"s,"IfcImpactProtectionDeviceType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcKerbType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLineSegment2D"s,"IfcLinearElement"s,"IfcLiquidTerminalType"s,"IfcMarineFacility"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMobileTelecommunicationsApplianceType"s,"IfcMooringDeviceType"s,"IfcMotorConnectionType"s,"IfcNavigationElementType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOpeningStandardCase"s,"IfcOutletType"s,"IfcPavementType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlant"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcPositioningElement"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailType"s,"IfcRailingType"s,"IfcRailway"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReferent"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAggregates"s,"IfcRoad"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcSegmentedReferenceCurve"s,"IfcShadingDeviceType"s,"IfcSign"s,"IfcSignType"s,"IfcSignalType"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSolidStratum"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonConduit"s,"IfcTendonConduitType"s,"IfcTendonType"s,"IfcTrackElementType"s,"IfcTransformerType"s,"IfcTransitionCurveSegment2D"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVibrationDamper"s,"IfcVibrationDamperType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVirtualElement"s,"IfcVoidStratum"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWaterStratum"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcInterferenceSelect"s,"IfcSpatialReferenceSelect"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAlignmentCant"s,"IfcAlignmentCurve"s,"IfcAlignmentHorizontal"s,"IfcAlignmentSegment"s,"IfcAlignmentVertical"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBearingType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBridge"s,"IfcBridgePart"s,"IfcBuilding"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxyType"s,"IfcBuildingSystem"s,"IfcBuiltElement"s,"IfcBuiltSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcCaissonFoundationType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCircularArcSegment2D"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcColumnStandardCase"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcConveyorSegmentType"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCourse"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDeepFoundation"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionBoardType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDoorStandardCase"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcEarthworksCut"s,"IfcEarthworksElement"s,"IfcEarthworksFill"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricFlowTreatmentDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcGeotechnicalAssembly"s,"IfcGrid"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcKerb"s,"IfcLamp"s,"IfcLightFixture"s,"IfcLinearPositioningElement"s,"IfcLiquidTerminal"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMemberStandardCase"s,"IfcMobileTelecommunicationsAppliance"s,"IfcMooringDevice"s,"IfcMotorConnection"s,"IfcNavigationElement"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPavement"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcPlateStandardCase"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRail"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcedSoil"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSignal"s,"IfcSlab"s,"IfcSlabElementedCase"s,"IfcSlabStandardCase"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTrackElement"s,"IfcTransformer"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallElementedCase"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcWindowStandardCase"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAlignment"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBeamStandardCase"s,"IfcBearing"s,"IfcBoiler"s,"IfcBorehole"s,"IfcBuildingElementProxy"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcCaissonFoundation"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcConveyorSegment"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionBoard"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricFlowTreatmentDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcGeomodel"s,"IfcGeoslice"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"Radius"s,"IsConvex"s,"ParabolaConstant"s,"RailHeadDistance"s,"Segments"s,"StartDistAlong"s,"HorizontalLength"s,"StartCantLeft"s,"EndCantLeft"s,"StartCantRight"s,"EndCantRight"s,"SmoothingLength"s,"Horizontal"s,"Vertical"s,"Tag"s,"StartPoint"s,"StartDirection"s,"StartRadiusOfCurvature"s,"EndRadiusOfCurvature"s,"SegmentLength"s,"GravityCenterLineHeight"s,"StartTag"s,"EndTag"s,"GeometricParameters"s,"StartHeight"s,"StartGradient"s,"EndGradient"s,"RadiusOfCurvature"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Position"s,"CurveLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"TagList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"IsCCW"s,"Source"s,"Edition"s,"EditionDate"s,"Location"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"ClothoidConstant"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"StartPlacement"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"Directrix"s,"StartParam"s,"EndParam"s,"StartDistance"s,"EndDistance"s,"FlowDirection"s,"SystemType"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"UsageType"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"BaseCurve"s,"EndPoint"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"FixedAxisVertical"s,"Inclinating"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"Mountable"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"PlacementMeasuredAlong"s,"Distance"s,"RelativePlacement"s,"CartesianPosition"s,"Span"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"Expression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"PlacementRelTo"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"HorizontalWidths"s,"Widths"s,"Slopes"s,"Tags"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"Flexible"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Height"s,"ColourComponents"s,"Pixel"s,"Placement"s,"SizeInX"s,"SizeInY"s,"DistanceAlong"s,"OffsetLateral"s,"OffsetVertical"s,"OffsetLongitudinal"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Closed"s,"Faces"s,"PnIndex"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"Styles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"ProxyType"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"RestartDistance"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"RelatingProfileDef"s,"ConnectionGeometry"s,"RelatingElement"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceType"s,"ImpliedOrder"s,"RelatingPositioningElement"s,"RelatedProducts"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"CrossSections"s,"CrossSectionPositions"s,"SpineCurve"s,"Transition"s,"CoefficientsX"s,"CoefficientsY"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"Vertices"s,"TexCoordsList"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"StartRadius"s,"EndRadius"s,"IsStartRadiusCCW"s,"IsEndRadiusCCW"s,"TransitionCurveType"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Flags"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"Start"s,"Finish"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"ToLinearAxis"s,"PositioningElement"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"UsingCurves"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ToFaceSet"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"Positions"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"PositionedRelativeTo"s,"ReferencedInStructures"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"ServicesFacilities"s,"HasColours"s,"HasTextures"s,"Types"s,"IFC4X3_RC2"s}; - - class IFC4X3_RC2_instance_factory : public IfcParse::instance_factory { virtual IfcUtil::IfcBaseClass* operator()(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) const { switch(decl->index_in_schema()) { @@ -1306,6 +1303,9 @@ class IFC4X3_RC2_instance_factory : public IfcParse::instance_factory { }; IfcParse::schema_definition* IFC4X3_RC2_populate_schema() { + +const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"RAILWAYCROCODILE"s,"RAILWAYDETONATOR"s,"IfcAlignmentCantSegmentTypeEnum"s,"CONSTANTCANT"s,"LINEARTRANSITION"s,"BIQUADRATICPARABOLA"s,"BLOSSCURVE"s,"COSINECURVE"s,"SINECURVE"s,"VIENNESEBEND"s,"IfcAlignmentHorizontalSegmentTypeEnum"s,"LINE"s,"CIRCULARARC"s,"CLOTHOID"s,"CUBICSPIRAL"s,"IfcAlignmentTypeEnum"s,"IfcAlignmentVerticalSegmentTypeEnum"s,"CONSTANTGRADIENT"s,"PARABOLICARC"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAnnotationTypeEnum"s,"ASSUMEDPOINT"s,"ASBUILTAREA"s,"ASBUILTLINE"s,"NON_PHYSICAL_SIGNAL"s,"ASSUMEDLINE"s,"WIDTHEVENT"s,"ASSUMEDAREA"s,"SUPERELEVATIONEVENT"s,"ASBUILTPOINT"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"RAILWAY_COMMUNICATION_TERMINAL"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"PLANE_SURF"s,"CYLINDRICAL_SURF"s,"CONICAL_SURF"s,"SPHERICAL_SURF"s,"TOROIDAL_SURF"s,"SURF_OF_REVOLUTION"s,"RULED_SURF"s,"GENERALISED_CONE"s,"QUADRIC_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"HOLLOWCORE"s,"LINTEL"s,"SPANDREL"s,"T_BEAM"s,"GIRDER_SEGMENT"s,"DIAPHRAGM"s,"PIERCAP"s,"HATSTONE"s,"CORNICE"s,"EDGEBEAM"s,"IfcBearingTypeDisplacementEnum"s,"FIXED_MOVEMENT"s,"GUIDED_LONGITUDINAL"s,"GUIDED_TRANSVERSAL"s,"FREE_MOVEMENT"s,"IfcBearingTypeEnum"s,"CYLINDRICAL"s,"SPHERICAL"s,"ELASTOMERIC"s,"POT"s,"GUIDE"s,"ROCKER"s,"ROLLER"s,"DISK"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"INCLUDES"s,"NOTINCLUDES"s,"INCLUDEDIN"s,"NOTINCLUDEDIN"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBridgePartTypeEnum"s,"ABUTMENT"s,"DECK"s,"DECK_SEGMENT"s,"FOUNDATION"s,"PIER"s,"PIER_SEGMENT"s,"PYLON"s,"SUBSTRUCTURE"s,"SUPERSTRUCTURE"s,"SURFACESTRUCTURE"s,"IfcBridgeTypeEnum"s,"ARCHED"s,"CABLE_STAYED"s,"CANTILEVER"s,"CULVERT"s,"FRAMEWORK"s,"GIRDER"s,"SUSPENSION"s,"TRUSS"s,"IfcBuildingElementPartTypeEnum"s,"INSULATION"s,"PRECASTPANEL"s,"APRON"s,"ARMOURUNIT"s,"SAFETYCAGE"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"PROVISIONFORVOID"s,"PROVISIONFORSPACE"s,"IfcBuildingSystemTypeEnum"s,"FENESTRATION"s,"LOADBEARING"s,"OUTERSHELL"s,"SHADING"s,"REINFORCING"s,"PRESTRESSING"s,"EROSIONPREVENTION"s,"IfcBuiltSystemTypeEnum"s,"MOORING"s,"TRACKCIRCUIT"s,"MOORINGSYSTEM"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"CABLEBRACKET"s,"CATENARYWIRE"s,"DROPPER"s,"IfcCableFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"TRANSITION"s,"FANOUT"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CORESEGMENT"s,"CONTACTWIRESEGMENT"s,"FIBERSEGMENT"s,"FIBERTUBE"s,"OPTICALCABLESEGMENT"s,"STITCHWIRE"s,"WIREPAIRSEGMENT"s,"IfcCaissonFoundationTypeEnum"s,"WELL"s,"CAISSON"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PILASTER"s,"PIERSTEM"s,"PIERSTEM_SEGMENT"s,"STANDCOLUMN"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"COMPUTER"s,"GATEWAY"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"PRINTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"AUTOMATON"s,"INTELLIGENT_PERIPHERAL"s,"IP_NETWORK_EQUIPMENT"s,"OPTICAL_NETWORK_UNIT"s,"TELECOMMAND"s,"TELEPHONYEXCHANGE"s,"TRANSITIONCOMPONENT"s,"TRANSPONDER"s,"TRANSPORTEQUIPMENT"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"MULTIPOSITION"s,"TWOPOSITION"s,"IfcConveyorSegmentTypeEnum"s,"CHUTECONVEYOR"s,"BELTCONVEYOR"s,"SCREWCONVEYOR"s,"BUCKETCONVEYOR"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCourseTypeEnum"s,"ARMOUR"s,"FILTER"s,"BALLASTBED"s,"CORE"s,"PAVEMENT"s,"PROTECTION"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"MOLDING"s,"SKIRTINGBOARD"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"COPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BRACKET"s,"SHOE"s,"EXPANSION_JOINT_DEVICE"s,"BIRDPROTECTION"s,"CABLEARRANGER"s,"INSULATOR"s,"LOCK"s,"TENSIONINGEQUIPMENT"s,"RAILPAD"s,"SLIDINGCHAIR"s,"PANEL_STRENGTHENING"s,"RAILBRACE"s,"ELASTIC_CUSHION"s,"SOUNDABSORPTION"s,"RAIL_LUBRICATION"s,"RAIL_MECHANICAL_EQUIPMENT"s,"IfcDistributionBoardTypeEnum"s,"SWITCHBOARD"s,"CONSUMERUNIT"s,"MOTORCONTROLCENTRE"s,"DISTRIBUTIONFRAME"s,"DISTRIBUTIONBOARD"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"WIRELESS"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"CATENARY_SYSTEM"s,"OVERHEAD_CONTACTLINE_SYSTEM"s,"RETURN_CIRCUIT"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"FIXEDPANEL"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoorTypeEnum"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"BOOM_BARRIER"s,"TURNSTILE"s,"IfcDoorTypeOperationEnum"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcEarthworksCutTypeEnum"s,"DREDGING"s,"EXCAVATION"s,"OVEREXCAVATION"s,"TOPSOILREMOVAL"s,"STEPEXCAVATION"s,"PAVEMENTMILLING"s,"CUT"s,"BASE_EXCAVATION"s,"IfcEarthworksFillTypeEnum"s,"BACKFILL"s,"COUNTERWEIGHT"s,"SUBGRADE"s,"EMBANKMENT"s,"TRANSITIONSECTION"s,"SUBGRADEBED"s,"SLOPEFILL"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERHEATER"s,"FREESTANDINGWATERCOOLER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"CAPACITOR"s,"COMPENSATOR"s,"INDUCTOR"s,"RECHARGER"s,"IfcElectricFlowTreatmentDeviceTypeEnum"s,"ELECTRONICFILTER"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"CROSS_BRACING"s,"MAST"s,"SIGNALASSEMBLY"s,"GRID"s,"SHELTER"s,"SUPPORTINGASSEMBLY"s,"SUSPENSIONASSEMBLY"s,"TRACTION_SWITCHING_ASSEMBLY"s,"TRACKPANEL"s,"TURNOUTPANEL"s,"DILATATIONPANEL"s,"RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY"s,"ENTRANCEWORKS"s,"SUMPBUSTER"s,"TRAFFIC_CALMING_DEVICE"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTRULE"s,"EVENTMESSAGE"s,"EVENTTIME"s,"EVENTCOMPLEX"s,"IfcEventTypeEnum"s,"STARTEVENT"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_WATER"s,"EXTERNAL_FIRE"s,"IfcFacilityPartCommonTypeEnum"s,"SEGMENT"s,"ABOVEGROUND"s,"LEVELCROSSING"s,"BELOWGROUND"s,"TERMINAL"s,"IfcFacilityUsageEnum"s,"LATERAL"s,"REGION"s,"VERTICAL"s,"LONGITUDINAL"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"COMBINED"s,"VOLTMETER"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"CHAIR"s,"TABLE"s,"DESK"s,"BED"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"TECHNICALCABINET"s,"IfcGeographicElementTypeEnum"s,"TERRAIN"s,"SOIL_BORING_POINT"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"RADIAL"s,"TRIANGULAR"s,"IRREGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"TURNOUTHEATING"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcImpactProtectionDeviceTypeEnum"s,"CRASHCUSHION"s,"DAMPINGSYSTEM"s,"FENDER"s,"BUMPER"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"UNIFORM_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"PIECEWISE_BEZIER_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLiquidTerminalTypeEnum"s,"LOADINGARM"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"LOGICALXOR"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMarineFacilityTypeEnum"s,"CANAL"s,"WATERWAYSHIPLIFT"s,"LAUNCHRECOVERY"s,"MARINEDEFENCE"s,"HYDROLIFT"s,"SHIPYARD"s,"SHIPLIFT"s,"PORT"s,"QUAY"s,"FLOATINGDOCK"s,"NAVIGATIONALCHANNEL"s,"BREAKWATER"s,"DRYDOCK"s,"JETTY"s,"SHIPLOCK"s,"BARRIERBEACH"s,"SLIPWAY"s,"WATERWAY"s,"IfcMarinePartTypeEnum"s,"CREST"s,"MANUFACTURING"s,"LOWWATERLINE"s,"WATERFIELD"s,"CILL_LEVEL"s,"BERTHINGSTRUCTURE"s,"COPELEVEL"s,"CHAMBER"s,"STORAGE"s,"APPROACHCHANNEL"s,"VEHICLESERVICING"s,"SHIPTRANSFER"s,"GATEHEAD"s,"GUDINGSTRUCTURE"s,"BELOWWATERLINE"s,"WEATHERSIDE"s,"LANDFIELD"s,"LEEWARDSIDE"s,"ABOVEWATERLINE"s,"ANCHORAGE"s,"NAVIGATIONALAREA"s,"HIGHWATERLINE"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RIVET"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"COUPLER"s,"RAILJOINT"s,"RAILFASTENING"s,"CHAIN"s,"ROPE"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"STIFFENING_RIB"s,"ARCH_SEGMENT"s,"SUSPENSION_CABLE"s,"SUSPENDER"s,"STAY_CABLE"s,"STRUCTURALCABLE"s,"TIEBAR"s,"IfcMobileTelecommunicationsApplianceTypeEnum"s,"E_UTRAN_NODE_B"s,"REMOTE_RADIO_UNIT"s,"ACCESSPOINT"s,"BASETRANSCEIVERSTATION"s,"REMOTEUNIT"s,"BASEBANDUNIT"s,"MASTERUNIT"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMooringDeviceTypeEnum"s,"LINETENSIONER"s,"MAGNETICDEVICE"s,"MOORINGHOOKS"s,"VACUUMDEVICE"s,"BOLLARD"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNavigationElementTypeEnum"s,"BEACON"s,"BUOY"s,"IfcNonNegativeLengthMeasure"s,"IfcNullStyle"s,"NULL"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"DATAOUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"DRIVEN"s,"JETGROUTING"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"FLANGE_PLATE"s,"WEB_PLATE"s,"STIFFENER_PLATE"s,"GUSSET_PLATE"s,"COVER_PLATE"s,"SPLICE_PLATE"s,"BASE_PLATE"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"BLISTER"s,"DEVIATOR"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTRONIC"s,"ELECTROMAGNETIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"CIRCUITBREAKER"s,"EARTHLEAKAGECIRCUITBREAKER"s,"EARTHINGSWITCH"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"ANTI_ARCING_DEVICE"s,"SPARKGAP"s,"VOLTAGELIMITER"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailTypeEnum"s,"RACKRAIL"s,"BLADE"s,"GUARDRAIL"s,"STOCKRAIL"s,"CHECKRAIL"s,"RAIL"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"BALUSTRADE"s,"FENCE"s,"IfcRailwayPartTypeEnum"s,"TRACKSTRUCTURE"s,"TRACKSTRUCTUREPART"s,"LINESIDESTRUCTUREPART"s,"DILATATIONSUPERSTRUCTURE"s,"PLAINTRACKSUPESTRUCTURE"s,"LINESIDESTRUCTURE"s,"TURNOUTSUPERSTRUCTURE"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"DAILY"s,"WEEKLY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReferentTypeEnum"s,"KILOPOINT"s,"MILEPOINT"s,"STATION"s,"REFERENCEMARKER"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcedSoilTypeEnum"s,"SURCHARGEPRELOADED"s,"VERTICALLYDRAINED"s,"DYNAMICALLYCOMPACTED"s,"REPLACED"s,"ROLLERCOMPACTED"s,"GROUTED"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"ANCHORING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"SPACEBAR"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoadPartTypeEnum"s,"ROADSIDEPART"s,"BUS_STOP"s,"HARDSHOULDER"s,"PASSINGBAY"s,"ROADWAYPLATEAU"s,"ROADSIDE"s,"REFUGEISLAND"s,"TOLLPLAZA"s,"CENTRALRESERVE"s,"SIDEWALK"s,"PARKINGBAY"s,"RAILWAYCROSSING"s,"PEDESTRIAN_CROSSING"s,"SOFTSHOULDER"s,"BICYCLECROSSING"s,"CENTRALISLAND"s,"SHOULDER"s,"TRAFFICLANE"s,"ROADSEGMENT"s,"ROUNDABOUT"s,"LAYBY"s,"CARRIAGEWAY"s,"TRAFFICISLAND"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"COSENSOR"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"WINDSENSOR"s,"EARTHQUAKESENSOR"s,"FOREIGNOBJECTDETECTIONSENSOR"s,"OBSTACLESENSOR"s,"RAINSENSOR"s,"SNOWDEPTHSENSOR"s,"TRAINSENSOR"s,"TURNOUTCLOSURESENSOR"s,"WHEELSENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcShadingDeviceTypeEnum"s,"JALOUSIE"s,"SHUTTER"s,"AWNING"s,"IfcShearModulusMeasure"s,"IfcSignTypeEnum"s,"MARKER"s,"PICTORAL"s,"IfcSignalTypeEnum"s,"VISUAL"s,"AUDIO"s,"MIXED"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_SINGLEVALUE"s,"P_ENUMERATEDVALUE"s,"P_BOUNDEDVALUE"s,"P_LISTVALUE"s,"P_TABLEVALUE"s,"P_REFERENCEVALUE"s,"Q_LENGTH"s,"Q_AREA"s,"Q_VOLUME"s,"Q_COUNT"s,"Q_WEIGHT"s,"Q_TIME"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"APPROACH_SLAB"s,"WEARING"s,"TRACKSLAB"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"SPACE"s,"PARKING"s,"GFA"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"OCCUPANCY"s,"RESERVATION"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"LADDER"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"POLYGONAL"s,"EQUIDISTANT"s,"SINUS"s,"PARABOLA"s,"DISCRETE"s,"IfcStructuralCurveMemberTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"MARK"s,"TAG"s,"TREATMENT"s,"DEFECT"s,"HATCHMARKING"s,"LINEMARKING"s,"PAVEMENTSURFACEMARKING"s,"SYMBOLMARKING"s,"NONSKIDSURFACING"s,"RUMBLESTRIP"s,"TRANSVERSERUMBLESTRIP"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"START_AND_STOP_EQUIPMENT"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"WORKSURFACE"s,"SUBRACK"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"PRESSUREVESSEL"s,"VESSEL"s,"OILRETENTIONTRAY"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonConduitTypeEnum"s,"GROUTING_DUCT"s,"TRUMPET"s,"DIABOLO"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTrackElementTypeEnum"s,"TRACKENDOFALIGNMENT"s,"BLOCKINGDEVICE"s,"VEHICLESTOP"s,"SLEEPER"s,"HALF_SET_OF_BLADES"s,"SPEEDREGULATOR"s,"DERAILER"s,"FROG"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"CHOPPER"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTransitionCurveType"s,"CLOTHOIDCURVE"s,"CUBICPARABOLA"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementFixedTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"CRANEWAY"s,"LIFTINGGEAR"s,"IfcTransportElementNonFixedTypeEnum"s,"VEHICLE"s,"VEHICLETRACKED"s,"ROLLINGSTOCK"s,"VEHICLEWHEELED"s,"VEHICLEAIR"s,"CARGO"s,"VEHICLEMARINE"s,"IfcTransportElementTypeSelect"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"HUMIDISTAT"s,"THERMOSTAT"s,"WEATHERSTATION"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"DEHUMIDIFIER"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationDamperTypeEnum"s,"BENDING_YIELD"s,"SHEAR_YIELD"s,"AXIAL_YIELD"s,"VISCOUS"s,"RUBBER"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"BASE"s,"IfcVoidingFeatureTypeEnum"s,"CUTOUT"s,"NOTCH"s,"HOLE"s,"MITER"s,"CHAMFER"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"SOLIDWALL"s,"STANDARD"s,"ELEMENTEDWALL"s,"RETAININGWALL"s,"WAVEWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWindowTypeEnum"s,"WINDOW"s,"SKYLIGHT"s,"LIGHTDOME"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcAlignmentParameterSegment"s,"IfcAlignmentVerticalSegment"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcPresentationStyleAssignment"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcCurveMeasureSelect"s,"IfcDerivedMeasureValue"s,"IfcFacilityPartTypeSelect"s,"IfcImpactProtectionDeviceTypeSelect"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcStyleAssignmentSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcAlignment2DVerSegCircularArc"s,"IfcAlignment2DVerSegLine"s,"IfcAlignment2DVerSegParabolicArc"s,"IfcAlignmentCantSegment"s,"IfcAlignmentHorizontalSegment"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLinearAxisWithInclination"s,"IfcLinearPlacement"s,"IfcLinearPlacementWithInclination"s,"IfcLinearSpanPlacement"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenCrossProfileDef"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointByDistanceExpression"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcSegment"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcPresentationStyleSelect"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcAxis2PlacementLinear"s,"IfcAxisLateralInclination"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcCurveSegment"s,"IfcDirection"s,"IfcDirectrixCurveSweptAreaSolid"s,"IfcDirectrixDistanceSweptAreaSolid"s,"IfcDoorStyle"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcInclinedReferenceSweptAreaSolid"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcOffsetCurveByDistances"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelAssociatesProfileDef"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelPositions"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSectionedSolid"s,"IfcSectionedSolidHorizontal"s,"IfcSectionedSurface"s,"IfcSeriesParameterCurve"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcToroidalSurface"s,"IfcTransportElementType"s,"IfcTriangulatedFaceSet"s,"IfcTriangulatedIrregularNetwork"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcLinearAxisSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBlossCurve"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuildingStorey"s,"IfcBuiltElementType"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcClothoid"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCourseType"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCurveSegment2D"s,"IfcCylindricalSurface"s,"IfcDeepFoundationType"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFacility"s,"IfcFacilityPart"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGeotechnicalElement"s,"IfcGeotechnicalStratum"s,"IfcGradientCurve"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcImpactProtectionDevice"s,"IfcImpactProtectionDeviceType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcKerbType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLineSegment2D"s,"IfcLinearElement"s,"IfcLiquidTerminalType"s,"IfcMarineFacility"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMobileTelecommunicationsApplianceType"s,"IfcMooringDeviceType"s,"IfcMotorConnectionType"s,"IfcNavigationElementType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOpeningStandardCase"s,"IfcOutletType"s,"IfcPavementType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlant"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcPositioningElement"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailType"s,"IfcRailingType"s,"IfcRailway"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReferent"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAggregates"s,"IfcRoad"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcSegmentedReferenceCurve"s,"IfcShadingDeviceType"s,"IfcSign"s,"IfcSignType"s,"IfcSignalType"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSolidStratum"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonConduit"s,"IfcTendonConduitType"s,"IfcTendonType"s,"IfcTrackElementType"s,"IfcTransformerType"s,"IfcTransitionCurveSegment2D"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVibrationDamper"s,"IfcVibrationDamperType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVirtualElement"s,"IfcVoidStratum"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWaterStratum"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcInterferenceSelect"s,"IfcSpatialReferenceSelect"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAlignmentCant"s,"IfcAlignmentCurve"s,"IfcAlignmentHorizontal"s,"IfcAlignmentSegment"s,"IfcAlignmentVertical"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBearingType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBridge"s,"IfcBridgePart"s,"IfcBuilding"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxyType"s,"IfcBuildingSystem"s,"IfcBuiltElement"s,"IfcBuiltSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcCaissonFoundationType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCircularArcSegment2D"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcColumnStandardCase"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcConveyorSegmentType"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCourse"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDeepFoundation"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionBoardType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDoorStandardCase"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcEarthworksCut"s,"IfcEarthworksElement"s,"IfcEarthworksFill"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricFlowTreatmentDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcGeotechnicalAssembly"s,"IfcGrid"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcKerb"s,"IfcLamp"s,"IfcLightFixture"s,"IfcLinearPositioningElement"s,"IfcLiquidTerminal"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMemberStandardCase"s,"IfcMobileTelecommunicationsAppliance"s,"IfcMooringDevice"s,"IfcMotorConnection"s,"IfcNavigationElement"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPavement"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcPlateStandardCase"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRail"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcedSoil"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSignal"s,"IfcSlab"s,"IfcSlabElementedCase"s,"IfcSlabStandardCase"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTrackElement"s,"IfcTransformer"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallElementedCase"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcWindowStandardCase"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAlignment"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBeamStandardCase"s,"IfcBearing"s,"IfcBoiler"s,"IfcBorehole"s,"IfcBuildingElementProxy"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcCaissonFoundation"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcConveyorSegment"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionBoard"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricFlowTreatmentDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcGeomodel"s,"IfcGeoslice"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"Radius"s,"IsConvex"s,"ParabolaConstant"s,"RailHeadDistance"s,"Segments"s,"StartDistAlong"s,"HorizontalLength"s,"StartCantLeft"s,"EndCantLeft"s,"StartCantRight"s,"EndCantRight"s,"SmoothingLength"s,"Horizontal"s,"Vertical"s,"Tag"s,"StartPoint"s,"StartDirection"s,"StartRadiusOfCurvature"s,"EndRadiusOfCurvature"s,"SegmentLength"s,"GravityCenterLineHeight"s,"StartTag"s,"EndTag"s,"GeometricParameters"s,"StartHeight"s,"StartGradient"s,"EndGradient"s,"RadiusOfCurvature"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Position"s,"CurveLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"TagList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"IsCCW"s,"Source"s,"Edition"s,"EditionDate"s,"Location"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"ClothoidConstant"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"StartPlacement"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"Directrix"s,"StartParam"s,"EndParam"s,"StartDistance"s,"EndDistance"s,"FlowDirection"s,"SystemType"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"UsageType"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"BaseCurve"s,"EndPoint"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"FixedAxisVertical"s,"Inclinating"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"Mountable"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"PlacementMeasuredAlong"s,"Distance"s,"RelativePlacement"s,"CartesianPosition"s,"Span"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"Expression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"PlacementRelTo"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"HorizontalWidths"s,"Widths"s,"Slopes"s,"Tags"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"Flexible"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Height"s,"ColourComponents"s,"Pixel"s,"Placement"s,"SizeInX"s,"SizeInY"s,"DistanceAlong"s,"OffsetLateral"s,"OffsetVertical"s,"OffsetLongitudinal"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Closed"s,"Faces"s,"PnIndex"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"Styles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"ProxyType"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"RestartDistance"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"RelatingProfileDef"s,"ConnectionGeometry"s,"RelatingElement"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceType"s,"ImpliedOrder"s,"RelatingPositioningElement"s,"RelatedProducts"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"CrossSections"s,"CrossSectionPositions"s,"SpineCurve"s,"Transition"s,"CoefficientsX"s,"CoefficientsY"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"Vertices"s,"TexCoordsList"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"StartRadius"s,"EndRadius"s,"IsStartRadiusCCW"s,"IsEndRadiusCCW"s,"TransitionCurveType"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Flags"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"Start"s,"Finish"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"ToLinearAxis"s,"PositioningElement"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"UsingCurves"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ToFaceSet"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"Positions"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"PositionedRelativeTo"s,"ReferencedInStructures"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"ServicesFacilities"s,"HasColours"s,"HasTextures"s,"Types"s,"IFC4X3_RC2"s}; + IFC4X3_RC2_types[0] = new type_declaration(strings[0], 0, new simple_type(simple_type::real_type)); IFC4X3_RC2_types[1] = new type_declaration(strings[1], 1, new simple_type(simple_type::real_type)); IFC4X3_RC2_types[3] = new enumeration_type(strings[2], 3, {strings[3],strings[4],strings[5],strings[6],strings[7],strings[8],strings[9]}); diff --git a/src/ifcparse/Ifc4x3_rc3-schema.cpp b/src/ifcparse/Ifc4x3_rc3-schema.cpp index 10b15b736a..79db464352 100644 --- a/src/ifcparse/Ifc4x3_rc3-schema.cpp +++ b/src/ifcparse/Ifc4x3_rc3-schema.cpp @@ -33,9 +33,6 @@ using namespace IfcParse; declaration* IFC4X3_RC3_types[1317] = {nullptr}; -const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"RAILWAYCROCODILE"s,"RAILWAYDETONATOR"s,"IfcAlignmentCantSegmentTypeEnum"s,"CONSTANTCANT"s,"LINEARTRANSITION"s,"HELMERTCURVE"s,"BLOSSCURVE"s,"COSINECURVE"s,"SINECURVE"s,"VIENNESEBEND"s,"IfcAlignmentHorizontalSegmentTypeEnum"s,"LINE"s,"CIRCULARARC"s,"CLOTHOID"s,"CUBIC"s,"CUBICSPIRAL"s,"IfcAlignmentTypeEnum"s,"IfcAlignmentVerticalSegmentTypeEnum"s,"CONSTANTGRADIENT"s,"PARABOLICARC"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAnnotationTypeEnum"s,"ASSUMEDPOINT"s,"ASBUILTAREA"s,"ASBUILTLINE"s,"NON_PHYSICAL_SIGNAL"s,"ASSUMEDLINE"s,"WIDTHEVENT"s,"ASSUMEDAREA"s,"SUPERELEVATIONEVENT"s,"ASBUILTPOINT"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"RAILWAY_COMMUNICATION_TERMINAL"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"PLANE_SURF"s,"CYLINDRICAL_SURF"s,"CONICAL_SURF"s,"SPHERICAL_SURF"s,"TOROIDAL_SURF"s,"SURF_OF_REVOLUTION"s,"RULED_SURF"s,"GENERALISED_CONE"s,"QUADRIC_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"HOLLOWCORE"s,"LINTEL"s,"SPANDREL"s,"T_BEAM"s,"GIRDER_SEGMENT"s,"DIAPHRAGM"s,"PIERCAP"s,"HATSTONE"s,"CORNICE"s,"EDGEBEAM"s,"IfcBearingTypeDisplacementEnum"s,"FIXED_MOVEMENT"s,"GUIDED_LONGITUDINAL"s,"GUIDED_TRANSVERSAL"s,"FREE_MOVEMENT"s,"IfcBearingTypeEnum"s,"CYLINDRICAL"s,"SPHERICAL"s,"ELASTOMERIC"s,"POT"s,"GUIDE"s,"ROCKER"s,"ROLLER"s,"DISK"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"INCLUDES"s,"NOTINCLUDES"s,"INCLUDEDIN"s,"NOTINCLUDEDIN"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBridgePartTypeEnum"s,"ABUTMENT"s,"DECK"s,"DECK_SEGMENT"s,"FOUNDATION"s,"PIER"s,"PIER_SEGMENT"s,"PYLON"s,"SUBSTRUCTURE"s,"SUPERSTRUCTURE"s,"SURFACESTRUCTURE"s,"IfcBridgeTypeEnum"s,"ARCHED"s,"CABLE_STAYED"s,"CANTILEVER"s,"CULVERT"s,"FRAMEWORK"s,"GIRDER"s,"SUSPENSION"s,"TRUSS"s,"IfcBuildingElementPartTypeEnum"s,"INSULATION"s,"PRECASTPANEL"s,"APRON"s,"ARMOURUNIT"s,"SAFETYCAGE"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"PROVISIONFORVOID"s,"PROVISIONFORSPACE"s,"IfcBuildingSystemTypeEnum"s,"FENESTRATION"s,"LOADBEARING"s,"OUTERSHELL"s,"SHADING"s,"REINFORCING"s,"PRESTRESSING"s,"EROSIONPREVENTION"s,"IfcBuiltSystemTypeEnum"s,"MOORING"s,"TRACKCIRCUIT"s,"MOORINGSYSTEM"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"CABLEBRACKET"s,"CATENARYWIRE"s,"DROPPER"s,"IfcCableFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"TRANSITION"s,"FANOUT"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CORESEGMENT"s,"CONTACTWIRESEGMENT"s,"FIBERSEGMENT"s,"FIBERTUBE"s,"OPTICALCABLESEGMENT"s,"STITCHWIRE"s,"WIREPAIRSEGMENT"s,"IfcCaissonFoundationTypeEnum"s,"WELL"s,"CAISSON"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PILASTER"s,"PIERSTEM"s,"PIERSTEM_SEGMENT"s,"STANDCOLUMN"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"COMPUTER"s,"GATEWAY"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"PRINTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"AUTOMATON"s,"INTELLIGENT_PERIPHERAL"s,"IP_NETWORK_EQUIPMENT"s,"OPTICAL_NETWORK_UNIT"s,"TELECOMMAND"s,"TELEPHONYEXCHANGE"s,"TRANSITIONCOMPONENT"s,"TRANSPONDER"s,"TRANSPORTEQUIPMENT"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"MULTIPOSITION"s,"TWOPOSITION"s,"IfcConveyorSegmentTypeEnum"s,"CHUTECONVEYOR"s,"BELTCONVEYOR"s,"SCREWCONVEYOR"s,"BUCKETCONVEYOR"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCourseTypeEnum"s,"ARMOUR"s,"FILTER"s,"BALLASTBED"s,"CORE"s,"PAVEMENT"s,"PROTECTION"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"MOLDING"s,"SKIRTINGBOARD"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"COPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BRACKET"s,"SHOE"s,"EXPANSION_JOINT_DEVICE"s,"CABLEARRANGER"s,"INSULATOR"s,"LOCK"s,"TENSIONINGEQUIPMENT"s,"RAILPAD"s,"SLIDINGCHAIR"s,"RAIL_LUBRICATION"s,"PANEL_STRENGTHENING"s,"RAILBRACE"s,"ELASTIC_CUSHION"s,"SOUNDABSORPTION"s,"POINTMACHINEMOUNTINGDEVICE"s,"POINT_MACHINE_LOCKING_DEVICE"s,"RAIL_MECHANICAL_EQUIPMENT"s,"BIRDPROTECTION"s,"IfcDistributionBoardTypeEnum"s,"SWITCHBOARD"s,"CONSUMERUNIT"s,"MOTORCONTROLCENTRE"s,"DISTRIBUTIONFRAME"s,"DISTRIBUTIONBOARD"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"WIRELESS"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"CATENARY_SYSTEM"s,"OVERHEAD_CONTACTLINE_SYSTEM"s,"RETURN_CIRCUIT"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"FIXEDPANEL"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoorTypeEnum"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"BOOM_BARRIER"s,"TURNSTILE"s,"IfcDoorTypeOperationEnum"s,"DOUBLE_PANEL_SINGLE_SWING"s,"DOUBLE_PANEL_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_PANEL_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_PANEL_DOUBLE_SWING"s,"DOUBLE_PANEL_SLIDING"s,"DOUBLE_PANEL_FOLDING"s,"REVOLVING_HORIZONTAL"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"DOUBLE_PANEL_LIFTING_VERTICAL"s,"LIFTING_HORIZONTAL"s,"LIFTING_VERTICAL_LEFT"s,"LIFTING_VERTICAL_RIGHT"s,"REVOLVING_VERTICAL"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcEarthworksCutTypeEnum"s,"DREDGING"s,"EXCAVATION"s,"OVEREXCAVATION"s,"TOPSOILREMOVAL"s,"STEPEXCAVATION"s,"PAVEMENTMILLING"s,"CUT"s,"BASE_EXCAVATION"s,"IfcEarthworksFillTypeEnum"s,"BACKFILL"s,"COUNTERWEIGHT"s,"SUBGRADE"s,"EMBANKMENT"s,"TRANSITIONSECTION"s,"SUBGRADEBED"s,"SLOPEFILL"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERHEATER"s,"FREESTANDINGWATERCOOLER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"CAPACITOR"s,"COMPENSATOR"s,"INDUCTOR"s,"RECHARGER"s,"IfcElectricFlowTreatmentDeviceTypeEnum"s,"ELECTRONICFILTER"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"CROSS_BRACING"s,"MAST"s,"SIGNALASSEMBLY"s,"GRID"s,"SHELTER"s,"SUPPORTINGASSEMBLY"s,"SUSPENSIONASSEMBLY"s,"TRACTION_SWITCHING_ASSEMBLY"s,"TRACKPANEL"s,"TURNOUTPANEL"s,"DILATATIONPANEL"s,"RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY"s,"ENTRANCEWORKS"s,"SUMPBUSTER"s,"TRAFFIC_CALMING_DEVICE"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTRULE"s,"EVENTMESSAGE"s,"EVENTTIME"s,"EVENTCOMPLEX"s,"IfcEventTypeEnum"s,"STARTEVENT"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_WATER"s,"EXTERNAL_FIRE"s,"IfcFacilityPartCommonTypeEnum"s,"SEGMENT"s,"ABOVEGROUND"s,"LEVELCROSSING"s,"BELOWGROUND"s,"TERMINAL"s,"IfcFacilityUsageEnum"s,"LATERAL"s,"REGION"s,"VERTICAL"s,"LONGITUDINAL"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"FIREMONITOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"COMBINED"s,"VOLTMETER"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"CHAIR"s,"TABLE"s,"DESK"s,"BED"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"TECHNICALCABINET"s,"IfcGeographicElementTypeEnum"s,"TERRAIN"s,"SOIL_BORING_POINT"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"RADIAL"s,"TRIANGULAR"s,"IRREGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"TURNOUTHEATING"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcImpactProtectionDeviceTypeEnum"s,"CRASHCUSHION"s,"DAMPINGSYSTEM"s,"FENDER"s,"BUMPER"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"UNIFORM_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"PIECEWISE_BEZIER_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLiquidTerminalTypeEnum"s,"LOADINGARM"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"LOGICALXOR"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMarineFacilityTypeEnum"s,"CANAL"s,"WATERWAYSHIPLIFT"s,"REVETMENT"s,"LAUNCHRECOVERY"s,"MARINEDEFENCE"s,"HYDROLIFT"s,"SHIPYARD"s,"SHIPLIFT"s,"PORT"s,"QUAY"s,"FLOATINGDOCK"s,"NAVIGATIONALCHANNEL"s,"BREAKWATER"s,"DRYDOCK"s,"JETTY"s,"SHIPLOCK"s,"BARRIERBEACH"s,"SLIPWAY"s,"WATERWAY"s,"IfcMarinePartTypeEnum"s,"CREST"s,"MANUFACTURING"s,"LOWWATERLINE"s,"WATERFIELD"s,"CILL_LEVEL"s,"BERTHINGSTRUCTURE"s,"COPELEVEL"s,"CHAMBER"s,"STORAGE"s,"APPROACHCHANNEL"s,"VEHICLESERVICING"s,"SHIPTRANSFER"s,"GATEHEAD"s,"GUDINGSTRUCTURE"s,"BELOWWATERLINE"s,"WEATHERSIDE"s,"LANDFIELD"s,"LEEWARDSIDE"s,"ABOVEWATERLINE"s,"ANCHORAGE"s,"NAVIGATIONALAREA"s,"HIGHWATERLINE"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RIVET"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"COUPLER"s,"RAILJOINT"s,"RAILFASTENING"s,"CHAIN"s,"ROPE"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"STIFFENING_RIB"s,"ARCH_SEGMENT"s,"SUSPENSION_CABLE"s,"SUSPENDER"s,"STAY_CABLE"s,"STRUCTURALCABLE"s,"TIEBAR"s,"IfcMobileTelecommunicationsApplianceTypeEnum"s,"E_UTRAN_NODE_B"s,"REMOTE_RADIO_UNIT"s,"ACCESSPOINT"s,"BASETRANSCEIVERSTATION"s,"REMOTEUNIT"s,"BASEBANDUNIT"s,"MASTERUNIT"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMooringDeviceTypeEnum"s,"LINETENSIONER"s,"MAGNETICDEVICE"s,"MOORINGHOOKS"s,"VACUUMDEVICE"s,"BOLLARD"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNavigationElementTypeEnum"s,"BEACON"s,"BUOY"s,"IfcNonNegativeLengthMeasure"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"DATAOUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPavementTypeEnum"s,"FLEXIBLE"s,"RIGID"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"DRIVEN"s,"JETGROUTING"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"FLANGE_PLATE"s,"WEB_PLATE"s,"STIFFENER_PLATE"s,"GUSSET_PLATE"s,"COVER_PLATE"s,"SPLICE_PLATE"s,"BASE_PLATE"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"BLISTER"s,"DEVIATOR"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTRONIC"s,"ELECTROMAGNETIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"CIRCUITBREAKER"s,"EARTHLEAKAGECIRCUITBREAKER"s,"EARTHINGSWITCH"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"ANTI_ARCING_DEVICE"s,"SPARKGAP"s,"VOLTAGELIMITER"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailTypeEnum"s,"RACKRAIL"s,"BLADE"s,"GUARDRAIL"s,"STOCKRAIL"s,"CHECKRAIL"s,"RAIL"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"BALUSTRADE"s,"FENCE"s,"IfcRailwayPartTypeEnum"s,"TRACKSTRUCTURE"s,"TRACKSTRUCTUREPART"s,"LINESIDESTRUCTUREPART"s,"DILATATIONSUPERSTRUCTURE"s,"PLAINTRACKSUPESTRUCTURE"s,"LINESIDESTRUCTURE"s,"TURNOUTSUPERSTRUCTURE"s,"IfcRailwayTypeEnum"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"DAILY"s,"WEEKLY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReferentTypeEnum"s,"KILOPOINT"s,"MILEPOINT"s,"STATION"s,"REFERENCEMARKER"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcedSoilTypeEnum"s,"SURCHARGEPRELOADED"s,"VERTICALLYDRAINED"s,"DYNAMICALLYCOMPACTED"s,"REPLACED"s,"ROLLERCOMPACTED"s,"GROUTED"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"ANCHORING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"SPACEBAR"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoadPartTypeEnum"s,"ROADSIDEPART"s,"BUS_STOP"s,"HARDSHOULDER"s,"PASSINGBAY"s,"ROADWAYPLATEAU"s,"ROADSIDE"s,"REFUGEISLAND"s,"TOLLPLAZA"s,"CENTRALRESERVE"s,"SIDEWALK"s,"PARKINGBAY"s,"RAILWAYCROSSING"s,"PEDESTRIAN_CROSSING"s,"SOFTSHOULDER"s,"BICYCLECROSSING"s,"CENTRALISLAND"s,"SHOULDER"s,"TRAFFICLANE"s,"ROADSEGMENT"s,"ROUNDABOUT"s,"LAYBY"s,"CARRIAGEWAY"s,"TRAFFICISLAND"s,"IfcRoadTypeEnum"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"COSENSOR"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"WINDSENSOR"s,"EARTHQUAKESENSOR"s,"FOREIGNOBJECTDETECTIONSENSOR"s,"OBSTACLESENSOR"s,"RAINSENSOR"s,"SNOWDEPTHSENSOR"s,"TRAINSENSOR"s,"TURNOUTCLOSURESENSOR"s,"WHEELSENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcShadingDeviceTypeEnum"s,"JALOUSIE"s,"SHUTTER"s,"AWNING"s,"IfcShearModulusMeasure"s,"IfcSignTypeEnum"s,"MARKER"s,"PICTORAL"s,"IfcSignalTypeEnum"s,"VISUAL"s,"AUDIO"s,"MIXED"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_SINGLEVALUE"s,"P_ENUMERATEDVALUE"s,"P_BOUNDEDVALUE"s,"P_LISTVALUE"s,"P_TABLEVALUE"s,"P_REFERENCEVALUE"s,"Q_LENGTH"s,"Q_AREA"s,"Q_VOLUME"s,"Q_COUNT"s,"Q_WEIGHT"s,"Q_TIME"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"APPROACH_SLAB"s,"WEARING"s,"TRACKSLAB"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"SPACE"s,"PARKING"s,"GFA"s,"BERTH"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"OCCUPANCY"s,"RESERVATION"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"LADDER"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"POLYGONAL"s,"EQUIDISTANT"s,"SINUS"s,"PARABOLA"s,"DISCRETE"s,"IfcStructuralCurveMemberTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"MARK"s,"TAG"s,"TREATMENT"s,"DEFECT"s,"HATCHMARKING"s,"LINEMARKING"s,"PAVEMENTSURFACEMARKING"s,"SYMBOLMARKING"s,"NONSKIDSURFACING"s,"RUMBLESTRIP"s,"TRANSVERSERUMBLESTRIP"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"START_AND_STOP_EQUIPMENT"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"WORKSURFACE"s,"SUBRACK"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"PRESSUREVESSEL"s,"VESSEL"s,"OILRETENTIONTRAY"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonConduitTypeEnum"s,"GROUTING_DUCT"s,"TRUMPET"s,"DIABOLO"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTrackElementTypeEnum"s,"TRACKENDOFALIGNMENT"s,"BLOCKINGDEVICE"s,"VEHICLESTOP"s,"SLEEPER"s,"HALF_SET_OF_BLADES"s,"SPEEDREGULATOR"s,"DERAILER"s,"FROG"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"CHOPPER"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementFixedTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"CRANEWAY"s,"LIFTINGGEAR"s,"HAULINGGEAR"s,"IfcTransportElementNonFixedTypeEnum"s,"VEHICLE"s,"VEHICLETRACKED"s,"ROLLINGSTOCK"s,"VEHICLEWHEELED"s,"VEHICLEAIR"s,"CARGO"s,"VEHICLEMARINE"s,"IfcTransportElementTypeSelect"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"HUMIDISTAT"s,"THERMOSTAT"s,"WEATHERSTATION"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"DEHUMIDIFIER"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationDamperTypeEnum"s,"BENDING_YIELD"s,"SHEAR_YIELD"s,"AXIAL_YIELD"s,"VISCOUS"s,"RUBBER"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"BASE"s,"IfcVoidingFeatureTypeEnum"s,"CUTOUT"s,"NOTCH"s,"HOLE"s,"MITER"s,"CHAMFER"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"SOLIDWALL"s,"STANDARD"s,"ELEMENTEDWALL"s,"RETAININGWALL"s,"WAVEWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWindowTypeEnum"s,"WINDOW"s,"SKYLIGHT"s,"LIGHTDOME"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcAlignmentParameterSegment"s,"IfcAlignmentVerticalSegment"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcCurveMeasureSelect"s,"IfcDerivedMeasureValue"s,"IfcFacilityPartTypeSelect"s,"IfcImpactProtectionDeviceTypeSelect"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcAlignmentCantSegment"s,"IfcAlignmentHorizontalSegment"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLinearPlacement"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenCrossProfileDef"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointByDistanceExpression"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcSegment"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcAxis2PlacementLinear"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcCurveSegment"s,"IfcDirection"s,"IfcDirectrixCurveSweptAreaSolid"s,"IfcDirectrixDistanceSweptAreaSolid"s,"IfcDoorStyle"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcInclinedReferenceSweptAreaSolid"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcOffsetCurveByDistances"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPolynomialCurve"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelAssociatesProfileDef"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelPositions"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSectionedSolid"s,"IfcSectionedSolidHorizontal"s,"IfcSectionedSurface"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcSpiral"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcThirdOrderPolynomialSpiral"s,"IfcToroidalSurface"s,"IfcTransportElementType"s,"IfcTriangulatedFaceSet"s,"IfcTriangulatedIrregularNetwork"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuildingStorey"s,"IfcBuiltElementType"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcClothoid"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCosine"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCourseType"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCylindricalSurface"s,"IfcDeepFoundationType"s,"IfcDirectrixDerivedReferenceSweptAreaSolid"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFacility"s,"IfcFacilityPart"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGeotechnicalElement"s,"IfcGeotechnicalStratum"s,"IfcGradientCurve"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcImpactProtectionDevice"s,"IfcImpactProtectionDeviceType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcKerbType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLinearElement"s,"IfcLiquidTerminalType"s,"IfcMarineFacility"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMobileTelecommunicationsApplianceType"s,"IfcMooringDeviceType"s,"IfcMotorConnectionType"s,"IfcNavigationElementType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOpeningStandardCase"s,"IfcOutletType"s,"IfcPavementType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlant"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcPositioningElement"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailType"s,"IfcRailingType"s,"IfcRailway"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReferent"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAggregates"s,"IfcRoad"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcSecondOrderPolynomialSpiral"s,"IfcSegmentedReferenceCurve"s,"IfcShadingDeviceType"s,"IfcSign"s,"IfcSignType"s,"IfcSignalType"s,"IfcSine"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSolidStratum"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonConduit"s,"IfcTendonConduitType"s,"IfcTendonType"s,"IfcTrackElementType"s,"IfcTransformerType"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVibrationDamper"s,"IfcVibrationDamperType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVienneseBend"s,"IfcVirtualElement"s,"IfcVoidStratum"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWaterStratum"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcInterferenceSelect"s,"IfcSpatialReferenceSelect"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAlignmentCant"s,"IfcAlignmentHorizontal"s,"IfcAlignmentSegment"s,"IfcAlignmentVertical"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBearingType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBridge"s,"IfcBuilding"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxyType"s,"IfcBuildingSystem"s,"IfcBuiltElement"s,"IfcBuiltSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcCaissonFoundationType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcColumnStandardCase"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcConveyorSegmentType"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCourse"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDeepFoundation"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionBoardType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDoorStandardCase"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcEarthworksCut"s,"IfcEarthworksElement"s,"IfcEarthworksFill"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricFlowTreatmentDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcGeotechnicalAssembly"s,"IfcGrid"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcKerb"s,"IfcLamp"s,"IfcLightFixture"s,"IfcLinearPositioningElement"s,"IfcLiquidTerminal"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMemberStandardCase"s,"IfcMobileTelecommunicationsAppliance"s,"IfcMooringDevice"s,"IfcMotorConnection"s,"IfcNavigationElement"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPavement"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcPlateStandardCase"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRail"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcedSoil"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSignal"s,"IfcSlab"s,"IfcSlabElementedCase"s,"IfcSlabStandardCase"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTrackElement"s,"IfcTransformer"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallElementedCase"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcWindowStandardCase"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAlignment"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBeamStandardCase"s,"IfcBearing"s,"IfcBoiler"s,"IfcBorehole"s,"IfcBuildingElementProxy"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcCaissonFoundation"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcConveyorSegment"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionBoard"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricFlowTreatmentDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcGeomodel"s,"IfcGeoslice"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"RailHeadDistance"s,"StartDistAlong"s,"HorizontalLength"s,"StartCantLeft"s,"EndCantLeft"s,"StartCantRight"s,"EndCantRight"s,"StartPoint"s,"StartDirection"s,"StartRadiusOfCurvature"s,"EndRadiusOfCurvature"s,"SegmentLength"s,"GravityCenterLineHeight"s,"StartTag"s,"EndTag"s,"DesignParameters"s,"StartHeight"s,"StartGradient"s,"EndGradient"s,"RadiusOfCurvature"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"TagList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"Radius"s,"Source"s,"Edition"s,"EditionDate"s,"Location"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"ClothoidConstant"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"Segments"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CosineTerm"s,"ConstantTerm"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"Placement"s,"SegmentStart"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"Directrix"s,"StartParam"s,"EndParam"s,"StartDistance"s,"EndDistance"s,"FlowDirection"s,"SystemType"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"Tag"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"UsageType"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"BaseCurve"s,"EndPoint"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"FixedAxisVertical"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"Mountable"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"RelativePlacement"s,"CartesianPosition"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"ScaleY"s,"ScaleZ"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"Expression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"PlacementRelTo"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"Distance"s,"HorizontalWidths"s,"Widths"s,"Slopes"s,"Tags"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Height"s,"ColourComponents"s,"Pixel"s,"SizeInX"s,"SizeInY"s,"DistanceAlong"s,"OffsetLateral"s,"OffsetVertical"s,"OffsetLongitudinal"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Closed"s,"Faces"s,"PnIndex"s,"CoefficientsX"s,"CoefficientsY"s,"CoefficientsZ"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"ProxyType"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"RestartDistance"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"RelatingProfileDef"s,"ConnectionGeometry"s,"RelatingElement"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceType"s,"ImpliedOrder"s,"RelatingPositioningElement"s,"RelatedProducts"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"QuadraticTerm"s,"LinearTerm"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"CrossSections"s,"CrossSectionPositions"s,"SpineCurve"s,"Transition"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"SineTerm"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"Styles"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"Vertices"s,"TexCoordsList"s,"QubicTerm"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Flags"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"StartCurvature"s,"EndCurvature"s,"GravityCenterHeight"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"Start"s,"Finish"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ToFaceSet"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"Positions"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"PositionedRelativeTo"s,"ReferencedInStructures"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"UsingCurves"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"ServicesFacilities"s,"HasColours"s,"HasTextures"s,"Types"s,"IFC4X3_RC3"s}; - - class IFC4X3_RC3_instance_factory : public IfcParse::instance_factory { virtual IfcUtil::IfcBaseClass* operator()(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) const { switch(decl->index_in_schema()) { @@ -1299,6 +1296,9 @@ class IFC4X3_RC3_instance_factory : public IfcParse::instance_factory { }; IfcParse::schema_definition* IFC4X3_RC3_populate_schema() { + +const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"RAILWAYCROCODILE"s,"RAILWAYDETONATOR"s,"IfcAlignmentCantSegmentTypeEnum"s,"CONSTANTCANT"s,"LINEARTRANSITION"s,"HELMERTCURVE"s,"BLOSSCURVE"s,"COSINECURVE"s,"SINECURVE"s,"VIENNESEBEND"s,"IfcAlignmentHorizontalSegmentTypeEnum"s,"LINE"s,"CIRCULARARC"s,"CLOTHOID"s,"CUBIC"s,"CUBICSPIRAL"s,"IfcAlignmentTypeEnum"s,"IfcAlignmentVerticalSegmentTypeEnum"s,"CONSTANTGRADIENT"s,"PARABOLICARC"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAnnotationTypeEnum"s,"ASSUMEDPOINT"s,"ASBUILTAREA"s,"ASBUILTLINE"s,"NON_PHYSICAL_SIGNAL"s,"ASSUMEDLINE"s,"WIDTHEVENT"s,"ASSUMEDAREA"s,"SUPERELEVATIONEVENT"s,"ASBUILTPOINT"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"RAILWAY_COMMUNICATION_TERMINAL"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"PLANE_SURF"s,"CYLINDRICAL_SURF"s,"CONICAL_SURF"s,"SPHERICAL_SURF"s,"TOROIDAL_SURF"s,"SURF_OF_REVOLUTION"s,"RULED_SURF"s,"GENERALISED_CONE"s,"QUADRIC_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"HOLLOWCORE"s,"LINTEL"s,"SPANDREL"s,"T_BEAM"s,"GIRDER_SEGMENT"s,"DIAPHRAGM"s,"PIERCAP"s,"HATSTONE"s,"CORNICE"s,"EDGEBEAM"s,"IfcBearingTypeDisplacementEnum"s,"FIXED_MOVEMENT"s,"GUIDED_LONGITUDINAL"s,"GUIDED_TRANSVERSAL"s,"FREE_MOVEMENT"s,"IfcBearingTypeEnum"s,"CYLINDRICAL"s,"SPHERICAL"s,"ELASTOMERIC"s,"POT"s,"GUIDE"s,"ROCKER"s,"ROLLER"s,"DISK"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"INCLUDES"s,"NOTINCLUDES"s,"INCLUDEDIN"s,"NOTINCLUDEDIN"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBridgePartTypeEnum"s,"ABUTMENT"s,"DECK"s,"DECK_SEGMENT"s,"FOUNDATION"s,"PIER"s,"PIER_SEGMENT"s,"PYLON"s,"SUBSTRUCTURE"s,"SUPERSTRUCTURE"s,"SURFACESTRUCTURE"s,"IfcBridgeTypeEnum"s,"ARCHED"s,"CABLE_STAYED"s,"CANTILEVER"s,"CULVERT"s,"FRAMEWORK"s,"GIRDER"s,"SUSPENSION"s,"TRUSS"s,"IfcBuildingElementPartTypeEnum"s,"INSULATION"s,"PRECASTPANEL"s,"APRON"s,"ARMOURUNIT"s,"SAFETYCAGE"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"PROVISIONFORVOID"s,"PROVISIONFORSPACE"s,"IfcBuildingSystemTypeEnum"s,"FENESTRATION"s,"LOADBEARING"s,"OUTERSHELL"s,"SHADING"s,"REINFORCING"s,"PRESTRESSING"s,"EROSIONPREVENTION"s,"IfcBuiltSystemTypeEnum"s,"MOORING"s,"TRACKCIRCUIT"s,"MOORINGSYSTEM"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"CABLEBRACKET"s,"CATENARYWIRE"s,"DROPPER"s,"IfcCableFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"TRANSITION"s,"FANOUT"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CORESEGMENT"s,"CONTACTWIRESEGMENT"s,"FIBERSEGMENT"s,"FIBERTUBE"s,"OPTICALCABLESEGMENT"s,"STITCHWIRE"s,"WIREPAIRSEGMENT"s,"IfcCaissonFoundationTypeEnum"s,"WELL"s,"CAISSON"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PILASTER"s,"PIERSTEM"s,"PIERSTEM_SEGMENT"s,"STANDCOLUMN"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"COMPUTER"s,"GATEWAY"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"PRINTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"AUTOMATON"s,"INTELLIGENT_PERIPHERAL"s,"IP_NETWORK_EQUIPMENT"s,"OPTICAL_NETWORK_UNIT"s,"TELECOMMAND"s,"TELEPHONYEXCHANGE"s,"TRANSITIONCOMPONENT"s,"TRANSPONDER"s,"TRANSPORTEQUIPMENT"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"MULTIPOSITION"s,"TWOPOSITION"s,"IfcConveyorSegmentTypeEnum"s,"CHUTECONVEYOR"s,"BELTCONVEYOR"s,"SCREWCONVEYOR"s,"BUCKETCONVEYOR"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCourseTypeEnum"s,"ARMOUR"s,"FILTER"s,"BALLASTBED"s,"CORE"s,"PAVEMENT"s,"PROTECTION"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"MOLDING"s,"SKIRTINGBOARD"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"COPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BRACKET"s,"SHOE"s,"EXPANSION_JOINT_DEVICE"s,"CABLEARRANGER"s,"INSULATOR"s,"LOCK"s,"TENSIONINGEQUIPMENT"s,"RAILPAD"s,"SLIDINGCHAIR"s,"RAIL_LUBRICATION"s,"PANEL_STRENGTHENING"s,"RAILBRACE"s,"ELASTIC_CUSHION"s,"SOUNDABSORPTION"s,"POINTMACHINEMOUNTINGDEVICE"s,"POINT_MACHINE_LOCKING_DEVICE"s,"RAIL_MECHANICAL_EQUIPMENT"s,"BIRDPROTECTION"s,"IfcDistributionBoardTypeEnum"s,"SWITCHBOARD"s,"CONSUMERUNIT"s,"MOTORCONTROLCENTRE"s,"DISTRIBUTIONFRAME"s,"DISTRIBUTIONBOARD"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"WIRELESS"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"CATENARY_SYSTEM"s,"OVERHEAD_CONTACTLINE_SYSTEM"s,"RETURN_CIRCUIT"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"FIXEDPANEL"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoorTypeEnum"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"BOOM_BARRIER"s,"TURNSTILE"s,"IfcDoorTypeOperationEnum"s,"DOUBLE_PANEL_SINGLE_SWING"s,"DOUBLE_PANEL_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_PANEL_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_PANEL_DOUBLE_SWING"s,"DOUBLE_PANEL_SLIDING"s,"DOUBLE_PANEL_FOLDING"s,"REVOLVING_HORIZONTAL"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"DOUBLE_PANEL_LIFTING_VERTICAL"s,"LIFTING_HORIZONTAL"s,"LIFTING_VERTICAL_LEFT"s,"LIFTING_VERTICAL_RIGHT"s,"REVOLVING_VERTICAL"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcEarthworksCutTypeEnum"s,"DREDGING"s,"EXCAVATION"s,"OVEREXCAVATION"s,"TOPSOILREMOVAL"s,"STEPEXCAVATION"s,"PAVEMENTMILLING"s,"CUT"s,"BASE_EXCAVATION"s,"IfcEarthworksFillTypeEnum"s,"BACKFILL"s,"COUNTERWEIGHT"s,"SUBGRADE"s,"EMBANKMENT"s,"TRANSITIONSECTION"s,"SUBGRADEBED"s,"SLOPEFILL"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERHEATER"s,"FREESTANDINGWATERCOOLER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"CAPACITOR"s,"COMPENSATOR"s,"INDUCTOR"s,"RECHARGER"s,"IfcElectricFlowTreatmentDeviceTypeEnum"s,"ELECTRONICFILTER"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"CROSS_BRACING"s,"MAST"s,"SIGNALASSEMBLY"s,"GRID"s,"SHELTER"s,"SUPPORTINGASSEMBLY"s,"SUSPENSIONASSEMBLY"s,"TRACTION_SWITCHING_ASSEMBLY"s,"TRACKPANEL"s,"TURNOUTPANEL"s,"DILATATIONPANEL"s,"RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY"s,"ENTRANCEWORKS"s,"SUMPBUSTER"s,"TRAFFIC_CALMING_DEVICE"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTRULE"s,"EVENTMESSAGE"s,"EVENTTIME"s,"EVENTCOMPLEX"s,"IfcEventTypeEnum"s,"STARTEVENT"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_WATER"s,"EXTERNAL_FIRE"s,"IfcFacilityPartCommonTypeEnum"s,"SEGMENT"s,"ABOVEGROUND"s,"LEVELCROSSING"s,"BELOWGROUND"s,"TERMINAL"s,"IfcFacilityUsageEnum"s,"LATERAL"s,"REGION"s,"VERTICAL"s,"LONGITUDINAL"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"FIREMONITOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"COMBINED"s,"VOLTMETER"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"CHAIR"s,"TABLE"s,"DESK"s,"BED"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"TECHNICALCABINET"s,"IfcGeographicElementTypeEnum"s,"TERRAIN"s,"SOIL_BORING_POINT"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"RADIAL"s,"TRIANGULAR"s,"IRREGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"TURNOUTHEATING"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcImpactProtectionDeviceTypeEnum"s,"CRASHCUSHION"s,"DAMPINGSYSTEM"s,"FENDER"s,"BUMPER"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"UNIFORM_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"PIECEWISE_BEZIER_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLiquidTerminalTypeEnum"s,"LOADINGARM"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"LOGICALXOR"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMarineFacilityTypeEnum"s,"CANAL"s,"WATERWAYSHIPLIFT"s,"REVETMENT"s,"LAUNCHRECOVERY"s,"MARINEDEFENCE"s,"HYDROLIFT"s,"SHIPYARD"s,"SHIPLIFT"s,"PORT"s,"QUAY"s,"FLOATINGDOCK"s,"NAVIGATIONALCHANNEL"s,"BREAKWATER"s,"DRYDOCK"s,"JETTY"s,"SHIPLOCK"s,"BARRIERBEACH"s,"SLIPWAY"s,"WATERWAY"s,"IfcMarinePartTypeEnum"s,"CREST"s,"MANUFACTURING"s,"LOWWATERLINE"s,"WATERFIELD"s,"CILL_LEVEL"s,"BERTHINGSTRUCTURE"s,"COPELEVEL"s,"CHAMBER"s,"STORAGE"s,"APPROACHCHANNEL"s,"VEHICLESERVICING"s,"SHIPTRANSFER"s,"GATEHEAD"s,"GUDINGSTRUCTURE"s,"BELOWWATERLINE"s,"WEATHERSIDE"s,"LANDFIELD"s,"LEEWARDSIDE"s,"ABOVEWATERLINE"s,"ANCHORAGE"s,"NAVIGATIONALAREA"s,"HIGHWATERLINE"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RIVET"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"COUPLER"s,"RAILJOINT"s,"RAILFASTENING"s,"CHAIN"s,"ROPE"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"STIFFENING_RIB"s,"ARCH_SEGMENT"s,"SUSPENSION_CABLE"s,"SUSPENDER"s,"STAY_CABLE"s,"STRUCTURALCABLE"s,"TIEBAR"s,"IfcMobileTelecommunicationsApplianceTypeEnum"s,"E_UTRAN_NODE_B"s,"REMOTE_RADIO_UNIT"s,"ACCESSPOINT"s,"BASETRANSCEIVERSTATION"s,"REMOTEUNIT"s,"BASEBANDUNIT"s,"MASTERUNIT"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMooringDeviceTypeEnum"s,"LINETENSIONER"s,"MAGNETICDEVICE"s,"MOORINGHOOKS"s,"VACUUMDEVICE"s,"BOLLARD"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNavigationElementTypeEnum"s,"BEACON"s,"BUOY"s,"IfcNonNegativeLengthMeasure"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"DATAOUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPavementTypeEnum"s,"FLEXIBLE"s,"RIGID"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"DRIVEN"s,"JETGROUTING"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"FLANGE_PLATE"s,"WEB_PLATE"s,"STIFFENER_PLATE"s,"GUSSET_PLATE"s,"COVER_PLATE"s,"SPLICE_PLATE"s,"BASE_PLATE"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"BLISTER"s,"DEVIATOR"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTRONIC"s,"ELECTROMAGNETIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"CIRCUITBREAKER"s,"EARTHLEAKAGECIRCUITBREAKER"s,"EARTHINGSWITCH"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"ANTI_ARCING_DEVICE"s,"SPARKGAP"s,"VOLTAGELIMITER"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailTypeEnum"s,"RACKRAIL"s,"BLADE"s,"GUARDRAIL"s,"STOCKRAIL"s,"CHECKRAIL"s,"RAIL"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"BALUSTRADE"s,"FENCE"s,"IfcRailwayPartTypeEnum"s,"TRACKSTRUCTURE"s,"TRACKSTRUCTUREPART"s,"LINESIDESTRUCTUREPART"s,"DILATATIONSUPERSTRUCTURE"s,"PLAINTRACKSUPESTRUCTURE"s,"LINESIDESTRUCTURE"s,"TURNOUTSUPERSTRUCTURE"s,"IfcRailwayTypeEnum"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"DAILY"s,"WEEKLY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReferentTypeEnum"s,"KILOPOINT"s,"MILEPOINT"s,"STATION"s,"REFERENCEMARKER"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcedSoilTypeEnum"s,"SURCHARGEPRELOADED"s,"VERTICALLYDRAINED"s,"DYNAMICALLYCOMPACTED"s,"REPLACED"s,"ROLLERCOMPACTED"s,"GROUTED"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"ANCHORING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"SPACEBAR"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoadPartTypeEnum"s,"ROADSIDEPART"s,"BUS_STOP"s,"HARDSHOULDER"s,"PASSINGBAY"s,"ROADWAYPLATEAU"s,"ROADSIDE"s,"REFUGEISLAND"s,"TOLLPLAZA"s,"CENTRALRESERVE"s,"SIDEWALK"s,"PARKINGBAY"s,"RAILWAYCROSSING"s,"PEDESTRIAN_CROSSING"s,"SOFTSHOULDER"s,"BICYCLECROSSING"s,"CENTRALISLAND"s,"SHOULDER"s,"TRAFFICLANE"s,"ROADSEGMENT"s,"ROUNDABOUT"s,"LAYBY"s,"CARRIAGEWAY"s,"TRAFFICISLAND"s,"IfcRoadTypeEnum"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"COSENSOR"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"WINDSENSOR"s,"EARTHQUAKESENSOR"s,"FOREIGNOBJECTDETECTIONSENSOR"s,"OBSTACLESENSOR"s,"RAINSENSOR"s,"SNOWDEPTHSENSOR"s,"TRAINSENSOR"s,"TURNOUTCLOSURESENSOR"s,"WHEELSENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcShadingDeviceTypeEnum"s,"JALOUSIE"s,"SHUTTER"s,"AWNING"s,"IfcShearModulusMeasure"s,"IfcSignTypeEnum"s,"MARKER"s,"PICTORAL"s,"IfcSignalTypeEnum"s,"VISUAL"s,"AUDIO"s,"MIXED"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_SINGLEVALUE"s,"P_ENUMERATEDVALUE"s,"P_BOUNDEDVALUE"s,"P_LISTVALUE"s,"P_TABLEVALUE"s,"P_REFERENCEVALUE"s,"Q_LENGTH"s,"Q_AREA"s,"Q_VOLUME"s,"Q_COUNT"s,"Q_WEIGHT"s,"Q_TIME"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"APPROACH_SLAB"s,"WEARING"s,"TRACKSLAB"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"SPACE"s,"PARKING"s,"GFA"s,"BERTH"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"OCCUPANCY"s,"RESERVATION"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"LADDER"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"POLYGONAL"s,"EQUIDISTANT"s,"SINUS"s,"PARABOLA"s,"DISCRETE"s,"IfcStructuralCurveMemberTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"MARK"s,"TAG"s,"TREATMENT"s,"DEFECT"s,"HATCHMARKING"s,"LINEMARKING"s,"PAVEMENTSURFACEMARKING"s,"SYMBOLMARKING"s,"NONSKIDSURFACING"s,"RUMBLESTRIP"s,"TRANSVERSERUMBLESTRIP"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"START_AND_STOP_EQUIPMENT"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"WORKSURFACE"s,"SUBRACK"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"PRESSUREVESSEL"s,"VESSEL"s,"OILRETENTIONTRAY"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonConduitTypeEnum"s,"GROUTING_DUCT"s,"TRUMPET"s,"DIABOLO"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTrackElementTypeEnum"s,"TRACKENDOFALIGNMENT"s,"BLOCKINGDEVICE"s,"VEHICLESTOP"s,"SLEEPER"s,"HALF_SET_OF_BLADES"s,"SPEEDREGULATOR"s,"DERAILER"s,"FROG"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"CHOPPER"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementFixedTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"CRANEWAY"s,"LIFTINGGEAR"s,"HAULINGGEAR"s,"IfcTransportElementNonFixedTypeEnum"s,"VEHICLE"s,"VEHICLETRACKED"s,"ROLLINGSTOCK"s,"VEHICLEWHEELED"s,"VEHICLEAIR"s,"CARGO"s,"VEHICLEMARINE"s,"IfcTransportElementTypeSelect"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"HUMIDISTAT"s,"THERMOSTAT"s,"WEATHERSTATION"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"DEHUMIDIFIER"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationDamperTypeEnum"s,"BENDING_YIELD"s,"SHEAR_YIELD"s,"AXIAL_YIELD"s,"VISCOUS"s,"RUBBER"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"BASE"s,"IfcVoidingFeatureTypeEnum"s,"CUTOUT"s,"NOTCH"s,"HOLE"s,"MITER"s,"CHAMFER"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"SOLIDWALL"s,"STANDARD"s,"ELEMENTEDWALL"s,"RETAININGWALL"s,"WAVEWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWindowTypeEnum"s,"WINDOW"s,"SKYLIGHT"s,"LIGHTDOME"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcAlignmentParameterSegment"s,"IfcAlignmentVerticalSegment"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcCurveMeasureSelect"s,"IfcDerivedMeasureValue"s,"IfcFacilityPartTypeSelect"s,"IfcImpactProtectionDeviceTypeSelect"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcAlignmentCantSegment"s,"IfcAlignmentHorizontalSegment"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLinearPlacement"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenCrossProfileDef"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointByDistanceExpression"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcSegment"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcAxis2PlacementLinear"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcCurveSegment"s,"IfcDirection"s,"IfcDirectrixCurveSweptAreaSolid"s,"IfcDirectrixDistanceSweptAreaSolid"s,"IfcDoorStyle"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcInclinedReferenceSweptAreaSolid"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcOffsetCurveByDistances"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPolynomialCurve"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelAssociatesProfileDef"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelPositions"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSectionedSolid"s,"IfcSectionedSolidHorizontal"s,"IfcSectionedSurface"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcSpiral"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcThirdOrderPolynomialSpiral"s,"IfcToroidalSurface"s,"IfcTransportElementType"s,"IfcTriangulatedFaceSet"s,"IfcTriangulatedIrregularNetwork"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuildingStorey"s,"IfcBuiltElementType"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcClothoid"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCosine"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCourseType"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCylindricalSurface"s,"IfcDeepFoundationType"s,"IfcDirectrixDerivedReferenceSweptAreaSolid"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFacility"s,"IfcFacilityPart"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGeotechnicalElement"s,"IfcGeotechnicalStratum"s,"IfcGradientCurve"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcImpactProtectionDevice"s,"IfcImpactProtectionDeviceType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcKerbType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLinearElement"s,"IfcLiquidTerminalType"s,"IfcMarineFacility"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMobileTelecommunicationsApplianceType"s,"IfcMooringDeviceType"s,"IfcMotorConnectionType"s,"IfcNavigationElementType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOpeningStandardCase"s,"IfcOutletType"s,"IfcPavementType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlant"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcPositioningElement"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailType"s,"IfcRailingType"s,"IfcRailway"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReferent"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAggregates"s,"IfcRoad"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcSecondOrderPolynomialSpiral"s,"IfcSegmentedReferenceCurve"s,"IfcShadingDeviceType"s,"IfcSign"s,"IfcSignType"s,"IfcSignalType"s,"IfcSine"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSolidStratum"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonConduit"s,"IfcTendonConduitType"s,"IfcTendonType"s,"IfcTrackElementType"s,"IfcTransformerType"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVibrationDamper"s,"IfcVibrationDamperType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVienneseBend"s,"IfcVirtualElement"s,"IfcVoidStratum"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWaterStratum"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcInterferenceSelect"s,"IfcSpatialReferenceSelect"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAlignmentCant"s,"IfcAlignmentHorizontal"s,"IfcAlignmentSegment"s,"IfcAlignmentVertical"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBearingType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBridge"s,"IfcBuilding"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxyType"s,"IfcBuildingSystem"s,"IfcBuiltElement"s,"IfcBuiltSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcCaissonFoundationType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcColumnStandardCase"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcConveyorSegmentType"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCourse"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDeepFoundation"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionBoardType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDoorStandardCase"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcEarthworksCut"s,"IfcEarthworksElement"s,"IfcEarthworksFill"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricFlowTreatmentDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcGeotechnicalAssembly"s,"IfcGrid"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcKerb"s,"IfcLamp"s,"IfcLightFixture"s,"IfcLinearPositioningElement"s,"IfcLiquidTerminal"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMemberStandardCase"s,"IfcMobileTelecommunicationsAppliance"s,"IfcMooringDevice"s,"IfcMotorConnection"s,"IfcNavigationElement"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPavement"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcPlateStandardCase"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRail"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcedSoil"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSignal"s,"IfcSlab"s,"IfcSlabElementedCase"s,"IfcSlabStandardCase"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTrackElement"s,"IfcTransformer"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallElementedCase"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcWindowStandardCase"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAlignment"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBeamStandardCase"s,"IfcBearing"s,"IfcBoiler"s,"IfcBorehole"s,"IfcBuildingElementProxy"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcCaissonFoundation"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcConveyorSegment"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionBoard"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricFlowTreatmentDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcGeomodel"s,"IfcGeoslice"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"RailHeadDistance"s,"StartDistAlong"s,"HorizontalLength"s,"StartCantLeft"s,"EndCantLeft"s,"StartCantRight"s,"EndCantRight"s,"StartPoint"s,"StartDirection"s,"StartRadiusOfCurvature"s,"EndRadiusOfCurvature"s,"SegmentLength"s,"GravityCenterLineHeight"s,"StartTag"s,"EndTag"s,"DesignParameters"s,"StartHeight"s,"StartGradient"s,"EndGradient"s,"RadiusOfCurvature"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"TagList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"Radius"s,"Source"s,"Edition"s,"EditionDate"s,"Location"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"ClothoidConstant"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"Segments"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CosineTerm"s,"ConstantTerm"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"Placement"s,"SegmentStart"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"Directrix"s,"StartParam"s,"EndParam"s,"StartDistance"s,"EndDistance"s,"FlowDirection"s,"SystemType"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"Tag"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"UsageType"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"BaseCurve"s,"EndPoint"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"FixedAxisVertical"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"Mountable"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"RelativePlacement"s,"CartesianPosition"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"ScaleY"s,"ScaleZ"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"Expression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"PlacementRelTo"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"Distance"s,"HorizontalWidths"s,"Widths"s,"Slopes"s,"Tags"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Height"s,"ColourComponents"s,"Pixel"s,"SizeInX"s,"SizeInY"s,"DistanceAlong"s,"OffsetLateral"s,"OffsetVertical"s,"OffsetLongitudinal"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Closed"s,"Faces"s,"PnIndex"s,"CoefficientsX"s,"CoefficientsY"s,"CoefficientsZ"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"ProxyType"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"RestartDistance"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"RelatingProfileDef"s,"ConnectionGeometry"s,"RelatingElement"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceType"s,"ImpliedOrder"s,"RelatingPositioningElement"s,"RelatedProducts"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"QuadraticTerm"s,"LinearTerm"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"CrossSections"s,"CrossSectionPositions"s,"SpineCurve"s,"Transition"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"SineTerm"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"Styles"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"Vertices"s,"TexCoordsList"s,"QubicTerm"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Flags"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"StartCurvature"s,"EndCurvature"s,"GravityCenterHeight"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"Start"s,"Finish"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ToFaceSet"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"Positions"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"PositionedRelativeTo"s,"ReferencedInStructures"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"UsingCurves"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"ServicesFacilities"s,"HasColours"s,"HasTextures"s,"Types"s,"IFC4X3_RC3"s}; + IFC4X3_RC3_types[0] = new type_declaration(strings[0], 0, new simple_type(simple_type::real_type)); IFC4X3_RC3_types[1] = new type_declaration(strings[1], 1, new simple_type(simple_type::real_type)); IFC4X3_RC3_types[3] = new enumeration_type(strings[2], 3, {strings[3],strings[4],strings[5],strings[6],strings[7],strings[8],strings[9]}); diff --git a/src/ifcparse/Ifc4x3_rc4-schema.cpp b/src/ifcparse/Ifc4x3_rc4-schema.cpp index a5917a1b94..c6965e6427 100644 --- a/src/ifcparse/Ifc4x3_rc4-schema.cpp +++ b/src/ifcparse/Ifc4x3_rc4-schema.cpp @@ -33,9 +33,6 @@ using namespace IfcParse; declaration* IFC4X3_RC4_types[1316] = {nullptr}; -const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"RAILWAYCROCODILE"s,"RAILWAYDETONATOR"s,"IfcAlignmentCantSegmentTypeEnum"s,"BLOSSCURVE"s,"CONSTANTCANT"s,"COSINECURVE"s,"HELMERTCURVE"s,"LINEARTRANSITION"s,"SINECURVE"s,"VIENNESEBEND"s,"IfcAlignmentHorizontalSegmentTypeEnum"s,"LINE"s,"CIRCULARARC"s,"CLOTHOID"s,"CUBIC"s,"IfcAlignmentTypeEnum"s,"IfcAlignmentVerticalSegmentTypeEnum"s,"CONSTANTGRADIENT"s,"PARABOLICARC"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAnnotationTypeEnum"s,"ASSUMEDPOINT"s,"ASBUILTAREA"s,"ASBUILTLINE"s,"NON_PHYSICAL_SIGNAL"s,"ASSUMEDLINE"s,"WIDTHEVENT"s,"ASSUMEDAREA"s,"SUPERELEVATIONEVENT"s,"ASBUILTPOINT"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"COMMUNICATIONTERMINAL"s,"RECORDINGEQUIPMENT"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"PLANE_SURF"s,"CYLINDRICAL_SURF"s,"CONICAL_SURF"s,"SPHERICAL_SURF"s,"TOROIDAL_SURF"s,"SURF_OF_REVOLUTION"s,"RULED_SURF"s,"GENERALISED_CONE"s,"QUADRIC_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"HOLLOWCORE"s,"LINTEL"s,"SPANDREL"s,"T_BEAM"s,"GIRDER_SEGMENT"s,"DIAPHRAGM"s,"PIERCAP"s,"HATSTONE"s,"CORNICE"s,"EDGEBEAM"s,"IfcBearingTypeDisplacementEnum"s,"FIXED_MOVEMENT"s,"GUIDED_LONGITUDINAL"s,"GUIDED_TRANSVERSAL"s,"FREE_MOVEMENT"s,"IfcBearingTypeEnum"s,"CYLINDRICAL"s,"SPHERICAL"s,"ELASTOMERIC"s,"POT"s,"GUIDE"s,"ROCKER"s,"ROLLER"s,"DISK"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"INCLUDES"s,"NOTINCLUDES"s,"INCLUDEDIN"s,"NOTINCLUDEDIN"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBridgePartTypeEnum"s,"ABUTMENT"s,"DECK"s,"DECK_SEGMENT"s,"FOUNDATION"s,"PIER"s,"PIER_SEGMENT"s,"PYLON"s,"SUBSTRUCTURE"s,"SUPERSTRUCTURE"s,"SURFACESTRUCTURE"s,"IfcBridgeTypeEnum"s,"ARCHED"s,"CABLE_STAYED"s,"CANTILEVER"s,"CULVERT"s,"FRAMEWORK"s,"GIRDER"s,"SUSPENSION"s,"TRUSS"s,"IfcBuildingElementPartTypeEnum"s,"INSULATION"s,"PRECASTPANEL"s,"APRON"s,"ARMOURUNIT"s,"SAFETYCAGE"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"PROVISIONFORVOID"s,"PROVISIONFORSPACE"s,"IfcBuildingSystemTypeEnum"s,"FENESTRATION"s,"LOADBEARING"s,"OUTERSHELL"s,"SHADING"s,"REINFORCING"s,"PRESTRESSING"s,"EROSIONPREVENTION"s,"IfcBuiltSystemTypeEnum"s,"MOORING"s,"TRACKCIRCUIT"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"CABLEBRACKET"s,"CATENARYWIRE"s,"DROPPER"s,"IfcCableFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"TRANSITION"s,"FANOUT"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CORESEGMENT"s,"CONTACTWIRESEGMENT"s,"FIBERSEGMENT"s,"FIBERTUBE"s,"OPTICALCABLESEGMENT"s,"STITCHWIRE"s,"WIREPAIRSEGMENT"s,"IfcCaissonFoundationTypeEnum"s,"WELL"s,"CAISSON"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PILASTER"s,"PIERSTEM"s,"PIERSTEM_SEGMENT"s,"STANDCOLUMN"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"COMPUTER"s,"GATEWAY"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"PRINTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"AUTOMATON"s,"INTELLIGENTPERIPHERAL"s,"IPNETWORKEQUIPMENT"s,"OPTICALNETWORKUNIT"s,"TELECOMMAND"s,"TELEPHONYEXCHANGE"s,"TRANSITIONCOMPONENT"s,"TRANSPONDER"s,"TRANSPORTEQUIPMENT"s,"OPTICALLINETERMINAL"s,"LINESIDEELECTRONICUNIT"s,"RADIOBLOCKCENTER"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"MULTIPOSITION"s,"TWOPOSITION"s,"IfcConveyorSegmentTypeEnum"s,"CHUTECONVEYOR"s,"BELTCONVEYOR"s,"SCREWCONVEYOR"s,"BUCKETCONVEYOR"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCourseTypeEnum"s,"ARMOUR"s,"FILTER"s,"BALLASTBED"s,"CORE"s,"PAVEMENT"s,"PROTECTION"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"MOLDING"s,"SKIRTINGBOARD"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"COPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BRACKET"s,"SHOE"s,"EXPANSION_JOINT_DEVICE"s,"CABLEARRANGER"s,"INSULATOR"s,"LOCK"s,"TENSIONINGEQUIPMENT"s,"RAILPAD"s,"SLIDINGCHAIR"s,"RAIL_LUBRICATION"s,"PANEL_STRENGTHENING"s,"RAILBRACE"s,"ELASTIC_CUSHION"s,"SOUNDABSORPTION"s,"POINTMACHINEMOUNTINGDEVICE"s,"POINT_MACHINE_LOCKING_DEVICE"s,"RAIL_MECHANICAL_EQUIPMENT"s,"BIRDPROTECTION"s,"IfcDistributionBoardTypeEnum"s,"SWITCHBOARD"s,"CONSUMERUNIT"s,"MOTORCONTROLCENTRE"s,"DISTRIBUTIONFRAME"s,"DISTRIBUTIONBOARD"s,"DISPATCHINGBOARD"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"WIRELESS"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"CATENARY_SYSTEM"s,"OVERHEAD_CONTACTLINE_SYSTEM"s,"RETURN_CIRCUIT"s,"FIXEDTRANSMISSIONNETWORK"s,"OPERATIONALTELEPHONYSYSTEM"s,"MOBILENETWORK"s,"MONITORINGSYSTEM"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"FIXEDPANEL"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoorTypeEnum"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"BOOM_BARRIER"s,"TURNSTILE"s,"IfcDoorTypeOperationEnum"s,"DOUBLE_PANEL_SINGLE_SWING"s,"DOUBLE_PANEL_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_PANEL_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_PANEL_DOUBLE_SWING"s,"DOUBLE_PANEL_SLIDING"s,"DOUBLE_PANEL_FOLDING"s,"REVOLVING_HORIZONTAL"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"DOUBLE_PANEL_LIFTING_VERTICAL"s,"LIFTING_HORIZONTAL"s,"LIFTING_VERTICAL_LEFT"s,"LIFTING_VERTICAL_RIGHT"s,"REVOLVING_VERTICAL"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcEarthworksCutTypeEnum"s,"DREDGING"s,"EXCAVATION"s,"OVEREXCAVATION"s,"TOPSOILREMOVAL"s,"STEPEXCAVATION"s,"PAVEMENTMILLING"s,"CUT"s,"BASE_EXCAVATION"s,"IfcEarthworksFillTypeEnum"s,"BACKFILL"s,"COUNTERWEIGHT"s,"SUBGRADE"s,"EMBANKMENT"s,"TRANSITIONSECTION"s,"SUBGRADEBED"s,"SLOPEFILL"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERHEATER"s,"FREESTANDINGWATERCOOLER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"CAPACITOR"s,"COMPENSATOR"s,"INDUCTOR"s,"RECHARGER"s,"IfcElectricFlowTreatmentDeviceTypeEnum"s,"ELECTRONICFILTER"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"CROSS_BRACING"s,"MAST"s,"SIGNALASSEMBLY"s,"GRID"s,"SHELTER"s,"SUPPORTINGASSEMBLY"s,"SUSPENSIONASSEMBLY"s,"TRACTION_SWITCHING_ASSEMBLY"s,"TRACKPANEL"s,"TURNOUTPANEL"s,"DILATATIONPANEL"s,"RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY"s,"ENTRANCEWORKS"s,"SUMPBUSTER"s,"TRAFFIC_CALMING_DEVICE"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTRULE"s,"EVENTMESSAGE"s,"EVENTTIME"s,"EVENTCOMPLEX"s,"IfcEventTypeEnum"s,"STARTEVENT"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_WATER"s,"EXTERNAL_FIRE"s,"IfcFacilityPartCommonTypeEnum"s,"SEGMENT"s,"ABOVEGROUND"s,"LEVELCROSSING"s,"BELOWGROUND"s,"TERMINAL"s,"IfcFacilityUsageEnum"s,"LATERAL"s,"REGION"s,"VERTICAL"s,"LONGITUDINAL"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"FIREMONITOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"COMBINED"s,"VOLTMETER"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"CHAIR"s,"TABLE"s,"DESK"s,"BED"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"TECHNICALCABINET"s,"IfcGeographicElementTypeEnum"s,"TERRAIN"s,"SOIL_BORING_POINT"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"RADIAL"s,"TRIANGULAR"s,"IRREGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"TURNOUTHEATING"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcImpactProtectionDeviceTypeEnum"s,"CRASHCUSHION"s,"DAMPINGSYSTEM"s,"FENDER"s,"BUMPER"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"UNIFORM_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"PIECEWISE_BEZIER_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLiquidTerminalTypeEnum"s,"LOADINGARM"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"LOGICALXOR"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMarineFacilityTypeEnum"s,"CANAL"s,"WATERWAYSHIPLIFT"s,"REVETMENT"s,"LAUNCHRECOVERY"s,"MARINEDEFENCE"s,"HYDROLIFT"s,"SHIPYARD"s,"SHIPLIFT"s,"PORT"s,"QUAY"s,"FLOATINGDOCK"s,"NAVIGATIONALCHANNEL"s,"BREAKWATER"s,"DRYDOCK"s,"JETTY"s,"SHIPLOCK"s,"BARRIERBEACH"s,"SLIPWAY"s,"WATERWAY"s,"IfcMarinePartTypeEnum"s,"CREST"s,"MANUFACTURING"s,"LOWWATERLINE"s,"WATERFIELD"s,"CILL_LEVEL"s,"BERTHINGSTRUCTURE"s,"COPELEVEL"s,"CHAMBER"s,"STORAGEAREA"s,"APPROACHCHANNEL"s,"VEHICLESERVICING"s,"SHIPTRANSFER"s,"GATEHEAD"s,"GUDINGSTRUCTURE"s,"BELOWWATERLINE"s,"WEATHERSIDE"s,"LANDFIELD"s,"LEEWARDSIDE"s,"ABOVEWATERLINE"s,"ANCHORAGE"s,"NAVIGATIONALAREA"s,"HIGHWATERLINE"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RIVET"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"COUPLER"s,"RAILJOINT"s,"RAILFASTENING"s,"CHAIN"s,"ROPE"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"STIFFENING_RIB"s,"ARCH_SEGMENT"s,"SUSPENSION_CABLE"s,"SUSPENDER"s,"STAY_CABLE"s,"STRUCTURALCABLE"s,"TIEBAR"s,"IfcMobileTelecommunicationsApplianceTypeEnum"s,"E_UTRAN_NODE_B"s,"REMOTERADIOUNIT"s,"ACCESSPOINT"s,"BASETRANSCEIVERSTATION"s,"REMOTEUNIT"s,"BASEBANDUNIT"s,"MASTERUNIT"s,"GATEWAY_GPRS_SUPPORT_NODE"s,"SUBSCRIBERSERVER"s,"MOBILESWITCHINGCENTER"s,"MSCSERVER"s,"PACKETCONTROLUNIT"s,"SERVICE_GPRS_SUPPORT_NODE"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMooringDeviceTypeEnum"s,"LINETENSIONER"s,"MAGNETICDEVICE"s,"MOORINGHOOKS"s,"VACUUMDEVICE"s,"BOLLARD"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNavigationElementTypeEnum"s,"BEACON"s,"BUOY"s,"IfcNonNegativeLengthMeasure"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"DATAOUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPavementTypeEnum"s,"FLEXIBLE"s,"RIGID"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"DRIVEN"s,"JETGROUTING"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"FLANGE_PLATE"s,"WEB_PLATE"s,"STIFFENER_PLATE"s,"GUSSET_PLATE"s,"COVER_PLATE"s,"SPLICE_PLATE"s,"BASE_PLATE"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"BLISTER"s,"DEVIATOR"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTRONIC"s,"ELECTROMAGNETIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"CIRCUITBREAKER"s,"EARTHLEAKAGECIRCUITBREAKER"s,"EARTHINGSWITCH"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"ANTI_ARCING_DEVICE"s,"SPARKGAP"s,"VOLTAGELIMITER"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailTypeEnum"s,"RACKRAIL"s,"BLADE"s,"GUARDRAIL"s,"STOCKRAIL"s,"CHECKRAIL"s,"RAIL"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"BALUSTRADE"s,"FENCE"s,"IfcRailwayPartTypeEnum"s,"TRACKSTRUCTURE"s,"TRACKSTRUCTUREPART"s,"LINESIDESTRUCTUREPART"s,"DILATATIONSUPERSTRUCTURE"s,"PLAINTRACKSUPESTRUCTURE"s,"LINESIDESTRUCTURE"s,"TURNOUTSUPERSTRUCTURE"s,"IfcRailwayTypeEnum"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"DAILY"s,"WEEKLY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReferentTypeEnum"s,"KILOPOINT"s,"MILEPOINT"s,"STATION"s,"REFERENCEMARKER"s,"LANDMARK"s,"BOUNDARY"s,"POSITION"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcedSoilTypeEnum"s,"SURCHARGEPRELOADED"s,"VERTICALLYDRAINED"s,"DYNAMICALLYCOMPACTED"s,"REPLACED"s,"ROLLERCOMPACTED"s,"GROUTED"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"ANCHORING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"SPACEBAR"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoadPartTypeEnum"s,"ROADSIDEPART"s,"BUS_STOP"s,"HARDSHOULDER"s,"PASSINGBAY"s,"ROADWAYPLATEAU"s,"ROADSIDE"s,"REFUGEISLAND"s,"TOLLPLAZA"s,"CENTRALRESERVE"s,"SIDEWALK"s,"PARKINGBAY"s,"RAILWAYCROSSING"s,"PEDESTRIAN_CROSSING"s,"SOFTSHOULDER"s,"BICYCLECROSSING"s,"CENTRALISLAND"s,"SHOULDER"s,"TRAFFICLANE"s,"ROADSEGMENT"s,"ROUNDABOUT"s,"LAYBY"s,"CARRIAGEWAY"s,"TRAFFICISLAND"s,"IfcRoadTypeEnum"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"COSENSOR"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"WINDSENSOR"s,"EARTHQUAKESENSOR"s,"FOREIGNOBJECTDETECTIONSENSOR"s,"OBSTACLESENSOR"s,"RAINSENSOR"s,"SNOWDEPTHSENSOR"s,"TRAINSENSOR"s,"TURNOUTCLOSURESENSOR"s,"WHEELSENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcShadingDeviceTypeEnum"s,"JALOUSIE"s,"SHUTTER"s,"AWNING"s,"IfcShearModulusMeasure"s,"IfcSignTypeEnum"s,"MARKER"s,"PICTORAL"s,"IfcSignalTypeEnum"s,"VISUAL"s,"AUDIO"s,"MIXED"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_SINGLEVALUE"s,"P_ENUMERATEDVALUE"s,"P_BOUNDEDVALUE"s,"P_LISTVALUE"s,"P_TABLEVALUE"s,"P_REFERENCEVALUE"s,"Q_LENGTH"s,"Q_AREA"s,"Q_VOLUME"s,"Q_COUNT"s,"Q_WEIGHT"s,"Q_TIME"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"APPROACH_SLAB"s,"WEARING"s,"TRACKSLAB"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"SPACE"s,"PARKING"s,"GFA"s,"BERTH"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"OCCUPANCY"s,"RESERVATION"s,"INTERFERENCE"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"LADDER"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"POLYGONAL"s,"EQUIDISTANT"s,"SINUS"s,"PARABOLA"s,"DISCRETE"s,"IfcStructuralCurveMemberTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"MARK"s,"TAG"s,"TREATMENT"s,"DEFECT"s,"HATCHMARKING"s,"LINEMARKING"s,"PAVEMENTSURFACEMARKING"s,"SYMBOLMARKING"s,"NONSKIDSURFACING"s,"RUMBLESTRIP"s,"TRANSVERSERUMBLESTRIP"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"START_AND_STOP_EQUIPMENT"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"WORKSURFACE"s,"SUBRACK"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"PRESSUREVESSEL"s,"STORAGE"s,"VESSEL"s,"OILRETENTIONTRAY"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonConduitTypeEnum"s,"GROUTING_DUCT"s,"TRUMPET"s,"DIABOLO"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTrackElementTypeEnum"s,"TRACKENDOFALIGNMENT"s,"BLOCKINGDEVICE"s,"VEHICLESTOP"s,"SLEEPER"s,"HALF_SET_OF_BLADES"s,"SPEEDREGULATOR"s,"DERAILER"s,"FROG"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"CHOPPER"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementFixedTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"CRANEWAY"s,"LIFTINGGEAR"s,"HAULINGGEAR"s,"IfcTransportElementNonFixedTypeEnum"s,"VEHICLE"s,"VEHICLETRACKED"s,"ROLLINGSTOCK"s,"VEHICLEWHEELED"s,"VEHICLEAIR"s,"CARGO"s,"VEHICLEMARINE"s,"IfcTransportElementTypeSelect"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"HUMIDISTAT"s,"THERMOSTAT"s,"WEATHERSTATION"s,"BASESTATIONCONTROLLER"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"DEHUMIDIFIER"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationDamperTypeEnum"s,"BENDING_YIELD"s,"SHEAR_YIELD"s,"AXIAL_YIELD"s,"VISCOUS"s,"RUBBER"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"BASE"s,"IfcVoidingFeatureTypeEnum"s,"CUTOUT"s,"NOTCH"s,"HOLE"s,"MITER"s,"CHAMFER"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"SOLIDWALL"s,"STANDARD"s,"ELEMENTEDWALL"s,"RETAININGWALL"s,"WAVEWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWindowTypeEnum"s,"WINDOW"s,"SKYLIGHT"s,"LIGHTDOME"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcAlignmentParameterSegment"s,"IfcAlignmentVerticalSegment"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcCurveMeasureSelect"s,"IfcDerivedMeasureValue"s,"IfcFacilityPartTypeSelect"s,"IfcImpactProtectionDeviceTypeSelect"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcAlignmentCantSegment"s,"IfcAlignmentHorizontalSegment"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLinearPlacement"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenCrossProfileDef"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointByDistanceExpression"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcSegment"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcAxis2PlacementLinear"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcCurveSegment"s,"IfcDirection"s,"IfcDirectrixCurveSweptAreaSolid"s,"IfcDoorStyle"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcOffsetCurveByDistances"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPolynomialCurve"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelAssociatesProfileDef"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelPositions"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSectionedSolid"s,"IfcSectionedSolidHorizontal"s,"IfcSectionedSurface"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcSpiral"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcThirdOrderPolynomialSpiral"s,"IfcToroidalSurface"s,"IfcTransportElementType"s,"IfcTriangulatedFaceSet"s,"IfcTriangulatedIrregularNetwork"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuildingStorey"s,"IfcBuiltElementType"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcClothoid"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCosine"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCourseType"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCylindricalSurface"s,"IfcDeepFoundationType"s,"IfcDirectrixDerivedReferenceSweptAreaSolid"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFacility"s,"IfcFacilityPart"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGeotechnicalElement"s,"IfcGeotechnicalStratum"s,"IfcGradientCurve"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcImpactProtectionDevice"s,"IfcImpactProtectionDeviceType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcKerbType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLinearElement"s,"IfcLiquidTerminalType"s,"IfcMarineFacility"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMobileTelecommunicationsApplianceType"s,"IfcMooringDeviceType"s,"IfcMotorConnectionType"s,"IfcNavigationElementType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOpeningStandardCase"s,"IfcOutletType"s,"IfcPavementType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlant"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcPositioningElement"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailType"s,"IfcRailingType"s,"IfcRailway"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReferent"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAdheresToElement"s,"IfcRelAggregates"s,"IfcRoad"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcSecondOrderPolynomialSpiral"s,"IfcSegmentedReferenceCurve"s,"IfcSeventhOrderPolynomialSpiral"s,"IfcShadingDeviceType"s,"IfcSign"s,"IfcSignType"s,"IfcSignalType"s,"IfcSine"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSolidStratum"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonConduit"s,"IfcTendonConduitType"s,"IfcTendonType"s,"IfcTrackElementType"s,"IfcTransformerType"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVibrationDamper"s,"IfcVibrationDamperType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVirtualElement"s,"IfcVoidStratum"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWaterStratum"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcInterferenceSelect"s,"IfcSpatialReferenceSelect"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAlignmentCant"s,"IfcAlignmentHorizontal"s,"IfcAlignmentSegment"s,"IfcAlignmentVertical"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBearingType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBridge"s,"IfcBuilding"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxyType"s,"IfcBuildingSystem"s,"IfcBuiltElement"s,"IfcBuiltSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcCaissonFoundationType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcColumnStandardCase"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcConveyorSegmentType"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCourse"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDeepFoundation"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionBoardType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDoorStandardCase"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcEarthworksCut"s,"IfcEarthworksElement"s,"IfcEarthworksFill"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricFlowTreatmentDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcGeotechnicalAssembly"s,"IfcGrid"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcKerb"s,"IfcLamp"s,"IfcLightFixture"s,"IfcLinearPositioningElement"s,"IfcLiquidTerminal"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMemberStandardCase"s,"IfcMobileTelecommunicationsAppliance"s,"IfcMooringDevice"s,"IfcMotorConnection"s,"IfcNavigationElement"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPavement"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcPlateStandardCase"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRail"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcedSoil"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSignal"s,"IfcSlab"s,"IfcSlabElementedCase"s,"IfcSlabStandardCase"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTrackElement"s,"IfcTransformer"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallElementedCase"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcWindowStandardCase"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAlignment"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBeamStandardCase"s,"IfcBearing"s,"IfcBoiler"s,"IfcBorehole"s,"IfcBuildingElementProxy"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcCaissonFoundation"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcConveyorSegment"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionBoard"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricFlowTreatmentDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcGeomodel"s,"IfcGeoslice"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"RailHeadDistance"s,"StartDistAlong"s,"HorizontalLength"s,"StartCantLeft"s,"EndCantLeft"s,"StartCantRight"s,"EndCantRight"s,"StartPoint"s,"StartDirection"s,"StartRadiusOfCurvature"s,"EndRadiusOfCurvature"s,"SegmentLength"s,"GravityCenterLineHeight"s,"StartTag"s,"EndTag"s,"DesignParameters"s,"StartHeight"s,"StartGradient"s,"EndGradient"s,"RadiusOfCurvature"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"TagList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"Radius"s,"Source"s,"Edition"s,"EditionDate"s,"Location"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"ClothoidConstant"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"Segments"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CosineTerm"s,"ConstantTerm"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"Placement"s,"SegmentStart"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"Directrix"s,"StartParam"s,"EndParam"s,"FlowDirection"s,"SystemType"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"Tag"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"UsageType"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"BaseCurve"s,"EndPoint"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"Mountable"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"RelativePlacement"s,"CartesianPosition"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"ScaleY"s,"ScaleZ"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"Expression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"PlacementRelTo"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"Distance"s,"HorizontalWidths"s,"Widths"s,"Slopes"s,"Tags"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Height"s,"ColourComponents"s,"Pixel"s,"SizeInX"s,"SizeInY"s,"DistanceAlong"s,"OffsetLateral"s,"OffsetVertical"s,"OffsetLongitudinal"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Closed"s,"Faces"s,"PnIndex"s,"CoefficientsX"s,"CoefficientsY"s,"CoefficientsZ"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"ProxyType"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"RestartDistance"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingElement"s,"RelatedSurfaceFeatures"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"RelatingProfileDef"s,"ConnectionGeometry"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceSpace"s,"InterferenceType"s,"ImpliedOrder"s,"RelatingPositioningElement"s,"RelatedProducts"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"QuadraticTerm"s,"LinearTerm"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"CrossSections"s,"CrossSectionPositions"s,"FixedAxisVertical"s,"SpineCurve"s,"Transition"s,"SepticTerm"s,"SexticTerm"s,"QuinticTerm"s,"QuarticTerm"s,"CubicTerm"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"SineTerm"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"Styles"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"Vertices"s,"TexCoordsList"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Flags"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"Start"s,"Finish"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"HasSurfaceFeatures"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ToFaceSet"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"Positions"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"PositionedRelativeTo"s,"ReferencedInStructures"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"UsingCurves"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"AdheresToElement"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"ServicesFacilities"s,"HasColours"s,"HasTextures"s,"Types"s,"IFC4X3_RC4"s}; - - class IFC4X3_RC4_instance_factory : public IfcParse::instance_factory { virtual IfcUtil::IfcBaseClass* operator()(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) const { switch(decl->index_in_schema()) { @@ -1298,6 +1295,9 @@ class IFC4X3_RC4_instance_factory : public IfcParse::instance_factory { }; IfcParse::schema_definition* IFC4X3_RC4_populate_schema() { + +const std::string strings[] = {"IfcAbsorbedDoseMeasure"s,"IfcAccelerationMeasure"s,"IfcActionRequestTypeEnum"s,"EMAIL"s,"FAX"s,"PHONE"s,"POST"s,"VERBAL"s,"USERDEFINED"s,"NOTDEFINED"s,"IfcActionSourceTypeEnum"s,"DEAD_LOAD_G"s,"COMPLETION_G1"s,"LIVE_LOAD_Q"s,"SNOW_S"s,"WIND_W"s,"PRESTRESSING_P"s,"SETTLEMENT_U"s,"TEMPERATURE_T"s,"EARTHQUAKE_E"s,"FIRE"s,"IMPULSE"s,"IMPACT"s,"TRANSPORT"s,"ERECTION"s,"PROPPING"s,"SYSTEM_IMPERFECTION"s,"SHRINKAGE"s,"CREEP"s,"LACK_OF_FIT"s,"BUOYANCY"s,"ICE"s,"CURRENT"s,"WAVE"s,"RAIN"s,"BRAKES"s,"IfcActionTypeEnum"s,"PERMANENT_G"s,"VARIABLE_Q"s,"EXTRAORDINARY_A"s,"IfcActuatorTypeEnum"s,"ELECTRICACTUATOR"s,"HANDOPERATEDACTUATOR"s,"HYDRAULICACTUATOR"s,"PNEUMATICACTUATOR"s,"THERMOSTATICACTUATOR"s,"IfcAddressTypeEnum"s,"OFFICE"s,"SITE"s,"HOME"s,"DISTRIBUTIONPOINT"s,"IfcAirTerminalBoxTypeEnum"s,"CONSTANTFLOW"s,"VARIABLEFLOWPRESSUREDEPENDANT"s,"VARIABLEFLOWPRESSUREINDEPENDANT"s,"IfcAirTerminalTypeEnum"s,"DIFFUSER"s,"GRILLE"s,"LOUVRE"s,"REGISTER"s,"IfcAirToAirHeatRecoveryTypeEnum"s,"FIXEDPLATECOUNTERFLOWEXCHANGER"s,"FIXEDPLATECROSSFLOWEXCHANGER"s,"FIXEDPLATEPARALLELFLOWEXCHANGER"s,"ROTARYWHEEL"s,"RUNAROUNDCOILLOOP"s,"HEATPIPE"s,"TWINTOWERENTHALPYRECOVERYLOOPS"s,"THERMOSIPHONSEALEDTUBEHEATEXCHANGERS"s,"THERMOSIPHONCOILTYPEHEATEXCHANGERS"s,"IfcAlarmTypeEnum"s,"BELL"s,"BREAKGLASSBUTTON"s,"LIGHT"s,"MANUALPULLBOX"s,"SIREN"s,"WHISTLE"s,"RAILWAYCROCODILE"s,"RAILWAYDETONATOR"s,"IfcAlignmentCantSegmentTypeEnum"s,"BLOSSCURVE"s,"CONSTANTCANT"s,"COSINECURVE"s,"HELMERTCURVE"s,"LINEARTRANSITION"s,"SINECURVE"s,"VIENNESEBEND"s,"IfcAlignmentHorizontalSegmentTypeEnum"s,"LINE"s,"CIRCULARARC"s,"CLOTHOID"s,"CUBIC"s,"IfcAlignmentTypeEnum"s,"IfcAlignmentVerticalSegmentTypeEnum"s,"CONSTANTGRADIENT"s,"PARABOLICARC"s,"IfcAmountOfSubstanceMeasure"s,"IfcAnalysisModelTypeEnum"s,"IN_PLANE_LOADING_2D"s,"OUT_PLANE_LOADING_2D"s,"LOADING_3D"s,"IfcAnalysisTheoryTypeEnum"s,"FIRST_ORDER_THEORY"s,"SECOND_ORDER_THEORY"s,"THIRD_ORDER_THEORY"s,"FULL_NONLINEAR_THEORY"s,"IfcAngularVelocityMeasure"s,"IfcAnnotationTypeEnum"s,"ASSUMEDPOINT"s,"ASBUILTAREA"s,"ASBUILTLINE"s,"NON_PHYSICAL_SIGNAL"s,"ASSUMEDLINE"s,"WIDTHEVENT"s,"ASSUMEDAREA"s,"SUPERELEVATIONEVENT"s,"ASBUILTPOINT"s,"IfcAreaDensityMeasure"s,"IfcAreaMeasure"s,"IfcArithmeticOperatorEnum"s,"ADD"s,"DIVIDE"s,"MULTIPLY"s,"SUBTRACT"s,"IfcAssemblyPlaceEnum"s,"FACTORY"s,"IfcAudioVisualApplianceTypeEnum"s,"AMPLIFIER"s,"CAMERA"s,"DISPLAY"s,"MICROPHONE"s,"PLAYER"s,"PROJECTOR"s,"RECEIVER"s,"SPEAKER"s,"SWITCHER"s,"TELEPHONE"s,"TUNER"s,"COMMUNICATIONTERMINAL"s,"RECORDINGEQUIPMENT"s,"IfcBSplineCurveForm"s,"POLYLINE_FORM"s,"CIRCULAR_ARC"s,"ELLIPTIC_ARC"s,"PARABOLIC_ARC"s,"HYPERBOLIC_ARC"s,"UNSPECIFIED"s,"IfcBSplineSurfaceForm"s,"PLANE_SURF"s,"CYLINDRICAL_SURF"s,"CONICAL_SURF"s,"SPHERICAL_SURF"s,"TOROIDAL_SURF"s,"SURF_OF_REVOLUTION"s,"RULED_SURF"s,"GENERALISED_CONE"s,"QUADRIC_SURF"s,"SURF_OF_LINEAR_EXTRUSION"s,"IfcBeamTypeEnum"s,"BEAM"s,"JOIST"s,"HOLLOWCORE"s,"LINTEL"s,"SPANDREL"s,"T_BEAM"s,"GIRDER_SEGMENT"s,"DIAPHRAGM"s,"PIERCAP"s,"HATSTONE"s,"CORNICE"s,"EDGEBEAM"s,"IfcBearingTypeDisplacementEnum"s,"FIXED_MOVEMENT"s,"GUIDED_LONGITUDINAL"s,"GUIDED_TRANSVERSAL"s,"FREE_MOVEMENT"s,"IfcBearingTypeEnum"s,"CYLINDRICAL"s,"SPHERICAL"s,"ELASTOMERIC"s,"POT"s,"GUIDE"s,"ROCKER"s,"ROLLER"s,"DISK"s,"IfcBenchmarkEnum"s,"GREATERTHAN"s,"GREATERTHANOREQUALTO"s,"LESSTHAN"s,"LESSTHANOREQUALTO"s,"EQUALTO"s,"NOTEQUALTO"s,"INCLUDES"s,"NOTINCLUDES"s,"INCLUDEDIN"s,"NOTINCLUDEDIN"s,"IfcBinary"s,"IfcBoilerTypeEnum"s,"WATER"s,"STEAM"s,"IfcBoolean"s,"IfcBooleanOperator"s,"UNION"s,"INTERSECTION"s,"DIFFERENCE"s,"IfcBridgePartTypeEnum"s,"ABUTMENT"s,"DECK"s,"DECK_SEGMENT"s,"FOUNDATION"s,"PIER"s,"PIER_SEGMENT"s,"PYLON"s,"SUBSTRUCTURE"s,"SUPERSTRUCTURE"s,"SURFACESTRUCTURE"s,"IfcBridgeTypeEnum"s,"ARCHED"s,"CABLE_STAYED"s,"CANTILEVER"s,"CULVERT"s,"FRAMEWORK"s,"GIRDER"s,"SUSPENSION"s,"TRUSS"s,"IfcBuildingElementPartTypeEnum"s,"INSULATION"s,"PRECASTPANEL"s,"APRON"s,"ARMOURUNIT"s,"SAFETYCAGE"s,"IfcBuildingElementProxyTypeEnum"s,"COMPLEX"s,"ELEMENT"s,"PARTIAL"s,"PROVISIONFORVOID"s,"PROVISIONFORSPACE"s,"IfcBuildingSystemTypeEnum"s,"FENESTRATION"s,"LOADBEARING"s,"OUTERSHELL"s,"SHADING"s,"REINFORCING"s,"PRESTRESSING"s,"EROSIONPREVENTION"s,"IfcBuiltSystemTypeEnum"s,"MOORING"s,"TRACKCIRCUIT"s,"IfcBurnerTypeEnum"s,"IfcCableCarrierFittingTypeEnum"s,"BEND"s,"CROSS"s,"REDUCER"s,"TEE"s,"IfcCableCarrierSegmentTypeEnum"s,"CABLELADDERSEGMENT"s,"CABLETRAYSEGMENT"s,"CABLETRUNKINGSEGMENT"s,"CONDUITSEGMENT"s,"CABLEBRACKET"s,"CATENARYWIRE"s,"DROPPER"s,"IfcCableFittingTypeEnum"s,"CONNECTOR"s,"ENTRY"s,"EXIT"s,"JUNCTION"s,"TRANSITION"s,"FANOUT"s,"IfcCableSegmentTypeEnum"s,"BUSBARSEGMENT"s,"CABLESEGMENT"s,"CONDUCTORSEGMENT"s,"CORESEGMENT"s,"CONTACTWIRESEGMENT"s,"FIBERSEGMENT"s,"FIBERTUBE"s,"OPTICALCABLESEGMENT"s,"STITCHWIRE"s,"WIREPAIRSEGMENT"s,"IfcCaissonFoundationTypeEnum"s,"WELL"s,"CAISSON"s,"IfcCardinalPointReference"s,"IfcChangeActionEnum"s,"NOCHANGE"s,"MODIFIED"s,"ADDED"s,"DELETED"s,"IfcChillerTypeEnum"s,"AIRCOOLED"s,"WATERCOOLED"s,"HEATRECOVERY"s,"IfcChimneyTypeEnum"s,"IfcCoilTypeEnum"s,"DXCOOLINGCOIL"s,"ELECTRICHEATINGCOIL"s,"GASHEATINGCOIL"s,"HYDRONICCOIL"s,"STEAMHEATINGCOIL"s,"WATERCOOLINGCOIL"s,"WATERHEATINGCOIL"s,"IfcColumnTypeEnum"s,"COLUMN"s,"PILASTER"s,"PIERSTEM"s,"PIERSTEM_SEGMENT"s,"STANDCOLUMN"s,"IfcCommunicationsApplianceTypeEnum"s,"ANTENNA"s,"COMPUTER"s,"GATEWAY"s,"MODEM"s,"NETWORKAPPLIANCE"s,"NETWORKBRIDGE"s,"NETWORKHUB"s,"PRINTER"s,"REPEATER"s,"ROUTER"s,"SCANNER"s,"AUTOMATON"s,"INTELLIGENTPERIPHERAL"s,"IPNETWORKEQUIPMENT"s,"OPTICALNETWORKUNIT"s,"TELECOMMAND"s,"TELEPHONYEXCHANGE"s,"TRANSITIONCOMPONENT"s,"TRANSPONDER"s,"TRANSPORTEQUIPMENT"s,"OPTICALLINETERMINAL"s,"LINESIDEELECTRONICUNIT"s,"RADIOBLOCKCENTER"s,"IfcComplexNumber"s,"IfcComplexPropertyTemplateTypeEnum"s,"P_COMPLEX"s,"Q_COMPLEX"s,"IfcCompoundPlaneAngleMeasure"s,"IfcCompressorTypeEnum"s,"DYNAMIC"s,"RECIPROCATING"s,"ROTARY"s,"SCROLL"s,"TROCHOIDAL"s,"SINGLESTAGE"s,"BOOSTER"s,"OPENTYPE"s,"HERMETIC"s,"SEMIHERMETIC"s,"WELDEDSHELLHERMETIC"s,"ROLLINGPISTON"s,"ROTARYVANE"s,"SINGLESCREW"s,"TWINSCREW"s,"IfcCondenserTypeEnum"s,"EVAPORATIVECOOLED"s,"WATERCOOLEDBRAZEDPLATE"s,"WATERCOOLEDSHELLCOIL"s,"WATERCOOLEDSHELLTUBE"s,"WATERCOOLEDTUBEINTUBE"s,"IfcConnectionTypeEnum"s,"ATPATH"s,"ATSTART"s,"ATEND"s,"IfcConstraintEnum"s,"HARD"s,"SOFT"s,"ADVISORY"s,"IfcConstructionEquipmentResourceTypeEnum"s,"DEMOLISHING"s,"EARTHMOVING"s,"ERECTING"s,"HEATING"s,"LIGHTING"s,"PAVING"s,"PUMPING"s,"TRANSPORTING"s,"IfcConstructionMaterialResourceTypeEnum"s,"AGGREGATES"s,"CONCRETE"s,"DRYWALL"s,"FUEL"s,"GYPSUM"s,"MASONRY"s,"METAL"s,"PLASTIC"s,"WOOD"s,"IfcConstructionProductResourceTypeEnum"s,"ASSEMBLY"s,"FORMWORK"s,"IfcContextDependentMeasure"s,"IfcControllerTypeEnum"s,"FLOATING"s,"PROGRAMMABLE"s,"PROPORTIONAL"s,"MULTIPOSITION"s,"TWOPOSITION"s,"IfcConveyorSegmentTypeEnum"s,"CHUTECONVEYOR"s,"BELTCONVEYOR"s,"SCREWCONVEYOR"s,"BUCKETCONVEYOR"s,"IfcCooledBeamTypeEnum"s,"ACTIVE"s,"PASSIVE"s,"IfcCoolingTowerTypeEnum"s,"NATURALDRAFT"s,"MECHANICALINDUCEDDRAFT"s,"MECHANICALFORCEDDRAFT"s,"IfcCostItemTypeEnum"s,"IfcCostScheduleTypeEnum"s,"BUDGET"s,"COSTPLAN"s,"ESTIMATE"s,"TENDER"s,"PRICEDBILLOFQUANTITIES"s,"UNPRICEDBILLOFQUANTITIES"s,"SCHEDULEOFRATES"s,"IfcCountMeasure"s,"IfcCourseTypeEnum"s,"ARMOUR"s,"FILTER"s,"BALLASTBED"s,"CORE"s,"PAVEMENT"s,"PROTECTION"s,"IfcCoveringTypeEnum"s,"CEILING"s,"FLOORING"s,"CLADDING"s,"ROOFING"s,"MOLDING"s,"SKIRTINGBOARD"s,"MEMBRANE"s,"SLEEVING"s,"WRAPPING"s,"COPING"s,"IfcCrewResourceTypeEnum"s,"IfcCurtainWallTypeEnum"s,"IfcCurvatureMeasure"s,"IfcCurveInterpolationEnum"s,"LINEAR"s,"LOG_LINEAR"s,"LOG_LOG"s,"IfcDamperTypeEnum"s,"BACKDRAFTDAMPER"s,"BALANCINGDAMPER"s,"BLASTDAMPER"s,"CONTROLDAMPER"s,"FIREDAMPER"s,"FIRESMOKEDAMPER"s,"FUMEHOODEXHAUST"s,"GRAVITYDAMPER"s,"GRAVITYRELIEFDAMPER"s,"RELIEFDAMPER"s,"SMOKEDAMPER"s,"IfcDataOriginEnum"s,"MEASURED"s,"PREDICTED"s,"SIMULATED"s,"IfcDate"s,"IfcDateTime"s,"IfcDayInMonthNumber"s,"IfcDayInWeekNumber"s,"IfcDerivedUnitEnum"s,"ANGULARVELOCITYUNIT"s,"AREADENSITYUNIT"s,"COMPOUNDPLANEANGLEUNIT"s,"DYNAMICVISCOSITYUNIT"s,"HEATFLUXDENSITYUNIT"s,"INTEGERCOUNTRATEUNIT"s,"ISOTHERMALMOISTURECAPACITYUNIT"s,"KINEMATICVISCOSITYUNIT"s,"LINEARVELOCITYUNIT"s,"MASSDENSITYUNIT"s,"MASSFLOWRATEUNIT"s,"MOISTUREDIFFUSIVITYUNIT"s,"MOLECULARWEIGHTUNIT"s,"SPECIFICHEATCAPACITYUNIT"s,"THERMALADMITTANCEUNIT"s,"THERMALCONDUCTANCEUNIT"s,"THERMALRESISTANCEUNIT"s,"THERMALTRANSMITTANCEUNIT"s,"VAPORPERMEABILITYUNIT"s,"VOLUMETRICFLOWRATEUNIT"s,"ROTATIONALFREQUENCYUNIT"s,"TORQUEUNIT"s,"MOMENTOFINERTIAUNIT"s,"LINEARMOMENTUNIT"s,"LINEARFORCEUNIT"s,"PLANARFORCEUNIT"s,"MODULUSOFELASTICITYUNIT"s,"SHEARMODULUSUNIT"s,"LINEARSTIFFNESSUNIT"s,"ROTATIONALSTIFFNESSUNIT"s,"MODULUSOFSUBGRADEREACTIONUNIT"s,"ACCELERATIONUNIT"s,"CURVATUREUNIT"s,"HEATINGVALUEUNIT"s,"IONCONCENTRATIONUNIT"s,"LUMINOUSINTENSITYDISTRIBUTIONUNIT"s,"MASSPERLENGTHUNIT"s,"MODULUSOFLINEARSUBGRADEREACTIONUNIT"s,"MODULUSOFROTATIONALSUBGRADEREACTIONUNIT"s,"PHUNIT"s,"ROTATIONALMASSUNIT"s,"SECTIONAREAINTEGRALUNIT"s,"SECTIONMODULUSUNIT"s,"SOUNDPOWERLEVELUNIT"s,"SOUNDPOWERUNIT"s,"SOUNDPRESSURELEVELUNIT"s,"SOUNDPRESSUREUNIT"s,"TEMPERATUREGRADIENTUNIT"s,"TEMPERATURERATEOFCHANGEUNIT"s,"THERMALEXPANSIONCOEFFICIENTUNIT"s,"WARPINGCONSTANTUNIT"s,"WARPINGMOMENTUNIT"s,"IfcDescriptiveMeasure"s,"IfcDimensionCount"s,"IfcDirectionSenseEnum"s,"POSITIVE"s,"NEGATIVE"s,"IfcDiscreteAccessoryTypeEnum"s,"ANCHORPLATE"s,"BRACKET"s,"SHOE"s,"EXPANSION_JOINT_DEVICE"s,"CABLEARRANGER"s,"INSULATOR"s,"LOCK"s,"TENSIONINGEQUIPMENT"s,"RAILPAD"s,"SLIDINGCHAIR"s,"RAIL_LUBRICATION"s,"PANEL_STRENGTHENING"s,"RAILBRACE"s,"ELASTIC_CUSHION"s,"SOUNDABSORPTION"s,"POINTMACHINEMOUNTINGDEVICE"s,"POINT_MACHINE_LOCKING_DEVICE"s,"RAIL_MECHANICAL_EQUIPMENT"s,"BIRDPROTECTION"s,"IfcDistributionBoardTypeEnum"s,"SWITCHBOARD"s,"CONSUMERUNIT"s,"MOTORCONTROLCENTRE"s,"DISTRIBUTIONFRAME"s,"DISTRIBUTIONBOARD"s,"DISPATCHINGBOARD"s,"IfcDistributionChamberElementTypeEnum"s,"FORMEDDUCT"s,"INSPECTIONCHAMBER"s,"INSPECTIONPIT"s,"MANHOLE"s,"METERCHAMBER"s,"SUMP"s,"TRENCH"s,"VALVECHAMBER"s,"IfcDistributionPortTypeEnum"s,"CABLE"s,"CABLECARRIER"s,"DUCT"s,"PIPE"s,"WIRELESS"s,"IfcDistributionSystemEnum"s,"AIRCONDITIONING"s,"AUDIOVISUAL"s,"CHEMICAL"s,"CHILLEDWATER"s,"COMMUNICATION"s,"COMPRESSEDAIR"s,"CONDENSERWATER"s,"CONTROL"s,"CONVEYING"s,"DATA"s,"DISPOSAL"s,"DOMESTICCOLDWATER"s,"DOMESTICHOTWATER"s,"DRAINAGE"s,"EARTHING"s,"ELECTRICAL"s,"ELECTROACOUSTIC"s,"EXHAUST"s,"FIREPROTECTION"s,"GAS"s,"HAZARDOUS"s,"LIGHTNINGPROTECTION"s,"MUNICIPALSOLIDWASTE"s,"OIL"s,"OPERATIONAL"s,"POWERGENERATION"s,"RAINWATER"s,"REFRIGERATION"s,"SECURITY"s,"SEWAGE"s,"SIGNAL"s,"STORMWATER"s,"TV"s,"VACUUM"s,"VENT"s,"VENTILATION"s,"WASTEWATER"s,"WATERSUPPLY"s,"CATENARY_SYSTEM"s,"OVERHEAD_CONTACTLINE_SYSTEM"s,"RETURN_CIRCUIT"s,"FIXEDTRANSMISSIONNETWORK"s,"OPERATIONALTELEPHONYSYSTEM"s,"MOBILENETWORK"s,"MONITORINGSYSTEM"s,"IfcDocumentConfidentialityEnum"s,"PUBLIC"s,"RESTRICTED"s,"CONFIDENTIAL"s,"PERSONAL"s,"IfcDocumentStatusEnum"s,"DRAFT"s,"FINALDRAFT"s,"FINAL"s,"REVISION"s,"IfcDoorPanelOperationEnum"s,"SWINGING"s,"DOUBLE_ACTING"s,"SLIDING"s,"FOLDING"s,"REVOLVING"s,"ROLLINGUP"s,"FIXEDPANEL"s,"IfcDoorPanelPositionEnum"s,"LEFT"s,"MIDDLE"s,"RIGHT"s,"IfcDoorStyleConstructionEnum"s,"ALUMINIUM"s,"HIGH_GRADE_STEEL"s,"STEEL"s,"ALUMINIUM_WOOD"s,"ALUMINIUM_PLASTIC"s,"IfcDoorStyleOperationEnum"s,"SINGLE_SWING_LEFT"s,"SINGLE_SWING_RIGHT"s,"DOUBLE_DOOR_SINGLE_SWING"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_SWING_LEFT"s,"DOUBLE_SWING_RIGHT"s,"DOUBLE_DOOR_DOUBLE_SWING"s,"SLIDING_TO_LEFT"s,"SLIDING_TO_RIGHT"s,"DOUBLE_DOOR_SLIDING"s,"FOLDING_TO_LEFT"s,"FOLDING_TO_RIGHT"s,"DOUBLE_DOOR_FOLDING"s,"IfcDoorTypeEnum"s,"DOOR"s,"GATE"s,"TRAPDOOR"s,"BOOM_BARRIER"s,"TURNSTILE"s,"IfcDoorTypeOperationEnum"s,"DOUBLE_PANEL_SINGLE_SWING"s,"DOUBLE_PANEL_SINGLE_SWING_OPPOSITE_LEFT"s,"DOUBLE_PANEL_SINGLE_SWING_OPPOSITE_RIGHT"s,"DOUBLE_PANEL_DOUBLE_SWING"s,"DOUBLE_PANEL_SLIDING"s,"DOUBLE_PANEL_FOLDING"s,"REVOLVING_HORIZONTAL"s,"SWING_FIXED_LEFT"s,"SWING_FIXED_RIGHT"s,"DOUBLE_PANEL_LIFTING_VERTICAL"s,"LIFTING_HORIZONTAL"s,"LIFTING_VERTICAL_LEFT"s,"LIFTING_VERTICAL_RIGHT"s,"REVOLVING_VERTICAL"s,"IfcDoseEquivalentMeasure"s,"IfcDuctFittingTypeEnum"s,"OBSTRUCTION"s,"IfcDuctSegmentTypeEnum"s,"RIGIDSEGMENT"s,"FLEXIBLESEGMENT"s,"IfcDuctSilencerTypeEnum"s,"FLATOVAL"s,"RECTANGULAR"s,"ROUND"s,"IfcDuration"s,"IfcDynamicViscosityMeasure"s,"IfcEarthworksCutTypeEnum"s,"DREDGING"s,"EXCAVATION"s,"OVEREXCAVATION"s,"TOPSOILREMOVAL"s,"STEPEXCAVATION"s,"PAVEMENTMILLING"s,"CUT"s,"BASE_EXCAVATION"s,"IfcEarthworksFillTypeEnum"s,"BACKFILL"s,"COUNTERWEIGHT"s,"SUBGRADE"s,"EMBANKMENT"s,"TRANSITIONSECTION"s,"SUBGRADEBED"s,"SLOPEFILL"s,"IfcElectricApplianceTypeEnum"s,"DISHWASHER"s,"ELECTRICCOOKER"s,"FREESTANDINGELECTRICHEATER"s,"FREESTANDINGFAN"s,"FREESTANDINGWATERHEATER"s,"FREESTANDINGWATERCOOLER"s,"FREEZER"s,"FRIDGE_FREEZER"s,"HANDDRYER"s,"KITCHENMACHINE"s,"MICROWAVE"s,"PHOTOCOPIER"s,"REFRIGERATOR"s,"TUMBLEDRYER"s,"VENDINGMACHINE"s,"WASHINGMACHINE"s,"IfcElectricCapacitanceMeasure"s,"IfcElectricChargeMeasure"s,"IfcElectricConductanceMeasure"s,"IfcElectricCurrentMeasure"s,"IfcElectricDistributionBoardTypeEnum"s,"IfcElectricFlowStorageDeviceTypeEnum"s,"BATTERY"s,"CAPACITORBANK"s,"HARMONICFILTER"s,"INDUCTORBANK"s,"UPS"s,"CAPACITOR"s,"COMPENSATOR"s,"INDUCTOR"s,"RECHARGER"s,"IfcElectricFlowTreatmentDeviceTypeEnum"s,"ELECTRONICFILTER"s,"IfcElectricGeneratorTypeEnum"s,"CHP"s,"ENGINEGENERATOR"s,"STANDALONE"s,"IfcElectricMotorTypeEnum"s,"DC"s,"INDUCTION"s,"POLYPHASE"s,"RELUCTANCESYNCHRONOUS"s,"SYNCHRONOUS"s,"IfcElectricResistanceMeasure"s,"IfcElectricTimeControlTypeEnum"s,"TIMECLOCK"s,"TIMEDELAY"s,"RELAY"s,"IfcElectricVoltageMeasure"s,"IfcElementAssemblyTypeEnum"s,"ACCESSORY_ASSEMBLY"s,"ARCH"s,"BEAM_GRID"s,"BRACED_FRAME"s,"REINFORCEMENT_UNIT"s,"RIGID_FRAME"s,"SLAB_FIELD"s,"CROSS_BRACING"s,"MAST"s,"SIGNALASSEMBLY"s,"GRID"s,"SHELTER"s,"SUPPORTINGASSEMBLY"s,"SUSPENSIONASSEMBLY"s,"TRACTION_SWITCHING_ASSEMBLY"s,"TRACKPANEL"s,"TURNOUTPANEL"s,"DILATATIONPANEL"s,"RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY"s,"ENTRANCEWORKS"s,"SUMPBUSTER"s,"TRAFFIC_CALMING_DEVICE"s,"IfcElementCompositionEnum"s,"IfcEnergyMeasure"s,"IfcEngineTypeEnum"s,"EXTERNALCOMBUSTION"s,"INTERNALCOMBUSTION"s,"IfcEvaporativeCoolerTypeEnum"s,"DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER"s,"DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER"s,"DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER"s,"DIRECTEVAPORATIVEAIRWASHER"s,"INDIRECTEVAPORATIVEPACKAGEAIRCOOLER"s,"INDIRECTEVAPORATIVEWETCOIL"s,"INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER"s,"INDIRECTDIRECTCOMBINATION"s,"IfcEvaporatorTypeEnum"s,"DIRECTEXPANSION"s,"DIRECTEXPANSIONSHELLANDTUBE"s,"DIRECTEXPANSIONTUBEINTUBE"s,"DIRECTEXPANSIONBRAZEDPLATE"s,"FLOODEDSHELLANDTUBE"s,"SHELLANDCOIL"s,"IfcEventTriggerTypeEnum"s,"EVENTRULE"s,"EVENTMESSAGE"s,"EVENTTIME"s,"EVENTCOMPLEX"s,"IfcEventTypeEnum"s,"STARTEVENT"s,"ENDEVENT"s,"INTERMEDIATEEVENT"s,"IfcExternalSpatialElementTypeEnum"s,"EXTERNAL"s,"EXTERNAL_EARTH"s,"EXTERNAL_WATER"s,"EXTERNAL_FIRE"s,"IfcFacilityPartCommonTypeEnum"s,"SEGMENT"s,"ABOVEGROUND"s,"LEVELCROSSING"s,"BELOWGROUND"s,"TERMINAL"s,"IfcFacilityUsageEnum"s,"LATERAL"s,"REGION"s,"VERTICAL"s,"LONGITUDINAL"s,"IfcFanTypeEnum"s,"CENTRIFUGALFORWARDCURVED"s,"CENTRIFUGALRADIAL"s,"CENTRIFUGALBACKWARDINCLINEDCURVED"s,"CENTRIFUGALAIRFOIL"s,"TUBEAXIAL"s,"VANEAXIAL"s,"PROPELLORAXIAL"s,"IfcFastenerTypeEnum"s,"GLUE"s,"MORTAR"s,"WELD"s,"IfcFilterTypeEnum"s,"AIRPARTICLEFILTER"s,"COMPRESSEDAIRFILTER"s,"ODORFILTER"s,"OILFILTER"s,"STRAINER"s,"WATERFILTER"s,"IfcFireSuppressionTerminalTypeEnum"s,"BREECHINGINLET"s,"FIREHYDRANT"s,"HOSEREEL"s,"SPRINKLER"s,"SPRINKLERDEFLECTOR"s,"FIREMONITOR"s,"IfcFlowDirectionEnum"s,"SOURCE"s,"SINK"s,"SOURCEANDSINK"s,"IfcFlowInstrumentTypeEnum"s,"PRESSUREGAUGE"s,"THERMOMETER"s,"AMMETER"s,"FREQUENCYMETER"s,"POWERFACTORMETER"s,"PHASEANGLEMETER"s,"VOLTMETER_PEAK"s,"VOLTMETER_RMS"s,"COMBINED"s,"VOLTMETER"s,"IfcFlowMeterTypeEnum"s,"ENERGYMETER"s,"GASMETER"s,"OILMETER"s,"WATERMETER"s,"IfcFontStyle"s,"IfcFontVariant"s,"IfcFontWeight"s,"IfcFootingTypeEnum"s,"CAISSON_FOUNDATION"s,"FOOTING_BEAM"s,"PAD_FOOTING"s,"PILE_CAP"s,"STRIP_FOOTING"s,"IfcForceMeasure"s,"IfcFrequencyMeasure"s,"IfcFurnitureTypeEnum"s,"CHAIR"s,"TABLE"s,"DESK"s,"BED"s,"FILECABINET"s,"SHELF"s,"SOFA"s,"TECHNICALCABINET"s,"IfcGeographicElementTypeEnum"s,"TERRAIN"s,"SOIL_BORING_POINT"s,"IfcGeometricProjectionEnum"s,"GRAPH_VIEW"s,"SKETCH_VIEW"s,"MODEL_VIEW"s,"PLAN_VIEW"s,"REFLECTED_PLAN_VIEW"s,"SECTION_VIEW"s,"ELEVATION_VIEW"s,"IfcGlobalOrLocalEnum"s,"GLOBAL_COORDS"s,"LOCAL_COORDS"s,"IfcGloballyUniqueId"s,"IfcGridTypeEnum"s,"RADIAL"s,"TRIANGULAR"s,"IRREGULAR"s,"IfcHeatExchangerTypeEnum"s,"PLATE"s,"SHELLANDTUBE"s,"TURNOUTHEATING"s,"IfcHeatFluxDensityMeasure"s,"IfcHeatingValueMeasure"s,"IfcHumidifierTypeEnum"s,"STEAMINJECTION"s,"ADIABATICAIRWASHER"s,"ADIABATICPAN"s,"ADIABATICWETTEDELEMENT"s,"ADIABATICATOMIZING"s,"ADIABATICULTRASONIC"s,"ADIABATICRIGIDMEDIA"s,"ADIABATICCOMPRESSEDAIRNOZZLE"s,"ASSISTEDELECTRIC"s,"ASSISTEDNATURALGAS"s,"ASSISTEDPROPANE"s,"ASSISTEDBUTANE"s,"ASSISTEDSTEAM"s,"IfcIdentifier"s,"IfcIlluminanceMeasure"s,"IfcImpactProtectionDeviceTypeEnum"s,"CRASHCUSHION"s,"DAMPINGSYSTEM"s,"FENDER"s,"BUMPER"s,"IfcInductanceMeasure"s,"IfcInteger"s,"IfcIntegerCountRateMeasure"s,"IfcInterceptorTypeEnum"s,"CYCLONIC"s,"GREASE"s,"PETROL"s,"IfcInternalOrExternalEnum"s,"INTERNAL"s,"IfcInventoryTypeEnum"s,"ASSETINVENTORY"s,"SPACEINVENTORY"s,"FURNITUREINVENTORY"s,"IfcIonConcentrationMeasure"s,"IfcIsothermalMoistureCapacityMeasure"s,"IfcJunctionBoxTypeEnum"s,"POWER"s,"IfcKinematicViscosityMeasure"s,"IfcKnotType"s,"UNIFORM_KNOTS"s,"QUASI_UNIFORM_KNOTS"s,"PIECEWISE_BEZIER_KNOTS"s,"IfcLabel"s,"IfcLaborResourceTypeEnum"s,"ADMINISTRATION"s,"CARPENTRY"s,"CLEANING"s,"ELECTRIC"s,"FINISHING"s,"GENERAL"s,"HVAC"s,"LANDSCAPING"s,"PAINTING"s,"PLUMBING"s,"SITEGRADING"s,"STEELWORK"s,"SURVEYING"s,"IfcLampTypeEnum"s,"COMPACTFLUORESCENT"s,"FLUORESCENT"s,"HALOGEN"s,"HIGHPRESSUREMERCURY"s,"HIGHPRESSURESODIUM"s,"LED"s,"METALHALIDE"s,"OLED"s,"TUNGSTENFILAMENT"s,"IfcLanguageId"s,"IfcLayerSetDirectionEnum"s,"AXIS1"s,"AXIS2"s,"AXIS3"s,"IfcLengthMeasure"s,"IfcLightDistributionCurveEnum"s,"TYPE_A"s,"TYPE_B"s,"TYPE_C"s,"IfcLightEmissionSourceEnum"s,"LIGHTEMITTINGDIODE"s,"LOWPRESSURESODIUM"s,"LOWVOLTAGEHALOGEN"s,"MAINVOLTAGEHALOGEN"s,"IfcLightFixtureTypeEnum"s,"POINTSOURCE"s,"DIRECTIONSOURCE"s,"SECURITYLIGHTING"s,"IfcLinearForceMeasure"s,"IfcLinearMomentMeasure"s,"IfcLinearStiffnessMeasure"s,"IfcLinearVelocityMeasure"s,"IfcLiquidTerminalTypeEnum"s,"LOADINGARM"s,"IfcLoadGroupTypeEnum"s,"LOAD_GROUP"s,"LOAD_CASE"s,"LOAD_COMBINATION"s,"IfcLogical"s,"IfcLogicalOperatorEnum"s,"LOGICALAND"s,"LOGICALOR"s,"LOGICALXOR"s,"LOGICALNOTAND"s,"LOGICALNOTOR"s,"IfcLuminousFluxMeasure"s,"IfcLuminousIntensityDistributionMeasure"s,"IfcLuminousIntensityMeasure"s,"IfcMagneticFluxDensityMeasure"s,"IfcMagneticFluxMeasure"s,"IfcMarineFacilityTypeEnum"s,"CANAL"s,"WATERWAYSHIPLIFT"s,"REVETMENT"s,"LAUNCHRECOVERY"s,"MARINEDEFENCE"s,"HYDROLIFT"s,"SHIPYARD"s,"SHIPLIFT"s,"PORT"s,"QUAY"s,"FLOATINGDOCK"s,"NAVIGATIONALCHANNEL"s,"BREAKWATER"s,"DRYDOCK"s,"JETTY"s,"SHIPLOCK"s,"BARRIERBEACH"s,"SLIPWAY"s,"WATERWAY"s,"IfcMarinePartTypeEnum"s,"CREST"s,"MANUFACTURING"s,"LOWWATERLINE"s,"WATERFIELD"s,"CILL_LEVEL"s,"BERTHINGSTRUCTURE"s,"COPELEVEL"s,"CHAMBER"s,"STORAGEAREA"s,"APPROACHCHANNEL"s,"VEHICLESERVICING"s,"SHIPTRANSFER"s,"GATEHEAD"s,"GUDINGSTRUCTURE"s,"BELOWWATERLINE"s,"WEATHERSIDE"s,"LANDFIELD"s,"LEEWARDSIDE"s,"ABOVEWATERLINE"s,"ANCHORAGE"s,"NAVIGATIONALAREA"s,"HIGHWATERLINE"s,"IfcMassDensityMeasure"s,"IfcMassFlowRateMeasure"s,"IfcMassMeasure"s,"IfcMassPerLengthMeasure"s,"IfcMechanicalFastenerTypeEnum"s,"ANCHORBOLT"s,"BOLT"s,"DOWEL"s,"NAIL"s,"NAILPLATE"s,"RIVET"s,"SCREW"s,"SHEARCONNECTOR"s,"STAPLE"s,"STUDSHEARCONNECTOR"s,"COUPLER"s,"RAILJOINT"s,"RAILFASTENING"s,"CHAIN"s,"ROPE"s,"IfcMedicalDeviceTypeEnum"s,"AIRSTATION"s,"FEEDAIRUNIT"s,"OXYGENGENERATOR"s,"OXYGENPLANT"s,"VACUUMSTATION"s,"IfcMemberTypeEnum"s,"BRACE"s,"CHORD"s,"COLLAR"s,"MEMBER"s,"MULLION"s,"PURLIN"s,"RAFTER"s,"STRINGER"s,"STRUT"s,"STUD"s,"STIFFENING_RIB"s,"ARCH_SEGMENT"s,"SUSPENSION_CABLE"s,"SUSPENDER"s,"STAY_CABLE"s,"STRUCTURALCABLE"s,"TIEBAR"s,"IfcMobileTelecommunicationsApplianceTypeEnum"s,"E_UTRAN_NODE_B"s,"REMOTERADIOUNIT"s,"ACCESSPOINT"s,"BASETRANSCEIVERSTATION"s,"REMOTEUNIT"s,"BASEBANDUNIT"s,"MASTERUNIT"s,"GATEWAY_GPRS_SUPPORT_NODE"s,"SUBSCRIBERSERVER"s,"MOBILESWITCHINGCENTER"s,"MSCSERVER"s,"PACKETCONTROLUNIT"s,"SERVICE_GPRS_SUPPORT_NODE"s,"IfcModulusOfElasticityMeasure"s,"IfcModulusOfLinearSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionMeasure"s,"IfcModulusOfRotationalSubgradeReactionSelect"s,"IfcModulusOfSubgradeReactionMeasure"s,"IfcModulusOfSubgradeReactionSelect"s,"IfcModulusOfTranslationalSubgradeReactionSelect"s,"IfcMoistureDiffusivityMeasure"s,"IfcMolecularWeightMeasure"s,"IfcMomentOfInertiaMeasure"s,"IfcMonetaryMeasure"s,"IfcMonthInYearNumber"s,"IfcMooringDeviceTypeEnum"s,"LINETENSIONER"s,"MAGNETICDEVICE"s,"MOORINGHOOKS"s,"VACUUMDEVICE"s,"BOLLARD"s,"IfcMotorConnectionTypeEnum"s,"BELTDRIVE"s,"COUPLING"s,"DIRECTDRIVE"s,"IfcNavigationElementTypeEnum"s,"BEACON"s,"BUOY"s,"IfcNonNegativeLengthMeasure"s,"IfcNumericMeasure"s,"IfcObjectTypeEnum"s,"PRODUCT"s,"PROCESS"s,"RESOURCE"s,"ACTOR"s,"GROUP"s,"PROJECT"s,"IfcObjectiveEnum"s,"CODECOMPLIANCE"s,"CODEWAIVER"s,"DESIGNINTENT"s,"HEALTHANDSAFETY"s,"MERGECONFLICT"s,"MODELVIEW"s,"PARAMETER"s,"REQUIREMENT"s,"SPECIFICATION"s,"TRIGGERCONDITION"s,"IfcOccupantTypeEnum"s,"ASSIGNEE"s,"ASSIGNOR"s,"LESSEE"s,"LESSOR"s,"LETTINGAGENT"s,"OWNER"s,"TENANT"s,"IfcOpeningElementTypeEnum"s,"OPENING"s,"RECESS"s,"IfcOutletTypeEnum"s,"AUDIOVISUALOUTLET"s,"COMMUNICATIONSOUTLET"s,"POWEROUTLET"s,"DATAOUTLET"s,"TELEPHONEOUTLET"s,"IfcPHMeasure"s,"IfcParameterValue"s,"IfcPavementTypeEnum"s,"FLEXIBLE"s,"RIGID"s,"IfcPerformanceHistoryTypeEnum"s,"IfcPermeableCoveringOperationEnum"s,"GRILL"s,"LOUVER"s,"SCREEN"s,"IfcPermitTypeEnum"s,"ACCESS"s,"BUILDING"s,"WORK"s,"IfcPhysicalOrVirtualEnum"s,"PHYSICAL"s,"VIRTUAL"s,"IfcPileConstructionEnum"s,"CAST_IN_PLACE"s,"COMPOSITE"s,"PRECAST_CONCRETE"s,"PREFAB_STEEL"s,"IfcPileTypeEnum"s,"BORED"s,"DRIVEN"s,"JETGROUTING"s,"COHESION"s,"FRICTION"s,"SUPPORT"s,"IfcPipeFittingTypeEnum"s,"IfcPipeSegmentTypeEnum"s,"GUTTER"s,"SPOOL"s,"IfcPlanarForceMeasure"s,"IfcPlaneAngleMeasure"s,"IfcPlateTypeEnum"s,"CURTAIN_PANEL"s,"SHEET"s,"FLANGE_PLATE"s,"WEB_PLATE"s,"STIFFENER_PLATE"s,"GUSSET_PLATE"s,"COVER_PLATE"s,"SPLICE_PLATE"s,"BASE_PLATE"s,"IfcPositiveInteger"s,"IfcPositiveLengthMeasure"s,"IfcPositivePlaneAngleMeasure"s,"IfcPowerMeasure"s,"IfcPreferredSurfaceCurveRepresentation"s,"CURVE3D"s,"PCURVE_S1"s,"PCURVE_S2"s,"IfcPresentableText"s,"IfcPressureMeasure"s,"IfcProcedureTypeEnum"s,"ADVICE_CAUTION"s,"ADVICE_NOTE"s,"ADVICE_WARNING"s,"CALIBRATION"s,"DIAGNOSTIC"s,"SHUTDOWN"s,"STARTUP"s,"IfcProfileTypeEnum"s,"CURVE"s,"AREA"s,"IfcProjectOrderTypeEnum"s,"CHANGEORDER"s,"MAINTENANCEWORKORDER"s,"MOVEORDER"s,"PURCHASEORDER"s,"WORKORDER"s,"IfcProjectedOrTrueLengthEnum"s,"PROJECTED_LENGTH"s,"TRUE_LENGTH"s,"IfcProjectionElementTypeEnum"s,"BLISTER"s,"DEVIATOR"s,"IfcPropertySetTemplateTypeEnum"s,"PSET_TYPEDRIVENONLY"s,"PSET_TYPEDRIVENOVERRIDE"s,"PSET_OCCURRENCEDRIVEN"s,"PSET_PERFORMANCEDRIVEN"s,"QTO_TYPEDRIVENONLY"s,"QTO_TYPEDRIVENOVERRIDE"s,"QTO_OCCURRENCEDRIVEN"s,"IfcProtectiveDeviceTrippingUnitTypeEnum"s,"ELECTRONIC"s,"ELECTROMAGNETIC"s,"RESIDUALCURRENT"s,"THERMAL"s,"IfcProtectiveDeviceTypeEnum"s,"CIRCUITBREAKER"s,"EARTHLEAKAGECIRCUITBREAKER"s,"EARTHINGSWITCH"s,"FUSEDISCONNECTOR"s,"RESIDUALCURRENTCIRCUITBREAKER"s,"RESIDUALCURRENTSWITCH"s,"VARISTOR"s,"ANTI_ARCING_DEVICE"s,"SPARKGAP"s,"VOLTAGELIMITER"s,"IfcPumpTypeEnum"s,"CIRCULATOR"s,"ENDSUCTION"s,"SPLITCASE"s,"SUBMERSIBLEPUMP"s,"SUMPPUMP"s,"VERTICALINLINE"s,"VERTICALTURBINE"s,"IfcRadioActivityMeasure"s,"IfcRailTypeEnum"s,"RACKRAIL"s,"BLADE"s,"GUARDRAIL"s,"STOCKRAIL"s,"CHECKRAIL"s,"RAIL"s,"IfcRailingTypeEnum"s,"HANDRAIL"s,"BALUSTRADE"s,"FENCE"s,"IfcRailwayPartTypeEnum"s,"TRACKSTRUCTURE"s,"TRACKSTRUCTUREPART"s,"LINESIDESTRUCTUREPART"s,"DILATATIONSUPERSTRUCTURE"s,"PLAINTRACKSUPESTRUCTURE"s,"LINESIDESTRUCTURE"s,"TURNOUTSUPERSTRUCTURE"s,"IfcRailwayTypeEnum"s,"IfcRampFlightTypeEnum"s,"STRAIGHT"s,"SPIRAL"s,"IfcRampTypeEnum"s,"STRAIGHT_RUN_RAMP"s,"TWO_STRAIGHT_RUN_RAMP"s,"QUARTER_TURN_RAMP"s,"TWO_QUARTER_TURN_RAMP"s,"HALF_TURN_RAMP"s,"SPIRAL_RAMP"s,"IfcRatioMeasure"s,"IfcReal"s,"IfcRecurrenceTypeEnum"s,"DAILY"s,"WEEKLY"s,"MONTHLY_BY_DAY_OF_MONTH"s,"MONTHLY_BY_POSITION"s,"BY_DAY_COUNT"s,"BY_WEEKDAY_COUNT"s,"YEARLY_BY_DAY_OF_MONTH"s,"YEARLY_BY_POSITION"s,"IfcReferentTypeEnum"s,"KILOPOINT"s,"MILEPOINT"s,"STATION"s,"REFERENCEMARKER"s,"LANDMARK"s,"BOUNDARY"s,"POSITION"s,"IfcReflectanceMethodEnum"s,"BLINN"s,"FLAT"s,"GLASS"s,"MATT"s,"MIRROR"s,"PHONG"s,"STRAUSS"s,"IfcReinforcedSoilTypeEnum"s,"SURCHARGEPRELOADED"s,"VERTICALLYDRAINED"s,"DYNAMICALLYCOMPACTED"s,"REPLACED"s,"ROLLERCOMPACTED"s,"GROUTED"s,"IfcReinforcingBarRoleEnum"s,"MAIN"s,"SHEAR"s,"LIGATURE"s,"PUNCHING"s,"EDGE"s,"RING"s,"ANCHORING"s,"IfcReinforcingBarSurfaceEnum"s,"PLAIN"s,"TEXTURED"s,"IfcReinforcingBarTypeEnum"s,"SPACEBAR"s,"IfcReinforcingMeshTypeEnum"s,"IfcRoadPartTypeEnum"s,"ROADSIDEPART"s,"BUS_STOP"s,"HARDSHOULDER"s,"PASSINGBAY"s,"ROADWAYPLATEAU"s,"ROADSIDE"s,"REFUGEISLAND"s,"TOLLPLAZA"s,"CENTRALRESERVE"s,"SIDEWALK"s,"PARKINGBAY"s,"RAILWAYCROSSING"s,"PEDESTRIAN_CROSSING"s,"SOFTSHOULDER"s,"BICYCLECROSSING"s,"CENTRALISLAND"s,"SHOULDER"s,"TRAFFICLANE"s,"ROADSEGMENT"s,"ROUNDABOUT"s,"LAYBY"s,"CARRIAGEWAY"s,"TRAFFICISLAND"s,"IfcRoadTypeEnum"s,"IfcRoleEnum"s,"SUPPLIER"s,"MANUFACTURER"s,"CONTRACTOR"s,"SUBCONTRACTOR"s,"ARCHITECT"s,"STRUCTURALENGINEER"s,"COSTENGINEER"s,"CLIENT"s,"BUILDINGOWNER"s,"BUILDINGOPERATOR"s,"MECHANICALENGINEER"s,"ELECTRICALENGINEER"s,"PROJECTMANAGER"s,"FACILITIESMANAGER"s,"CIVILENGINEER"s,"COMMISSIONINGENGINEER"s,"ENGINEER"s,"CONSULTANT"s,"CONSTRUCTIONMANAGER"s,"FIELDCONSTRUCTIONMANAGER"s,"RESELLER"s,"IfcRoofTypeEnum"s,"FLAT_ROOF"s,"SHED_ROOF"s,"GABLE_ROOF"s,"HIP_ROOF"s,"HIPPED_GABLE_ROOF"s,"GAMBREL_ROOF"s,"MANSARD_ROOF"s,"BARREL_ROOF"s,"RAINBOW_ROOF"s,"BUTTERFLY_ROOF"s,"PAVILION_ROOF"s,"DOME_ROOF"s,"FREEFORM"s,"IfcRotationalFrequencyMeasure"s,"IfcRotationalMassMeasure"s,"IfcRotationalStiffnessMeasure"s,"IfcRotationalStiffnessSelect"s,"IfcSIPrefix"s,"EXA"s,"PETA"s,"TERA"s,"GIGA"s,"MEGA"s,"KILO"s,"HECTO"s,"DECA"s,"DECI"s,"CENTI"s,"MILLI"s,"MICRO"s,"NANO"s,"PICO"s,"FEMTO"s,"ATTO"s,"IfcSIUnitName"s,"AMPERE"s,"BECQUEREL"s,"CANDELA"s,"COULOMB"s,"CUBIC_METRE"s,"DEGREE_CELSIUS"s,"FARAD"s,"GRAM"s,"GRAY"s,"HENRY"s,"HERTZ"s,"JOULE"s,"KELVIN"s,"LUMEN"s,"LUX"s,"METRE"s,"MOLE"s,"NEWTON"s,"OHM"s,"PASCAL"s,"RADIAN"s,"SECOND"s,"SIEMENS"s,"SIEVERT"s,"SQUARE_METRE"s,"STERADIAN"s,"TESLA"s,"VOLT"s,"WATT"s,"WEBER"s,"IfcSanitaryTerminalTypeEnum"s,"BATH"s,"BIDET"s,"CISTERN"s,"SHOWER"s,"SANITARYFOUNTAIN"s,"TOILETPAN"s,"URINAL"s,"WASHHANDBASIN"s,"WCSEAT"s,"IfcSectionModulusMeasure"s,"IfcSectionTypeEnum"s,"UNIFORM"s,"TAPERED"s,"IfcSectionalAreaIntegralMeasure"s,"IfcSensorTypeEnum"s,"COSENSOR"s,"CO2SENSOR"s,"CONDUCTANCESENSOR"s,"CONTACTSENSOR"s,"FIRESENSOR"s,"FLOWSENSOR"s,"FROSTSENSOR"s,"GASSENSOR"s,"HEATSENSOR"s,"HUMIDITYSENSOR"s,"IDENTIFIERSENSOR"s,"IONCONCENTRATIONSENSOR"s,"LEVELSENSOR"s,"LIGHTSENSOR"s,"MOISTURESENSOR"s,"MOVEMENTSENSOR"s,"PHSENSOR"s,"PRESSURESENSOR"s,"RADIATIONSENSOR"s,"RADIOACTIVITYSENSOR"s,"SMOKESENSOR"s,"SOUNDSENSOR"s,"TEMPERATURESENSOR"s,"WINDSENSOR"s,"EARTHQUAKESENSOR"s,"FOREIGNOBJECTDETECTIONSENSOR"s,"OBSTACLESENSOR"s,"RAINSENSOR"s,"SNOWDEPTHSENSOR"s,"TRAINSENSOR"s,"TURNOUTCLOSURESENSOR"s,"WHEELSENSOR"s,"IfcSequenceEnum"s,"START_START"s,"START_FINISH"s,"FINISH_START"s,"FINISH_FINISH"s,"IfcShadingDeviceTypeEnum"s,"JALOUSIE"s,"SHUTTER"s,"AWNING"s,"IfcShearModulusMeasure"s,"IfcSignTypeEnum"s,"MARKER"s,"PICTORAL"s,"IfcSignalTypeEnum"s,"VISUAL"s,"AUDIO"s,"MIXED"s,"IfcSimplePropertyTemplateTypeEnum"s,"P_SINGLEVALUE"s,"P_ENUMERATEDVALUE"s,"P_BOUNDEDVALUE"s,"P_LISTVALUE"s,"P_TABLEVALUE"s,"P_REFERENCEVALUE"s,"Q_LENGTH"s,"Q_AREA"s,"Q_VOLUME"s,"Q_COUNT"s,"Q_WEIGHT"s,"Q_TIME"s,"IfcSlabTypeEnum"s,"FLOOR"s,"ROOF"s,"LANDING"s,"BASESLAB"s,"APPROACH_SLAB"s,"WEARING"s,"TRACKSLAB"s,"IfcSolarDeviceTypeEnum"s,"SOLARCOLLECTOR"s,"SOLARPANEL"s,"IfcSolidAngleMeasure"s,"IfcSoundPowerLevelMeasure"s,"IfcSoundPowerMeasure"s,"IfcSoundPressureLevelMeasure"s,"IfcSoundPressureMeasure"s,"IfcSpaceHeaterTypeEnum"s,"CONVECTOR"s,"RADIATOR"s,"IfcSpaceTypeEnum"s,"SPACE"s,"PARKING"s,"GFA"s,"BERTH"s,"IfcSpatialZoneTypeEnum"s,"CONSTRUCTION"s,"FIRESAFETY"s,"OCCUPANCY"s,"RESERVATION"s,"INTERFERENCE"s,"IfcSpecificHeatCapacityMeasure"s,"IfcSpecularExponent"s,"IfcSpecularRoughness"s,"IfcStackTerminalTypeEnum"s,"BIRDCAGE"s,"COWL"s,"RAINWATERHOPPER"s,"IfcStairFlightTypeEnum"s,"WINDER"s,"CURVED"s,"IfcStairTypeEnum"s,"STRAIGHT_RUN_STAIR"s,"TWO_STRAIGHT_RUN_STAIR"s,"QUARTER_WINDING_STAIR"s,"QUARTER_TURN_STAIR"s,"HALF_WINDING_STAIR"s,"HALF_TURN_STAIR"s,"TWO_QUARTER_WINDING_STAIR"s,"TWO_QUARTER_TURN_STAIR"s,"THREE_QUARTER_WINDING_STAIR"s,"THREE_QUARTER_TURN_STAIR"s,"SPIRAL_STAIR"s,"DOUBLE_RETURN_STAIR"s,"CURVED_RUN_STAIR"s,"TWO_CURVED_RUN_STAIR"s,"LADDER"s,"IfcStateEnum"s,"READWRITE"s,"READONLY"s,"LOCKED"s,"READWRITELOCKED"s,"READONLYLOCKED"s,"IfcStructuralCurveActivityTypeEnum"s,"CONST"s,"POLYGONAL"s,"EQUIDISTANT"s,"SINUS"s,"PARABOLA"s,"DISCRETE"s,"IfcStructuralCurveMemberTypeEnum"s,"RIGID_JOINED_MEMBER"s,"PIN_JOINED_MEMBER"s,"TENSION_MEMBER"s,"COMPRESSION_MEMBER"s,"IfcStructuralSurfaceActivityTypeEnum"s,"BILINEAR"s,"ISOCONTOUR"s,"IfcStructuralSurfaceMemberTypeEnum"s,"BENDING_ELEMENT"s,"MEMBRANE_ELEMENT"s,"SHELL"s,"IfcSubContractResourceTypeEnum"s,"PURCHASE"s,"IfcSurfaceFeatureTypeEnum"s,"MARK"s,"TAG"s,"TREATMENT"s,"DEFECT"s,"HATCHMARKING"s,"LINEMARKING"s,"PAVEMENTSURFACEMARKING"s,"SYMBOLMARKING"s,"NONSKIDSURFACING"s,"RUMBLESTRIP"s,"TRANSVERSERUMBLESTRIP"s,"IfcSurfaceSide"s,"BOTH"s,"IfcSwitchingDeviceTypeEnum"s,"CONTACTOR"s,"DIMMERSWITCH"s,"EMERGENCYSTOP"s,"KEYPAD"s,"MOMENTARYSWITCH"s,"SELECTORSWITCH"s,"STARTER"s,"SWITCHDISCONNECTOR"s,"TOGGLESWITCH"s,"START_AND_STOP_EQUIPMENT"s,"IfcSystemFurnitureElementTypeEnum"s,"PANEL"s,"WORKSURFACE"s,"SUBRACK"s,"IfcTankTypeEnum"s,"BASIN"s,"BREAKPRESSURE"s,"EXPANSION"s,"FEEDANDEXPANSION"s,"PRESSUREVESSEL"s,"STORAGE"s,"VESSEL"s,"OILRETENTIONTRAY"s,"IfcTaskDurationEnum"s,"ELAPSEDTIME"s,"WORKTIME"s,"IfcTaskTypeEnum"s,"ATTENDANCE"s,"DEMOLITION"s,"DISMANTLE"s,"INSTALLATION"s,"LOGISTIC"s,"MAINTENANCE"s,"MOVE"s,"OPERATION"s,"REMOVAL"s,"RENOVATION"s,"IfcTemperatureGradientMeasure"s,"IfcTemperatureRateOfChangeMeasure"s,"IfcTendonAnchorTypeEnum"s,"FIXED_END"s,"TENSIONING_END"s,"IfcTendonConduitTypeEnum"s,"GROUTING_DUCT"s,"TRUMPET"s,"DIABOLO"s,"IfcTendonTypeEnum"s,"BAR"s,"COATED"s,"STRAND"s,"WIRE"s,"IfcText"s,"IfcTextAlignment"s,"IfcTextDecoration"s,"IfcTextFontName"s,"IfcTextPath"s,"UP"s,"DOWN"s,"IfcTextTransformation"s,"IfcThermalAdmittanceMeasure"s,"IfcThermalConductivityMeasure"s,"IfcThermalExpansionCoefficientMeasure"s,"IfcThermalResistanceMeasure"s,"IfcThermalTransmittanceMeasure"s,"IfcThermodynamicTemperatureMeasure"s,"IfcTime"s,"IfcTimeMeasure"s,"IfcTimeOrRatioSelect"s,"IfcTimeSeriesDataTypeEnum"s,"CONTINUOUS"s,"DISCRETEBINARY"s,"PIECEWISEBINARY"s,"PIECEWISECONSTANT"s,"PIECEWISECONTINUOUS"s,"IfcTimeStamp"s,"IfcTorqueMeasure"s,"IfcTrackElementTypeEnum"s,"TRACKENDOFALIGNMENT"s,"BLOCKINGDEVICE"s,"VEHICLESTOP"s,"SLEEPER"s,"HALF_SET_OF_BLADES"s,"SPEEDREGULATOR"s,"DERAILER"s,"FROG"s,"IfcTransformerTypeEnum"s,"FREQUENCY"s,"INVERTER"s,"RECTIFIER"s,"VOLTAGE"s,"CHOPPER"s,"IfcTransitionCode"s,"DISCONTINUOUS"s,"CONTSAMEGRADIENT"s,"CONTSAMEGRADIENTSAMECURVATURE"s,"IfcTranslationalStiffnessSelect"s,"IfcTransportElementFixedTypeEnum"s,"ELEVATOR"s,"ESCALATOR"s,"MOVINGWALKWAY"s,"CRANEWAY"s,"LIFTINGGEAR"s,"HAULINGGEAR"s,"IfcTransportElementNonFixedTypeEnum"s,"VEHICLE"s,"VEHICLETRACKED"s,"ROLLINGSTOCK"s,"VEHICLEWHEELED"s,"VEHICLEAIR"s,"CARGO"s,"VEHICLEMARINE"s,"IfcTransportElementTypeSelect"s,"IfcTrimmingPreference"s,"CARTESIAN"s,"IfcTubeBundleTypeEnum"s,"FINNED"s,"IfcURIReference"s,"IfcUnitEnum"s,"ABSORBEDDOSEUNIT"s,"AMOUNTOFSUBSTANCEUNIT"s,"AREAUNIT"s,"DOSEEQUIVALENTUNIT"s,"ELECTRICCAPACITANCEUNIT"s,"ELECTRICCHARGEUNIT"s,"ELECTRICCONDUCTANCEUNIT"s,"ELECTRICCURRENTUNIT"s,"ELECTRICRESISTANCEUNIT"s,"ELECTRICVOLTAGEUNIT"s,"ENERGYUNIT"s,"FORCEUNIT"s,"FREQUENCYUNIT"s,"ILLUMINANCEUNIT"s,"INDUCTANCEUNIT"s,"LENGTHUNIT"s,"LUMINOUSFLUXUNIT"s,"LUMINOUSINTENSITYUNIT"s,"MAGNETICFLUXDENSITYUNIT"s,"MAGNETICFLUXUNIT"s,"MASSUNIT"s,"PLANEANGLEUNIT"s,"POWERUNIT"s,"PRESSUREUNIT"s,"RADIOACTIVITYUNIT"s,"SOLIDANGLEUNIT"s,"THERMODYNAMICTEMPERATUREUNIT"s,"TIMEUNIT"s,"VOLUMEUNIT"s,"IfcUnitaryControlElementTypeEnum"s,"ALARMPANEL"s,"CONTROLPANEL"s,"GASDETECTIONPANEL"s,"INDICATORPANEL"s,"MIMICPANEL"s,"HUMIDISTAT"s,"THERMOSTAT"s,"WEATHERSTATION"s,"BASESTATIONCONTROLLER"s,"IfcUnitaryEquipmentTypeEnum"s,"AIRHANDLER"s,"AIRCONDITIONINGUNIT"s,"DEHUMIDIFIER"s,"SPLITSYSTEM"s,"ROOFTOPUNIT"s,"IfcValveTypeEnum"s,"AIRRELEASE"s,"ANTIVACUUM"s,"CHANGEOVER"s,"CHECK"s,"COMMISSIONING"s,"DIVERTING"s,"DRAWOFFCOCK"s,"DOUBLECHECK"s,"DOUBLEREGULATING"s,"FAUCET"s,"FLUSHING"s,"GASCOCK"s,"GASTAP"s,"ISOLATING"s,"MIXING"s,"PRESSUREREDUCING"s,"PRESSURERELIEF"s,"REGULATING"s,"SAFETYCUTOFF"s,"STEAMTRAP"s,"STOPCOCK"s,"IfcVaporPermeabilityMeasure"s,"IfcVibrationDamperTypeEnum"s,"BENDING_YIELD"s,"SHEAR_YIELD"s,"AXIAL_YIELD"s,"VISCOUS"s,"RUBBER"s,"IfcVibrationIsolatorTypeEnum"s,"COMPRESSION"s,"SPRING"s,"BASE"s,"IfcVoidingFeatureTypeEnum"s,"CUTOUT"s,"NOTCH"s,"HOLE"s,"MITER"s,"CHAMFER"s,"IfcVolumeMeasure"s,"IfcVolumetricFlowRateMeasure"s,"IfcWallTypeEnum"s,"MOVABLE"s,"PARAPET"s,"PARTITIONING"s,"PLUMBINGWALL"s,"SOLIDWALL"s,"STANDARD"s,"ELEMENTEDWALL"s,"RETAININGWALL"s,"WAVEWALL"s,"IfcWarpingConstantMeasure"s,"IfcWarpingMomentMeasure"s,"IfcWarpingStiffnessSelect"s,"IfcWasteTerminalTypeEnum"s,"FLOORTRAP"s,"FLOORWASTE"s,"GULLYSUMP"s,"GULLYTRAP"s,"ROOFDRAIN"s,"WASTEDISPOSALUNIT"s,"WASTETRAP"s,"IfcWindowPanelOperationEnum"s,"SIDEHUNGRIGHTHAND"s,"SIDEHUNGLEFTHAND"s,"TILTANDTURNRIGHTHAND"s,"TILTANDTURNLEFTHAND"s,"TOPHUNG"s,"BOTTOMHUNG"s,"PIVOTHORIZONTAL"s,"PIVOTVERTICAL"s,"SLIDINGHORIZONTAL"s,"SLIDINGVERTICAL"s,"REMOVABLECASEMENT"s,"FIXEDCASEMENT"s,"OTHEROPERATION"s,"IfcWindowPanelPositionEnum"s,"BOTTOM"s,"TOP"s,"IfcWindowStyleConstructionEnum"s,"OTHER_CONSTRUCTION"s,"IfcWindowStyleOperationEnum"s,"SINGLE_PANEL"s,"DOUBLE_PANEL_VERTICAL"s,"DOUBLE_PANEL_HORIZONTAL"s,"TRIPLE_PANEL_VERTICAL"s,"TRIPLE_PANEL_BOTTOM"s,"TRIPLE_PANEL_TOP"s,"TRIPLE_PANEL_LEFT"s,"TRIPLE_PANEL_RIGHT"s,"TRIPLE_PANEL_HORIZONTAL"s,"IfcWindowTypeEnum"s,"WINDOW"s,"SKYLIGHT"s,"LIGHTDOME"s,"IfcWindowTypePartitioningEnum"s,"IfcWorkCalendarTypeEnum"s,"FIRSTSHIFT"s,"SECONDSHIFT"s,"THIRDSHIFT"s,"IfcWorkPlanTypeEnum"s,"ACTUAL"s,"BASELINE"s,"PLANNED"s,"IfcWorkScheduleTypeEnum"s,"IfcActorRole"s,"IfcAddress"s,"IfcAlignmentParameterSegment"s,"IfcAlignmentVerticalSegment"s,"IfcApplication"s,"IfcAppliedValue"s,"IfcApproval"s,"IfcBoundaryCondition"s,"IfcBoundaryEdgeCondition"s,"IfcBoundaryFaceCondition"s,"IfcBoundaryNodeCondition"s,"IfcBoundaryNodeConditionWarping"s,"IfcConnectionGeometry"s,"IfcConnectionPointGeometry"s,"IfcConnectionSurfaceGeometry"s,"IfcConnectionVolumeGeometry"s,"IfcConstraint"s,"IfcCoordinateOperation"s,"IfcCoordinateReferenceSystem"s,"IfcCostValue"s,"IfcDerivedUnit"s,"IfcDerivedUnitElement"s,"IfcDimensionalExponents"s,"IfcExternalInformation"s,"IfcExternalReference"s,"IfcExternallyDefinedHatchStyle"s,"IfcExternallyDefinedSurfaceStyle"s,"IfcExternallyDefinedTextFont"s,"IfcGridAxis"s,"IfcIrregularTimeSeriesValue"s,"IfcLibraryInformation"s,"IfcLibraryReference"s,"IfcLightDistributionData"s,"IfcLightIntensityDistribution"s,"IfcMapConversion"s,"IfcMaterialClassificationRelationship"s,"IfcMaterialDefinition"s,"IfcMaterialLayer"s,"IfcMaterialLayerSet"s,"IfcMaterialLayerWithOffsets"s,"IfcMaterialList"s,"IfcMaterialProfile"s,"IfcMaterialProfileSet"s,"IfcMaterialProfileWithOffsets"s,"IfcMaterialUsageDefinition"s,"IfcMeasureWithUnit"s,"IfcMetric"s,"IfcMonetaryUnit"s,"IfcNamedUnit"s,"IfcObjectPlacement"s,"IfcObjective"s,"IfcOrganization"s,"IfcOwnerHistory"s,"IfcPerson"s,"IfcPersonAndOrganization"s,"IfcPhysicalQuantity"s,"IfcPhysicalSimpleQuantity"s,"IfcPostalAddress"s,"IfcPresentationItem"s,"IfcPresentationLayerAssignment"s,"IfcPresentationLayerWithStyle"s,"IfcPresentationStyle"s,"IfcProductRepresentation"s,"IfcProfileDef"s,"IfcProjectedCRS"s,"IfcPropertyAbstraction"s,"IfcPropertyEnumeration"s,"IfcQuantityArea"s,"IfcQuantityCount"s,"IfcQuantityLength"s,"IfcQuantityTime"s,"IfcQuantityVolume"s,"IfcQuantityWeight"s,"IfcRecurrencePattern"s,"IfcReference"s,"IfcRepresentation"s,"IfcRepresentationContext"s,"IfcRepresentationItem"s,"IfcRepresentationMap"s,"IfcResourceLevelRelationship"s,"IfcRoot"s,"IfcSIUnit"s,"IfcSchedulingTime"s,"IfcShapeAspect"s,"IfcShapeModel"s,"IfcShapeRepresentation"s,"IfcStructuralConnectionCondition"s,"IfcStructuralLoad"s,"IfcStructuralLoadConfiguration"s,"IfcStructuralLoadOrResult"s,"IfcStructuralLoadStatic"s,"IfcStructuralLoadTemperature"s,"IfcStyleModel"s,"IfcStyledItem"s,"IfcStyledRepresentation"s,"IfcSurfaceReinforcementArea"s,"IfcSurfaceStyle"s,"IfcSurfaceStyleLighting"s,"IfcSurfaceStyleRefraction"s,"IfcSurfaceStyleShading"s,"IfcSurfaceStyleWithTextures"s,"IfcSurfaceTexture"s,"IfcTable"s,"IfcTableColumn"s,"IfcTableRow"s,"IfcTaskTime"s,"IfcTaskTimeRecurring"s,"IfcTelecomAddress"s,"IfcTextStyle"s,"IfcTextStyleForDefinedFont"s,"IfcTextStyleTextModel"s,"IfcTextureCoordinate"s,"IfcTextureCoordinateGenerator"s,"IfcTextureMap"s,"IfcTextureVertex"s,"IfcTextureVertexList"s,"IfcTimePeriod"s,"IfcTimeSeries"s,"IfcTimeSeriesValue"s,"IfcTopologicalRepresentationItem"s,"IfcTopologyRepresentation"s,"IfcUnitAssignment"s,"IfcVertex"s,"IfcVertexPoint"s,"IfcVirtualGridIntersection"s,"IfcWorkTime"s,"IfcActorSelect"s,"IfcArcIndex"s,"IfcBendingParameterSelect"s,"IfcBoxAlignment"s,"IfcCurveMeasureSelect"s,"IfcDerivedMeasureValue"s,"IfcFacilityPartTypeSelect"s,"IfcImpactProtectionDeviceTypeSelect"s,"IfcLayeredItem"s,"IfcLibrarySelect"s,"IfcLightDistributionDataSourceSelect"s,"IfcLineIndex"s,"IfcMaterialSelect"s,"IfcNormalisedRatioMeasure"s,"IfcObjectReferenceSelect"s,"IfcPositiveRatioMeasure"s,"IfcSegmentIndexSelect"s,"IfcSimpleValue"s,"IfcSizeSelect"s,"IfcSpecularHighlightSelect"s,"IfcSurfaceStyleElementSelect"s,"IfcUnit"s,"IfcAlignmentCantSegment"s,"IfcAlignmentHorizontalSegment"s,"IfcApprovalRelationship"s,"IfcArbitraryClosedProfileDef"s,"IfcArbitraryOpenProfileDef"s,"IfcArbitraryProfileDefWithVoids"s,"IfcBlobTexture"s,"IfcCenterLineProfileDef"s,"IfcClassification"s,"IfcClassificationReference"s,"IfcColourRgbList"s,"IfcColourSpecification"s,"IfcCompositeProfileDef"s,"IfcConnectedFaceSet"s,"IfcConnectionCurveGeometry"s,"IfcConnectionPointEccentricity"s,"IfcContextDependentUnit"s,"IfcConversionBasedUnit"s,"IfcConversionBasedUnitWithOffset"s,"IfcCurrencyRelationship"s,"IfcCurveStyle"s,"IfcCurveStyleFont"s,"IfcCurveStyleFontAndScaling"s,"IfcCurveStyleFontPattern"s,"IfcDerivedProfileDef"s,"IfcDocumentInformation"s,"IfcDocumentInformationRelationship"s,"IfcDocumentReference"s,"IfcEdge"s,"IfcEdgeCurve"s,"IfcEventTime"s,"IfcExtendedProperties"s,"IfcExternalReferenceRelationship"s,"IfcFace"s,"IfcFaceBound"s,"IfcFaceOuterBound"s,"IfcFaceSurface"s,"IfcFailureConnectionCondition"s,"IfcFillAreaStyle"s,"IfcGeometricRepresentationContext"s,"IfcGeometricRepresentationItem"s,"IfcGeometricRepresentationSubContext"s,"IfcGeometricSet"s,"IfcGridPlacement"s,"IfcHalfSpaceSolid"s,"IfcImageTexture"s,"IfcIndexedColourMap"s,"IfcIndexedTextureMap"s,"IfcIndexedTriangleTextureMap"s,"IfcIrregularTimeSeries"s,"IfcLagTime"s,"IfcLightSource"s,"IfcLightSourceAmbient"s,"IfcLightSourceDirectional"s,"IfcLightSourceGoniometric"s,"IfcLightSourcePositional"s,"IfcLightSourceSpot"s,"IfcLinearPlacement"s,"IfcLocalPlacement"s,"IfcLoop"s,"IfcMappedItem"s,"IfcMaterial"s,"IfcMaterialConstituent"s,"IfcMaterialConstituentSet"s,"IfcMaterialDefinitionRepresentation"s,"IfcMaterialLayerSetUsage"s,"IfcMaterialProfileSetUsage"s,"IfcMaterialProfileSetUsageTapering"s,"IfcMaterialProperties"s,"IfcMaterialRelationship"s,"IfcMirroredProfileDef"s,"IfcObjectDefinition"s,"IfcOpenCrossProfileDef"s,"IfcOpenShell"s,"IfcOrganizationRelationship"s,"IfcOrientedEdge"s,"IfcParameterizedProfileDef"s,"IfcPath"s,"IfcPhysicalComplexQuantity"s,"IfcPixelTexture"s,"IfcPlacement"s,"IfcPlanarExtent"s,"IfcPoint"s,"IfcPointByDistanceExpression"s,"IfcPointOnCurve"s,"IfcPointOnSurface"s,"IfcPolyLoop"s,"IfcPolygonalBoundedHalfSpace"s,"IfcPreDefinedItem"s,"IfcPreDefinedProperties"s,"IfcPreDefinedTextFont"s,"IfcProductDefinitionShape"s,"IfcProfileProperties"s,"IfcProperty"s,"IfcPropertyDefinition"s,"IfcPropertyDependencyRelationship"s,"IfcPropertySetDefinition"s,"IfcPropertyTemplateDefinition"s,"IfcQuantitySet"s,"IfcRectangleProfileDef"s,"IfcRegularTimeSeries"s,"IfcReinforcementBarProperties"s,"IfcRelationship"s,"IfcResourceApprovalRelationship"s,"IfcResourceConstraintRelationship"s,"IfcResourceTime"s,"IfcRoundedRectangleProfileDef"s,"IfcSectionProperties"s,"IfcSectionReinforcementProperties"s,"IfcSectionedSpine"s,"IfcSegment"s,"IfcShellBasedSurfaceModel"s,"IfcSimpleProperty"s,"IfcSlippageConnectionCondition"s,"IfcSolidModel"s,"IfcStructuralLoadLinearForce"s,"IfcStructuralLoadPlanarForce"s,"IfcStructuralLoadSingleDisplacement"s,"IfcStructuralLoadSingleDisplacementDistortion"s,"IfcStructuralLoadSingleForce"s,"IfcStructuralLoadSingleForceWarping"s,"IfcSubedge"s,"IfcSurface"s,"IfcSurfaceStyleRendering"s,"IfcSweptAreaSolid"s,"IfcSweptDiskSolid"s,"IfcSweptDiskSolidPolygonal"s,"IfcSweptSurface"s,"IfcTShapeProfileDef"s,"IfcTessellatedItem"s,"IfcTextLiteral"s,"IfcTextLiteralWithExtent"s,"IfcTextStyleFontModel"s,"IfcTrapeziumProfileDef"s,"IfcTypeObject"s,"IfcTypeProcess"s,"IfcTypeProduct"s,"IfcTypeResource"s,"IfcUShapeProfileDef"s,"IfcVector"s,"IfcVertexLoop"s,"IfcWindowStyle"s,"IfcZShapeProfileDef"s,"IfcClassificationReferenceSelect"s,"IfcClassificationSelect"s,"IfcCoordinateReferenceSystemSelect"s,"IfcDefinitionSelect"s,"IfcDocumentSelect"s,"IfcHatchLineDistanceSelect"s,"IfcMeasureValue"s,"IfcPointOrVertexPoint"s,"IfcProductRepresentationSelect"s,"IfcPropertySetDefinitionSet"s,"IfcResourceObjectSelect"s,"IfcTextFontSelect"s,"IfcValue"s,"IfcAdvancedFace"s,"IfcAnnotationFillArea"s,"IfcAsymmetricIShapeProfileDef"s,"IfcAxis1Placement"s,"IfcAxis2Placement2D"s,"IfcAxis2Placement3D"s,"IfcAxis2PlacementLinear"s,"IfcBooleanResult"s,"IfcBoundedSurface"s,"IfcBoundingBox"s,"IfcBoxedHalfSpace"s,"IfcCShapeProfileDef"s,"IfcCartesianPoint"s,"IfcCartesianPointList"s,"IfcCartesianPointList2D"s,"IfcCartesianPointList3D"s,"IfcCartesianTransformationOperator"s,"IfcCartesianTransformationOperator2D"s,"IfcCartesianTransformationOperator2DnonUniform"s,"IfcCartesianTransformationOperator3D"s,"IfcCartesianTransformationOperator3DnonUniform"s,"IfcCircleProfileDef"s,"IfcClosedShell"s,"IfcColourRgb"s,"IfcComplexProperty"s,"IfcCompositeCurveSegment"s,"IfcConstructionResourceType"s,"IfcContext"s,"IfcCrewResourceType"s,"IfcCsgPrimitive3D"s,"IfcCsgSolid"s,"IfcCurve"s,"IfcCurveBoundedPlane"s,"IfcCurveBoundedSurface"s,"IfcCurveSegment"s,"IfcDirection"s,"IfcDirectrixCurveSweptAreaSolid"s,"IfcDoorStyle"s,"IfcEdgeLoop"s,"IfcElementQuantity"s,"IfcElementType"s,"IfcElementarySurface"s,"IfcEllipseProfileDef"s,"IfcEventType"s,"IfcExtrudedAreaSolid"s,"IfcExtrudedAreaSolidTapered"s,"IfcFaceBasedSurfaceModel"s,"IfcFillAreaStyleHatching"s,"IfcFillAreaStyleTiles"s,"IfcFixedReferenceSweptAreaSolid"s,"IfcFurnishingElementType"s,"IfcFurnitureType"s,"IfcGeographicElementType"s,"IfcGeometricCurveSet"s,"IfcIShapeProfileDef"s,"IfcIndexedPolygonalFace"s,"IfcIndexedPolygonalFaceWithVoids"s,"IfcLShapeProfileDef"s,"IfcLaborResourceType"s,"IfcLine"s,"IfcManifoldSolidBrep"s,"IfcObject"s,"IfcOffsetCurve"s,"IfcOffsetCurve2D"s,"IfcOffsetCurve3D"s,"IfcOffsetCurveByDistances"s,"IfcPcurve"s,"IfcPlanarBox"s,"IfcPlane"s,"IfcPolynomialCurve"s,"IfcPreDefinedColour"s,"IfcPreDefinedCurveFont"s,"IfcPreDefinedPropertySet"s,"IfcProcedureType"s,"IfcProcess"s,"IfcProduct"s,"IfcProject"s,"IfcProjectLibrary"s,"IfcPropertyBoundedValue"s,"IfcPropertyEnumeratedValue"s,"IfcPropertyListValue"s,"IfcPropertyReferenceValue"s,"IfcPropertySet"s,"IfcPropertySetTemplate"s,"IfcPropertySingleValue"s,"IfcPropertyTableValue"s,"IfcPropertyTemplate"s,"IfcProxy"s,"IfcRectangleHollowProfileDef"s,"IfcRectangularPyramid"s,"IfcRectangularTrimmedSurface"s,"IfcReinforcementDefinitionProperties"s,"IfcRelAssigns"s,"IfcRelAssignsToActor"s,"IfcRelAssignsToControl"s,"IfcRelAssignsToGroup"s,"IfcRelAssignsToGroupByFactor"s,"IfcRelAssignsToProcess"s,"IfcRelAssignsToProduct"s,"IfcRelAssignsToResource"s,"IfcRelAssociates"s,"IfcRelAssociatesApproval"s,"IfcRelAssociatesClassification"s,"IfcRelAssociatesConstraint"s,"IfcRelAssociatesDocument"s,"IfcRelAssociatesLibrary"s,"IfcRelAssociatesMaterial"s,"IfcRelAssociatesProfileDef"s,"IfcRelConnects"s,"IfcRelConnectsElements"s,"IfcRelConnectsPathElements"s,"IfcRelConnectsPortToElement"s,"IfcRelConnectsPorts"s,"IfcRelConnectsStructuralActivity"s,"IfcRelConnectsStructuralMember"s,"IfcRelConnectsWithEccentricity"s,"IfcRelConnectsWithRealizingElements"s,"IfcRelContainedInSpatialStructure"s,"IfcRelCoversBldgElements"s,"IfcRelCoversSpaces"s,"IfcRelDeclares"s,"IfcRelDecomposes"s,"IfcRelDefines"s,"IfcRelDefinesByObject"s,"IfcRelDefinesByProperties"s,"IfcRelDefinesByTemplate"s,"IfcRelDefinesByType"s,"IfcRelFillsElement"s,"IfcRelFlowControlElements"s,"IfcRelInterferesElements"s,"IfcRelNests"s,"IfcRelPositions"s,"IfcRelProjectsElement"s,"IfcRelReferencedInSpatialStructure"s,"IfcRelSequence"s,"IfcRelServicesBuildings"s,"IfcRelSpaceBoundary"s,"IfcRelSpaceBoundary1stLevel"s,"IfcRelSpaceBoundary2ndLevel"s,"IfcRelVoidsElement"s,"IfcReparametrisedCompositeCurveSegment"s,"IfcResource"s,"IfcRevolvedAreaSolid"s,"IfcRevolvedAreaSolidTapered"s,"IfcRightCircularCone"s,"IfcRightCircularCylinder"s,"IfcSectionedSolid"s,"IfcSectionedSolidHorizontal"s,"IfcSectionedSurface"s,"IfcSimplePropertyTemplate"s,"IfcSpatialElement"s,"IfcSpatialElementType"s,"IfcSpatialStructureElement"s,"IfcSpatialStructureElementType"s,"IfcSpatialZone"s,"IfcSpatialZoneType"s,"IfcSphere"s,"IfcSphericalSurface"s,"IfcSpiral"s,"IfcStructuralActivity"s,"IfcStructuralItem"s,"IfcStructuralMember"s,"IfcStructuralReaction"s,"IfcStructuralSurfaceMember"s,"IfcStructuralSurfaceMemberVarying"s,"IfcStructuralSurfaceReaction"s,"IfcSubContractResourceType"s,"IfcSurfaceCurve"s,"IfcSurfaceCurveSweptAreaSolid"s,"IfcSurfaceOfLinearExtrusion"s,"IfcSurfaceOfRevolution"s,"IfcSystemFurnitureElementType"s,"IfcTask"s,"IfcTaskType"s,"IfcTessellatedFaceSet"s,"IfcThirdOrderPolynomialSpiral"s,"IfcToroidalSurface"s,"IfcTransportElementType"s,"IfcTriangulatedFaceSet"s,"IfcTriangulatedIrregularNetwork"s,"IfcWindowLiningProperties"s,"IfcWindowPanelProperties"s,"IfcAppliedValueSelect"s,"IfcAxis2Placement"s,"IfcBooleanOperand"s,"IfcColour"s,"IfcColourOrFactor"s,"IfcCsgSelect"s,"IfcCurveStyleFontSelect"s,"IfcFillStyleSelect"s,"IfcGeometricSetSelect"s,"IfcGridPlacementDirectionSelect"s,"IfcMetricValueSelect"s,"IfcProcessSelect"s,"IfcProductSelect"s,"IfcPropertySetDefinitionSelect"s,"IfcResourceSelect"s,"IfcShell"s,"IfcSolidOrShell"s,"IfcSurfaceOrFaceSurface"s,"IfcTrimmingSelect"s,"IfcVectorOrDirection"s,"IfcActor"s,"IfcAdvancedBrep"s,"IfcAdvancedBrepWithVoids"s,"IfcAnnotation"s,"IfcBSplineSurface"s,"IfcBSplineSurfaceWithKnots"s,"IfcBlock"s,"IfcBooleanClippingResult"s,"IfcBoundedCurve"s,"IfcBuildingStorey"s,"IfcBuiltElementType"s,"IfcChimneyType"s,"IfcCircleHollowProfileDef"s,"IfcCivilElementType"s,"IfcClothoid"s,"IfcColumnType"s,"IfcComplexPropertyTemplate"s,"IfcCompositeCurve"s,"IfcCompositeCurveOnSurface"s,"IfcConic"s,"IfcConstructionEquipmentResourceType"s,"IfcConstructionMaterialResourceType"s,"IfcConstructionProductResourceType"s,"IfcConstructionResource"s,"IfcControl"s,"IfcCosine"s,"IfcCostItem"s,"IfcCostSchedule"s,"IfcCourseType"s,"IfcCoveringType"s,"IfcCrewResource"s,"IfcCurtainWallType"s,"IfcCylindricalSurface"s,"IfcDeepFoundationType"s,"IfcDirectrixDerivedReferenceSweptAreaSolid"s,"IfcDistributionElementType"s,"IfcDistributionFlowElementType"s,"IfcDoorLiningProperties"s,"IfcDoorPanelProperties"s,"IfcDoorType"s,"IfcDraughtingPreDefinedColour"s,"IfcDraughtingPreDefinedCurveFont"s,"IfcElement"s,"IfcElementAssembly"s,"IfcElementAssemblyType"s,"IfcElementComponent"s,"IfcElementComponentType"s,"IfcEllipse"s,"IfcEnergyConversionDeviceType"s,"IfcEngineType"s,"IfcEvaporativeCoolerType"s,"IfcEvaporatorType"s,"IfcEvent"s,"IfcExternalSpatialStructureElement"s,"IfcFacetedBrep"s,"IfcFacetedBrepWithVoids"s,"IfcFacility"s,"IfcFacilityPart"s,"IfcFastener"s,"IfcFastenerType"s,"IfcFeatureElement"s,"IfcFeatureElementAddition"s,"IfcFeatureElementSubtraction"s,"IfcFlowControllerType"s,"IfcFlowFittingType"s,"IfcFlowMeterType"s,"IfcFlowMovingDeviceType"s,"IfcFlowSegmentType"s,"IfcFlowStorageDeviceType"s,"IfcFlowTerminalType"s,"IfcFlowTreatmentDeviceType"s,"IfcFootingType"s,"IfcFurnishingElement"s,"IfcFurniture"s,"IfcGeographicElement"s,"IfcGeotechnicalElement"s,"IfcGeotechnicalStratum"s,"IfcGradientCurve"s,"IfcGroup"s,"IfcHeatExchangerType"s,"IfcHumidifierType"s,"IfcImpactProtectionDevice"s,"IfcImpactProtectionDeviceType"s,"IfcIndexedPolyCurve"s,"IfcInterceptorType"s,"IfcIntersectionCurve"s,"IfcInventory"s,"IfcJunctionBoxType"s,"IfcKerbType"s,"IfcLaborResource"s,"IfcLampType"s,"IfcLightFixtureType"s,"IfcLinearElement"s,"IfcLiquidTerminalType"s,"IfcMarineFacility"s,"IfcMechanicalFastener"s,"IfcMechanicalFastenerType"s,"IfcMedicalDeviceType"s,"IfcMemberType"s,"IfcMobileTelecommunicationsApplianceType"s,"IfcMooringDeviceType"s,"IfcMotorConnectionType"s,"IfcNavigationElementType"s,"IfcOccupant"s,"IfcOpeningElement"s,"IfcOpeningStandardCase"s,"IfcOutletType"s,"IfcPavementType"s,"IfcPerformanceHistory"s,"IfcPermeableCoveringProperties"s,"IfcPermit"s,"IfcPileType"s,"IfcPipeFittingType"s,"IfcPipeSegmentType"s,"IfcPlant"s,"IfcPlateType"s,"IfcPolygonalFaceSet"s,"IfcPolyline"s,"IfcPort"s,"IfcPositioningElement"s,"IfcProcedure"s,"IfcProjectOrder"s,"IfcProjectionElement"s,"IfcProtectiveDeviceType"s,"IfcPumpType"s,"IfcRailType"s,"IfcRailingType"s,"IfcRailway"s,"IfcRampFlightType"s,"IfcRampType"s,"IfcRationalBSplineSurfaceWithKnots"s,"IfcReferent"s,"IfcReinforcingElement"s,"IfcReinforcingElementType"s,"IfcReinforcingMesh"s,"IfcReinforcingMeshType"s,"IfcRelAdheresToElement"s,"IfcRelAggregates"s,"IfcRoad"s,"IfcRoofType"s,"IfcSanitaryTerminalType"s,"IfcSeamCurve"s,"IfcSecondOrderPolynomialSpiral"s,"IfcSegmentedReferenceCurve"s,"IfcSeventhOrderPolynomialSpiral"s,"IfcShadingDeviceType"s,"IfcSign"s,"IfcSignType"s,"IfcSignalType"s,"IfcSine"s,"IfcSite"s,"IfcSlabType"s,"IfcSolarDeviceType"s,"IfcSolidStratum"s,"IfcSpace"s,"IfcSpaceHeaterType"s,"IfcSpaceType"s,"IfcStackTerminalType"s,"IfcStairFlightType"s,"IfcStairType"s,"IfcStructuralAction"s,"IfcStructuralConnection"s,"IfcStructuralCurveAction"s,"IfcStructuralCurveConnection"s,"IfcStructuralCurveMember"s,"IfcStructuralCurveMemberVarying"s,"IfcStructuralCurveReaction"s,"IfcStructuralLinearAction"s,"IfcStructuralLoadGroup"s,"IfcStructuralPointAction"s,"IfcStructuralPointConnection"s,"IfcStructuralPointReaction"s,"IfcStructuralResultGroup"s,"IfcStructuralSurfaceAction"s,"IfcStructuralSurfaceConnection"s,"IfcSubContractResource"s,"IfcSurfaceFeature"s,"IfcSwitchingDeviceType"s,"IfcSystem"s,"IfcSystemFurnitureElement"s,"IfcTankType"s,"IfcTendon"s,"IfcTendonAnchor"s,"IfcTendonAnchorType"s,"IfcTendonConduit"s,"IfcTendonConduitType"s,"IfcTendonType"s,"IfcTrackElementType"s,"IfcTransformerType"s,"IfcTransportElement"s,"IfcTrimmedCurve"s,"IfcTubeBundleType"s,"IfcUnitaryEquipmentType"s,"IfcValveType"s,"IfcVibrationDamper"s,"IfcVibrationDamperType"s,"IfcVibrationIsolator"s,"IfcVibrationIsolatorType"s,"IfcVirtualElement"s,"IfcVoidStratum"s,"IfcVoidingFeature"s,"IfcWallType"s,"IfcWasteTerminalType"s,"IfcWaterStratum"s,"IfcWindowType"s,"IfcWorkCalendar"s,"IfcWorkControl"s,"IfcWorkPlan"s,"IfcWorkSchedule"s,"IfcZone"s,"IfcCurveFontOrScaledCurveFontSelect"s,"IfcCurveOnSurface"s,"IfcCurveOrEdgeCurve"s,"IfcInterferenceSelect"s,"IfcSpatialReferenceSelect"s,"IfcStructuralActivityAssignmentSelect"s,"IfcActionRequest"s,"IfcAirTerminalBoxType"s,"IfcAirTerminalType"s,"IfcAirToAirHeatRecoveryType"s,"IfcAlignmentCant"s,"IfcAlignmentHorizontal"s,"IfcAlignmentSegment"s,"IfcAlignmentVertical"s,"IfcAsset"s,"IfcAudioVisualApplianceType"s,"IfcBSplineCurve"s,"IfcBSplineCurveWithKnots"s,"IfcBeamType"s,"IfcBearingType"s,"IfcBoilerType"s,"IfcBoundaryCurve"s,"IfcBridge"s,"IfcBuilding"s,"IfcBuildingElementPart"s,"IfcBuildingElementPartType"s,"IfcBuildingElementProxyType"s,"IfcBuildingSystem"s,"IfcBuiltElement"s,"IfcBuiltSystem"s,"IfcBurnerType"s,"IfcCableCarrierFittingType"s,"IfcCableCarrierSegmentType"s,"IfcCableFittingType"s,"IfcCableSegmentType"s,"IfcCaissonFoundationType"s,"IfcChillerType"s,"IfcChimney"s,"IfcCircle"s,"IfcCivilElement"s,"IfcCoilType"s,"IfcColumn"s,"IfcColumnStandardCase"s,"IfcCommunicationsApplianceType"s,"IfcCompressorType"s,"IfcCondenserType"s,"IfcConstructionEquipmentResource"s,"IfcConstructionMaterialResource"s,"IfcConstructionProductResource"s,"IfcConveyorSegmentType"s,"IfcCooledBeamType"s,"IfcCoolingTowerType"s,"IfcCourse"s,"IfcCovering"s,"IfcCurtainWall"s,"IfcDamperType"s,"IfcDeepFoundation"s,"IfcDiscreteAccessory"s,"IfcDiscreteAccessoryType"s,"IfcDistributionBoardType"s,"IfcDistributionChamberElementType"s,"IfcDistributionControlElementType"s,"IfcDistributionElement"s,"IfcDistributionFlowElement"s,"IfcDistributionPort"s,"IfcDistributionSystem"s,"IfcDoor"s,"IfcDoorStandardCase"s,"IfcDuctFittingType"s,"IfcDuctSegmentType"s,"IfcDuctSilencerType"s,"IfcEarthworksCut"s,"IfcEarthworksElement"s,"IfcEarthworksFill"s,"IfcElectricApplianceType"s,"IfcElectricDistributionBoardType"s,"IfcElectricFlowStorageDeviceType"s,"IfcElectricFlowTreatmentDeviceType"s,"IfcElectricGeneratorType"s,"IfcElectricMotorType"s,"IfcElectricTimeControlType"s,"IfcEnergyConversionDevice"s,"IfcEngine"s,"IfcEvaporativeCooler"s,"IfcEvaporator"s,"IfcExternalSpatialElement"s,"IfcFanType"s,"IfcFilterType"s,"IfcFireSuppressionTerminalType"s,"IfcFlowController"s,"IfcFlowFitting"s,"IfcFlowInstrumentType"s,"IfcFlowMeter"s,"IfcFlowMovingDevice"s,"IfcFlowSegment"s,"IfcFlowStorageDevice"s,"IfcFlowTerminal"s,"IfcFlowTreatmentDevice"s,"IfcFooting"s,"IfcGeotechnicalAssembly"s,"IfcGrid"s,"IfcHeatExchanger"s,"IfcHumidifier"s,"IfcInterceptor"s,"IfcJunctionBox"s,"IfcKerb"s,"IfcLamp"s,"IfcLightFixture"s,"IfcLinearPositioningElement"s,"IfcLiquidTerminal"s,"IfcMedicalDevice"s,"IfcMember"s,"IfcMemberStandardCase"s,"IfcMobileTelecommunicationsAppliance"s,"IfcMooringDevice"s,"IfcMotorConnection"s,"IfcNavigationElement"s,"IfcOuterBoundaryCurve"s,"IfcOutlet"s,"IfcPavement"s,"IfcPile"s,"IfcPipeFitting"s,"IfcPipeSegment"s,"IfcPlate"s,"IfcPlateStandardCase"s,"IfcProtectiveDevice"s,"IfcProtectiveDeviceTrippingUnitType"s,"IfcPump"s,"IfcRail"s,"IfcRailing"s,"IfcRamp"s,"IfcRampFlight"s,"IfcRationalBSplineCurveWithKnots"s,"IfcReinforcedSoil"s,"IfcReinforcingBar"s,"IfcReinforcingBarType"s,"IfcRoof"s,"IfcSanitaryTerminal"s,"IfcSensorType"s,"IfcShadingDevice"s,"IfcSignal"s,"IfcSlab"s,"IfcSlabElementedCase"s,"IfcSlabStandardCase"s,"IfcSolarDevice"s,"IfcSpaceHeater"s,"IfcStackTerminal"s,"IfcStair"s,"IfcStairFlight"s,"IfcStructuralAnalysisModel"s,"IfcStructuralLoadCase"s,"IfcStructuralPlanarAction"s,"IfcSwitchingDevice"s,"IfcTank"s,"IfcTrackElement"s,"IfcTransformer"s,"IfcTubeBundle"s,"IfcUnitaryControlElementType"s,"IfcUnitaryEquipment"s,"IfcValve"s,"IfcWall"s,"IfcWallElementedCase"s,"IfcWallStandardCase"s,"IfcWasteTerminal"s,"IfcWindow"s,"IfcWindowStandardCase"s,"IfcSpaceBoundarySelect"s,"IfcActuatorType"s,"IfcAirTerminal"s,"IfcAirTerminalBox"s,"IfcAirToAirHeatRecovery"s,"IfcAlarmType"s,"IfcAlignment"s,"IfcAudioVisualAppliance"s,"IfcBeam"s,"IfcBeamStandardCase"s,"IfcBearing"s,"IfcBoiler"s,"IfcBorehole"s,"IfcBuildingElementProxy"s,"IfcBurner"s,"IfcCableCarrierFitting"s,"IfcCableCarrierSegment"s,"IfcCableFitting"s,"IfcCableSegment"s,"IfcCaissonFoundation"s,"IfcChiller"s,"IfcCoil"s,"IfcCommunicationsAppliance"s,"IfcCompressor"s,"IfcCondenser"s,"IfcControllerType"s,"IfcConveyorSegment"s,"IfcCooledBeam"s,"IfcCoolingTower"s,"IfcDamper"s,"IfcDistributionBoard"s,"IfcDistributionChamberElement"s,"IfcDistributionCircuit"s,"IfcDistributionControlElement"s,"IfcDuctFitting"s,"IfcDuctSegment"s,"IfcDuctSilencer"s,"IfcElectricAppliance"s,"IfcElectricDistributionBoard"s,"IfcElectricFlowStorageDevice"s,"IfcElectricFlowTreatmentDevice"s,"IfcElectricGenerator"s,"IfcElectricMotor"s,"IfcElectricTimeControl"s,"IfcFan"s,"IfcFilter"s,"IfcFireSuppressionTerminal"s,"IfcFlowInstrument"s,"IfcGeomodel"s,"IfcGeoslice"s,"IfcProtectiveDeviceTrippingUnit"s,"IfcSensor"s,"IfcUnitaryControlElement"s,"IfcActuator"s,"IfcAlarm"s,"IfcController"s,"PredefinedType"s,"Status"s,"LongDescription"s,"TheActor"s,"Role"s,"UserDefinedRole"s,"Description"s,"Purpose"s,"UserDefinedPurpose"s,"Voids"s,"RailHeadDistance"s,"StartDistAlong"s,"HorizontalLength"s,"StartCantLeft"s,"EndCantLeft"s,"StartCantRight"s,"EndCantRight"s,"StartPoint"s,"StartDirection"s,"StartRadiusOfCurvature"s,"EndRadiusOfCurvature"s,"SegmentLength"s,"GravityCenterLineHeight"s,"StartTag"s,"EndTag"s,"DesignParameters"s,"StartHeight"s,"StartGradient"s,"EndGradient"s,"RadiusOfCurvature"s,"OuterBoundary"s,"InnerBoundaries"s,"ApplicationDeveloper"s,"Version"s,"ApplicationFullName"s,"ApplicationIdentifier"s,"Name"s,"AppliedValue"s,"UnitBasis"s,"ApplicableDate"s,"FixedUntilDate"s,"Category"s,"Condition"s,"ArithmeticOperator"s,"Components"s,"Identifier"s,"TimeOfApproval"s,"Level"s,"Qualifier"s,"RequestingApproval"s,"GivingApproval"s,"RelatingApproval"s,"RelatedApprovals"s,"OuterCurve"s,"Curve"s,"InnerCurves"s,"Identification"s,"OriginalValue"s,"CurrentValue"s,"TotalReplacementCost"s,"Owner"s,"User"s,"ResponsiblePerson"s,"IncorporationDate"s,"DepreciatedValue"s,"BottomFlangeWidth"s,"OverallDepth"s,"WebThickness"s,"BottomFlangeThickness"s,"BottomFlangeFilletRadius"s,"TopFlangeWidth"s,"TopFlangeThickness"s,"TopFlangeFilletRadius"s,"BottomFlangeEdgeRadius"s,"BottomFlangeSlope"s,"TopFlangeEdgeRadius"s,"TopFlangeSlope"s,"Axis"s,"RefDirection"s,"Degree"s,"ControlPointsList"s,"CurveForm"s,"ClosedCurve"s,"SelfIntersect"s,"KnotMultiplicities"s,"Knots"s,"KnotSpec"s,"UDegree"s,"VDegree"s,"SurfaceForm"s,"UClosed"s,"VClosed"s,"UMultiplicities"s,"VMultiplicities"s,"UKnots"s,"VKnots"s,"RasterFormat"s,"RasterCode"s,"XLength"s,"YLength"s,"ZLength"s,"Operator"s,"FirstOperand"s,"SecondOperand"s,"TranslationalStiffnessByLengthX"s,"TranslationalStiffnessByLengthY"s,"TranslationalStiffnessByLengthZ"s,"RotationalStiffnessByLengthX"s,"RotationalStiffnessByLengthY"s,"RotationalStiffnessByLengthZ"s,"TranslationalStiffnessByAreaX"s,"TranslationalStiffnessByAreaY"s,"TranslationalStiffnessByAreaZ"s,"TranslationalStiffnessX"s,"TranslationalStiffnessY"s,"TranslationalStiffnessZ"s,"RotationalStiffnessX"s,"RotationalStiffnessY"s,"RotationalStiffnessZ"s,"WarpingStiffness"s,"Corner"s,"XDim"s,"YDim"s,"ZDim"s,"Enclosure"s,"ElevationOfRefHeight"s,"ElevationOfTerrain"s,"BuildingAddress"s,"Elevation"s,"LongName"s,"Depth"s,"Width"s,"WallThickness"s,"Girth"s,"InternalFilletRadius"s,"Coordinates"s,"CoordList"s,"TagList"s,"Axis1"s,"Axis2"s,"LocalOrigin"s,"Scale"s,"Scale2"s,"Axis3"s,"Scale3"s,"Thickness"s,"Radius"s,"Source"s,"Edition"s,"EditionDate"s,"Location"s,"ReferenceTokens"s,"ReferencedSource"s,"Sort"s,"ClothoidConstant"s,"Red"s,"Green"s,"Blue"s,"ColourList"s,"UsageName"s,"HasProperties"s,"TemplateType"s,"HasPropertyTemplates"s,"Segments"s,"SameSense"s,"ParentCurve"s,"Profiles"s,"Label"s,"Position"s,"CfsFaces"s,"CurveOnRelatingElement"s,"CurveOnRelatedElement"s,"EccentricityInX"s,"EccentricityInY"s,"EccentricityInZ"s,"PointOnRelatingElement"s,"PointOnRelatedElement"s,"SurfaceOnRelatingElement"s,"SurfaceOnRelatedElement"s,"VolumeOnRelatingElement"s,"VolumeOnRelatedElement"s,"ConstraintGrade"s,"ConstraintSource"s,"CreatingActor"s,"CreationTime"s,"UserDefinedGrade"s,"Usage"s,"BaseCosts"s,"BaseQuantity"s,"ObjectType"s,"Phase"s,"RepresentationContexts"s,"UnitsInContext"s,"ConversionFactor"s,"ConversionOffset"s,"SourceCRS"s,"TargetCRS"s,"GeodeticDatum"s,"VerticalDatum"s,"CosineTerm"s,"ConstantTerm"s,"CostValues"s,"CostQuantities"s,"SubmittedOn"s,"UpdateDate"s,"TreeRootExpression"s,"RelatingMonetaryUnit"s,"RelatedMonetaryUnit"s,"ExchangeRate"s,"RateDateTime"s,"RateSource"s,"BasisSurface"s,"Boundaries"s,"ImplicitOuter"s,"Placement"s,"SegmentStart"s,"CurveFont"s,"CurveWidth"s,"CurveColour"s,"ModelOrDraughting"s,"PatternList"s,"CurveFontScaling"s,"VisibleSegmentLength"s,"InvisibleSegmentLength"s,"ParentProfile"s,"Elements"s,"UnitType"s,"UserDefinedType"s,"Unit"s,"Exponent"s,"LengthExponent"s,"MassExponent"s,"TimeExponent"s,"ElectricCurrentExponent"s,"ThermodynamicTemperatureExponent"s,"AmountOfSubstanceExponent"s,"LuminousIntensityExponent"s,"DirectionRatios"s,"Directrix"s,"StartParam"s,"EndParam"s,"FlowDirection"s,"SystemType"s,"IntendedUse"s,"Scope"s,"Revision"s,"DocumentOwner"s,"Editors"s,"LastRevisionTime"s,"ElectronicFormat"s,"ValidFrom"s,"ValidUntil"s,"Confidentiality"s,"RelatingDocument"s,"RelatedDocuments"s,"RelationshipType"s,"ReferencedDocument"s,"OverallHeight"s,"OverallWidth"s,"OperationType"s,"UserDefinedOperationType"s,"LiningDepth"s,"LiningThickness"s,"ThresholdDepth"s,"ThresholdThickness"s,"TransomThickness"s,"TransomOffset"s,"LiningOffset"s,"ThresholdOffset"s,"CasingThickness"s,"CasingDepth"s,"ShapeAspectStyle"s,"LiningToPanelOffsetX"s,"LiningToPanelOffsetY"s,"PanelDepth"s,"PanelOperation"s,"PanelWidth"s,"PanelPosition"s,"ConstructionType"s,"ParameterTakesPrecedence"s,"Sizeable"s,"EdgeStart"s,"EdgeEnd"s,"EdgeGeometry"s,"EdgeList"s,"Tag"s,"AssemblyPlace"s,"MethodOfMeasurement"s,"Quantities"s,"ElementType"s,"SemiAxis1"s,"SemiAxis2"s,"EventTriggerType"s,"UserDefinedEventTriggerType"s,"EventOccurenceTime"s,"ActualDate"s,"EarlyDate"s,"LateDate"s,"ScheduleDate"s,"Properties"s,"RelatingReference"s,"RelatedResourceObjects"s,"ExtrudedDirection"s,"EndSweptArea"s,"Bounds"s,"FbsmFaces"s,"Bound"s,"Orientation"s,"FaceSurface"s,"UsageType"s,"TensionFailureX"s,"TensionFailureY"s,"TensionFailureZ"s,"CompressionFailureX"s,"CompressionFailureY"s,"CompressionFailureZ"s,"FillStyles"s,"HatchLineAppearance"s,"StartOfNextHatchLine"s,"PointOfReferenceHatchLine"s,"PatternStart"s,"HatchLineAngle"s,"TilingPattern"s,"Tiles"s,"TilingScale"s,"FixedReference"s,"CoordinateSpaceDimension"s,"Precision"s,"WorldCoordinateSystem"s,"TrueNorth"s,"ParentContext"s,"TargetScale"s,"TargetView"s,"UserDefinedTargetView"s,"BaseCurve"s,"EndPoint"s,"UAxes"s,"VAxes"s,"WAxes"s,"AxisTag"s,"AxisCurve"s,"PlacementLocation"s,"PlacementRefDirection"s,"BaseSurface"s,"AgreementFlag"s,"FlangeThickness"s,"FilletRadius"s,"FlangeEdgeRadius"s,"FlangeSlope"s,"URLReference"s,"MappedTo"s,"Opacity"s,"Colours"s,"ColourIndex"s,"Points"s,"CoordIndex"s,"InnerCoordIndices"s,"TexCoords"s,"TexCoordIndex"s,"Jurisdiction"s,"ResponsiblePersons"s,"LastUpdateDate"s,"Values"s,"TimeStamp"s,"ListValues"s,"Mountable"s,"EdgeRadius"s,"LegSlope"s,"LagValue"s,"DurationType"s,"Publisher"s,"VersionDate"s,"Language"s,"ReferencedLibrary"s,"MainPlaneAngle"s,"SecondaryPlaneAngle"s,"LuminousIntensity"s,"LightDistributionCurve"s,"DistributionData"s,"LightColour"s,"AmbientIntensity"s,"Intensity"s,"ColourAppearance"s,"ColourTemperature"s,"LuminousFlux"s,"LightEmissionSource"s,"LightDistributionDataSource"s,"ConstantAttenuation"s,"DistanceAttenuation"s,"QuadricAttenuation"s,"ConcentrationExponent"s,"SpreadAngle"s,"BeamWidthAngle"s,"Pnt"s,"Dir"s,"RelativePlacement"s,"CartesianPosition"s,"Outer"s,"Eastings"s,"Northings"s,"OrthogonalHeight"s,"XAxisAbscissa"s,"XAxisOrdinate"s,"ScaleY"s,"ScaleZ"s,"MappingSource"s,"MappingTarget"s,"MaterialClassifications"s,"ClassifiedMaterial"s,"Material"s,"Fraction"s,"MaterialConstituents"s,"RepresentedMaterial"s,"LayerThickness"s,"IsVentilated"s,"Priority"s,"MaterialLayers"s,"LayerSetName"s,"ForLayerSet"s,"LayerSetDirection"s,"DirectionSense"s,"OffsetFromReferenceLine"s,"ReferenceExtent"s,"OffsetDirection"s,"OffsetValues"s,"Materials"s,"Profile"s,"MaterialProfiles"s,"CompositeProfile"s,"ForProfileSet"s,"CardinalPoint"s,"ForProfileEndSet"s,"CardinalEndPoint"s,"RelatingMaterial"s,"RelatedMaterials"s,"Expression"s,"ValueComponent"s,"UnitComponent"s,"NominalDiameter"s,"NominalLength"s,"Benchmark"s,"ValueSource"s,"DataValue"s,"ReferencePath"s,"Currency"s,"Dimensions"s,"PlacementRelTo"s,"BenchmarkValues"s,"LogicalAggregator"s,"ObjectiveQualifier"s,"UserDefinedQualifier"s,"BasisCurve"s,"Distance"s,"HorizontalWidths"s,"Widths"s,"Slopes"s,"Tags"s,"Roles"s,"Addresses"s,"RelatingOrganization"s,"RelatedOrganizations"s,"EdgeElement"s,"OwningUser"s,"OwningApplication"s,"State"s,"ChangeAction"s,"LastModifiedDate"s,"LastModifyingUser"s,"LastModifyingApplication"s,"CreationDate"s,"ReferenceCurve"s,"LifeCyclePhase"s,"FrameDepth"s,"FrameThickness"s,"FamilyName"s,"GivenName"s,"MiddleNames"s,"PrefixTitles"s,"SuffixTitles"s,"ThePerson"s,"TheOrganization"s,"HasQuantities"s,"Discrimination"s,"Quality"s,"Height"s,"ColourComponents"s,"Pixel"s,"SizeInX"s,"SizeInY"s,"DistanceAlong"s,"OffsetLateral"s,"OffsetVertical"s,"OffsetLongitudinal"s,"PointParameter"s,"PointParameterU"s,"PointParameterV"s,"Polygon"s,"PolygonalBoundary"s,"Closed"s,"Faces"s,"PnIndex"s,"CoefficientsX"s,"CoefficientsY"s,"CoefficientsZ"s,"InternalLocation"s,"AddressLines"s,"PostalBox"s,"Town"s,"Region"s,"PostalCode"s,"Country"s,"AssignedItems"s,"LayerOn"s,"LayerFrozen"s,"LayerBlocked"s,"LayerStyles"s,"ObjectPlacement"s,"Representation"s,"Representations"s,"ProfileType"s,"ProfileName"s,"ProfileDefinition"s,"MapProjection"s,"MapZone"s,"MapUnit"s,"UpperBoundValue"s,"LowerBoundValue"s,"SetPointValue"s,"DependingProperty"s,"DependantProperty"s,"EnumerationValues"s,"EnumerationReference"s,"PropertyReference"s,"ApplicableEntity"s,"NominalValue"s,"DefiningValues"s,"DefinedValues"s,"DefiningUnit"s,"DefinedUnit"s,"CurveInterpolation"s,"ProxyType"s,"AreaValue"s,"Formula"s,"CountValue"s,"LengthValue"s,"TimeValue"s,"VolumeValue"s,"WeightValue"s,"WeightsData"s,"InnerFilletRadius"s,"OuterFilletRadius"s,"U1"s,"V1"s,"U2"s,"V2"s,"Usense"s,"Vsense"s,"RecurrenceType"s,"DayComponent"s,"WeekdayComponent"s,"MonthComponent"s,"Interval"s,"Occurrences"s,"TimePeriods"s,"TypeIdentifier"s,"AttributeIdentifier"s,"InstanceName"s,"ListPositions"s,"InnerReference"s,"RestartDistance"s,"TimeStep"s,"TotalCrossSectionArea"s,"SteelGrade"s,"BarSurface"s,"EffectiveDepth"s,"NominalBarDiameter"s,"BarCount"s,"DefinitionType"s,"ReinforcementSectionDefinitions"s,"CrossSectionArea"s,"BarLength"s,"BendingShapeCode"s,"BendingParameters"s,"MeshLength"s,"MeshWidth"s,"LongitudinalBarNominalDiameter"s,"TransverseBarNominalDiameter"s,"LongitudinalBarCrossSectionArea"s,"TransverseBarCrossSectionArea"s,"LongitudinalBarSpacing"s,"TransverseBarSpacing"s,"RelatingElement"s,"RelatedSurfaceFeatures"s,"RelatingObject"s,"RelatedObjects"s,"RelatedObjectsType"s,"RelatingActor"s,"ActingRole"s,"RelatingControl"s,"RelatingGroup"s,"Factor"s,"RelatingProcess"s,"QuantityInProcess"s,"RelatingProduct"s,"RelatingResource"s,"RelatingClassification"s,"Intent"s,"RelatingConstraint"s,"RelatingLibrary"s,"RelatingProfileDef"s,"ConnectionGeometry"s,"RelatedElement"s,"RelatingPriorities"s,"RelatedPriorities"s,"RelatedConnectionType"s,"RelatingConnectionType"s,"RelatingPort"s,"RelatedPort"s,"RealizingElement"s,"RelatedStructuralActivity"s,"RelatingStructuralMember"s,"RelatedStructuralConnection"s,"AppliedCondition"s,"AdditionalConditions"s,"SupportedLength"s,"ConditionCoordinateSystem"s,"ConnectionConstraint"s,"RealizingElements"s,"ConnectionType"s,"RelatedElements"s,"RelatingStructure"s,"RelatingBuildingElement"s,"RelatedCoverings"s,"RelatingSpace"s,"RelatingContext"s,"RelatedDefinitions"s,"RelatingPropertyDefinition"s,"RelatedPropertySets"s,"RelatingTemplate"s,"RelatingType"s,"RelatingOpeningElement"s,"RelatedBuildingElement"s,"RelatedControlElements"s,"RelatingFlowElement"s,"InterferenceGeometry"s,"InterferenceSpace"s,"InterferenceType"s,"ImpliedOrder"s,"RelatingPositioningElement"s,"RelatedProducts"s,"RelatedFeatureElement"s,"RelatedProcess"s,"TimeLag"s,"SequenceType"s,"UserDefinedSequenceType"s,"RelatingSystem"s,"RelatedBuildings"s,"PhysicalOrVirtualBoundary"s,"InternalOrExternalBoundary"s,"ParentBoundary"s,"CorrespondingBoundary"s,"RelatedOpeningElement"s,"ParamLength"s,"ContextOfItems"s,"RepresentationIdentifier"s,"RepresentationType"s,"Items"s,"ContextIdentifier"s,"ContextType"s,"MappingOrigin"s,"MappedRepresentation"s,"ScheduleWork"s,"ScheduleUsage"s,"ScheduleStart"s,"ScheduleFinish"s,"ScheduleContour"s,"LevelingDelay"s,"IsOverAllocated"s,"StatusTime"s,"ActualWork"s,"ActualUsage"s,"ActualStart"s,"ActualFinish"s,"RemainingWork"s,"RemainingUsage"s,"Completion"s,"Angle"s,"BottomRadius"s,"GlobalId"s,"OwnerHistory"s,"RoundingRadius"s,"Prefix"s,"DataOrigin"s,"UserDefinedDataOrigin"s,"QuadraticTerm"s,"LinearTerm"s,"SectionType"s,"StartProfile"s,"EndProfile"s,"LongitudinalStartPosition"s,"LongitudinalEndPosition"s,"TransversePosition"s,"ReinforcementRole"s,"SectionDefinition"s,"CrossSectionReinforcementDefinitions"s,"CrossSections"s,"CrossSectionPositions"s,"FixedAxisVertical"s,"SpineCurve"s,"Transition"s,"SepticTerm"s,"SexticTerm"s,"QuinticTerm"s,"QuarticTerm"s,"CubicTerm"s,"ShapeRepresentations"s,"ProductDefinitional"s,"PartOfProductDefinitionShape"s,"SbsmBoundary"s,"PrimaryMeasureType"s,"SecondaryMeasureType"s,"Enumerators"s,"PrimaryUnit"s,"SecondaryUnit"s,"AccessState"s,"SineTerm"s,"RefLatitude"s,"RefLongitude"s,"RefElevation"s,"LandTitleNumber"s,"SiteAddress"s,"SlippageX"s,"SlippageY"s,"SlippageZ"s,"ElevationWithFlooring"s,"CompositionType"s,"NumberOfRisers"s,"NumberOfTreads"s,"RiserHeight"s,"TreadLength"s,"DestabilizingLoad"s,"AppliedLoad"s,"GlobalOrLocal"s,"OrientationOf2DPlane"s,"LoadedBy"s,"HasResults"s,"SharedPlacement"s,"ProjectedOrTrue"s,"SelfWeightCoefficients"s,"Locations"s,"ActionType"s,"ActionSource"s,"Coefficient"s,"LinearForceX"s,"LinearForceY"s,"LinearForceZ"s,"LinearMomentX"s,"LinearMomentY"s,"LinearMomentZ"s,"PlanarForceX"s,"PlanarForceY"s,"PlanarForceZ"s,"DisplacementX"s,"DisplacementY"s,"DisplacementZ"s,"RotationalDisplacementRX"s,"RotationalDisplacementRY"s,"RotationalDisplacementRZ"s,"Distortion"s,"ForceX"s,"ForceY"s,"ForceZ"s,"MomentX"s,"MomentY"s,"MomentZ"s,"WarpingMoment"s,"DeltaTConstant"s,"DeltaTY"s,"DeltaTZ"s,"TheoryType"s,"ResultForLoadGroup"s,"IsLinear"s,"Item"s,"Styles"s,"ParentEdge"s,"Curve3D"s,"AssociatedGeometry"s,"MasterRepresentation"s,"ReferenceSurface"s,"AxisPosition"s,"SurfaceReinforcement1"s,"SurfaceReinforcement2"s,"ShearReinforcement"s,"Side"s,"DiffuseTransmissionColour"s,"DiffuseReflectionColour"s,"TransmissionColour"s,"ReflectanceColour"s,"RefractionIndex"s,"DispersionFactor"s,"DiffuseColour"s,"ReflectionColour"s,"SpecularColour"s,"SpecularHighlight"s,"ReflectanceMethod"s,"SurfaceColour"s,"Transparency"s,"Textures"s,"RepeatS"s,"RepeatT"s,"Mode"s,"TextureTransform"s,"Parameter"s,"SweptArea"s,"InnerRadius"s,"SweptCurve"s,"FlangeWidth"s,"WebEdgeRadius"s,"WebSlope"s,"Rows"s,"Columns"s,"RowCells"s,"IsHeading"s,"WorkMethod"s,"IsMilestone"s,"TaskTime"s,"ScheduleDuration"s,"EarlyStart"s,"EarlyFinish"s,"LateStart"s,"LateFinish"s,"FreeFloat"s,"TotalFloat"s,"IsCritical"s,"ActualDuration"s,"RemainingTime"s,"Recurrence"s,"TelephoneNumbers"s,"FacsimileNumbers"s,"PagerNumber"s,"ElectronicMailAddresses"s,"WWWHomePageURL"s,"MessagingIDs"s,"TensionForce"s,"PreStress"s,"FrictionCoefficient"s,"AnchorageSlip"s,"MinCurvatureRadius"s,"SheathDiameter"s,"Literal"s,"Path"s,"Extent"s,"BoxAlignment"s,"TextCharacterAppearance"s,"TextStyle"s,"TextFontStyle"s,"FontFamily"s,"FontStyle"s,"FontVariant"s,"FontWeight"s,"FontSize"s,"Colour"s,"BackgroundColour"s,"TextIndent"s,"TextAlign"s,"TextDecoration"s,"LetterSpacing"s,"WordSpacing"s,"TextTransform"s,"LineHeight"s,"Maps"s,"Vertices"s,"TexCoordsList"s,"StartTime"s,"EndTime"s,"TimeSeriesDataType"s,"MajorRadius"s,"MinorRadius"s,"BottomXDim"s,"TopXDim"s,"TopXOffset"s,"Normals"s,"Flags"s,"Trim1"s,"Trim2"s,"SenseAgreement"s,"ApplicableOccurrence"s,"HasPropertySets"s,"ProcessType"s,"RepresentationMaps"s,"ResourceType"s,"Units"s,"Magnitude"s,"LoopVertex"s,"VertexGeometry"s,"IntersectingAxes"s,"OffsetDistances"s,"PartitioningType"s,"UserDefinedPartitioningType"s,"MullionThickness"s,"FirstTransomOffset"s,"SecondTransomOffset"s,"FirstMullionOffset"s,"SecondMullionOffset"s,"WorkingTimes"s,"ExceptionTimes"s,"Creators"s,"Duration"s,"FinishTime"s,"RecurrencePattern"s,"Start"s,"Finish"s,"IsActingUpon"s,"HasExternalReference"s,"OfPerson"s,"OfOrganization"s,"ContainedInStructure"s,"HasExternalReferences"s,"ApprovedObjects"s,"ApprovedResources"s,"IsRelatedWith"s,"Relates"s,"ClassificationForObjects"s,"HasReferences"s,"ClassificationRefForObjects"s,"PropertiesForConstraint"s,"IsDefinedBy"s,"Declares"s,"Controls"s,"HasCoordinateOperation"s,"CoversSpaces"s,"CoversElements"s,"AssignedToFlowElement"s,"HasPorts"s,"HasControlElements"s,"DocumentInfoForObjects"s,"HasDocumentReferences"s,"IsPointedTo"s,"IsPointer"s,"DocumentRefForObjects"s,"FillsVoids"s,"ConnectedTo"s,"IsInterferedByElements"s,"InterferesElements"s,"HasProjections"s,"HasOpenings"s,"IsConnectionRealization"s,"ProvidesBoundaries"s,"ConnectedFrom"s,"HasCoverings"s,"HasSurfaceFeatures"s,"ExternalReferenceForResources"s,"BoundedBy"s,"HasTextureMaps"s,"ProjectsElements"s,"VoidsElements"s,"HasSubContexts"s,"PartOfW"s,"PartOfV"s,"PartOfU"s,"HasIntersections"s,"IsGroupedBy"s,"ToFaceSet"s,"LibraryInfoForObjects"s,"HasLibraryReferences"s,"LibraryRefForObjects"s,"HasRepresentation"s,"RelatesTo"s,"ToMaterialConstituentSet"s,"AssociatedTo"s,"ToMaterialLayerSet"s,"ToMaterialProfileSet"s,"IsDeclaredBy"s,"IsTypedBy"s,"HasAssignments"s,"Nests"s,"IsNestedBy"s,"HasContext"s,"IsDecomposedBy"s,"Decomposes"s,"HasAssociations"s,"PlacesObject"s,"HasFillings"s,"IsRelatedBy"s,"Engages"s,"EngagedIn"s,"PartOfComplex"s,"ContainedIn"s,"Positions"s,"IsPredecessorTo"s,"IsSuccessorFrom"s,"OperatesOn"s,"ReferencedBy"s,"PositionedRelativeTo"s,"ReferencedInStructures"s,"ShapeOfProduct"s,"HasShapeAspects"s,"PartOfPset"s,"PropertyForDependance"s,"PropertyDependsOn"s,"HasConstraints"s,"HasApprovals"s,"DefinesType"s,"DefinesOccurrence"s,"Defines"s,"PartOfComplexTemplate"s,"PartOfPsetTemplate"s,"Corresponds"s,"RepresentationMap"s,"LayerAssignments"s,"OfProductRepresentation"s,"RepresentationsInContext"s,"LayerAssignment"s,"StyledByItem"s,"MapUsage"s,"ResourceOf"s,"UsingCurves"s,"OfShapeAspect"s,"ContainsElements"s,"ServicedBySystems"s,"ReferencesElements"s,"AssignedToStructuralItem"s,"ConnectsStructuralMembers"s,"AssignedStructuralActivity"s,"SourceOfResultGroup"s,"LoadGroupFor"s,"ConnectedBy"s,"ResultGroupFor"s,"AdheresToElement"s,"IsMappedBy"s,"UsedInStyles"s,"ServicesBuildings"s,"ServicesFacilities"s,"HasColours"s,"HasTextures"s,"Types"s,"IFC4X3_RC4"s}; + IFC4X3_RC4_types[0] = new type_declaration(strings[0], 0, new simple_type(simple_type::real_type)); IFC4X3_RC4_types[1] = new type_declaration(strings[1], 1, new simple_type(simple_type::real_type)); IFC4X3_RC4_types[3] = new enumeration_type(strings[2], 3, {strings[3],strings[4],strings[5],strings[6],strings[7],strings[8],strings[9]}); diff --git a/src/ifcparse/IfcAlignmentHelper.cpp b/src/ifcparse/IfcAlignmentHelper.cpp index b5936561a5..a64dca1f6b 100644 --- a/src/ifcparse/IfcAlignmentHelper.cpp +++ b/src/ifcparse/IfcAlignmentHelper.cpp @@ -35,46 +35,43 @@ static const double PI = boost::math::constants::pi(); #ifdef HAS_SCHEMA_4x3_add2 // sets the segment name like ("H1" for horizontal, "V1" for vertical, "C1" for cant) -void _name_segments(const char* prefix, typename aggregate_of::ptr segments) { +void _name_segments(const char* prefix, std::vector& segments) { unsigned idx = 1; - for (auto& segment : *segments) { + for (auto& segment : segments) { std::ostringstream os; os << prefix << idx++; - segment->setName(os.str()); + segment.setName(os.str()); } } // creates representations for each IfcAlignmentSegment per CT 4.1.7.1.1.4 // https://standards.buildingsmart.org/IFC/RELEASE/IFC4_3/HTML/concepts/Product_Shape/Product_Geometric_Representation/Alignment_Geometry/Alignment_Geometry_-_Segments/content.html -void _createSegmentRepresentations(IfcHierarchyHelper& file, Ifc4x3_add2::IfcLocalPlacement* global_placement, Ifc4x3_add2::IfcGeometricRepresentationSubContext* segment_axis_subcontext, typename aggregate_of::ptr curve_segments, typename aggregate_of::ptr segments) { - auto cs_iter = curve_segments->begin(); - auto s_iter = segments->begin(); - for (; cs_iter != curve_segments->end(); cs_iter++, s_iter++) { +void _createSegmentRepresentations(IfcHierarchyHelper& file, Ifc4x3_add2::IfcLocalPlacement global_placement, Ifc4x3_add2::IfcGeometricRepresentationSubContext segment_axis_subcontext, std::vector& curve_segments, std::vector& segments) { + auto cs_iter = curve_segments.begin(); + auto s_iter = segments.begin(); + for (; cs_iter != curve_segments.end(); cs_iter++, s_iter++) { auto curve_segment = *cs_iter; - auto alignment_segment = (*s_iter)->as(); + auto alignment_segment = (s_iter)->as(); - typename aggregate_of::ptr representation_items(new aggregate_of()); - representation_items->push(curve_segment); + auto axis_representation = file.create(); + axis_representation.setContextOfItems(segment_axis_subcontext); + axis_representation.setRepresentationIdentifier("Axis"); + axis_representation.setRepresentationType("Segment"); + axis_representation.setItems(std::vector{curve_segment}); - auto axis_representation = new Ifc4x3_add2::IfcShapeRepresentation(segment_axis_subcontext, std::string("Axis"), std::string("Segment"), representation_items); - file.addEntity(axis_representation); + auto product = file.create(); + product.setRepresentations(std::vector{axis_representation}); - typename aggregate_of::ptr representations(new aggregate_of()); - representations->push(axis_representation); - - auto product = new Ifc4x3_add2::IfcProductDefinitionShape(boost::none, boost::none, representations); - file.addEntity(product); - - alignment_segment->setObjectPlacement(global_placement); - alignment_segment->setRepresentation(product); + alignment_segment.setObjectPlacement(global_placement); + alignment_segment.setRepresentation(product); } } // creates a horizontal alignment using a vector of PI points and curve radii // returns a list of object definitions, curve segments, and a composite curve -std::tuple::ptr, typename aggregate_of::ptr, Ifc4x3_add2::IfcCompositeCurve*> _createHorizontalAlignment(IfcHierarchyHelper& file, const std::vector>& points, const std::vector& radii,bool include_geometry) { - typename aggregate_of::ptr horizontal_segments(new aggregate_of()); // business logic - typename aggregate_of::ptr horizontal_curve_segments(include_geometry ? new aggregate_of() : nullptr); // geometry +std::tuple, std::vector, Ifc4x3_add2::IfcCompositeCurve> _createHorizontalAlignment(IfcHierarchyHelper& file, const std::vector>& points, const std::vector& radii,bool include_geometry) { + std::vector horizontal_segments; // business logic + std::vector horizontal_curve_segments; // geometry auto point_iter = points.begin(); double xBT, yBT, xPI, yPI; @@ -118,24 +115,44 @@ std::tuple::ptr, typenam // create back tangent run { auto pt = file.addDoublet(xBT, yBT); - auto design_parameters = new Ifc4x3_add2::IfcAlignmentHorizontalSegment(boost::none, boost::none, pt, angleBT, 0.0, 0.0, tangent_run, boost::none, Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_LINE); - auto alignment_segment = new Ifc4x3_add2::IfcAlignmentSegment(IfcParse::IfcGlobalId(), nullptr, boost::none, boost::none, boost::none, nullptr, nullptr, design_parameters); - horizontal_segments->push(alignment_segment); + auto design_parameters = file.create(); + design_parameters.setStartPoint(pt); + design_parameters.setStartDirection(angleBT); + design_parameters.setStartRadiusOfCurvature(0.0); + design_parameters.setEndRadiusOfCurvature(0.0); + design_parameters.setSegmentLength(tangent_run); + design_parameters.setPredefinedType(Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_LINE); + + auto alignment_segment = file.create(); + alignment_segment.setGlobalId(IfcParse::IfcGlobalId()); + alignment_segment.setDesignParameters(design_parameters); + + horizontal_segments.push_back(alignment_segment); if (include_geometry) { - horizontal_curve_segments->push(mapAlignmentHorizontalSegment(design_parameters).first); + horizontal_curve_segments.push_back(mapAlignmentHorizontalSegment(file, design_parameters).first); } } // create circular curve { auto pc = file.addDoublet(xPC, yPC); - auto design_parameters = new Ifc4x3_add2::IfcAlignmentHorizontalSegment(boost::none, boost::none, pc, angleBT, radius, radius, lc, boost::none, Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_CIRCULARARC); - auto alignment_segment = new Ifc4x3_add2::IfcAlignmentSegment(IfcParse::IfcGlobalId(), nullptr, boost::none, boost::none, boost::none, nullptr, nullptr, design_parameters); - horizontal_segments->push(alignment_segment); + auto design_parameters = file.create(); + design_parameters.setStartPoint(pc); + design_parameters.setStartDirection(angleBT); + design_parameters.setStartRadiusOfCurvature(radius); + design_parameters.setEndRadiusOfCurvature(radius); + design_parameters.setSegmentLength(lc); + design_parameters.setPredefinedType(Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_CIRCULARARC); + + auto alignment_segment = file.create(); + alignment_segment.setGlobalId(IfcParse::IfcGlobalId()); + alignment_segment.setDesignParameters(design_parameters); + + horizontal_segments.push_back(alignment_segment); if (include_geometry) { - horizontal_curve_segments->push(mapAlignmentHorizontalSegment(design_parameters).first); + horizontal_curve_segments.push_back(mapAlignmentHorizontalSegment(file, design_parameters).first); } } @@ -151,34 +168,56 @@ std::tuple::ptr, typenam auto angleBT = atan2(dy, dx); auto tangent_run = sqrt(dx * dx + dy * dy); auto pt = file.addDoublet(xBT, yBT); - auto design_parameters = new Ifc4x3_add2::IfcAlignmentHorizontalSegment(boost::none, boost::none, pt, angleBT, 0.0, 0.0, tangent_run, boost::none, Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_LINE); - auto alignment_segment = new Ifc4x3_add2::IfcAlignmentSegment(IfcParse::IfcGlobalId(), nullptr, boost::none, boost::none, boost::none, nullptr, nullptr, design_parameters); - horizontal_segments->push(alignment_segment); + auto design_parameters = file.create(); + design_parameters.setStartPoint(pt); + design_parameters.setStartDirection(angleBT); + design_parameters.setStartRadiusOfCurvature(0); + design_parameters.setEndRadiusOfCurvature(0); + design_parameters.setSegmentLength(tangent_run); + design_parameters.setPredefinedType(Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_LINE); + + auto alignment_segment = file.create(); + alignment_segment.setGlobalId(IfcParse::IfcGlobalId()); + alignment_segment.setDesignParameters(design_parameters); + + horizontal_segments.push_back(alignment_segment); + if (include_geometry) { - horizontal_curve_segments->push(mapAlignmentHorizontalSegment(design_parameters).first); + horizontal_curve_segments.push_back(mapAlignmentHorizontalSegment(file, design_parameters).first); } // create zero length terminator segment auto poe = file.addDoublet(xPI, yPI); - design_parameters = new Ifc4x3_add2::IfcAlignmentHorizontalSegment(boost::none, boost::none, poe, angleBT, 0.0, 0.0, 0.0, boost::none, Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_LINE); - alignment_segment = new Ifc4x3_add2::IfcAlignmentSegment(IfcParse::IfcGlobalId(), nullptr, boost::none, boost::none, boost::none, nullptr, nullptr, design_parameters); - horizontal_segments->push(alignment_segment); + design_parameters = file.create(); + design_parameters.setStartPoint(poe); + design_parameters.setStartDirection(angleBT); + design_parameters.setStartRadiusOfCurvature(0); + design_parameters.setEndRadiusOfCurvature(0); + design_parameters.setSegmentLength(0.0); + design_parameters.setPredefinedType(Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_LINE); + + alignment_segment = file.create(); + alignment_segment.setGlobalId(IfcParse::IfcGlobalId()); + alignment_segment.setDesignParameters(design_parameters); + + horizontal_segments.push_back(alignment_segment); if (include_geometry) { - auto segment = mapAlignmentHorizontalSegment(design_parameters).first; - segment->setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_DISCONTINUOUS); - horizontal_curve_segments->push(segment); + auto segment = mapAlignmentHorizontalSegment(file, design_parameters).first; + segment.setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_DISCONTINUOUS); + horizontal_curve_segments.push_back(segment); } - Ifc4x3_add2::IfcCompositeCurve* composite_curve = nullptr; + Ifc4x3_add2::IfcCompositeCurve composite_curve; if (include_geometry) { - composite_curve = new Ifc4x3_add2::IfcCompositeCurve(horizontal_curve_segments, false /*not self-intersecting*/); - file.addEntity(composite_curve); + composite_curve = file.create(); + composite_curve.setSegments(horizontal_curve_segments); + composite_curve.setSelfIntersect(false); } return {horizontal_segments, horizontal_curve_segments, composite_curve}; } -Ifc4x3_add2::IfcAlignment* addHorizontalAlignment(IfcHierarchyHelper& file, const std::string& alignment_name, const std::vector>& points, const std::vector& radii,bool include_geometry) { +Ifc4x3_add2::IfcAlignment addHorizontalAlignment(IfcHierarchyHelper& file, const std::string& alignment_name, const std::vector>& points, const std::vector& radii,bool include_geometry) { auto [horizontal_segments, horizontal_curve_segments, composite_curve] = _createHorizontalAlignment(file, points, radii, include_geometry); _name_segments("H", horizontal_segments); @@ -186,50 +225,54 @@ Ifc4x3_add2::IfcAlignment* addHorizontalAlignment(IfcHierarchyHelper(); + horizontal_alignment.setGlobalId(IfcParse::IfcGlobalId()); + horizontal_alignment.setName(alignment_name + " - Horizontal"); - auto nests_horizontal_segments = new Ifc4x3_add2::IfcRelNests(IfcParse::IfcGlobalId(), nullptr, boost::none, std::string("Nests horizontal alignment segments with horizontal alignment"), horizontal_alignment, horizontal_segments); - file.addEntity(nests_horizontal_segments); + auto nests_horizontal_segments = file.create(); + nests_horizontal_segments.setGlobalId(IfcParse::IfcGlobalId()); + nests_horizontal_segments.setName("Nests horizontal alignment segments with horizontal alignment"); + nests_horizontal_segments.setRelatingObject(horizontal_alignment); + nests_horizontal_segments.setRelatedObjects(horizontal_segments); // // Create geometric representation // - Ifc4x3_add2::IfcLocalPlacement* placement = nullptr; - Ifc4x3_add2::IfcProductDefinitionShape* product_definition_shape = nullptr; + Ifc4x3_add2::IfcLocalPlacement placement; + Ifc4x3_add2::IfcProductDefinitionShape product_definition_shape; if (include_geometry) { - typename aggregate_of::ptr alignment_representation_items(new aggregate_of()); - alignment_representation_items->push(composite_curve); - // create the footprint representation auto axis_model_representation_subcontext = file.getRepresentationSubContext("Axis", "Model"); - auto footprint_shape_representation = new Ifc4x3_add2::IfcShapeRepresentation(axis_model_representation_subcontext, std::string("FootPrint"), std::string("Curve2D"), alignment_representation_items); - file.addEntity(footprint_shape_representation); - + auto footprint_shape_representation = file.create(); + footprint_shape_representation.setContextOfItems(axis_model_representation_subcontext); + footprint_shape_representation.setRepresentationIdentifier("FootPrint"); + footprint_shape_representation.setRepresentationType("Curve2D"); + footprint_shape_representation.setItems(std::vector{composite_curve}); + placement = file.addLocalPlacement(); - // the alignment has a plan view footprint representation - typename aggregate_of::ptr alignment_representations(new aggregate_of()); - alignment_representations->push(footprint_shape_representation); // 2D footprint - // create the alignment product definition - product_definition_shape = new Ifc4x3_add2::IfcProductDefinitionShape(std::string("Alignment Product Definition Shape"), boost::none, alignment_representations); + product_definition_shape = file.create(); + product_definition_shape.setName("Alignment Product Definition Shape"); + product_definition_shape.setRepresentations(std::vector{footprint_shape_representation}); // create representations for each segment _createSegmentRepresentations(file, placement, axis_model_representation_subcontext, horizontal_curve_segments, horizontal_segments); } // create the alignment - auto alignment = new Ifc4x3_add2::IfcAlignment(IfcParse::IfcGlobalId(), nullptr, alignment_name, boost::none, boost::none, placement, product_definition_shape, boost::none); - file.addEntity(alignment); - + auto alignment = file.create(); + alignment.setGlobalId(IfcParse::IfcGlobalId()); + alignment.setName(alignment_name); + alignment.setObjectPlacement(placement); + alignment.setRepresentation(product_definition_shape); return alignment; } -std::tuple::ptr, typename aggregate_of::ptr, Ifc4x3_add2::IfcGradientCurve*> _createVerticalAlignment(IfcHierarchyHelper& file, Ifc4x3_add2::IfcCompositeCurve* composite_curve,const std::vector>& vpoints, const std::vector& vclengths, bool include_geometry) { - typename aggregate_of::ptr vertical_segments(new aggregate_of()); // business logic - typename aggregate_of::ptr vertical_curve_segments(new aggregate_of()); // geometry +std::tuple&, typename std::vector&, Ifc4x3_add2::IfcGradientCurve> _createVerticalAlignment(IfcHierarchyHelper& file, Ifc4x3_add2::IfcCompositeCurve composite_curve,const std::vector>& vpoints, const std::vector& vclengths, bool include_geometry) { + std::vector vertical_segments; // business logic + std::vector vertical_curve_segments; // geometry auto point_iter = vpoints.begin(); double xPBG, yPBG, xPVI, yPVI; @@ -259,11 +302,21 @@ std::tuple::ptr, typenam // create gradient { auto gradient_length = dxBG - length/2; - auto design_parameters = new Ifc4x3_add2::IfcAlignmentVerticalSegment(boost::none, boost::none, xPBG, gradient_length, yPBG, start_slope, start_slope, boost::none, Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_CONSTANTGRADIENT); - auto alignment_segment = new Ifc4x3_add2::IfcAlignmentSegment(IfcParse::IfcGlobalId(), nullptr, boost::none, boost::none, boost::none, nullptr, nullptr, design_parameters); - vertical_segments->push(alignment_segment); + auto design_parameters = file.create(); + design_parameters.setStartDistAlong(xPBG); + design_parameters.setHorizontalLength(gradient_length); + design_parameters.setStartHeight(yPBG); + design_parameters.setStartGradient(start_slope); + design_parameters.setEndGradient(start_slope); + design_parameters.setPredefinedType(Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_CONSTANTGRADIENT); + + auto alignment_segment = file.create(); + alignment_segment.setGlobalId(IfcParse::IfcGlobalId()); + alignment_segment.setDesignParameters(design_parameters); + + vertical_segments.push_back(alignment_segment); if (include_geometry) { - vertical_curve_segments->push(mapAlignmentVerticalSegment(design_parameters).first); + vertical_curve_segments.push_back(mapAlignmentVerticalSegment(file, design_parameters).first); } } @@ -273,11 +326,22 @@ std::tuple::ptr, typenam double xBVC = xPVI - length / 2; double yBVC = yPVI - start_slope * length / 2; - auto design_parameters = new Ifc4x3_add2::IfcAlignmentVerticalSegment(boost::none, boost::none, xBVC, length, yBVC, start_slope, end_slope, 1 / k, Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_PARABOLICARC); - auto alignment_segment = new Ifc4x3_add2::IfcAlignmentSegment(IfcParse::IfcGlobalId(), nullptr, boost::none, boost::none, boost::none, nullptr, nullptr, design_parameters); - vertical_segments->push(alignment_segment); + auto design_parameters = file.create(); + design_parameters.setStartDistAlong(xBVC); + design_parameters.setHorizontalLength(length); + design_parameters.setStartHeight(yBVC); + design_parameters.setStartGradient(start_slope); + design_parameters.setEndGradient(end_slope); + design_parameters.setRadiusOfCurvature(1/k); + design_parameters.setPredefinedType(Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_PARABOLICARC); + + auto alignment_segment = file.create(); + alignment_segment.setGlobalId(IfcParse::IfcGlobalId()); + alignment_segment.setDesignParameters(design_parameters); + + vertical_segments.push_back(alignment_segment); if (include_geometry) { - vertical_curve_segments->push(mapAlignmentVerticalSegment(design_parameters).first); + vertical_curve_segments.push_back(mapAlignmentVerticalSegment(file, design_parameters).first); } } @@ -293,33 +357,55 @@ std::tuple::ptr, typenam auto slope = tan(atan2(dy,dx)); auto gradient_length = dx; - auto design_parameters = new Ifc4x3_add2::IfcAlignmentVerticalSegment(boost::none, boost::none, xPBG, gradient_length, yPBG, slope, slope, boost::none, Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_CONSTANTGRADIENT); - auto alignment_segment = new Ifc4x3_add2::IfcAlignmentSegment(IfcParse::IfcGlobalId(), nullptr, boost::none, boost::none, boost::none, nullptr, nullptr, design_parameters); - vertical_segments->push(alignment_segment); + auto design_parameters = file.create(); + design_parameters.setStartDistAlong(xPBG); + design_parameters.setHorizontalLength(gradient_length); + design_parameters.setStartHeight(yPBG); + design_parameters.setStartGradient(slope); + design_parameters.setEndGradient(slope); + design_parameters.setPredefinedType(Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_CONSTANTGRADIENT); + + auto alignment_segment = file.create(); + alignment_segment.setGlobalId(IfcParse::IfcGlobalId()); + alignment_segment.setDesignParameters(design_parameters); + + vertical_segments.push_back(alignment_segment); if (include_geometry) { - vertical_curve_segments->push(mapAlignmentVerticalSegment(design_parameters).first); + vertical_curve_segments.push_back(mapAlignmentVerticalSegment(file, design_parameters).first); } // create zero length terminator segment - design_parameters = new Ifc4x3_add2::IfcAlignmentVerticalSegment(boost::none, boost::none, xPVI, 0.0, yPVI, slope, slope, boost::none, Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_CONSTANTGRADIENT); - alignment_segment = new Ifc4x3_add2::IfcAlignmentSegment(IfcParse::IfcGlobalId(), nullptr, boost::none, boost::none, boost::none, nullptr, nullptr, design_parameters); - vertical_segments->push(alignment_segment); + design_parameters = file.create(); + design_parameters.setStartDistAlong(xPVI); + design_parameters.setHorizontalLength(0.); + design_parameters.setStartHeight(yPVI); + design_parameters.setStartGradient(slope); + design_parameters.setEndGradient(slope); + design_parameters.setPredefinedType(Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_CONSTANTGRADIENT); + + alignment_segment = file.create(); + alignment_segment.setGlobalId(IfcParse::IfcGlobalId()); + alignment_segment.setDesignParameters(design_parameters); + + vertical_segments.push_back(alignment_segment); if (include_geometry) { - auto segment = mapAlignmentVerticalSegment(design_parameters).first; - segment->setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_DISCONTINUOUS); - vertical_curve_segments->push(segment); + auto segment = mapAlignmentVerticalSegment(file, design_parameters).first; + segment.setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_DISCONTINUOUS); + vertical_curve_segments.push_back(segment); } - Ifc4x3_add2::IfcGradientCurve* gradient_curve = nullptr; + Ifc4x3_add2::IfcGradientCurve gradient_curve; if (include_geometry) { - gradient_curve = new Ifc4x3_add2::IfcGradientCurve(vertical_curve_segments, false, composite_curve, nullptr); - file.addEntity(gradient_curve); + gradient_curve = file.create(); + gradient_curve.setSegments(vertical_curve_segments); + gradient_curve.setSelfIntersect(false); + gradient_curve.setBaseCurve(composite_curve); } return {vertical_segments, vertical_curve_segments, gradient_curve}; } -Ifc4x3_add2::IfcAlignment* addAlignment(IfcHierarchyHelper& file, const std::string& alignment_name, const std::vector>& points, const std::vector& radii, const std::vector>& vpoints, const std::vector& vclengths,bool include_geometry) { +Ifc4x3_add2::IfcAlignment addAlignment(IfcHierarchyHelper& file, const std::string& alignment_name, const std::vector>& points, const std::vector& radii, const std::vector>& vpoints, const std::vector& vclengths,bool include_geometry) { auto [horizontal_segments, horizontal_curve_segments, composite_curve] = _createHorizontalAlignment(file, points, radii, include_geometry); auto [vertical_segments, vertical_curve_segments, gradient_curve] = _createVerticalAlignment(file, composite_curve, vpoints, vclengths, include_geometry); @@ -329,137 +415,152 @@ Ifc4x3_add2::IfcAlignment* addAlignment(IfcHierarchyHelper& file, c // // Create the horizontal alignment (IfcAlignmentHorizontal) and nest the segments // - auto horizontal_alignment = new Ifc4x3_add2::IfcAlignmentHorizontal(IfcParse::IfcGlobalId(), nullptr, alignment_name + std::string(" - Horizontal"), boost::none, boost::none, nullptr, nullptr); - file.addEntity(horizontal_alignment); + auto horizontal_alignment = file.create(); + horizontal_alignment.setGlobalId(IfcParse::IfcGlobalId()); + horizontal_alignment.setName(alignment_name + " - Horizontal"); - auto nests_horizontal_segments = new Ifc4x3_add2::IfcRelNests(IfcParse::IfcGlobalId(), nullptr, boost::none, std::string("Nests horizontal alignment segments with horizontal alignment"), horizontal_alignment, horizontal_segments); - file.addEntity(nests_horizontal_segments); + auto nests_horizontal_segments = file.create(); + nests_horizontal_segments.setGlobalId(IfcParse::IfcGlobalId()); + nests_horizontal_segments.setName("Nests horizontal alignment segments with horizontal alignment"); + nests_horizontal_segments.setRelatingObject(horizontal_alignment); + nests_horizontal_segments.setRelatedObjects(horizontal_segments); // // Create the vertical alignment (IfcAlignmentVertical) and nest the segments // - auto vertical_profile = new Ifc4x3_add2::IfcAlignmentVertical(IfcParse::IfcGlobalId(), nullptr, alignment_name + std::string("- Vertical"), boost::none, boost::none, nullptr, nullptr); - file.addEntity(vertical_profile); - - auto nests_vertical_segments = new Ifc4x3_add2::IfcRelNests(IfcParse::IfcGlobalId(), nullptr, boost::none, std::string("Nests vertical alignment segments with vertical alignment"), vertical_profile, vertical_segments); - file.addEntity(nests_vertical_segments); - - Ifc4x3_add2::IfcLocalPlacement* placement = nullptr; - Ifc4x3_add2::IfcProductDefinitionShape* product_definition_shape = nullptr; + auto vertical_profile = file.create(); + vertical_profile.setGlobalId(IfcParse::IfcGlobalId()); + vertical_profile.setName(alignment_name + "- Vertical"); + + auto nests_vertical_segments = file.create(); + nests_vertical_segments.setGlobalId(IfcParse::IfcGlobalId()); + nests_vertical_segments.setName("Nests vertical alignment segments with vertical alignment"); + nests_vertical_segments.setRelatingObject(vertical_profile); + nests_vertical_segments.setRelatedObjects(vertical_segments); + + Ifc4x3_add2::IfcLocalPlacement placement; + Ifc4x3_add2::IfcProductDefinitionShape product_definition_shape; if (include_geometry) { auto axis_model_representation_subcontext = file.getRepresentationSubContext("Axis", "Model"); - // the composite curve is a representation item - typename aggregate_of::ptr alignment_representation_items(new aggregate_of()); - alignment_representation_items->push(composite_curve); - - // the gradient curve is a representation item - typename aggregate_of::ptr profile_representation_items(new aggregate_of()); - profile_representation_items->push(gradient_curve); - // create footprint representation - auto footprint_shape_representation = new Ifc4x3_add2::IfcShapeRepresentation(axis_model_representation_subcontext, std::string("FootPrint"), std::string("Curve2D"), alignment_representation_items); - file.addEntity(footprint_shape_representation); + auto footprint_shape_representation = file.create(); + footprint_shape_representation.setContextOfItems(axis_model_representation_subcontext); + footprint_shape_representation.setRepresentationIdentifier("FootPrint"); + footprint_shape_representation.setRepresentationType("Curve2D"); + footprint_shape_representation.setItems(std::vector{composite_curve}); // create the axis representation - auto axis3d_shape_representation = new Ifc4x3_add2::IfcShapeRepresentation(axis_model_representation_subcontext, std::string("Axis"), std::string("Curve3D"), profile_representation_items); - file.addEntity(axis3d_shape_representation); + auto axis3d_shape_representation = file.create(); + axis3d_shape_representation.setContextOfItems(axis_model_representation_subcontext); + axis3d_shape_representation.setRepresentationIdentifier("Axis"); + axis3d_shape_representation.setRepresentationType("Curve3D"); + axis3d_shape_representation.setItems(std::vector{gradient_curve}); // create axis representations for each segment placement = file.addLocalPlacement(); _createSegmentRepresentations(file, placement, axis_model_representation_subcontext, horizontal_curve_segments, horizontal_segments); _createSegmentRepresentations(file, placement, axis_model_representation_subcontext, vertical_curve_segments, vertical_segments); - // the alignment has a 3d curve representation - typename aggregate_of::ptr alignment_representations(new aggregate_of()); - alignment_representations->push(footprint_shape_representation); // 2D curve - alignment_representations->push(axis3d_shape_representation); // 3D curve - + // the alignment has a 3d curve representation // create the alignment product definition - product_definition_shape = new Ifc4x3_add2::IfcProductDefinitionShape(std::string("Alignment Product Definition Shape"), boost::none, alignment_representations); + product_definition_shape = file.create(); + product_definition_shape.setName("Alignment Product Definition Shape"); + product_definition_shape.setRepresentations(std::vector{footprint_shape_representation, axis3d_shape_representation}); } // // Create the IfcAlignment // - - auto alignment = new Ifc4x3_add2::IfcAlignment(IfcParse::IfcGlobalId(), nullptr, alignment_name, boost::none, boost::none, placement, product_definition_shape, boost::none); - file.addEntity(alignment); - + auto alignment = file.create(); + alignment.setGlobalId(IfcParse::IfcGlobalId()); + alignment.setName(alignment_name); + alignment.setObjectPlacement(placement); + alignment.setRepresentation(product_definition_shape); + // Nest the IfcAlignmentHorizontal and IfcAlignmentVertical with the IfcAlignment to complete the business logic // 4.1.4.4.1 Alignments nest horizontal and vertical layouts // https://standards.buildingsmart.org/IFC/RELEASE/IFC4_3/HTML/concepts/Object_Composition/Nesting/Alignment_Layouts/content.html - typename aggregate_of::ptr alignment_layout_list(new aggregate_of()); - alignment_layout_list->push(horizontal_alignment); - alignment_layout_list->push(vertical_profile); - - auto nests_alignment_layouts = new Ifc4x3_add2::IfcRelNests(IfcParse::IfcGlobalId(), nullptr, std::string("Nest horizontal and vertical alignment layouts with the alignment"), boost::none, alignment, alignment_layout_list); - file.addEntity(nests_alignment_layouts); + auto nests_alignment_layouts = file.create(); + nests_alignment_layouts.setGlobalId(IfcParse::IfcGlobalId()); + nests_alignment_layouts.setName("Nest horizontal and vertical alignment layouts with the alignment"); + nests_alignment_layouts.setRelatingObject(alignment); + nests_alignment_layouts.setRelatedObjects(std::vector{horizontal_alignment, vertical_profile}); return alignment; } -std::pair mapAlignmentSegment(const Ifc4x3_add2::IfcAlignmentSegment* segment) { - std::pair result(nullptr, nullptr); - auto design_parameters = segment->DesignParameters(); - auto horizontal = design_parameters->as(); - auto vertical = design_parameters->as(); - auto cant = design_parameters->as(); +std::pair mapAlignmentSegment(IfcHierarchyHelper& file, const Ifc4x3_add2::IfcAlignmentSegment& segment) { + std::pair result; + auto design_parameters = segment.DesignParameters(); + auto horizontal = design_parameters.as(); + auto vertical = design_parameters.as(); + auto cant = design_parameters.as(); if (horizontal) { - result = mapAlignmentHorizontalSegment(horizontal); + result = mapAlignmentHorizontalSegment(file, horizontal); } else if (vertical) { - result = mapAlignmentVerticalSegment(vertical); + result = mapAlignmentVerticalSegment(file, vertical); } else if (cant) { - result = mapAlignmentCantSegment(cant); + result = mapAlignmentCantSegment(file, cant); } else { Logger::Error(std::string("Unexpected IfcAlignmentSegment subtype encountered")); } return result; } -std::pair mapAlignmentHorizontalSegment(const Ifc4x3_add2::IfcAlignmentHorizontalSegment* segment) { - std::pair result(nullptr, nullptr); - auto start_point = segment->StartPoint(); - auto start_direction = segment->StartDirection(); - auto start_radius = segment->StartRadiusOfCurvature(); - auto end_radius = segment->EndRadiusOfCurvature(); - auto length = segment->SegmentLength(); - auto type = segment->PredefinedType(); +namespace { +Ifc4x3_add2::IfcLengthMeasure create_length(IfcHierarchyHelper& file, double d) { + auto inst = file.create(); + inst.set_attribute_value(0, d); + return inst; +} +} + +std::pair mapAlignmentHorizontalSegment(IfcHierarchyHelper& file, const Ifc4x3_add2::IfcAlignmentHorizontalSegment& segment) { + std::pair result; + auto start_point = segment.StartPoint(); + auto start_direction = segment.StartDirection(); + auto start_radius = segment.StartRadiusOfCurvature(); + auto end_radius = segment.EndRadiusOfCurvature(); + auto length = segment.SegmentLength(); + auto type = segment.PredefinedType(); double f = (end_radius ? length / end_radius : 0.0) - (start_radius ? length / start_radius : 0.0); if (type == Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_LINE) { - Ifc4x3_add2::IfcCurve* parent_curve = new Ifc4x3_add2::IfcLine( - new Ifc4x3_add2::IfcCartesianPoint({0.0, 0.0}), - new Ifc4x3_add2::IfcVector(new Ifc4x3_add2::IfcDirection({1.0, 0.0}), 1.0)); + auto parent_curve = file.create(); + parent_curve.setPnt(file.addDoublet(0.0, 0.0)); + auto vec = file.create(); + vec.setOrientation(file.addDoublet(1.0, 0.0)); + vec.setMagnitude(1.); + parent_curve.setDir(vec); - Ifc4x3_add2::IfcCurveSegment* curve_segment = new Ifc4x3_add2::IfcCurveSegment( - Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Ifc4x3_add2::IfcAxis2Placement2D(start_point, new Ifc4x3_add2::IfcDirection({cos(start_direction), sin(start_direction)})), - new Ifc4x3_add2::IfcLengthMeasure(0.0), - new Ifc4x3_add2::IfcLengthMeasure(length), - parent_curve); + auto curve_segment = file.create(); + curve_segment.setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT); + curve_segment.setPlacement(file.addPlacement2d(start_point.Coordinates()[0], start_point.Coordinates()[1], cos(start_direction), sin(start_direction))); + curve_segment.setSegmentLength(create_length(file, 0.0)); + curve_segment.setSegmentLength(create_length(file, length)); + curve_segment.setParentCurve(parent_curve); result.first = curve_segment; } else if (type == Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_CIRCULARARC) { - Ifc4x3_add2::IfcCurve* parent_curve = new Ifc4x3_add2::IfcCircle( - new Ifc4x3_add2::IfcAxis2Placement2D(new Ifc4x3_add2::IfcCartesianPoint(std::vector({0, 0})), - new Ifc4x3_add2::IfcDirection(std::vector{1, 0})), - fabs(start_radius)); + auto parent_curve = file.create(); + parent_curve.setPosition(file.addPlacement2d(0., 0., 1.0, 0.)); + parent_curve.setRadius(std::fabs(start_radius)); - Ifc4x3_add2::IfcCurveSegment* curve_segment = new Ifc4x3_add2::IfcCurveSegment( - Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Ifc4x3_add2::IfcAxis2Placement2D(start_point, new Ifc4x3_add2::IfcDirection({cos(start_direction), sin(start_direction)})), - new Ifc4x3_add2::IfcLengthMeasure(0.0), - new Ifc4x3_add2::IfcLengthMeasure(length * start_radius / fabs(start_radius)), - parent_curve); + auto curve_segment = file.create(); + curve_segment.setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT); + curve_segment.setPlacement(file.addPlacement2d(start_point.Coordinates()[0], start_point.Coordinates()[1], cos(start_direction), sin(start_direction))); + curve_segment.setSegmentLength(create_length(file, 0.0)); + curve_segment.setSegmentLength(create_length(file, length * start_radius / std::fabs(start_radius))); + curve_segment.setParentCurve(parent_curve); result.first = curve_segment; } else if (type == Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_CLOTHOID) { double A = length / sqrt(fabs(f)) * f / fabs(f); - Ifc4x3_add2::IfcCurve* parent_curve = new Ifc4x3_add2::IfcClothoid( - new Ifc4x3_add2::IfcAxis2Placement2D(new Ifc4x3_add2::IfcCartesianPoint(std::vector({0, 0})), new Ifc4x3_add2::IfcDirection(std::vector{1, 0})), - A); + auto parent_curve = file.create(); + parent_curve.setPosition(file.addPlacement2d(0., 0., 1.0, 0.)); + parent_curve.setClothoidConstant(A); double offset; if ((fabs(start_radius) < fabs(end_radius) && start_radius) || end_radius == 0.) { @@ -468,12 +569,12 @@ std::pair mapAlign offset = start_radius ? length * end_radius / (start_radius - end_radius) : 0; } - Ifc4x3_add2::IfcCurveSegment* curve_segment = new Ifc4x3_add2::IfcCurveSegment( - Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Ifc4x3_add2::IfcAxis2Placement2D(start_point, new Ifc4x3_add2::IfcDirection({cos(start_direction), sin(start_direction)})), - new Ifc4x3_add2::IfcLengthMeasure(offset), - new Ifc4x3_add2::IfcLengthMeasure(length), - parent_curve); + auto curve_segment = file.create(); + curve_segment.setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT); + curve_segment.setPlacement(file.addPlacement2d(start_point.Coordinates()[0], start_point.Coordinates()[1], cos(start_direction), sin(start_direction))); + curve_segment.setSegmentLength(create_length(file, offset)); + curve_segment.setSegmentLength(create_length(file, length)); + curve_segment.setParentCurve(parent_curve); result.first = curve_segment; } else if (type == Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_BLOSSCURVE) { @@ -486,7 +587,7 @@ std::pair mapAlign auto A2 = a2 ? length * pow(fabs(a2), -1. / 3.) * a2 / fabs(a2) : 0.0; auto A3 = a3 ? length * pow(fabs(a3), -1. / 4.) * a3 / fabs(a3) : 0.0; - boost::optional A0_optional, A1_optional, A2_optional; + std::optional A0_optional, A1_optional, A2_optional; if (A0) { A0_optional = A0; } @@ -497,19 +598,19 @@ std::pair mapAlign A2_optional = A2; } - Ifc4x3_add2::IfcCurve* parent_curve = new Ifc4x3_add2::IfcThirdOrderPolynomialSpiral( - new Ifc4x3_add2::IfcAxis2Placement2D(new Ifc4x3_add2::IfcCartesianPoint(std::vector({0, 0})), new Ifc4x3_add2::IfcDirection(std::vector{1, 0})), - A3, - A2_optional, - A1_optional, - A0_optional); + auto parent_curve = file.create(); + parent_curve.setPosition(file.addPlacement2d(0., 0., 1.0, 0.)); + parent_curve.setCubicTerm(A3); + parent_curve.setQuadraticTerm(A2_optional); + parent_curve.setLinearTerm(A1_optional); + parent_curve.setConstantTerm(A0_optional); - Ifc4x3_add2::IfcCurveSegment* curve_segment = new Ifc4x3_add2::IfcCurveSegment( - Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Ifc4x3_add2::IfcAxis2Placement2D(start_point, new Ifc4x3_add2::IfcDirection({cos(start_direction), sin(start_direction)})), - new Ifc4x3_add2::IfcLengthMeasure(0.0), - new Ifc4x3_add2::IfcLengthMeasure(length), - parent_curve); + Ifc4x3_add2::IfcCurveSegment curve_segment = file.create(); + curve_segment.setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT); + curve_segment.setPlacement(file.addPlacement2d(start_point.Coordinates()[0], start_point.Coordinates()[1], cos(start_direction), sin(start_direction))); + curve_segment.setSegmentLength(create_length(file, 0.0)); + curve_segment.setSegmentLength(create_length(file, length)); + curve_segment.setParentCurve(parent_curve); result.first = curve_segment; } else if (type == Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_COSINECURVE) { @@ -517,22 +618,23 @@ std::pair mapAlign auto a1 = -0.5 * f; // cosine term auto A0 = a0 ? length * pow(fabs(a0), -1. / 1.) * a0 / fabs(a0) : 0.0; auto A1 = a1 ? length * pow(fabs(a1), -1. / 1.) * a1 / fabs(a1) : 0.0; - auto A0_optional = boost::optional(); + auto A0_optional = std::optional(); if (A0) { A0_optional = A0; } - Ifc4x3_add2::IfcCurve* parent_curve = new Ifc4x3_add2::IfcCosineSpiral( - new Ifc4x3_add2::IfcAxis2Placement2D(new Ifc4x3_add2::IfcCartesianPoint(std::vector({0, 0})), new Ifc4x3_add2::IfcDirection(std::vector{1, 0})), - A1, A0_optional); + auto parent_curve = file.create(); + parent_curve.setPosition(file.addPlacement2d(0., 0., 1.0, 0.)); + parent_curve.setCosineTerm(A1); + parent_curve.setConstantTerm(A0_optional); - Ifc4x3_add2::IfcCurveSegment* curve_segment = new Ifc4x3_add2::IfcCurveSegment( - Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Ifc4x3_add2::IfcAxis2Placement2D(start_point, new Ifc4x3_add2::IfcDirection({cos(start_direction), sin(start_direction)})), - new Ifc4x3_add2::IfcLengthMeasure(0.0), - new Ifc4x3_add2::IfcLengthMeasure(length), - parent_curve); + Ifc4x3_add2::IfcCurveSegment curve_segment = file.create(); + curve_segment.setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT); + curve_segment.setPlacement(file.addPlacement2d(start_point.Coordinates()[0], start_point.Coordinates()[1], cos(start_direction), sin(start_direction))); + curve_segment.setSegmentLength(create_length(file, 0.0)); + curve_segment.setSegmentLength(create_length(file, length)); + curve_segment.setParentCurve(parent_curve); - result.first = curve_segment; + result.first = curve_segment; } else if (type == Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_CUBIC) { double offset = 0; double A0 = 0; // constant term @@ -551,19 +653,17 @@ std::pair mapAlign A3 = -1. / (6. * start_radius * length); offset = -length; } - Ifc4x3_add2::IfcCurve* parent_curve = new Ifc4x3_add2::IfcPolynomialCurve( - new Ifc4x3_add2::IfcAxis2Placement2D(new Ifc4x3_add2::IfcCartesianPoint(std::vector({0, 0})), new Ifc4x3_add2::IfcDirection(std::vector{1, 0})), - std::vector{0.0, 1.0}, - std::vector{A0, A1, A2, A3}, - boost::none - ); + auto parent_curve = file.create(); + parent_curve.setPosition(file.addPlacement2d(0., 0., 1.0, 0.)); + parent_curve.setCoefficientsX(std::vector{0.0, 1.0}); + parent_curve.setCoefficientsY(std::vector{A0, A1, A2, A3}); - Ifc4x3_add2::IfcCurveSegment* curve_segment = new Ifc4x3_add2::IfcCurveSegment( - Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Ifc4x3_add2::IfcAxis2Placement2D(start_point, new Ifc4x3_add2::IfcDirection({cos(start_direction), sin(start_direction)})), - new Ifc4x3_add2::IfcLengthMeasure(offset), - new Ifc4x3_add2::IfcLengthMeasure(length), - parent_curve); + Ifc4x3_add2::IfcCurveSegment curve_segment = file.create(); + curve_segment.setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT); + curve_segment.setPlacement(file.addPlacement2d(start_point.Coordinates()[0], start_point.Coordinates()[1], cos(start_direction), sin(start_direction))); + curve_segment.setSegmentLength(create_length(file, offset)); + curve_segment.setSegmentLength(create_length(file, length)); + curve_segment.setParentCurve(parent_curve); result.first = curve_segment; } else if (type == Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_HELMERTCURVE) { @@ -575,28 +675,28 @@ std::pair mapAlign auto A1_1 = a1_1 ? length * pow(fabs(a1_1), -1. / 2.) * a1_1 / fabs(a1_1) : 0.0; auto A2_1 = a2_1 ? length * pow(fabs(a2_1), -1. / 3.) * a2_1 / fabs(a2_1) : 0.0; - auto A0_1_optional = boost::optional(); + auto A0_1_optional = std::optional(); if (A0_1) { A0_1_optional = A0_1; } - auto A1_1_optional = boost::optional(); + auto A1_1_optional = std::optional(); if (A1_1) { A1_1_optional = A1_1; } - Ifc4x3_add2::IfcCurve* parent_curve1 = new Ifc4x3_add2::IfcSecondOrderPolynomialSpiral( - new Ifc4x3_add2::IfcAxis2Placement2D(new Ifc4x3_add2::IfcCartesianPoint(std::vector({0, 0})), new Ifc4x3_add2::IfcDirection(std::vector{1, 0})), - A2_1, - A1_1_optional, - A0_1_optional); + auto parent_curve1 = file.create(); + parent_curve1.setPosition(file.addPlacement2d(0., 0., 1.0, 0.)); + parent_curve1.setQuadraticTerm(A2_1); + parent_curve1.setLinearTerm(A1_1_optional); + parent_curve1.setConstantTerm(A0_1_optional); - Ifc4x3_add2::IfcCurveSegment* curve_segment1 = new Ifc4x3_add2::IfcCurveSegment( - Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Ifc4x3_add2::IfcAxis2Placement2D(start_point, new Ifc4x3_add2::IfcDirection({cos(start_direction), sin(start_direction)})), - new Ifc4x3_add2::IfcLengthMeasure(0.0), - new Ifc4x3_add2::IfcLengthMeasure(length/2), - parent_curve1); + Ifc4x3_add2::IfcCurveSegment curve_segment1 = file.create(); + curve_segment1.setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT); + curve_segment1.setPlacement(file.addPlacement2d(start_point.Coordinates()[0], start_point.Coordinates()[1], cos(start_direction), sin(start_direction))); + curve_segment1.setSegmentLength(create_length(file, 0.0)); + curve_segment1.setSegmentLength(create_length(file, length / 2)); + curve_segment1.setParentCurve(parent_curve1); result.first = curve_segment1; @@ -608,27 +708,27 @@ std::pair mapAlign auto A1_2 = a1_2 ? length * pow(fabs(a1_2), -1. / 2.) * a1_2 / fabs(a1_2) : 0.0; auto A2_2 = a2_2 ? length * pow(fabs(a2_2), -1. / 3.) * a2_2 / fabs(a2_2) : 0.0; - auto A0_2_optional = boost::optional(); + auto A0_2_optional = std::optional(); if (A0_2) { A0_2_optional = A0_2; } - auto A1_2_optional = boost::optional(); + auto A1_2_optional = std::optional(); if (A1_2) { A1_2_optional = A1_2; } - Ifc4x3_add2::IfcCurve* parent_curve2 = new Ifc4x3_add2::IfcSecondOrderPolynomialSpiral( - new Ifc4x3_add2::IfcAxis2Placement2D(new Ifc4x3_add2::IfcCartesianPoint(std::vector({0, 0})), new Ifc4x3_add2::IfcDirection(std::vector{1, 0})), - A2_2, - A1_2_optional, - A0_2_optional); + Ifc4x3_add2::IfcCurve parent_curve2 = file.create(); + parent_curve1.setPosition(file.addPlacement2d(0., 0., 1.0, 0.)); + parent_curve1.setQuadraticTerm(A2_2); + parent_curve1.setLinearTerm(A1_2_optional); + parent_curve1.setConstantTerm(A0_2_optional); - Ifc4x3_add2::IfcCurveSegment* curve_segment2 = new Ifc4x3_add2::IfcCurveSegment( - Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Ifc4x3_add2::IfcAxis2Placement2D(start_point, new Ifc4x3_add2::IfcDirection({cos(start_direction), sin(start_direction)})), - new Ifc4x3_add2::IfcLengthMeasure(length/2), - new Ifc4x3_add2::IfcLengthMeasure(length/2), - parent_curve2); + Ifc4x3_add2::IfcCurveSegment curve_segment2 = file.create(); + curve_segment2.setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT); + curve_segment2.setPlacement(file.addPlacement2d(start_point.Coordinates()[0], start_point.Coordinates()[1], cos(start_direction), sin(start_direction))); + curve_segment2.setSegmentLength(create_length(file, length / 2)); + curve_segment2.setSegmentLength(create_length(file, length / 2)); + curve_segment2.setParentCurve(parent_curve2); result.second = curve_segment2; } else if (type == Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_SINECURVE) { @@ -640,24 +740,27 @@ std::pair mapAlign auto A1 = a1 ? length * pow(fabs(a1), -1. / 2.) * a1 / fabs(a1) : 0.0; auto A2 = a2 ? length * pow(fabs(a2), -1. / 1.) * a2 / fabs(a2) : 0.0; - auto A0_optional = boost::optional(); + auto A0_optional = std::optional(); if (A0) { A0_optional = A0; } - auto A1_optional = boost::optional(); + auto A1_optional = std::optional(); if (A1) { A1_optional = A1; } - Ifc4x3_add2::IfcCurve* parent_curve = new Ifc4x3_add2::IfcSineSpiral(new Ifc4x3_add2::IfcAxis2Placement2D(new Ifc4x3_add2::IfcCartesianPoint(std::vector({0, 0})), new Ifc4x3_add2::IfcDirection(std::vector{1, 0})), - A2, A1_optional, A0_optional); + auto parent_curve = file.create(); + parent_curve.setPosition(file.addPlacement2d(0., 0., 1.0, 0.)); + parent_curve.setSineTerm(A2); + parent_curve.setLinearTerm(A1_optional); + parent_curve.setConstantTerm(A0_optional); - Ifc4x3_add2::IfcCurveSegment* curve_segment = new Ifc4x3_add2::IfcCurveSegment( - Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Ifc4x3_add2::IfcAxis2Placement2D(start_point, new Ifc4x3_add2::IfcDirection({cos(start_direction), sin(start_direction)})), - new Ifc4x3_add2::IfcLengthMeasure(0.0), - new Ifc4x3_add2::IfcLengthMeasure(length), - parent_curve); + Ifc4x3_add2::IfcCurveSegment curve_segment = file.create(); + curve_segment.setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT); + curve_segment.setPlacement(file.addPlacement2d(start_point.Coordinates()[0], start_point.Coordinates()[1], cos(start_direction), sin(start_direction))); + curve_segment.setSegmentLength(create_length(file, 0.0)); + curve_segment.setSegmentLength(create_length(file, length)); + curve_segment.setParentCurve(parent_curve); result.first = curve_segment; } else if (type == Ifc4x3_add2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_VIENNESEBEND) { @@ -669,48 +772,47 @@ std::pair mapAlign return result; } -std::pair mapAlignmentVerticalSegment(const Ifc4x3_add2::IfcAlignmentVerticalSegment* segment) { - std::pair result(nullptr, nullptr); - auto start_distance_along = segment->StartDistAlong(); - auto horizontal_length = segment->HorizontalLength(); - auto start_height = segment->StartHeight(); - auto start_gradient = segment->StartGradient(); - auto end_gradient = segment->EndGradient(); - auto radius_of_curvature = segment->RadiusOfCurvature(); +std::pair mapAlignmentVerticalSegment(IfcHierarchyHelper& file, const Ifc4x3_add2::IfcAlignmentVerticalSegment& segment) { + std::pair result; + auto start_distance_along = segment.StartDistAlong(); + auto horizontal_length = segment.HorizontalLength(); + auto start_height = segment.StartHeight(); + auto start_gradient = segment.StartGradient(); + auto end_gradient = segment.EndGradient(); + auto radius_of_curvature = segment.RadiusOfCurvature(); - auto type = segment->PredefinedType(); + auto type = segment.PredefinedType(); if (type == Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_CONSTANTGRADIENT) { - auto parent_curve = new Ifc4x3_add2::IfcLine( - new Ifc4x3_add2::IfcCartesianPoint(std::vector({0, 0})), - new Ifc4x3_add2::IfcVector(new Ifc4x3_add2::IfcDirection(std::vector{1, 0}), 1.0)); + auto parent_curve = file.create(); + parent_curve.setPnt(file.addDoublet(0, 0)); + auto vec = file.create(); + vec.setOrientation(file.addDoublet(1, 0)); + vec.setMagnitude(1.0); + parent_curve.setDir(vec); // IfcCurveSegment.SegmentLength is the length of the curve segment, not the horizontal length. auto dx = cos(atan(start_gradient)); auto dy = sin(atan(start_gradient)); auto segment_curve_length = horizontal_length / dx; - auto curve_segment = new Ifc4x3_add2::IfcCurveSegment( - Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Ifc4x3_add2::IfcAxis2Placement2D( - new Ifc4x3_add2::IfcCartesianPoint({start_distance_along, start_height}), - new Ifc4x3_add2::IfcDirection({dx,dy})), - new Ifc4x3_add2::IfcLengthMeasure(0.0), // start - new Ifc4x3_add2::IfcLengthMeasure(segment_curve_length), - parent_curve); + auto curve_segment = file.create(); + curve_segment.setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT); + curve_segment.setPlacement(file.addPlacement2d(start_distance_along, start_height, dx, dy)); + curve_segment.setSegmentLength(create_length(file, 0.0)); + curve_segment.setSegmentLength(create_length(file, segment_curve_length)); + curve_segment.setParentCurve(parent_curve); result.first = curve_segment; - } else if (type == Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_PARABOLICARC) { double A = start_height; double B = start_gradient; double C = (end_gradient - start_gradient) / (2 * horizontal_length); - auto parent_curve = new Ifc4x3_add2::IfcPolynomialCurve( - new Ifc4x3_add2::IfcAxis2Placement2D(new Ifc4x3_add2::IfcCartesianPoint(std::vector{0.0, 0.0}), new Ifc4x3_add2::IfcDirection(std::vector{1.0, 0.0})), - std::vector{0.0, 1.0}, - std::vector{A, B, C}, - boost::none); + auto parent_curve = file.create(); + parent_curve.setPosition(file.addPlacement2d(0., 0., 1.0, 0.)); + parent_curve.setCoefficientsX(std::vector{0.0, 1.0}); + parent_curve.setCoefficientsY(std::vector{A, B, C}); // IfcCurveSegment.SegmentLength is the length of the curve segment, not the horizontal length. // The curve length is calculated by integrating the differential curve length equation sqrt(1 + (dy/dx)^2) from 0 to horizontal_length. @@ -721,14 +823,12 @@ std::pair mapAlign auto curve_length_fn = [B, C](double x) { return sqrt(1 + pow(B + 2*C * x, 2)); }; auto segment_curve_length = boost::math::quadrature::trapezoidal(curve_length_fn, 0.0, horizontal_length); - auto curve_segment = new Ifc4x3_add2::IfcCurveSegment( - Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Ifc4x3_add2::IfcAxis2Placement2D( - new Ifc4x3_add2::IfcCartesianPoint({start_distance_along, start_height}), - new Ifc4x3_add2::IfcDirection({dx,dy})), - new Ifc4x3_add2::IfcLengthMeasure(0.0), - new Ifc4x3_add2::IfcLengthMeasure(segment_curve_length), - parent_curve); + auto curve_segment = file.create(); + curve_segment.setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT); + curve_segment.setPlacement(file.addPlacement2d(start_distance_along, start_height, dx, dy)); + curve_segment.setSegmentLength(create_length(file, 0.0)); + curve_segment.setSegmentLength(create_length(file, segment_curve_length)); + curve_segment.setParentCurve(parent_curve); result.first = curve_segment; } else if (type == Ifc4x3_add2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_CLOTHOID) { @@ -743,20 +843,18 @@ std::pair mapAlign radius = horizontal_length / (sin(start_angle) - sin(end_angle)); } - Ifc4x3_add2::IfcCurve* parent_curve = new Ifc4x3_add2::IfcCircle( - new Ifc4x3_add2::IfcAxis2Placement2D(new Ifc4x3_add2::IfcCartesianPoint(std::vector({0, 0})), - new Ifc4x3_add2::IfcDirection(std::vector{1, 0})), - radius); - + auto parent_curve = file.create(); + parent_curve.setPosition(file.addPlacement2d(0., 0., 1.0, 0.)); + parent_curve.setRadius(radius); auto segment_curve_length = radius * fabs(end_angle - start_angle); - Ifc4x3_add2::IfcCurveSegment* curve_segment = new Ifc4x3_add2::IfcCurveSegment( - Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, - new Ifc4x3_add2::IfcAxis2Placement2D(new Ifc4x3_add2::IfcCartesianPoint({start_distance_along, start_height}), new Ifc4x3_add2::IfcDirection({1.0, 0.0})), - new Ifc4x3_add2::IfcLengthMeasure(0.0), - new Ifc4x3_add2::IfcLengthMeasure(segment_curve_length), - parent_curve); + Ifc4x3_add2::IfcCurveSegment curve_segment = file.create(); + curve_segment.setTransition(Ifc4x3_add2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT); + curve_segment.setPlacement(file.addPlacement2d(start_distance_along, start_height, 1.0, 0.)); + curve_segment.setSegmentLength(create_length(file, 0.0)); + curve_segment.setSegmentLength(create_length(file, segment_curve_length)); + curve_segment.setParentCurve(parent_curve); result.first = curve_segment; } else { @@ -766,9 +864,9 @@ std::pair mapAlign return result; } -std::pair mapAlignmentCantSegment(const Ifc4x3_add2::IfcAlignmentCantSegment* segment) { - std::pair result(nullptr, nullptr); - auto type = segment->PredefinedType(); +std::pair mapAlignmentCantSegment(IfcHierarchyHelper& file, const Ifc4x3_add2::IfcAlignmentCantSegment& segment) { + std::pair result; + auto type = segment.PredefinedType(); if (type == Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentType_BLOSSCURVE) { Logger::Warning(std::string("mapping of AlignmentCantSegmentType BLOSSCURVE not supported")); } else if (type == Ifc4x3_add2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentType_CONSTANTCANT) { diff --git a/src/ifcparse/IfcAlignmentHelper.h b/src/ifcparse/IfcAlignmentHelper.h index 444cedd3fd..ceb7b2fa1f 100644 --- a/src/ifcparse/IfcAlignmentHelper.h +++ b/src/ifcparse/IfcAlignmentHelper.h @@ -41,18 +41,18 @@ // // creates a horizontal alignment from a list of PI points and curve radii. if include_geometry is true, the geometric representations are created, otherwise only business logic is created -IFC_PARSE_API Ifc4x3_add2::IfcAlignment* addHorizontalAlignment(IfcHierarchyHelper& file, const std::string& alignment_name, const std::vector>& points, const std::vector& radii,bool include_geometry = true); +IFC_PARSE_API Ifc4x3_add2::IfcAlignment addHorizontalAlignment(IfcHierarchyHelper& file, const std::string& alignment_name, const std::vector>& points, const std::vector& radii,bool include_geometry = true); // creates a horizontal and vertical alignment from a list of PI points, curve radii, and VPI points and vertical curve lengths. if include_geometry is true, the geometric representations are created, otherwise only business logic is created -IFC_PARSE_API Ifc4x3_add2::IfcAlignment* addAlignment(IfcHierarchyHelper& file, const std::string& alignment_name, const std::vector>& points, const std::vector& radii, const std::vector>& vpoints, const std::vector& vclength, bool include_geometry = true); +IFC_PARSE_API Ifc4x3_add2::IfcAlignment addAlignment(IfcHierarchyHelper& file, const std::string& alignment_name, const std::vector>& points, const std::vector& radii, const std::vector>& vpoints, const std::vector& vclength, bool include_geometry = true); // Maps horizontal alignment business logic to geometry. // Bloss curves have two geometry elements for one horizontal alignment segment. That is the reason for returning a pair. // Typically the first element of the pair will have the geometry and the second element will be nullptr -IFC_PARSE_API std::pair mapAlignmentSegment(const Ifc4x3_add2::IfcAlignmentSegment* segment); -IFC_PARSE_API std::pair mapAlignmentHorizontalSegment(const Ifc4x3_add2::IfcAlignmentHorizontalSegment* segment); -IFC_PARSE_API std::pair mapAlignmentVerticalSegment(const Ifc4x3_add2::IfcAlignmentVerticalSegment* segment); -IFC_PARSE_API std::pair mapAlignmentCantSegment(const Ifc4x3_add2::IfcAlignmentCantSegment* segment); +IFC_PARSE_API std::pair mapAlignmentSegment(IfcHierarchyHelper& file, const Ifc4x3_add2::IfcAlignmentSegment& segment); +IFC_PARSE_API std::pair mapAlignmentHorizontalSegment(IfcHierarchyHelper& file, const Ifc4x3_add2::IfcAlignmentHorizontalSegment& segment); +IFC_PARSE_API std::pair mapAlignmentVerticalSegment(IfcHierarchyHelper& file, const Ifc4x3_add2::IfcAlignmentVerticalSegment& segment); +IFC_PARSE_API std::pair mapAlignmentCantSegment(IfcHierarchyHelper& file, const Ifc4x3_add2::IfcAlignmentCantSegment& segment); #endif diff --git a/src/ifcparse/IfcBaseClass.h b/src/ifcparse/IfcBaseClass.h deleted file mode 100644 index 5cab8289c3..0000000000 --- a/src/ifcparse/IfcBaseClass.h +++ /dev/null @@ -1,234 +0,0 @@ -/******************************************************************************** - * * - * 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 . * - * * - ********************************************************************************/ - -#ifndef IFCBASECLASS_H -#define IFCBASECLASS_H - -#include "Argument.h" -#include "ifc_parse_api.h" -#include "IfcEntityInstanceData.h" -#include "IfcSchema.h" -#include "utils.h" - -#include -#include - -class aggregate_of_instance; - -namespace IfcParse { - class IfcFile; -} - -namespace IfcUtil { - -class IFC_PARSE_API IfcBaseInterface { - protected: - static bool is_null(const IfcBaseInterface* not_this) { - return not_this == nullptr; - } - - template - std::enable_if_t::value && !std::is_same::value && !std::is_same::value> raise_error_on_concrete_class() const { - throw IfcParse::IfcException("Instance of type " + this->declaration().name() + " cannot be cast to " + T::Class().name()); - } - - template - std::enable_if_t::value || std::is_same::value || std::is_same::value> raise_error_on_concrete_class() const { - throw IfcParse::IfcException("Instance of type " + this->declaration().name() + " cannot be cast to base class"); - } - - public: - virtual const IfcEntityInstanceData& data() const = 0; - virtual IfcEntityInstanceData& data() = 0; - virtual const IfcParse::declaration& declaration() const = 0; - virtual ~IfcBaseInterface() {} - - template - T* as(bool do_throw = false) { - // @todo: do not allow this to be null in the first place - if (is_null(this)) { - return static_cast(0); - } - auto type = dynamic_cast(this); - if (do_throw && !type) { - raise_error_on_concrete_class(); - } - return type; - } - - template - const T* as(bool do_throw = false) const { - if (is_null(this)) { - return static_cast(0); - } - auto type = dynamic_cast(this); - if (do_throw && !type) { - raise_error_on_concrete_class(); - } - return type; - } -}; - -class IFC_PARSE_API IfcBaseClass : public virtual IfcBaseInterface { - protected: - static std::atomic_uint32_t counter_; - - uint32_t identity_; -public: - uint32_t id_; - IfcParse::IfcFile* file_; -protected: - IfcEntityInstanceData data_; - -public: - IfcBaseClass(IfcEntityInstanceData&& data); - - const IfcEntityInstanceData& data() const { return data_; } - IfcEntityInstanceData& data() { return data_; } - - virtual const IfcParse::declaration& declaration() const = 0; - - template - typename std::enable_if< - (!(std::is_pointer::value && std::is_base_of::type>::value) || std::is_same_v>), - void>::type - set_attribute_value(size_t i, const T& t); - - template - typename std::enable_if< - (!(std::is_pointer::value&& std::is_base_of::type>::value) || std::is_same_v>), - void>::type - set_attribute_value(const std::string& name, const T& t); - - void set_attribute_value(size_t i, IfcUtil::IfcBaseClass* p); - void set_attribute_value(const std::string& name, IfcUtil::IfcBaseClass* p); - - void unset_attribute_value(size_t i); - - AttributeValue get_attribute_value(size_t index) const; - - uint32_t identity() const { return identity_; } - - uint32_t id() const { return id_; } - - void toString(std::ostream&, bool upper = false) const; - - typedef aggregate_of_instance list; -}; - -class IFC_PARSE_API IfcBaseEntity : public IfcBaseClass { - public: - IfcBaseEntity(IfcEntityInstanceData&& data); - - IfcBaseEntity(size_t n) - : IfcBaseClass(IfcEntityInstanceData(in_memory_attribute_storage(n))) - {} - - virtual const IfcParse::declaration& declaration() const = 0; - - AttributeValue get(const std::string& name) const; - - template - T get_value(const std::string& name) const; - - template - T get_value(const std::string& name, const T& default_value) const; - - boost::shared_ptr get_inverse(const std::string& name) const; - - unsigned set_id(const boost::optional& i); - - void populate_derived(); -}; - -class IFC_PARSE_API IfcLateBoundEntity : public IfcBaseEntity { -private: - const IfcParse::declaration* decl_; - -public: - IfcLateBoundEntity(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) : IfcBaseEntity(std::move(data)), - decl_(decl) {} - - virtual const IfcParse::declaration& declaration() const { - return *decl_; - } -}; - -// TODO: Investigate whether these should be template classes instead -class IFC_PARSE_API IfcBaseType : public IfcBaseClass { - public: - IfcBaseType(IfcEntityInstanceData&& data)\ - : IfcBaseClass(std::move(data)) - {} - - IfcBaseType() - : IfcBaseClass(IfcEntityInstanceData(in_memory_attribute_storage(1))) - {} - - virtual const IfcParse::declaration& declaration() const = 0; -}; - -} // namespace IfcUtil - -namespace IfcUtil { -template -T IfcBaseEntity::get_value(const std::string& name) const { - auto attr = get(name); - return (T) attr; -} - -template -T IfcBaseEntity::get_value(const std::string& name, const T& default_value) const { - auto attr = get(name); - if (attr.isNull()) { - return default_value; - } - return (T) attr; -} - -} // namespace IfcUtil - -template -typename U::list::ptr aggregate_of_instance::as() { - typename U::list::ptr result(new typename U::list); - for (it i = begin(); i != end(); ++i) { - if ((*i)->template as()) { - result->push((*i)->template as()); - } - } - return result; -} - -template -typename aggregate_of_aggregate_of::ptr aggregate_of_aggregate_of_instance::as() { - typename aggregate_of_aggregate_of::ptr result(new aggregate_of_aggregate_of); - for (outer_it outer = begin(); outer != end(); ++outer) { - const std::vector& from = *outer; - typename std::vector to; - for (inner_it inner = from.begin(); inner != from.end(); ++inner) { - if ((*inner)->template as()) { - to.push_back((*inner)->template as()); - } - } - result->push(to); - } - return result; -} - -#endif diff --git a/src/ifcparse/IfcEntityInstanceData.cpp b/src/ifcparse/IfcEntityInstanceData.cpp index e87c429545..ac340d67fb 100644 --- a/src/ifcparse/IfcEntityInstanceData.cpp +++ b/src/ifcparse/IfcEntityInstanceData.cpp @@ -1,5 +1,5 @@ -#include "IfcEntityInstanceData.h" -#include "IfcBaseClass.h" +#include "InstanceData.h" +#include "express.h" #include "IfcFile.h" // @todo is size() still needed? @@ -24,9 +24,9 @@ public: int operator()(const std::vector& i) const { return (int)i.size(); } int operator()(const std::vector>& i) const { return (int)i.size(); } int operator()(const EnumerationReference& /*i*/) const { return -1; } - int operator()(const IfcUtil::IfcBaseClass* const& /*i*/) const { return -1; } - int operator()(const aggregate_of_instance::ptr& i) const { return i->size(); } - int operator()(const aggregate_of_aggregate_of_instance::ptr& i) const { return i->size(); } + int operator()(const express::Base& /*i*/) const { return -1; } + int operator()(const std::vector& i) const { return (int)i.size(); } + int operator()(const std::vector>& i) const { return (int)i.size(); } }; namespace { @@ -43,7 +43,7 @@ namespace { if constexpr ( // the following types cannot be directly deserialized from rocksdb, but need to be constructed !std::is_same_v && - !std::is_same_v>, IfcUtil::IfcBaseClass>) + !std::is_same_v, express::Base>) { std::string str; array_.db_ptr->db->Get(rocksdb::ReadOptions{}, @@ -54,7 +54,7 @@ namespace { } else { static_assert( std::is_same_v || - std::is_same_v>, IfcUtil::IfcBaseClass>, + std::is_same_v, express::Base>, "RocksDB deserialization must be specialized for this EnumerationReference and IfcBaseClass*" ); } @@ -185,10 +185,10 @@ AttributeValue::operator boost::dynamic_bitset<>() const return dispatch_get_>(array_, storage_model_, instance_name_, entity_or_type_, index_); } -AttributeValue::operator IfcUtil::IfcBaseClass* () const +AttributeValue::operator express::Base () const { if (storage_model_ == 0) { - return dispatch_get_(array_, storage_model_, instance_name_, entity_or_type_, index_); + return dispatch_get_(array_, storage_model_, instance_name_, entity_or_type_, index_); } #ifdef IFOPSH_WITH_ROCKSDB else { @@ -233,9 +233,9 @@ AttributeValue::operator std::vector>() const return dispatch_get_>>(array_, storage_model_, instance_name_, entity_or_type_, index_); } -AttributeValue::operator boost::shared_ptr() const +AttributeValue::operator std::vector() const { - return dispatch_get_>(array_, storage_model_, instance_name_, entity_or_type_, index_); + return dispatch_get_>(array_, storage_model_, instance_name_, entity_or_type_, index_); } AttributeValue::operator std::vector>() const @@ -248,9 +248,9 @@ AttributeValue::operator std::vector>() const return dispatch_get_>>(array_, storage_model_, instance_name_, entity_or_type_, index_); } -AttributeValue::operator boost::shared_ptr() const +AttributeValue::operator std::vector>() const { - return dispatch_get_>(array_, storage_model_, instance_name_, entity_or_type_, index_); + return dispatch_get_>>(array_, storage_model_, instance_name_, entity_or_type_, index_); } bool AttributeValue::isNull() const @@ -271,15 +271,15 @@ IfcUtil::ArgumentType AttributeValue::type() const #ifdef IFOPSH_WITH_ROCKSDB -bool impl::serialize(std::string& val, const IfcUtil::IfcBaseClass* t) +bool impl::serialize(std::string& val, const express::Base& t) { auto s = sizeof(size_t); val.resize(s + 2); - val[0] = TypeEncoder::encode_type(); + val[0] = TypeEncoder::encode_type(); // 1 = entity - stored by id (entity name) // 2 = type - stored by identity (internal counter in class) - val[1] = t->declaration().as_entity() ? 'i' : 't'; - size_t iden = t->id() ? t->id() : t->identity(); + val[1] = t.declaration().as_entity() ? 'i' : 't'; + size_t iden = t.id() ? t.id() : t.identity(); memcpy(val.data() + 2, &iden, s); return true; } @@ -296,26 +296,26 @@ bool impl::serialize(std::string& val, const EnumerationReference& v) return true; } -bool impl::serialize(std::string& val, const aggregate_of_instance::ptr& t) +bool impl::serialize(std::string& val, const std::vector& t) { // no attempt at alignment - val.resize(t->size() * (sizeof(size_t) + 1) + 1); - val[0] = TypeEncoder::encode_type(); + val.resize(t.size() * (sizeof(size_t) + 1) + 1); + val[0] = TypeEncoder::encode_type>(); char* ptr = val.data() + 1; - for (auto it = t->begin(); it != t->end(); ++it) { - *ptr = (*it)->declaration().as_entity() ? 'i' : 't'; + for (auto& inst : t) { + *ptr = inst.declaration().as_entity() ? 'i' : 't'; ptr++; - size_t iden = (*it)->id() ? (*it)->id() : (*it)->identity(); + size_t iden = inst.id() ? inst.id() : inst.identity(); memcpy(ptr, &iden, sizeof(size_t)); ptr += sizeof(size_t); } return true; } -bool impl::serialize(std::string& val, const aggregate_of_aggregate_of_instance::ptr& t) +bool impl::serialize(std::string& val, const std::vector>& t) { std::ostringstream oss; - oss.put(TypeEncoder::encode_type()); + oss.put(TypeEncoder::encode_type>>()); auto write_size = [&oss](size_t sz) { std::string size_str; @@ -326,15 +326,15 @@ bool impl::serialize(std::string& val, const aggregate_of_aggregate_of_instance: // write_size(t->size()); - for (auto it = t->begin(); it != t->end(); ++it) { + for (auto& inner : t) { // size of inner aggregate - write_size(it->size() * 9); + write_size(inner.size() * 9); // values - for (auto jt = it->begin(); jt != it->end(); ++jt) { - char c = (*jt)->declaration().as_entity() ? 'i' : 't'; + for (auto& inst : inner) { + char c = inst.declaration().as_entity() ? 'i' : 't'; oss.put(c); - size_t iden = (*jt)->id() ? (*jt)->id() : (*jt)->identity(); + size_t iden = inst.id() ? inst.id() : inst.identity(); std::string iden_str; iden_str.resize(sizeof(size_t)); memcpy(iden_str.data(), &iden, sizeof(size_t)); @@ -416,8 +416,7 @@ bool impl::deserialize(IfcParse::impl::rocks_db_file_storage*, const std::string return true; } -bool impl::deserialize(IfcParse::impl::rocks_db_file_storage* storage, const std::string& val, aggregate_of_instance::ptr& t) { - t.reset(new aggregate_of_instance); +bool impl::deserialize(IfcParse::impl::rocks_db_file_storage* storage, const std::string& val, std::vector& t) { auto n = (val.size() - 1) / (sizeof(size_t) + 1); for (int i = 0; i < n; ++i) { auto ptr = val.data() + 1 + (sizeof(size_t) + 1) * i; @@ -426,9 +425,9 @@ bool impl::deserialize(IfcParse::impl::rocks_db_file_storage* storage, const std size_t v; memcpy(&v, ptr, sizeof(size_t)); if (tt == 'i') { - t->push(storage->assert_existance(v, IfcParse::impl::rocks_db_file_storage::entityinstance_ref)); + t.push_back(storage->assert_existance(v, IfcParse::impl::rocks_db_file_storage::entityinstance_ref)); } else if (tt == 't') { - t->push(storage->assert_existance(v, IfcParse::impl::rocks_db_file_storage::typedecl_ref)); + t.push_back(storage->assert_existance(v, IfcParse::impl::rocks_db_file_storage::typedecl_ref)); } else { return false; } @@ -436,8 +435,7 @@ bool impl::deserialize(IfcParse::impl::rocks_db_file_storage* storage, const std return true; } -bool impl::deserialize(IfcParse::impl::rocks_db_file_storage* storage, const std::string& val, aggregate_of_aggregate_of_instance::ptr& t) { - t.reset(new aggregate_of_aggregate_of_instance); +bool impl::deserialize(IfcParse::impl::rocks_db_file_storage* storage, const std::string& val, std::vector>& t) { char const* ptr = val.data() + 1; // size_t outer_size; @@ -453,7 +451,7 @@ bool impl::deserialize(IfcParse::impl::rocks_db_file_storage* storage, const std return false; } - std::vector inner; + auto& inner = t.emplace_back(); inner.reserve(inner_size); for (size_t i = 0; i < inner_size; ++i) { @@ -470,8 +468,6 @@ bool impl::deserialize(IfcParse::impl::rocks_db_file_storage* storage, const std return false; } } - - t->push(inner); } return true; } @@ -518,15 +514,15 @@ template IFC_PARSE_API void rocks_db_attribute_storage::set(void* storag template IFC_PARSE_API void rocks_db_attribute_storage::set(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, const std::string& value); template IFC_PARSE_API void rocks_db_attribute_storage::set>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, const boost::dynamic_bitset<>& value); template IFC_PARSE_API void rocks_db_attribute_storage::set(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, const EnumerationReference& value); -template IFC_PARSE_API void rocks_db_attribute_storage::set(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, IfcUtil::IfcBaseClass* const& value); +template IFC_PARSE_API void rocks_db_attribute_storage::set(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, express::Base const& value); template IFC_PARSE_API void rocks_db_attribute_storage::set>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, const std::vector& value); template IFC_PARSE_API void rocks_db_attribute_storage::set>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, const std::vector& value); template IFC_PARSE_API void rocks_db_attribute_storage::set>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, const std::vector& value); template IFC_PARSE_API void rocks_db_attribute_storage::set>>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, const std::vector>& value); -template IFC_PARSE_API void rocks_db_attribute_storage::set(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, const aggregate_of_instance::ptr& value); +template IFC_PARSE_API void rocks_db_attribute_storage::set>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, const std::vector& value); template IFC_PARSE_API void rocks_db_attribute_storage::set>>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, const std::vector>& value); template IFC_PARSE_API void rocks_db_attribute_storage::set>>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, const std::vector>& value); -template IFC_PARSE_API void rocks_db_attribute_storage::set(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, const aggregate_of_aggregate_of_instance::ptr& value); +template IFC_PARSE_API void rocks_db_attribute_storage::set>>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, const std::vector>& value); // @todo why do these need to be included, but are not in BaseEntity::set()? template IFC_PARSE_API void rocks_db_attribute_storage::set(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index, const Derived& value); @@ -543,15 +539,15 @@ template IFC_PARSE_API bool rocks_db_attribute_storage::has(void* storag template IFC_PARSE_API bool rocks_db_attribute_storage::has(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; template IFC_PARSE_API bool rocks_db_attribute_storage::has>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; template IFC_PARSE_API bool rocks_db_attribute_storage::has(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; -template IFC_PARSE_API bool rocks_db_attribute_storage::has(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; +template IFC_PARSE_API bool rocks_db_attribute_storage::has(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; template IFC_PARSE_API bool rocks_db_attribute_storage::has>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; template IFC_PARSE_API bool rocks_db_attribute_storage::has>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; template IFC_PARSE_API bool rocks_db_attribute_storage::has>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; template IFC_PARSE_API bool rocks_db_attribute_storage::has>>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; -template IFC_PARSE_API bool rocks_db_attribute_storage::has(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; +template IFC_PARSE_API bool rocks_db_attribute_storage::has>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; template IFC_PARSE_API bool rocks_db_attribute_storage::has>>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; template IFC_PARSE_API bool rocks_db_attribute_storage::has>>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; -template IFC_PARSE_API bool rocks_db_attribute_storage::has(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; +template IFC_PARSE_API bool rocks_db_attribute_storage::has>>(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; // @todo why do these need to be included, but are not in BaseEntity::set()? template IFC_PARSE_API bool rocks_db_attribute_storage::has(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const; diff --git a/src/ifcparse/IfcFile.cpp b/src/ifcparse/IfcFile.cpp index 9e26b24442..243ded9473 100644 --- a/src/ifcparse/IfcFile.cpp +++ b/src/ifcparse/IfcFile.cpp @@ -30,7 +30,7 @@ void IfcParse::parse_context::push(Token t) { tokens_.push_back(t); } -void IfcParse::parse_context::push(IfcUtil::IfcBaseClass* inst) { +void IfcParse::parse_context::push(const express::Base& inst) { tokens_.push_back(inst); } @@ -56,7 +56,7 @@ namespace { constexpr bool is_type_in_variant_v = is_type_in_variant::value; template - void dispatch_token(boost::optional instance_id, int attribute_id, IfcParse::Token t, IfcParse::declaration* decl, Fn fn) { + void dispatch_token(std::optional instance_id, int attribute_id, IfcParse::Token t, IfcParse::declaration* decl, Fn fn) { if (t.type == IfcParse::Token_BINARY) { fn(IfcParse::TokenFunc::asBinary(t)); } else if (IfcParse::TokenFunc::isBool(t)) { @@ -89,7 +89,7 @@ namespace { } template - void construct_(boost::optional instance_id, int attribute_id, IfcParse::parse_context& p, const IfcParse::aggregation_type* aggr, Fn fn) { + void construct_(std::optional instance_id, int attribute_id, IfcParse::parse_context& p, const IfcParse::aggregation_type* aggr, Fn fn) { if (p.tokens_.empty()) { // @todo instead of ugly if-else we could also default initialize the respective // variant types below. @@ -104,13 +104,13 @@ namespace { } else if (aggr_type == IfcUtil::Argument_AGGREGATE_OF_BINARY) { fn(std::vector>{}); } else if (aggr_type == IfcUtil::Argument_AGGREGATE_OF_ENTITY_INSTANCE) { - fn(aggregate_of_instance::ptr(new aggregate_of_instance)); + fn(std::vector{}); } else if (aggr_type == IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_INT) { fn(std::vector>{}); } else if (aggr_type == IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_DOUBLE) { fn(std::vector>{}); } else if (aggr_type == IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_ENTITY_INSTANCE) { - fn(aggregate_of_aggregate_of_instance::ptr(new aggregate_of_aggregate_of_instance)); + fn(std::vector>{}); } } return; @@ -234,7 +234,7 @@ namespace { } } -IfcEntityInstanceData IfcParse::parse_context::construct(boost::optional name, unresolved_references& references_to_resolve, const IfcParse::declaration* decl, boost::optional expected_size, int resolve_reference_index, bool coerce_attribute_count) { +std::shared_ptr IfcParse::parse_context::construct(IfcParse::IfcFile* owner, std::optional name, unresolved_references& references_to_resolve, const IfcParse::declaration* decl, std::optional expected_size, int resolve_reference_index, bool coerce_attribute_count) { std::vector parameter_types; std::unique_ptr transient_named_type; @@ -267,7 +267,7 @@ IfcEntityInstanceData IfcParse::parse_context::construct(boost::optional } if (tokens_.empty()) { - return IfcEntityInstanceData(in_memory_attribute_storage(0)); + return std::make_shared(owner, decl, name.value_or(0), in_memory_attribute_storage(0)); } in_memory_attribute_storage storage(coerce_attribute_count @@ -336,7 +336,7 @@ IfcEntityInstanceData IfcParse::parse_context::construct(boost::optional } } - return IfcEntityInstanceData(std::move(storage)); + return std::make_shared(owner, decl, name.value_or(0), std::move(storage)); } /* @@ -358,17 +358,17 @@ IfcParse::impl::rocks_db_file_storage::rocksdb_types_iterator::value_type const& return storage_->file->schema()->declarations()[*read_id_()]; } -IfcUtil::IfcBaseClass* IfcParse::impl::rocks_db_file_storage::assert_existance(size_t number, instance_ref r) { +express::Base IfcParse::impl::rocks_db_file_storage::assert_existance(size_t number, instance_ref r) { #ifdef IFOPSH_WITH_ROCKSDB if (r == IfcParse::impl::rocks_db_file_storage::entityinstance_ref) { auto it = instance_cache_.find(number); if (it != instance_cache_.end()) { - return it->second; + return express::Base(it->second); } } else { auto it = type_instance_cache_.find(number); if (it != type_instance_cache_.end()) { - return it->second; + return express::Base(it->second); } } @@ -386,21 +386,13 @@ IfcUtil::IfcBaseClass* IfcParse::impl::rocks_db_file_storage::assert_existance(s if (is_entity != (r == entityinstance_ref)) { throw std::runtime_error("Incorrect reference"); } - IfcEntityInstanceData data(rocks_db_attribute_storage{}); - IfcUtil::IfcBaseClass* inst; - if (file->instantiate_typed_instances) { - inst = file->schema()->instantiate(decl, std::move(data)); - } else { - inst = new IfcUtil::IfcLateBoundEntity(decl, std::move(data)); - } - inst->id_ = number; - inst->file_ = file; + auto data = std::make_shared(file, decl, number, rocks_db_attribute_storage{}); if (r == IfcParse::impl::rocks_db_file_storage::entityinstance_ref) { - instance_cache_.insert({ number, inst }); + instance_cache_.insert({number, data}); } else { - type_instance_cache_.insert({ number, inst }); + type_instance_cache_.insert({number, data}); } - return inst; + return express::Base(data); } else { throw IfcException("Instance #" + boost::lexical_cast(number) + " not found"); } @@ -463,8 +455,8 @@ IfcParse::impl::rocks_db_file_storage::rocks_db_file_storage(const std::string& : file(ffile) , db(init_db(filepath, readonly)) // @todo streaming serializer does not populate the byguid map - , byguid_internal_(db, "g|") - , byguid_(&byguid_internal_, [this](size_t v) { return assert_existance(v, entityinstance_ref); }, [](IfcUtil::IfcBaseClass* v) { return v->identity(); }) + , byguid_internal_(db, "g|"), + byguid_(&byguid_internal_, [this](size_t v) { return assert_existance(v, entityinstance_ref); }, [](const express::Base& v) { return v.identity(); }) , instance_ids_(db, "i|") , instance_by_name_(&instance_ids_, [this](size_t v) { return assert_existance(v, entityinstance_ref); }) , bytype_(db, "t|") @@ -496,17 +488,17 @@ IfcParse::impl::rocks_db_file_storage::~rocks_db_file_storage() } -IfcUtil::IfcBaseClass* IfcParse::impl::rocks_db_file_storage::instance_by_id(int id) +express::Base IfcParse::impl::rocks_db_file_storage::instance_by_id(int id) { // @todo rename assert_existance() -> instance_by_id(); // - no cannot be done, because it needs to differentiate between entity instances and typedecls return assert_existance(id, entityinstance_ref); } -void IfcParse::impl::rocks_db_file_storage::process_deletion_inverse(IfcUtil::IfcBaseClass* inst) +void IfcParse::impl::rocks_db_file_storage::process_deletion_inverse(const express::Base& inst) { #ifdef IFOPSH_WITH_ROCKSDB - auto id = inst->id(); + auto id = inst.id(); { // compute next prefix that does not start with v|{id}| @@ -527,13 +519,12 @@ void IfcParse::impl::rocks_db_file_storage::process_deletion_inverse(IfcUtil::If // This is based on traversal which needs instances to still be contained in the map. // another option would be to keep byid intact for the remainder of this loop - aggregate_of_instance::ptr entity_attributes = traverse(inst, 1); - for (aggregate_of_instance::it it = entity_attributes->begin(); it != entity_attributes->end(); ++it) { - IfcUtil::IfcBaseClass* entity_attribute = *it; + auto entity_attributes = traverse(inst, 1); + for (auto& entity_attribute : entity_attributes) { if (entity_attribute == inst) { continue; } - const unsigned int name = entity_attribute->id(); + const unsigned int name = entity_attribute.id(); // Do not update inverses for simple types (which have id()==0 in IfcOpenShell). if (name != 0) { // Find instances entity -> other @@ -562,21 +553,16 @@ void IfcParse::impl::rocks_db_file_storage::process_deletion_inverse(IfcUtil::If #endif } -IfcUtil::IfcBaseClass* IfcParse::impl::in_memory_file_storage::instance_by_id(int id) +express::Base IfcParse::impl::in_memory_file_storage::instance_by_id(int id) { auto it = byid_.find(id); if (it == byid_.end()) { throw IfcException("Instance #" + boost::lexical_cast(id) + " not found"); } - return it->second; + return express::Base(it->second); } -IfcParse::IfcFile::~IfcFile() { - // @todo this does not make sense for rocksdb, because it would assert existance for the entire lazy model only to free the instances again - for (const auto& p : byid_) { - delete p.second; - } -} +IfcParse::IfcFile::~IfcFile() {} namespace { // Utility functions for path handling in order not to rely on C++17's std::filesystem @@ -666,27 +652,27 @@ void IfcParse::InstanceStreamer::bypassTypes(const std::set& type_n } -std::optional> IfcParse::InstanceStreamer::readInstance() { - std::optional> return_value; +std::optional>> IfcParse::InstanceStreamer::readInstance() { + std::optional>> return_value; if (header_ && yielded_header_instances_ < 3) { if (yielded_header_instances_ == 0) { return_value.emplace( 0, - &header_->file_description()->declaration(), - std::move(header_->file_description()->data()) + &header_->file_description().declaration(), + header_->file_description().data_weak().lock() ); } else if (yielded_header_instances_ == 1) { return_value.emplace( 0, - &header_->file_name()->declaration(), - std::move(header_->file_name()->data()) + &header_->file_name().declaration(), + header_->file_name().data_weak().lock() ); } else if (yielded_header_instances_ == 2) { return_value.emplace( 0, - &header_->file_schema()->declaration(), - std::move(header_->file_schema()->data()) + &header_->file_schema().declaration(), + header_->file_schema().data_weak().lock() ); } yielded_header_instances_ += 1; @@ -741,12 +727,12 @@ std::optionalas_entity() || decl->as_type_declaration()) { auto* inst = file->schema()->instantiate(decl, rocks_db_attribute_storage{}); // @todo maybe this needs to be set to file? In order to have a context (ie. rocksdb::db*) to write to? @@ -782,18 +770,44 @@ IfcUtil::IfcBaseClass* IfcParse::impl::rocks_db_file_storage::create(const IfcPa } else { throw std::runtime_error("Requires and entity or type declaration"); } + */ } -IfcUtil::IfcBaseClass* IfcParse::impl::in_memory_file_storage::create(const IfcParse::declaration* decl) { - IfcUtil::IfcBaseClass* inst = nullptr; - if (auto* ent = decl->as_entity()) { - inst = file->schema()->instantiate(decl, in_memory_attribute_storage(ent->attribute_count())); - } else if (decl->as_type_declaration() != nullptr) { - inst = file->schema()->instantiate(decl, in_memory_attribute_storage(1)); - } else { +express::Base IfcParse::impl::in_memory_file_storage::create(const IfcParse::declaration* decl, int id) { + auto instance_name = id == -1 ? (int)file->FreshId() : id; + if (decl->as_entity() == nullptr && decl->as_type_declaration() == nullptr) { throw std::runtime_error("Requires and entity or type declaration"); } - // file_ should be nullptr in order not to bypass addEntity() behaviour of registration in maps - inst->file_ = nullptr; - return file->addEntity(inst); + auto ptr = byid_.insert({instance_name, std::make_shared(file, decl, instance_name, decl->as_entity() ? in_memory_attribute_storage(decl->as_entity()->attribute_count()) : in_memory_attribute_storage(1))}).first; + express::Base inst(ptr->second); + // @todo addEntity should only be used for copying behaviour now, not during creation + file->addEntity(inst); + + return inst; } + +express::Base IfcParse::IfcFile::create(const IfcParse::declaration* decl, int id) { + if (id != -1) { + bool id_already_exists = false; + try { + if (check_existance_before_adding) { + instance_by_id(id); + id_already_exists = true; + } + } catch (...) { + } + if (id_already_exists) { + throw IfcParse::IfcException("An instance with id " + boost::lexical_cast(id) + " is already part of this file"); + } + } + + return std::visit([&](auto& m) -> express::Base { + if constexpr (std::is_same_v, impl::in_memory_file_storage> || + std::is_same_v, impl::rocks_db_file_storage>) { + return m.create(decl, id); + } else { + return express::Base{}; + } + }, storage_); +} + diff --git a/src/ifcparse/IfcFile.h b/src/ifcparse/IfcFile.h index 96685a88ee..0785bcd8f2 100644 --- a/src/ifcparse/IfcFile.h +++ b/src/ifcparse/IfcFile.h @@ -102,6 +102,7 @@ private: std::vector bypassed_instances_; public: + IfcParse::IfcFile* owner = nullptr; bool coerce_attribute_count = true; operator bool() const { @@ -133,7 +134,7 @@ private: return storage_.byref_excl_; } - std::vector> stealInstances() { + std::vector> stealInstances() { return storage_.steal_instances(); } @@ -161,7 +162,7 @@ private: delete header_; } - std::optional> readInstance(); + std::optional>> readInstance(); }; class uninitialized_tag {}; @@ -171,7 +172,7 @@ class uninitialized_tag {}; /// The file takes ownership of instances added to this file and deletes them when the file is deleted. class IFC_PARSE_API IfcFile { private: - typedef std::map entity_entity_map_t; + typedef std::map entity_entity_map_t; // @todo determine the constness of things (probably needs to be all const, we don't want to overwrite) // @todo we have variant_iterator and MapVariant, we probably need to retain only one? @@ -189,7 +190,6 @@ public: bool check_existance_before_adding = true; bool calculate_unit_factors = true; - bool instantiate_typed_instances = true; // @todo temporarily public for header storage_t storage_; @@ -206,7 +206,7 @@ public: unsigned int max_id_; - IfcSpfHeader _header; + std::unique_ptr header_; void setDefaultHeaderValues(); @@ -219,7 +219,7 @@ public: batch_deletion_ids_t; batch_deletion_ids_t batch_deletion_ids_; bool batch_mode_ = false; - void process_deletion_(IfcUtil::IfcBaseClass* entity); + void process_deletion_(const express::Base& entity); public: #ifdef USE_MMAP @@ -300,56 +300,58 @@ public: /// NOTE: This also returns subtypes of the requested type, for example: /// IfcWall will also return IfcWallStandardCase entities template - typename T::list::ptr instances_by_type() { - aggregate_of_instance::ptr untyped_list = instances_by_type(&T::Class()); - if (untyped_list) { - return untyped_list->as(); + typename std::vector instances_by_type() { + std::vector untyped_list = instances_by_type(&T::Class()); + std::vector return_value; + for (auto& untyped : untyped_list) { + return_value.push_back(untyped.as()); } - return typename T::list::ptr(new typename T::list); + return return_value; } template - typename T::list::ptr instances_by_type_excl_subtypes() { - aggregate_of_instance::ptr untyped_list = instances_by_type_excl_subtypes(&T::Class()); - if (untyped_list) { - return untyped_list->as(); + typename std::vector instances_by_type_excl_subtypes() { + std::vector untyped_list = instances_by_type_excl_subtypes(&T::Class()); + std::vector return_value; + for (auto& untyped : untyped_list) { + return_value.push_back(untyped.as()); } - return typename T::list::ptr(new typename T::list); + return return_value; } /// Returns all entities in the file that match the positional argument. /// NOTE: This also returns subtypes of the requested type, for example: /// IfcWall will also return IfcWallStandardCase entities - aggregate_of_instance::ptr instances_by_type(const IfcParse::declaration*); + std::vector instances_by_type(const IfcParse::declaration*); /// Returns all entities in the file that match the positional argument. - aggregate_of_instance::ptr instances_by_type_excl_subtypes(const IfcParse::declaration*); + std::vector instances_by_type_excl_subtypes(const IfcParse::declaration*); /// Returns all entities in the file that match the positional argument. /// NOTE: This also returns subtypes of the requested type, for example: /// IfcWall will also return IfcWallStandardCase entities - aggregate_of_instance::ptr instances_by_type(const std::string& type); + std::vector instances_by_type(const std::string& type); /// Returns all entities in the file that match the positional argument. - aggregate_of_instance::ptr instances_by_type_excl_subtypes(const std::string& type); + std::vector instances_by_type_excl_subtypes(const std::string& type); /// Returns all entities in the file that reference the id - aggregate_of_instance::ptr instances_by_reference(int id); + std::vector instances_by_reference(int id); /// Returns the entity with the specified id - IfcUtil::IfcBaseClass* instance_by_id(int id); + express::Base instance_by_id(int id); /// Returns the entity with the specified GlobalId - IfcUtil::IfcBaseClass* instance_by_guid(const std::string& guid); + express::Base instance_by_guid(const std::string& guid); /// Performs a depth-first traversal, returning all entity instance /// attributes as a flat list. NB: includes the root instance specified /// in the first function argument. - static aggregate_of_instance::ptr traverse(IfcUtil::IfcBaseClass* instance, int max_level = -1); + static std::vector traverse(const express::Base& instance, int max_level = -1); /// Same as traverse() but maintains topological order by using a /// breadth-first search - static aggregate_of_instance::ptr traverse_breadth_first(IfcUtil::IfcBaseClass* instance, int max_level = -1); + static std::vector traverse_breadth_first(const express::Base& instance, int max_level = -1); /// Get the attribute indices corresponding to the list of entity instances /// returned by getInverse(). @@ -360,7 +362,7 @@ public: return getInverse(instance_id, &T::Class(), attribute_index)->template as(); } - aggregate_of_instance::ptr getInverse(int instance_id, const IfcParse::declaration* type, int attribute_index); + std::vector getInverse(int instance_id, const IfcParse::declaration* type, int attribute_index); size_t getTotalInverses(int instance_id); @@ -372,8 +374,7 @@ public: void recalculate_id_counter(); - IfcUtil::IfcBaseClass* addEntity(IfcUtil::IfcBaseClass* entity, int id = -1); - void addEntities(aggregate_of_instance::ptr entities); + express::Base addEntity(const express::Base& entity); /// Removes entity instance from file and unsets references. /// @@ -384,54 +385,36 @@ public: /// IfcUtil::IfcBaseClass *const inst = *it; /// model->removeEntity(inst); /// } - void removeEntity(IfcUtil::IfcBaseClass* entity); + void removeEntity(const express::Base& entity); - const IfcSpfHeader& header() const { return _header; } - IfcSpfHeader& header() { return _header; } + const IfcSpfHeader& header() const { return *header_; } + IfcSpfHeader& header() { return *header_; } static std::string createTimestamp(); const IfcParse::schema_definition* schema() const; - std::pair getUnit(const std::string& unit_type); + std::pair getUnit(const std::string& unit_type); void build_inverses(); void register_inverse(unsigned, const IfcParse::entity* from_entity, int inst_id, int attribute_index); - void unregister_inverse(unsigned, const IfcParse::entity* from_entity, IfcUtil::IfcBaseClass*, int attribute_index); + void unregister_inverse(unsigned, const IfcParse::entity* from_entity, const express::Base&, int attribute_index); entity_instance_by_guid_t internal_guid_map() { return byguid_; }; - void add_type_ref(IfcUtil::IfcBaseClass* new_entity); - void remove_type_ref(IfcUtil::IfcBaseClass* new_entity); - void process_deletion_inverse(IfcUtil::IfcBaseClass* inst); + void add_type_ref(const express::Base& new_entity); + void remove_type_ref(const express::Base& new_entity); + void process_deletion_inverse(const express::Base& inst); - void build_inverses_(IfcUtil::IfcBaseClass*); + void build_inverses_(const express::Base&); template - T* create() { - return std::visit([](auto& m) -> T* { - if constexpr (std::is_same_v, impl::in_memory_file_storage> || - std::is_same_v, impl::rocks_db_file_storage>) - { - return m.template create(); - } else { - return nullptr; - } - }, storage_); + T create(int id=-1) { + return create(&T::Class(), id).template as(); } - IfcUtil::IfcBaseClass* create(const IfcParse::declaration* decl) { - return std::visit([decl](auto& m) -> IfcUtil::IfcBaseClass* { - if constexpr (std::is_same_v, impl::in_memory_file_storage> || - std::is_same_v, impl::rocks_db_file_storage>) - { - return m.create(decl); - } else { - return nullptr; - } - }, storage_); - } + express::Base create(const IfcParse::declaration* decl, int id = -1); void batch() { batch_mode_ = true; @@ -441,10 +424,6 @@ public: void reset_identity_cache(); }; -#ifdef WITH_IFCXML -IFC_PARSE_API IfcFile* parse_ifcxml(const std::string& filename); -#endif - namespace impl { // Trick to have a dependent static assertion template inline constexpr bool dependent_false_v = false; @@ -453,8 +432,9 @@ namespace impl { } // namespace IfcParse template -T* IfcParse::impl::in_memory_file_storage::create() { - IfcUtil::IfcBaseClass* inst = nullptr; +T IfcParse::impl::in_memory_file_storage::create(int id) { + express::Base inst; + // T::Class() yadaya, id or freshid() I though I changed this elsewhere already if constexpr (std::is_same_v>, IfcParse::entity>) { inst = new T(in_memory_attribute_storage(T::Class().attribute_count())); } else if constexpr (std::is_same_v>, IfcParse::type_declaration>) { @@ -466,8 +446,10 @@ T* IfcParse::impl::in_memory_file_storage::create() { return file->addEntity(inst)->as(); } +#ifdef IFOPSH_WITH_ROCKSDB + template -T* IfcParse::impl::rocks_db_file_storage::create() { +T IfcParse::impl::rocks_db_file_storage::create(int id) { if constexpr (std::is_same_v>, IfcParse::entity> || std::is_same_v>, IfcParse::type_declaration>) { auto* inst = new T(rocks_db_attribute_storage{}); inst->file_ = file; @@ -477,6 +459,8 @@ T* IfcParse::impl::rocks_db_file_storage::create() { } } +#endif + namespace std { template <> struct iterator_traits { diff --git a/src/ifcparse/IfcHierarchyHelper.cpp b/src/ifcparse/IfcHierarchyHelper.cpp index ff42b120f2..5119c91e81 100644 --- a/src/ifcparse/IfcHierarchyHelper.cpp +++ b/src/ifcparse/IfcHierarchyHelper.cpp @@ -32,28 +32,31 @@ using namespace std::string_literals; template -typename Schema::IfcAxis2Placement3D* IfcHierarchyHelper::addPlacement3d( +typename Schema::IfcAxis2Placement3D IfcHierarchyHelper::addPlacement3d( double ox, double oy, double oz, double zx, double zy, double zz, double xx, double xy, double xz) { - typename Schema::IfcDirection* x = addTriplet(xx, xy, xz); - typename Schema::IfcDirection* z = addTriplet(zx, zy, zz); - typename Schema::IfcCartesianPoint* o = addTriplet(ox, oy, oz); - typename Schema::IfcAxis2Placement3D* p3d = new typename Schema::IfcAxis2Placement3D(o, z, x); - addEntity(p3d); + auto x = addTriplet(xx, xy, xz); + auto z = addTriplet(zx, zy, zz); + auto o = addTriplet(ox, oy, oz); + auto p3d = create(); + p3d.setLocation(o); + p3d.setAxis(z); + p3d.setRefDirection(x); return p3d; } template -typename Schema::IfcAxis2Placement2D* IfcHierarchyHelper::addPlacement2d( +typename Schema::IfcAxis2Placement2D IfcHierarchyHelper::addPlacement2d( double ox, double oy, double xx, double xy) { - typename Schema::IfcDirection* x = addDoublet(xx, xy); - typename Schema::IfcCartesianPoint* o = addDoublet(ox, oy); - typename Schema::IfcAxis2Placement2D* p2d = new typename Schema::IfcAxis2Placement2D(o, x); - addEntity(p2d); + auto x = addDoublet(xx, xy); + auto o = addDoublet(ox, oy); + auto p2d = create(); + p2d.setLocation(o); + p2d.setRefDirection(x); return p2d; } template -typename Schema::IfcLocalPlacement* IfcHierarchyHelper::addLocalPlacement(typename Schema::IfcObjectPlacement* parent, +typename Schema::IfcLocalPlacement IfcHierarchyHelper::addLocalPlacement(typename Schema::IfcObjectPlacement parent, double ox, double oy, double oz, @@ -63,110 +66,110 @@ typename Schema::IfcLocalPlacement* IfcHierarchyHelper::addLocalPlacemen double xx, double xy, double xz) { - typename Schema::IfcLocalPlacement* local_placement = new typename Schema::IfcLocalPlacement(parent, - addPlacement3d(ox, oy, oz, zx, zy, zz, xx, xy, xz)); - - addEntity(local_placement); + auto local_placement = create(); + if (parent) { + local_placement.setPlacementRelTo(parent); + } + local_placement.setRelativePlacement(addPlacement3d(ox, oy, oz, zx, zy, zz, xx, xy, xz)); return local_placement; } template -typename Schema::IfcOwnerHistory* IfcHierarchyHelper::addOwnerHistory() { - typename Schema::IfcPerson* person = new typename Schema::IfcPerson(boost::none, boost::none, std::string(""), boost::none, boost::none, boost::none, boost::none, boost::none); +typename Schema::IfcOwnerHistory IfcHierarchyHelper::addOwnerHistory() { + typename Schema::IfcPerson person = create(); + person.setIdentification(""); - typename Schema::IfcOrganization* organization = new typename Schema::IfcOrganization(boost::none, - "IfcOpenShell", - boost::none, - boost::none, - boost::none); + auto organization = create(); + organization.setName("IfcOpenShell"); - typename Schema::IfcPersonAndOrganization* person_and_org = new typename Schema::IfcPersonAndOrganization(person, organization, boost::none); - typename Schema::IfcApplication* application = new typename Schema::IfcApplication(organization, - IFCOPENSHELL_VERSION, - "IfcOpenShell", - "IfcOpenShell"); + auto person_and_org = create(); + person_and_org.setThePerson(person); + person_and_org.setTheOrganization(organization); + + auto application = create(); + application.setApplicationDeveloper(organization); + application.setVersion(IFCOPENSHELL_VERSION); + application.setApplicationFullName("IfcOpenShell"); + application.setApplicationIdentifier("IfcOpenShell"); int timestamp = (int)time(0); - typename Schema::IfcOwnerHistory* owner_hist = new typename Schema::IfcOwnerHistory(person_and_org, - application, - boost::none, - Schema::IfcChangeActionEnum::IfcChangeAction_ADDED, - timestamp, - person_and_org, - application, - timestamp); - - addEntity(person); - addEntity(organization); - addEntity(person_and_org); - addEntity(application); - addEntity(owner_hist); - + auto owner_hist = create(); + owner_hist.setOwningUser(person_and_org); + owner_hist.setOwningApplication(application); + owner_hist.setChangeAction(Schema::IfcChangeActionEnum::IfcChangeAction_ADDED); + owner_hist.setLastModifiedDate(timestamp); + owner_hist.setLastModifyingUser(person_and_org); + owner_hist.setLastModifyingApplication(application); + owner_hist.setCreationDate(timestamp); + return owner_hist; } template -typename Schema::IfcProject* IfcHierarchyHelper::addProject(typename Schema::IfcOwnerHistory* owner_hist) { - typename Schema::IfcRepresentationContext::list::ptr rep_contexts(new typename Schema::IfcRepresentationContext::list); +typename Schema::IfcProject IfcHierarchyHelper::addProject(typename Schema::IfcOwnerHistory owner_hist) { + std::vector rep_contexts; - typename Schema::IfcUnit::list::ptr units(new typename Schema::IfcUnit::list); - typename Schema::IfcDimensionalExponents* dimexp = new typename Schema::IfcDimensionalExponents(0, 0, 0, 0, 0, 0, 0); - typename Schema::IfcSIUnit* unit1 = new typename Schema::IfcSIUnit(Schema::IfcUnitEnum::IfcUnit_LENGTHUNIT, - Schema::IfcSIPrefix::IfcSIPrefix_MILLI, - Schema::IfcSIUnitName::IfcSIUnitName_METRE); - typename Schema::IfcSIUnit* unit2a = new typename Schema::IfcSIUnit(Schema::IfcUnitEnum::IfcUnit_PLANEANGLEUNIT, - boost::none, - Schema::IfcSIUnitName::IfcSIUnitName_RADIAN); - typename Schema::IfcMeasureWithUnit* unit2b = new typename Schema::IfcMeasureWithUnit( - new typename Schema::IfcPlaneAngleMeasure(0.017453293), unit2a); - typename Schema::IfcConversionBasedUnit* unit2 = new typename Schema::IfcConversionBasedUnit(dimexp, - Schema::IfcUnitEnum::IfcUnit_PLANEANGLEUNIT, - "Degrees", - unit2b); + auto dimexp = create(); + dimexp.setLengthExponent(0); + dimexp.setMassExponent(0); + dimexp.setTimeExponent(0); + dimexp.setElectricCurrentExponent(0); + dimexp.setThermodynamicTemperatureExponent(0); + dimexp.setAmountOfSubstanceExponent(0); + dimexp.setLuminousIntensityExponent(0); - units->push(unit1); - units->push(unit2); + auto unit1 = create(); + unit1.setUnitType(Schema::IfcUnitEnum::IfcUnit_LENGTHUNIT); + unit1.setPrefix(Schema::IfcSIPrefix::IfcSIPrefix_MILLI); + unit1.setName(Schema::IfcSIUnitName::IfcSIUnitName_METRE); - typename Schema::IfcUnitAssignment* unit_assignment = new typename Schema::IfcUnitAssignment(units); + auto unit2a = create(); + unit2a.setUnitType(Schema::IfcUnitEnum::IfcUnit_PLANEANGLEUNIT); + unit2a.setName(Schema::IfcSIUnitName::IfcSIUnitName_RADIAN); - typename Schema::IfcProject* project = new typename Schema::IfcProject(IfcParse::IfcGlobalId(), - owner_hist, - boost::none, - boost::none, - boost::none, - boost::none, - boost::none, - rep_contexts, - unit_assignment); + auto unit2b = create(); + auto measure = create(); + measure.set_attribute_value(0, 0.01745329251); + unit2b.setValueComponent(measure); + unit2b.setUnitComponent(unit2a); - addEntity(dimexp); - addEntity(unit1); - addEntity(unit2a); - addEntity(unit2b); - addEntity(unit2); - addEntity(unit_assignment); - addEntity(project); + auto unit2 = create(); + unit2.setDimensions(dimexp); + unit2.setUnitType(Schema::IfcUnitEnum::IfcUnit_PLANEANGLEUNIT); + unit2.setName("Degrees"); + unit2.setConversionFactor(unit2b); + + std::vector units = {unit1, unit2}; + auto unit_assignment = create(); + unit_assignment.setUnits(units); + + auto project = create(); + project.setGlobalId(IfcParse::IfcGlobalId()); + project.setOwnerHistory(owner_hist ? owner_hist : addOwnerHistory()); + project.setRepresentationContexts(rep_contexts); + project.setUnitsInContext(unit_assignment); return project; } template -void IfcHierarchyHelper::relatePlacements(typename Schema::IfcProduct* parent, typename Schema::IfcProduct* product) { - typename Schema::IfcObjectPlacement* place = product->ObjectPlacement(); - if (place && place->declaration().is(Schema::IfcLocalPlacement::Class())) { - typename Schema::IfcLocalPlacement* local_place = (typename Schema::IfcLocalPlacement*)place; - if (parent->ObjectPlacement()) { - if (local_place != parent->ObjectPlacement()) { - local_place->setPlacementRelTo(parent->ObjectPlacement()); - } else { - Logger::Notice("Placement cannot be relative to self"); +void IfcHierarchyHelper::relatePlacements(typename Schema::IfcProduct parent, typename Schema::IfcProduct product) { + typename Schema::IfcObjectPlacement place = product.ObjectPlacement(); + if (place) { + if (auto local_place = place.as()) { + if (parent.ObjectPlacement()) { + if (local_place != parent.ObjectPlacement()) { + local_place.setPlacementRelTo(parent.ObjectPlacement()); + } else { + Logger::Notice("Placement cannot be relative to self"); + } } } } } template -typename Schema::IfcSite* IfcHierarchyHelper::addSite(typename Schema::IfcProject* proj, typename Schema::IfcOwnerHistory* owner_hist) { +typename Schema::IfcSite IfcHierarchyHelper::addSite(typename Schema::IfcProject proj, typename Schema::IfcOwnerHistory owner_hist) { if (!owner_hist) { owner_hist = getSingle(); } @@ -180,28 +183,18 @@ typename Schema::IfcSite* IfcHierarchyHelper::addSite(typename Schema::I proj = addProject(owner_hist); } - typename Schema::IfcSite* site = new typename Schema::IfcSite(IfcParse::IfcGlobalId(), - owner_hist, - boost::none, - boost::none, - boost::none, - addLocalPlacement(), - 0, - boost::none, - Schema::IfcElementCompositionEnum::IfcElementComposition_ELEMENT, - boost::none, - boost::none, - boost::none, - boost::none, - 0); + auto site = create(); + site.setGlobalId(IfcParse::IfcGlobalId()); + site.setOwnerHistory(owner_hist); + site.setObjectPlacement(addLocalPlacement()); + site.setCompositionType(Schema::IfcElementCompositionEnum::IfcElementComposition_ELEMENT); - addEntity(site); addRelatedObject(proj, site, owner_hist); return site; } template -typename Schema::IfcBuilding* IfcHierarchyHelper::addBuilding(typename Schema::IfcSite* site, typename Schema::IfcOwnerHistory* owner_hist) { +typename Schema::IfcBuilding IfcHierarchyHelper::addBuilding(typename Schema::IfcSite site, typename Schema::IfcOwnerHistory owner_hist) { if (!owner_hist) { owner_hist = getSingle(); } @@ -212,22 +205,15 @@ typename Schema::IfcBuilding* IfcHierarchyHelper::addBuilding(typename S site = getSingle(); } if (!site) { - site = addSite(0, owner_hist); + site = addSite(typename Schema::IfcProject{}, owner_hist); } - typename Schema::IfcBuilding* building = new typename Schema::IfcBuilding(IfcParse::IfcGlobalId(), - owner_hist, - boost::none, - boost::none, - boost::none, - addLocalPlacement(), - 0, - boost::none, - Schema::IfcElementCompositionEnum::IfcElementComposition_ELEMENT, - boost::none, - boost::none, - 0); - addEntity(building); + auto building = create(); + building.setGlobalId(IfcParse::IfcGlobalId()); + building.setOwnerHistory(owner_hist); + building.setObjectPlacement(addLocalPlacement()); + building.setCompositionType(Schema::IfcElementCompositionEnum::IfcElementComposition_ELEMENT); + addRelatedObject(site, building, owner_hist); relatePlacements(site, building); @@ -235,8 +221,8 @@ typename Schema::IfcBuilding* IfcHierarchyHelper::addBuilding(typename S } template -typename Schema::IfcBuildingStorey* IfcHierarchyHelper::addBuildingStorey(typename Schema::IfcBuilding* building, - typename Schema::IfcOwnerHistory* owner_hist) { +typename Schema::IfcBuildingStorey IfcHierarchyHelper::addBuildingStorey(typename Schema::IfcBuilding building, + typename Schema::IfcOwnerHistory owner_hist) { if (!owner_hist) { owner_hist = getSingle(); } @@ -247,20 +233,15 @@ typename Schema::IfcBuildingStorey* IfcHierarchyHelper::addBuildingStore building = getSingle(); } if (!building) { - building = addBuilding(0, owner_hist); + building = addBuilding(typename Schema::IfcSite{}, owner_hist); } - typename Schema::IfcBuildingStorey* storey = new typename Schema::IfcBuildingStorey(IfcParse::IfcGlobalId(), - owner_hist, - boost::none, - boost::none, - boost::none, - addLocalPlacement(), - 0, - boost::none, - Schema::IfcElementCompositionEnum::IfcElementComposition_ELEMENT, - boost::none); - addEntity(storey); + auto storey = create(); + storey.setGlobalId(IfcParse::IfcGlobalId()); + storey.setOwnerHistory(owner_hist); + storey.setObjectPlacement(addLocalPlacement()); + storey.setCompositionType(Schema::IfcElementCompositionEnum::IfcElementComposition_ELEMENT); + addRelatedObject(building, storey, owner_hist); relatePlacements(building, storey); @@ -268,9 +249,9 @@ typename Schema::IfcBuildingStorey* IfcHierarchyHelper::addBuildingStore } template -typename Schema::IfcBuildingStorey* IfcHierarchyHelper::addBuildingProduct(typename Schema::IfcProduct* product, - typename Schema::IfcBuildingStorey* storey, - typename Schema::IfcOwnerHistory* owner_hist) { +typename Schema::IfcBuildingStorey IfcHierarchyHelper::addBuildingProduct(typename Schema::IfcProduct product, + typename Schema::IfcBuildingStorey storey, + typename Schema::IfcOwnerHistory owner_hist) { if (!owner_hist) { owner_hist = getSingle(); } @@ -281,12 +262,11 @@ typename Schema::IfcBuildingStorey* IfcHierarchyHelper::addBuildingProdu storey = getSingle(); } if (!storey) { - storey = addBuildingStorey(0, owner_hist); + storey = addBuildingStorey(typename Schema::IfcBuilding{}, owner_hist); } - addEntity(product); // CV-2x3-158: Don't add decompositions directly to a building storey - const bool is_decomposition = product->Decomposes()->size() > 0; + const bool is_decomposition = !product.Decomposes().empty(); if (!is_decomposition) { addRelatedObject(storey, product, owner_hist); @@ -296,763 +276,781 @@ typename Schema::IfcBuildingStorey* IfcHierarchyHelper::addBuildingProdu } template -void IfcHierarchyHelper::addExtrudedPolyline(typename Schema::IfcShapeRepresentation* rep, +void IfcHierarchyHelper::addExtrudedPolyline(typename Schema::IfcShapeRepresentation rep, const std::vector>& points, double h, - typename Schema::IfcAxis2Placement2D* /*place1*/, - typename Schema::IfcAxis2Placement3D* place2, - typename Schema::IfcDirection* dir, - typename Schema::IfcRepresentationContext* /*context*/) { - typename Schema::IfcCartesianPoint::list::ptr cartesian_points(new typename Schema::IfcCartesianPoint::list); - for (std::vector>::const_iterator i = points.begin(); i != points.end(); ++i) { - cartesian_points->push(addDoublet(i->first, i->second)); + typename Schema::IfcAxis2Placement2D /*place1*/, + typename Schema::IfcAxis2Placement3D place2, + typename Schema::IfcDirection dir, + typename Schema::IfcRepresentationContext /*context*/) +{ + std::vector cartesian_points; + for (auto& i : points) { + cartesian_points.push_back(addDoublet(i.first, i.second)); } - if (cartesian_points->size()) { - cartesian_points->push(*cartesian_points->begin()); + if (!cartesian_points.empty()) { + cartesian_points.push_back(cartesian_points.front()); } - typename Schema::IfcPolyline* line = new typename Schema::IfcPolyline(cartesian_points); - typename Schema::IfcArbitraryClosedProfileDef* profile = new typename Schema::IfcArbitraryClosedProfileDef( - Schema::IfcProfileTypeEnum::IfcProfileType_AREA, boost::none, line); - typename Schema::IfcExtrudedAreaSolid* solid = new typename Schema::IfcExtrudedAreaSolid( - profile, place2 ? place2 : addPlacement3d(), dir ? dir : addTriplet(0, 0, 1), h); + auto line = create(); + line.setPoints(cartesian_points); - typename Schema::IfcRepresentationItem::list::ptr items = rep->Items(); - items->push(solid); - rep->setItems(items); + auto profile = create(); + profile.setProfileType(Schema::IfcProfileTypeEnum::IfcProfileType_AREA); + profile.setOuterCurve(line); - addEntity(line); - addEntity(profile); - addEntity(solid); + auto solid = create(); + solid.setSweptArea(profile); + solid.setPosition(place2 ? place2 : addPlacement3d()); + solid.setExtrudedDirection(dir ? dir : addTriplet(0, 0, 1)); + + // @nb this overwrites, not appends + rep.setItems(std::vector{solid}); } template -typename Schema::IfcProductDefinitionShape* IfcHierarchyHelper::addExtrudedPolyline(const std::vector>& points, +typename Schema::IfcProductDefinitionShape IfcHierarchyHelper::addExtrudedPolyline(const std::vector>& points, double h, - typename Schema::IfcAxis2Placement2D* place, - typename Schema::IfcAxis2Placement3D* place2, - typename Schema::IfcDirection* dir, - typename Schema::IfcRepresentationContext* context) { - typename Schema::IfcRepresentation::list::ptr reps(new typename Schema::IfcRepresentation::list); - typename Schema::IfcRepresentationItem::list::ptr items(new typename Schema::IfcRepresentationItem::list); - typename Schema::IfcShapeRepresentation* rep = new typename Schema::IfcShapeRepresentation(context - ? context - : getRepresentationContext("Model"), - std::string("Body"), - std::string("SweptSolid"), - items); - reps->push(rep); - typename Schema::IfcProductDefinitionShape* shape = new typename Schema::IfcProductDefinitionShape(boost::none, boost::none, reps); - addEntity(rep); - addEntity(shape); + typename Schema::IfcAxis2Placement2D place, + typename Schema::IfcAxis2Placement3D place2, + typename Schema::IfcDirection dir, + typename Schema::IfcRepresentationContext context) { + auto rep = create(); + rep.setContextOfItems(context ? context : getRepresentationContext("Model")); + rep.setRepresentationIdentifier(std::string("Body")); + rep.setRepresentationType(std::string("SweptSolid")); + rep.setItems(std::vector{}); + + auto shape = create(); + shape.setRepresentations(std::vector{rep}); addExtrudedPolyline(rep, points, h, place, place2, dir, context); return shape; } template -void IfcHierarchyHelper::addBox(typename Schema::IfcShapeRepresentation* rep, +void IfcHierarchyHelper::addBox(typename Schema::IfcShapeRepresentation rep, double w, double d, double h, - typename Schema::IfcAxis2Placement2D* place, - typename Schema::IfcAxis2Placement3D* place2, - typename Schema::IfcDirection* dir, - typename Schema::IfcRepresentationContext* context) { - if (false) { // TODO What's this? - typename Schema::IfcRectangleProfileDef* profile = new typename Schema::IfcRectangleProfileDef( - Schema::IfcProfileTypeEnum::IfcProfileType_AREA, boost::none, place ? place : addPlacement2d(), w, d); - typename Schema::IfcExtrudedAreaSolid* solid = new typename Schema::IfcExtrudedAreaSolid(profile, - place2 ? place2 : addPlacement3d(), - dir ? dir : addTriplet(0, 0, 1), - h); - - addEntity(profile); - addEntity(solid); - typename Schema::IfcRepresentationItem::list::ptr items = rep->Items(); - items->push(solid); - rep->setItems(items); - } else { - std::vector> points; - points.push_back(std::make_pair(-w / 2, -d / 2)); - points.push_back(std::make_pair(w / 2, -d / 2)); - points.push_back(std::make_pair(w / 2, d / 2)); - points.push_back(std::make_pair(-w / 2, d / 2)); - // The call to addExtrudedPolyline() closes the polyline - addExtrudedPolyline(rep, points, h, place, place2, dir, context); - } + typename Schema::IfcAxis2Placement2D place, + typename Schema::IfcAxis2Placement3D place2, + typename Schema::IfcDirection dir, + typename Schema::IfcRepresentationContext context) +{ + std::vector> points; + points.push_back(std::make_pair(-w / 2, -d / 2)); + points.push_back(std::make_pair(w / 2, -d / 2)); + points.push_back(std::make_pair(w / 2, d / 2)); + points.push_back(std::make_pair(-w / 2, d / 2)); + // The call to addExtrudedPolyline() closes the polyline + addExtrudedPolyline(rep, points, h, place, place2, dir, context); } template -void IfcHierarchyHelper::addAxis(typename Schema::IfcShapeRepresentation* rep, double l, typename Schema::IfcRepresentationContext* /*context*/) { - typename Schema::IfcCartesianPoint* p1 = addDoublet(-l / 2., 0.); - typename Schema::IfcCartesianPoint* p2 = addDoublet(+l / 2., 0.); - typename Schema::IfcCartesianPoint::list::ptr pts(new typename Schema::IfcCartesianPoint::list); - pts->push(p1); - pts->push(p2); - typename Schema::IfcPolyline* poly = new typename Schema::IfcPolyline(pts); - addEntity(poly); +void IfcHierarchyHelper::addAxis( + typename Schema::IfcShapeRepresentation rep, + double l, + typename Schema::IfcRepresentationContext /*context*/) +{ + auto p1 = addDoublet(-l / 2., 0.); + auto p2 = addDoublet(+l / 2., 0.); + std::vector pts{p1, p2}; - typename Schema::IfcRepresentationItem::list::ptr items = rep->Items(); - items->push(poly); - rep->setItems(items); + auto poly = create(); + poly.setPoints(pts); + + auto items = rep.Items(); + items.push_back(poly); + rep.setItems(items); } template -typename Schema::IfcProductDefinitionShape* IfcHierarchyHelper::addBox(double w, +typename Schema::IfcProductDefinitionShape IfcHierarchyHelper::addBox(double w, double d, double h, - typename Schema::IfcAxis2Placement2D* place, - typename Schema::IfcAxis2Placement3D* place2, - typename Schema::IfcDirection* dir, - typename Schema::IfcRepresentationContext* context) { - typename Schema::IfcRepresentation::list::ptr reps(new typename Schema::IfcRepresentation::list); - typename Schema::IfcRepresentationItem::list::ptr items(new typename Schema::IfcRepresentationItem::list); - typename Schema::IfcShapeRepresentation* rep = new typename Schema::IfcShapeRepresentation( - context ? context : getRepresentationContext("Model"), std::string("Body"), std::string("SweptSolid"), items); - reps->push(rep); - typename Schema::IfcProductDefinitionShape* shape = new typename Schema::IfcProductDefinitionShape(boost::none, boost::none, reps); - addEntity(rep); - addEntity(shape); + typename Schema::IfcAxis2Placement2D place, + typename Schema::IfcAxis2Placement3D place2, + typename Schema::IfcDirection dir, + typename Schema::IfcRepresentationContext context) { + typename Schema::IfcShapeRepresentation rep = create(); + rep.setContextOfItems(context ? context : getRepresentationContext("Model")); + rep.setRepresentationIdentifier(std::string("Body")); + rep.setRepresentationType(std::string("SweptSolid")); + rep.setItems(std::vector{}); + + auto shape = create(); + shape.setRepresentations(std::vector{rep}); + addBox(rep, w, d, h, place, place2, dir, context); return shape; } template -typename Schema::IfcProductDefinitionShape* IfcHierarchyHelper::addAxisBox(double w, double d, double h, typename Schema::IfcRepresentationContext* context) { - typename Schema::IfcRepresentation::list::ptr reps(new typename Schema::IfcRepresentation::list); - typename Schema::IfcRepresentationItem::list::ptr body_items(new typename Schema::IfcRepresentationItem::list); - typename Schema::IfcRepresentationItem::list::ptr axis_items(new typename Schema::IfcRepresentationItem::list); - typename Schema::IfcShapeRepresentation* body_rep = new typename Schema::IfcShapeRepresentation( - context ? context : getRepresentationContext("Model"), std::string("Body"), std::string("SweptSolid"), body_items); +typename Schema::IfcProductDefinitionShape IfcHierarchyHelper::addAxisBox( + double w, double d, double h, typename Schema::IfcRepresentationContext context) { + auto body_rep = create(); + body_rep.setContextOfItems(context ? context : getRepresentationContext("Model")); + body_rep.setRepresentationIdentifier(std::string("Body")); + body_rep.setRepresentationType(std::string("SweptSolid")); + body_rep.setItems(std::vector{}); - typename Schema::IfcShapeRepresentation* axis_rep = new typename Schema::IfcShapeRepresentation( - context ? context : getRepresentationContext("Plan"), std::string("Axis"), std::string("Curve2D"), axis_items); + auto axis_rep = create(); + axis_rep.setContextOfItems(context ? context : getRepresentationContext("Plan")); + axis_rep.setRepresentationIdentifier(std::string("Axis")); + axis_rep.setRepresentationType(std::string("Curve2D")); + axis_rep.setItems(std::vector{}); - reps->push(axis_rep); - reps->push(body_rep); + auto shape = create(); + shape.setRepresentations(std::vector{axis_rep, body_rep}); - typename Schema::IfcProductDefinitionShape* shape = new typename Schema::IfcProductDefinitionShape(boost::none, boost::none, reps); - addEntity(shape); - addEntity(body_rep); - addBox(body_rep, w, d, h, 0, 0, 0, context); - addEntity(axis_rep); + addBox(body_rep, w, d, h, typename Schema::IfcAxis2Placement2D{}, typename Schema::IfcAxis2Placement3D{}, typename Schema::IfcDirection{}, context); addAxis(axis_rep, w); return shape; } template -void IfcHierarchyHelper::clipRepresentation(typename Schema::IfcProductRepresentation* shape, - typename Schema::IfcAxis2Placement3D* place, +void IfcHierarchyHelper::clipRepresentation(typename Schema::IfcProductRepresentation shape, + typename Schema::IfcAxis2Placement3D place, bool agree) { - typename Schema::IfcRepresentation::list::ptr reps = shape->Representations(); - for (typename Schema::IfcRepresentation::list::it j = reps->begin(); j != reps->end(); ++j) { - clipRepresentation(*j, place, agree); + auto reps = shape.Representations(); + for (auto& rep : reps) { + clipRepresentation(rep, place, agree); } } template -void IfcHierarchyHelper::clipRepresentation(typename Schema::IfcRepresentation* rep, - typename Schema::IfcAxis2Placement3D* place, +void IfcHierarchyHelper::clipRepresentation(typename Schema::IfcRepresentation rep, + typename Schema::IfcAxis2Placement3D place, bool agree) { - if (!rep->RepresentationIdentifier() || *rep->RepresentationIdentifier() != "Body") { + if (!rep.RepresentationIdentifier() || *rep.RepresentationIdentifier() != "Body") { return; } - typename Schema::IfcPlane* plane = new typename Schema::IfcPlane(place); - typename Schema::IfcHalfSpaceSolid* half_space = new typename Schema::IfcHalfSpaceSolid(plane, agree); - addEntity(plane); - addEntity(half_space); - rep->setRepresentationType("Clipping"s); - typename Schema::IfcRepresentationItem::list::ptr items = rep->Items(); - typename Schema::IfcRepresentationItem::list::ptr new_items(new typename Schema::IfcRepresentationItem::list); - for (typename Schema::IfcRepresentationItem::list::it i = items->begin(); i != items->end(); ++i) { - auto item = dynamic_cast(*i); - if (item) { - typename Schema::IfcBooleanClippingResult* clip = new typename Schema::IfcBooleanClippingResult( - Schema::IfcBooleanOperator::IfcBooleanOperator_DIFFERENCE, item, half_space); - addEntity(clip); - new_items->push(clip); + + auto plane = create(); + plane.setPosition(place); + auto half_space = create(); + half_space.setBaseSurface(plane); + half_space.setAgreementFlag(agree); + + rep.setRepresentationType("Clipping"s); + auto items = rep.Items(); + decltype(items) new_items; + for (auto& item : items) { + if (auto bop = item.as()) { + auto clip = create(); + clip.setOperator(Schema::IfcBooleanOperator::IfcBooleanOperator_DIFFERENCE); + clip.setFirstOperand(bop); + clip.setSecondOperand(half_space); + new_items.push_back(clip); } } - rep->setItems(new_items); + rep.setItems(new_items); } template -typename Schema::IfcSurfaceStyle* getSurfaceStyle(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0) { - typename Schema::IfcColourRgb* colour = new typename Schema::IfcColourRgb(boost::none, r, g, b); - typename Schema::IfcSurfaceStyleRendering* rendering = a == 1.0 - ? new typename Schema::IfcSurfaceStyleRendering(colour, boost::none, 0, 0, 0, 0, 0, 0, Schema::IfcReflectanceMethodEnum::IfcReflectanceMethod_FLAT) - : new typename Schema::IfcSurfaceStyleRendering(colour, 1.0 - a, 0, 0, 0, 0, 0, 0, Schema::IfcReflectanceMethodEnum::IfcReflectanceMethod_FLAT); +typename Schema::IfcSurfaceStyle getSurfaceStyle(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0) { + auto colour = file.create(); + colour.setRed(r); + colour.setGreen(g); + colour.setBlue(b); - typename Schema::IfcSurfaceStyleElementSelect::list::ptr styles(new typename Schema::IfcSurfaceStyleElementSelect::list); - styles->push(rendering); - typename Schema::IfcSurfaceStyle* surface_style = new typename Schema::IfcSurfaceStyle( - boost::none, Schema::IfcSurfaceSide::IfcSurfaceSide_BOTH, styles); + auto rendering = file.create(); + rendering.setSurfaceColour(colour); + if (a != 1.0) { + rendering.setTransparency(1.0 - a); + } + rendering.setReflectanceMethod(Schema::IfcReflectanceMethodEnum::IfcReflectanceMethod_FLAT); - file.addEntity(colour); - file.addEntity(rendering); - file.addEntity(surface_style); + auto surface_style = file.create(); + surface_style.setSide(Schema::IfcSurfaceSide::IfcSurfaceSide_BOTH); + surface_style.setStyles(std::vector{rendering}); return surface_style; } template -typename Schema::IfcPresentationStyleAssignment* addStyleAssignment_2x3(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0) { +typename Schema::IfcPresentationStyleAssignment addStyleAssignment_2x3(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0) { auto surface_style = getSurfaceStyle(file, r, g, b, a); - typename Schema::IfcPresentationStyleSelect::list::ptr surface_styles(new typename Schema::IfcPresentationStyleSelect::list); - surface_styles->push(surface_style); - typename Schema::IfcPresentationStyleAssignment* style_assignment = - new typename Schema::IfcPresentationStyleAssignment(surface_styles); - file.addEntity(style_assignment); + auto style_assignment = file.create(); + style_assignment.setStyles(std::vector{surface_style}); return style_assignment; } template -typename Schema::IfcPresentationStyle* addStyleAssignment_4x3(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0) { +typename Schema::IfcPresentationStyle addStyleAssignment_4x3(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0) { return getSurfaceStyle(file, r, g, b, a); } template -typename Schema::IfcPresentationStyleAssignment* setSurfaceColour_2x3(IfcHierarchyHelper& file, typename Schema::IfcProductRepresentation* shape, double r, double g, double b, double a) { - typename Schema::IfcPresentationStyleAssignment* style_assignment = addStyleAssignment_2x3(file, r, g, b, a); +typename Schema::IfcPresentationStyleAssignment setSurfaceColour_2x3(IfcHierarchyHelper& file, typename Schema::IfcProductRepresentation shape, double r, double g, double b, double a) { + typename Schema::IfcPresentationStyleAssignment style_assignment = addStyleAssignment_2x3(file, r, g, b, a); setSurfaceColour_2x3(file, shape, style_assignment); return style_assignment; } template -typename Schema::IfcPresentationStyle* setSurfaceColour_4x3(IfcHierarchyHelper& file, typename Schema::IfcProductRepresentation* shape, double r, double g, double b, double a) { - typename Schema::IfcPresentationStyle* style_assignment = addStyleAssignment_4x3(file, r, g, b, a); +typename Schema::IfcPresentationStyle setSurfaceColour_4x3(IfcHierarchyHelper& file, typename Schema::IfcProductRepresentation shape, double r, double g, double b, double a) { + typename Schema::IfcPresentationStyle style_assignment = addStyleAssignment_4x3(file, r, g, b, a); setSurfaceColour_4x3(file, shape, style_assignment); return style_assignment; } template -typename Schema::IfcPresentationStyleAssignment* setSurfaceColour_2x3(IfcHierarchyHelper& file, typename Schema::IfcRepresentation* shape, double r, double g, double b, double a) { - typename Schema::IfcPresentationStyleAssignment* style_assignment = addStyleAssignment_2x3(file, r, g, b, a); +typename Schema::IfcPresentationStyleAssignment setSurfaceColour_2x3(IfcHierarchyHelper& file, typename Schema::IfcRepresentation shape, double r, double g, double b, double a) { + typename Schema::IfcPresentationStyleAssignment style_assignment = addStyleAssignment_2x3(file, r, g, b, a); setSurfaceColour_2x3(file, shape, style_assignment); return style_assignment; } template -typename Schema::IfcPresentationStyle* setSurfaceColour_4x3(IfcHierarchyHelper& file, typename Schema::IfcRepresentation* shape, double r, double g, double b, double a) { - typename Schema::IfcPresentationStyle* style_assignment = addStyleAssignment_4x3(file, r, g, b, a); +typename Schema::IfcPresentationStyle setSurfaceColour_4x3(IfcHierarchyHelper& file, typename Schema::IfcRepresentation shape, double r, double g, double b, double a) { + typename Schema::IfcPresentationStyle style_assignment = addStyleAssignment_4x3(file, r, g, b, a); setSurfaceColour_4x3(file, shape, style_assignment); return style_assignment; } template -void setSurfaceColour_2x3(IfcHierarchyHelper& file, typename Schema::IfcProductRepresentation* shape, typename Schema::IfcPresentationStyleAssignment* style_assignment) { - typename Schema::IfcRepresentation::list::ptr reps = shape->Representations(); - for (typename Schema::IfcRepresentation::list::it j = reps->begin(); j != reps->end(); ++j) { - setSurfaceColour_2x3(file, *j, style_assignment); +void setSurfaceColour_2x3(IfcHierarchyHelper& file, typename Schema::IfcProductRepresentation shape, typename Schema::IfcPresentationStyleAssignment style_assignment) { + auto reps = shape->Representations(); + for (auto& rep : reps) { + setSurfaceColour_2x3(file, rep, style_assignment); } } template -void setSurfaceColour_4x3(IfcHierarchyHelper& file, typename Schema::IfcProductRepresentation* shape, typename Schema::IfcPresentationStyle* style) { - typename Schema::IfcRepresentation::list::ptr reps = shape->Representations(); - for (typename Schema::IfcRepresentation::list::it j = reps->begin(); j != reps->end(); ++j) { - setSurfaceColour_4x3(file, *j, style); +void setSurfaceColour_4x3(IfcHierarchyHelper& file, typename Schema::IfcProductRepresentation shape, typename Schema::IfcPresentationStyle style) { + auto reps = shape.Representations(); + for (auto& rep : reps) { + setSurfaceColour_4x3(file, rep, style); } } #ifdef HAS_SCHEMA_2x3 -Ifc2x3::IfcStyledItem* create_styled_item(Ifc2x3::IfcRepresentationItem* item, Ifc2x3::IfcPresentationStyleAssignment* style_assignment) { - Ifc2x3::IfcPresentationStyleAssignment::list::ptr style_assignments(new Ifc2x3::IfcPresentationStyleAssignment::list); - style_assignments->push(style_assignment); - return new Ifc2x3::IfcStyledItem(item, style_assignments, boost::none); +Ifc2x3::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, Ifc2x3::IfcRepresentationItem item, Ifc2x3::IfcPresentationStyleAssignment style_assignment) { + auto sitem = file->create(); + sitem.setItem(item); + sitem.setStyles(std::vector{style_assignment}); + return sitem; } #endif #ifdef HAS_SCHEMA_4 -Ifc4::IfcStyledItem* create_styled_item(Ifc4::IfcRepresentationItem* item, Ifc4::IfcPresentationStyleAssignment* style_assignment) { - Ifc4::IfcStyleAssignmentSelect::list::ptr style_assignments(new Ifc4::IfcStyleAssignmentSelect::list); - style_assignments->push(style_assignment); - return new Ifc4::IfcStyledItem(item, style_assignments, boost::none); +Ifc4::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, Ifc4::IfcRepresentationItem item, Ifc4::IfcPresentationStyleAssignment style_assignment) { + auto sitem = file->create(); + sitem.setItem(item); + sitem.setStyles(std::vector{style_assignment}); + return sitem; } #endif #ifdef HAS_SCHEMA_4x1 -Ifc4x1::IfcStyledItem* create_styled_item(Ifc4x1::IfcRepresentationItem* item, Ifc4x1::IfcPresentationStyleAssignment* style_assignment) { - Ifc4x1::IfcStyleAssignmentSelect::list::ptr style_assignments(new Ifc4x1::IfcStyleAssignmentSelect::list); - style_assignments->push(style_assignment); - return new Ifc4x1::IfcStyledItem(item, style_assignments, boost::none); +Ifc4x1::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, Ifc4x1::IfcRepresentationItem item, Ifc4x1::IfcPresentationStyleAssignment style_assignment) { + auto sitem = file->create(); + sitem.setItem(item); + sitem.setStyles(std::vector{style_assignment}); + return sitem; } #endif #ifdef HAS_SCHEMA_4x2 -Ifc4x2::IfcStyledItem* create_styled_item(Ifc4x2::IfcRepresentationItem* item, Ifc4x2::IfcPresentationStyleAssignment* style_assignment) { - Ifc4x2::IfcStyleAssignmentSelect::list::ptr style_assignments(new Ifc4x2::IfcStyleAssignmentSelect::list); - style_assignments->push(style_assignment); - return new Ifc4x2::IfcStyledItem(item, style_assignments, boost::none); +Ifc4x2::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, Ifc4x2::IfcRepresentationItem item, Ifc4x2::IfcPresentationStyleAssignment style_assignment) { + auto sitem = file->create(); + sitem.setItem(item); + sitem.setStyles(std::vector{style_assignment}); + return sitem; } #endif #ifdef HAS_SCHEMA_4x3_rc1 -Ifc4x3_rc1::IfcStyledItem* create_styled_item(Ifc4x3_rc1::IfcRepresentationItem* item, Ifc4x3_rc1::IfcPresentationStyleAssignment* style_assignment) { - Ifc4x3_rc1::IfcStyleAssignmentSelect::list::ptr style_assignments(new Ifc4x3_rc1::IfcStyleAssignmentSelect::list); - style_assignments->push(style_assignment); - return new Ifc4x3_rc1::IfcStyledItem(item, style_assignments, boost::none); +Ifc4x3_rc1::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, Ifc4x3_rc1::IfcRepresentationItem item, Ifc4x3_rc1::IfcPresentationStyleAssignment style_assignment) { + auto sitem = file->create(); + sitem.setItem(item); + sitem.setStyles(std::vector{style_assignment}); + return sitem; } #endif #ifdef HAS_SCHEMA_4x3_rc2 -Ifc4x3_rc2::IfcStyledItem* create_styled_item(Ifc4x3_rc2::IfcRepresentationItem* item, Ifc4x3_rc2::IfcPresentationStyleAssignment* style_assignment) { - Ifc4x3_rc2::IfcStyleAssignmentSelect::list::ptr style_assignments(new Ifc4x3_rc2::IfcStyleAssignmentSelect::list); - style_assignments->push(style_assignment); - return new Ifc4x3_rc2::IfcStyledItem(item, style_assignments, boost::none); +Ifc4x3_rc2::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, Ifc4x3_rc2::IfcRepresentationItem item, Ifc4x3_rc2::IfcPresentationStyleAssignment style_assignment) { + auto sitem = file->create(); + sitem.setItem(item); + sitem.setStyles(std::vector{style_assignment}); + return sitem; } #endif #ifdef HAS_SCHEMA_4x3_rc3 -Ifc4x3_rc3::IfcStyledItem* create_styled_item(Ifc4x3_rc3::IfcRepresentationItem* item, Ifc4x3_rc3::IfcPresentationStyle* style) { - boost::shared_ptr> styles(new aggregate_of()); - styles->push(style); - return new Ifc4x3_rc3::IfcStyledItem(item, styles, boost::none); +Ifc4x3_rc3::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, Ifc4x3_rc3::IfcRepresentationItem item, Ifc4x3_rc3::IfcPresentationStyle style) { + auto sitem = file->create(); + sitem.setItem(item); + sitem.setStyles(std::vector{style}); + return sitem; } #endif #ifdef HAS_SCHEMA_4x3_rc4 -Ifc4x3_rc4::IfcStyledItem* create_styled_item(Ifc4x3_rc4::IfcRepresentationItem* item, Ifc4x3_rc4::IfcPresentationStyle* style) { - boost::shared_ptr> styles(new aggregate_of()); - styles->push(style); - return new Ifc4x3_rc4::IfcStyledItem(item, styles, boost::none); +Ifc4x3_rc4::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, Ifc4x3_rc4::IfcRepresentationItem item, Ifc4x3_rc4::IfcPresentationStyle style) { + auto sitem = file->create(); + sitem.setItem(item); + sitem.setStyles(std::vector{style}); + return sitem; } #endif #ifdef HAS_SCHEMA_4x3 -Ifc4x3::IfcStyledItem* create_styled_item(Ifc4x3::IfcRepresentationItem* item, Ifc4x3::IfcPresentationStyle* style) { - boost::shared_ptr> styles(new aggregate_of()); - styles->push(style); - return new Ifc4x3::IfcStyledItem(item, styles, boost::none); +Ifc4x3::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, Ifc4x3::IfcRepresentationItem item, Ifc4x3::IfcPresentationStyle style) { + auto sitem = file->create(); + sitem.setItem(item); + sitem.setStyles(std::vector{style}); + return sitem; } #endif #ifdef HAS_SCHEMA_4x3_tc1 -Ifc4x3_tc1::IfcStyledItem* create_styled_item(Ifc4x3_tc1::IfcRepresentationItem* item, Ifc4x3_tc1::IfcPresentationStyle* style) { - boost::shared_ptr> styles(new aggregate_of()); - styles->push(style); - return new Ifc4x3_tc1::IfcStyledItem(item, styles, boost::none); +Ifc4x3_tc1::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, Ifc4x3_tc1::IfcRepresentationItem item, Ifc4x3_tc1::IfcPresentationStyle style) { + auto sitem = file.crefile->createate(); + sitem.setItem(item); + sitem.setStyles(std::vector{style}); + return sitem; } #endif #ifdef HAS_SCHEMA_4x3_add1 -Ifc4x3_add1::IfcStyledItem* create_styled_item(Ifc4x3_add1::IfcRepresentationItem* item, Ifc4x3_add1::IfcPresentationStyle* style) { - boost::shared_ptr> styles(new aggregate_of()); - styles->push(style); - return new Ifc4x3_add1::IfcStyledItem(item, styles, boost::none); +Ifc4x3_add1::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, Ifc4x3_add1::IfcRepresentationItem item, Ifc4x3_add1::IfcPresentationStyle style) { + auto sitem = file->create(); + sitem.setItem(item); + sitem.setStyles(std::vector{style}); + return sitem; } #endif #ifdef HAS_SCHEMA_4x3_add2 -Ifc4x3_add2::IfcStyledItem* create_styled_item(Ifc4x3_add2::IfcRepresentationItem* item, Ifc4x3_add2::IfcPresentationStyle* style) { - boost::shared_ptr> styles(new aggregate_of()); - styles->push(style); - return new Ifc4x3_add2::IfcStyledItem(item, styles, boost::none); +Ifc4x3_add2::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, Ifc4x3_add2::IfcRepresentationItem item, Ifc4x3_add2::IfcPresentationStyle style) { + auto sitem = file->create(); + sitem.setItem(item); + sitem.setStyles(std::vector{style}); + return sitem; } #endif template -void setSurfaceColour_2x3(IfcHierarchyHelper& file, typename Schema::IfcRepresentation* rep, typename Schema::IfcPresentationStyleAssignment* style_assignment) { - typename Schema::IfcRepresentationItem::list::ptr items = rep->Items(); - for (typename Schema::IfcRepresentationItem::list::it i = items->begin(); i != items->end(); ++i) { - typename Schema::IfcRepresentationItem* item = *i; - typename Schema::IfcStyledItem* styled_item = create_styled_item(item, style_assignment); - file.addEntity(styled_item); +void setSurfaceColour_2x3(IfcHierarchyHelper& file, typename Schema::IfcRepresentation rep, typename Schema::IfcPresentationStyleAssignment style_assignment) { + auto items = rep.Items(); + for (auto& item : items) { + create_styled_item(&file, item, style_assignment); } } template -void setSurfaceColour_4x3(IfcHierarchyHelper& file, typename Schema::IfcRepresentation* rep, typename Schema::IfcPresentationStyle* style) { - typename Schema::IfcRepresentationItem::list::ptr items = rep->Items(); - for (typename Schema::IfcRepresentationItem::list::it i = items->begin(); i != items->end(); ++i) { - typename Schema::IfcRepresentationItem* item = *i; - typename Schema::IfcStyledItem* styled_item = create_styled_item(item, style); - file.addEntity(styled_item); +void setSurfaceColour_4x3(IfcHierarchyHelper& file, typename Schema::IfcRepresentation rep, typename Schema::IfcPresentationStyle style) { + // @todo is there still a difference here? + auto items = rep.Items(); + for (auto& item : items) { + create_styled_item(&file, item, style); } } #ifdef HAS_SCHEMA_2x3 -Ifc2x3::IfcPresentationStyleAssignment* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { +Ifc2x3::IfcPresentationStyleAssignment addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { return addStyleAssignment_2x3(file, r, g, b, a); } -Ifc2x3::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc2x3::IfcProductRepresentation* shape, double r, double g, double b, double a) { +Ifc2x3::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, Ifc2x3::IfcProductRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_2x3(file, shape, r, g, b, a); } -Ifc2x3::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc2x3::IfcRepresentation* shape, double r, double g, double b, double a) { +Ifc2x3::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, Ifc2x3::IfcRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_2x3(file, shape, r, g, b, a); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc2x3::IfcProductRepresentation* shape, Ifc2x3::IfcPresentationStyleAssignment* style_assignment) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc2x3::IfcProductRepresentation shape, Ifc2x3::IfcPresentationStyleAssignment style_assignment) { setSurfaceColour_2x3(file, shape, style_assignment); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc2x3::IfcRepresentation* shape, Ifc2x3::IfcPresentationStyleAssignment* style_assignment) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc2x3::IfcRepresentation shape, Ifc2x3::IfcPresentationStyleAssignment style_assignment) { setSurfaceColour_2x3(file, shape, style_assignment); } #endif #ifdef HAS_SCHEMA_4 -Ifc4::IfcPresentationStyleAssignment* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { +Ifc4::IfcPresentationStyleAssignment addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { return addStyleAssignment_2x3(file, r, g, b, a); } -Ifc4::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4::IfcProductRepresentation* shape, double r, double g, double b, double a) { +Ifc4::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, Ifc4::IfcProductRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_2x3(file, shape, r, g, b, a); } -Ifc4::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4::IfcRepresentation* shape, double r, double g, double b, double a) { +Ifc4::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, Ifc4::IfcRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_2x3(file, shape, r, g, b, a); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4::IfcProductRepresentation* shape, Ifc4::IfcPresentationStyleAssignment* style_assignment) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4::IfcProductRepresentation shape, Ifc4::IfcPresentationStyleAssignment style_assignment) { setSurfaceColour_2x3(file, shape, style_assignment); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4::IfcRepresentation* shape, Ifc4::IfcPresentationStyleAssignment* style_assignment) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4::IfcRepresentation shape, Ifc4::IfcPresentationStyleAssignment style_assignment) { setSurfaceColour_2x3(file, shape, style_assignment); } #endif #ifdef HAS_SCHEMA_4x1 -Ifc4x1::IfcPresentationStyleAssignment* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { +Ifc4x1::IfcPresentationStyleAssignment addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { return addStyleAssignment_2x3(file, r, g, b, a); } -Ifc4x1::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x1::IfcProductRepresentation* shape, double r, double g, double b, double a) { +Ifc4x1::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, Ifc4x1::IfcProductRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_2x3(file, shape, r, g, b, a); } -Ifc4x1::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x1::IfcRepresentation* shape, double r, double g, double b, double a) { +Ifc4x1::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, Ifc4x1::IfcRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_2x3(file, shape, r, g, b, a); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x1::IfcProductRepresentation* shape, Ifc4x1::IfcPresentationStyleAssignment* style_assignment) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x1::IfcProductRepresentation shape, Ifc4x1::IfcPresentationStyleAssignment style_assignment) { setSurfaceColour_2x3(file, shape, style_assignment); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x1::IfcRepresentation* shape, Ifc4x1::IfcPresentationStyleAssignment* style_assignment) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x1::IfcRepresentation shape, Ifc4x1::IfcPresentationStyleAssignment style_assignment) { setSurfaceColour_2x3(file, shape, style_assignment); } #endif #ifdef HAS_SCHEMA_4x2 -Ifc4x2::IfcPresentationStyleAssignment* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { +Ifc4x2::IfcPresentationStyleAssignment addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { return addStyleAssignment_2x3(file, r, g, b, a); } -Ifc4x2::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x2::IfcProductRepresentation* shape, double r, double g, double b, double a) { +Ifc4x2::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, Ifc4x2::IfcProductRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_2x3(file, shape, r, g, b, a); } -Ifc4x2::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x2::IfcRepresentation* shape, double r, double g, double b, double a) { +Ifc4x2::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, Ifc4x2::IfcRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_2x3(file, shape, r, g, b, a); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x2::IfcProductRepresentation* shape, Ifc4x2::IfcPresentationStyleAssignment* style_assignment) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x2::IfcProductRepresentation shape, Ifc4x2::IfcPresentationStyleAssignment style_assignment) { setSurfaceColour_2x3(file, shape, style_assignment); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x2::IfcRepresentation* shape, Ifc4x2::IfcPresentationStyleAssignment* style_assignment) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x2::IfcRepresentation shape, Ifc4x2::IfcPresentationStyleAssignment style_assignment) { setSurfaceColour_2x3(file, shape, style_assignment); } #endif #ifdef HAS_SCHEMA_4x3_rc1 -Ifc4x3_rc1::IfcPresentationStyleAssignment* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { +Ifc4x3_rc1::IfcPresentationStyleAssignment addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { return addStyleAssignment_2x3(file, r, g, b, a); } -Ifc4x3_rc1::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc1::IfcProductRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3_rc1::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc1::IfcProductRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_2x3(file, shape, r, g, b, a); } -Ifc4x3_rc1::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc1::IfcRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3_rc1::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc1::IfcRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_2x3(file, shape, r, g, b, a); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc1::IfcProductRepresentation* shape, Ifc4x3_rc1::IfcPresentationStyleAssignment* style_assignment) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc1::IfcProductRepresentation shape, Ifc4x3_rc1::IfcPresentationStyleAssignment style_assignment) { setSurfaceColour_2x3(file, shape, style_assignment); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc1::IfcRepresentation* shape, Ifc4x3_rc1::IfcPresentationStyleAssignment* style_assignment) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc1::IfcRepresentation shape, Ifc4x3_rc1::IfcPresentationStyleAssignment style_assignment) { setSurfaceColour_2x3(file, shape, style_assignment); } #endif #ifdef HAS_SCHEMA_4x3_rc2 -Ifc4x3_rc2::IfcPresentationStyleAssignment* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { +Ifc4x3_rc2::IfcPresentationStyleAssignment addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { return addStyleAssignment_2x3(file, r, g, b, a); } -Ifc4x3_rc2::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc2::IfcProductRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3_rc2::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc2::IfcProductRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_2x3(file, shape, r, g, b, a); } -Ifc4x3_rc2::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc2::IfcRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3_rc2::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc2::IfcRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_2x3(file, shape, r, g, b, a); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc2::IfcProductRepresentation* shape, Ifc4x3_rc2::IfcPresentationStyleAssignment* style_assignment) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc2::IfcProductRepresentation shape, Ifc4x3_rc2::IfcPresentationStyleAssignment style_assignment) { setSurfaceColour_2x3(file, shape, style_assignment); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc2::IfcRepresentation* shape, Ifc4x3_rc2::IfcPresentationStyleAssignment* style_assignment) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc2::IfcRepresentation shape, Ifc4x3_rc2::IfcPresentationStyleAssignment style_assignment) { setSurfaceColour_2x3(file, shape, style_assignment); } #endif #ifdef HAS_SCHEMA_4x3_rc3 -Ifc4x3_rc3::IfcPresentationStyle* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { +Ifc4x3_rc3::IfcPresentationStyle addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { return addStyleAssignment_4x3(file, r, g, b, a); } -Ifc4x3_rc3::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc3::IfcProductRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3_rc3::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc3::IfcProductRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_4x3(file, shape, r, g, b, a); } -Ifc4x3_rc3::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc3::IfcRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3_rc3::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc3::IfcRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_4x3(file, shape, r, g, b, a); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc3::IfcProductRepresentation* shape, Ifc4x3_rc3::IfcPresentationStyle* style) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc3::IfcProductRepresentation shape, Ifc4x3_rc3::IfcPresentationStyle style) { setSurfaceColour_4x3(file, shape, style); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc3::IfcRepresentation* shape, Ifc4x3_rc3::IfcPresentationStyle* style) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc3::IfcRepresentation shape, Ifc4x3_rc3::IfcPresentationStyle style) { setSurfaceColour_4x3(file, shape, style); } #endif #ifdef HAS_SCHEMA_4x3_rc4 -Ifc4x3_rc4::IfcPresentationStyle* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { +Ifc4x3_rc4::IfcPresentationStyle addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { return addStyleAssignment_4x3(file, r, g, b, a); } -Ifc4x3_rc4::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc4::IfcProductRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3_rc4::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc4::IfcProductRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_4x3(file, shape, r, g, b, a); } -Ifc4x3_rc4::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc4::IfcRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3_rc4::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc4::IfcRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_4x3(file, shape, r, g, b, a); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc4::IfcProductRepresentation* shape, Ifc4x3_rc4::IfcPresentationStyle* style) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc4::IfcProductRepresentation shape, Ifc4x3_rc4::IfcPresentationStyle style) { setSurfaceColour_4x3(file, shape, style); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc4::IfcRepresentation* shape, Ifc4x3_rc4::IfcPresentationStyle* style) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc4::IfcRepresentation shape, Ifc4x3_rc4::IfcPresentationStyle style) { setSurfaceColour_4x3(file, shape, style); } #endif #ifdef HAS_SCHEMA_4x3 -Ifc4x3::IfcPresentationStyle* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { +Ifc4x3::IfcPresentationStyle addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { return addStyleAssignment_4x3(file, r, g, b, a); } -Ifc4x3::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3::IfcProductRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3::IfcProductRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_4x3(file, shape, r, g, b, a); } -Ifc4x3::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3::IfcRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3::IfcRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_4x3(file, shape, r, g, b, a); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3::IfcProductRepresentation* shape, Ifc4x3::IfcPresentationStyle* style) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3::IfcProductRepresentation shape, Ifc4x3::IfcPresentationStyle style) { setSurfaceColour_4x3(file, shape, style); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3::IfcRepresentation* shape, Ifc4x3::IfcPresentationStyle* style) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3::IfcRepresentation shape, Ifc4x3::IfcPresentationStyle style) { setSurfaceColour_4x3(file, shape, style); } #endif #ifdef HAS_SCHEMA_4x3_tc1 -Ifc4x3_tc1::IfcPresentationStyle* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { +Ifc4x3_tc1::IfcPresentationStyle addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { return addStyleAssignment_4x3(file, r, g, b, a); } -Ifc4x3_tc1::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_tc1::IfcProductRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3_tc1::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_tc1::IfcProductRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_4x3(file, shape, r, g, b, a); } -Ifc4x3_tc1::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_tc1::IfcRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3_tc1::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_tc1::IfcRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_4x3(file, shape, r, g, b, a); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_tc1::IfcProductRepresentation* shape, Ifc4x3_tc1::IfcPresentationStyle* style) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_tc1::IfcProductRepresentation shape, Ifc4x3_tc1::IfcPresentationStyle style) { setSurfaceColour_4x3(file, shape, style); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_tc1::IfcRepresentation* shape, Ifc4x3_tc1::IfcPresentationStyle* style) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_tc1::IfcRepresentation shape, Ifc4x3_tc1::IfcPresentationStyle style) { setSurfaceColour_4x3(file, shape, style); } #endif #ifdef HAS_SCHEMA_4x3_add1 -Ifc4x3_add1::IfcPresentationStyle* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { +Ifc4x3_add1::IfcPresentationStyle addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { return addStyleAssignment_4x3(file, r, g, b, a); } -Ifc4x3_add1::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add1::IfcProductRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3_add1::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add1::IfcProductRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_4x3(file, shape, r, g, b, a); } -Ifc4x3_add1::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add1::IfcRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3_add1::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add1::IfcRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_4x3(file, shape, r, g, b, a); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add1::IfcProductRepresentation* shape, Ifc4x3_add1::IfcPresentationStyle* style) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add1::IfcProductRepresentation shape, Ifc4x3_add1::IfcPresentationStyle style) { setSurfaceColour_4x3(file, shape, style); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add1::IfcRepresentation* shape, Ifc4x3_add1::IfcPresentationStyle* style) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add1::IfcRepresentation shape, Ifc4x3_add1::IfcPresentationStyle style) { setSurfaceColour_4x3(file, shape, style); } #endif #ifdef HAS_SCHEMA_4x3_add2 -Ifc4x3_add2::IfcPresentationStyle* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { +Ifc4x3_add2::IfcPresentationStyle addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a) { return addStyleAssignment_4x3(file, r, g, b, a); } -Ifc4x3_add2::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add2::IfcProductRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3_add2::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add2::IfcProductRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_4x3(file, shape, r, g, b, a); } -Ifc4x3_add2::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add2::IfcRepresentation* shape, double r, double g, double b, double a) { +Ifc4x3_add2::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add2::IfcRepresentation shape, double r, double g, double b, double a) { return setSurfaceColour_4x3(file, shape, r, g, b, a); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add2::IfcProductRepresentation* shape, Ifc4x3_add2::IfcPresentationStyle* style) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add2::IfcProductRepresentation shape, Ifc4x3_add2::IfcPresentationStyle style) { setSurfaceColour_4x3(file, shape, style); } -void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add2::IfcRepresentation* shape, Ifc4x3_add2::IfcPresentationStyle* style) { +void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add2::IfcRepresentation shape, Ifc4x3_add2::IfcPresentationStyle style) { setSurfaceColour_4x3(file, shape, style); } #endif template -typename Schema::IfcProductDefinitionShape* IfcHierarchyHelper::addMappedItem( - typename Schema::IfcShapeRepresentation* rep, - typename Schema::IfcCartesianTransformationOperator3D* transform, - typename Schema::IfcProductDefinitionShape* def) { - typename Schema::IfcRepresentationMap::list::ptr maps = rep->RepresentationMap(); - typename Schema::IfcRepresentationMap* map; - if (maps->size() == 1) { - map = *maps->begin(); +typename Schema::IfcProductDefinitionShape IfcHierarchyHelper::addMappedItem( + typename Schema::IfcShapeRepresentation rep, + typename Schema::IfcCartesianTransformationOperator3D transform, + typename Schema::IfcProductDefinitionShape def) +{ + auto maps = rep.RepresentationMap(); + typename Schema::IfcRepresentationMap map; + if (maps.size() == 1) { + map = maps.front(); } else { - map = new typename Schema::IfcRepresentationMap(addPlacement3d(), rep); - addEntity(map); + map = create(); + map.setMappingOrigin(addPlacement3d()); + map.setMappedRepresentation(rep); } - typename Schema::IfcRepresentation::list::ptr representations(new typename Schema::IfcRepresentation::list); + std::vector representations; if (def) { - representations = def->Representations(); + representations = def.Representations(); } if (!transform) { - transform = new typename Schema::IfcCartesianTransformationOperator3D(0, 0, addTriplet(0, 0, 0), boost::none, 0); - addEntity(transform); + transform = create(); + transform.setLocalOrigin(addTriplet(0, 0, 0)); } - typename Schema::IfcMappedItem* item = new typename Schema::IfcMappedItem(map, transform); - typename Schema::IfcRepresentationItem::list::ptr items(new typename Schema::IfcRepresentationItem::list); - items->push(item); - typename Schema::IfcRepresentation* new_rep = new typename Schema::IfcShapeRepresentation(rep->ContextOfItems(), boost::none, std::string("MappedRepresentation"), items); - if (rep->RepresentationIdentifier()) { - new_rep->setRepresentationIdentifier(rep->RepresentationIdentifier()); + auto item = create(); + item.setMappingSource(map); + item.setMappingTarget(transform); + + auto new_rep = create(); + new_rep.setContextOfItems(rep.ContextOfItems()); + new_rep.setRepresentationType(std::string("MappedRepresentation")); + new_rep.setItems(std::vector{item}); + + if (rep.RepresentationIdentifier()) { + new_rep.setRepresentationIdentifier(rep.RepresentationIdentifier()); } - addEntity(item); - addEntity(new_rep); - representations->push(new_rep); + + representations.push_back(new_rep); + if (!def) { - def = new typename Schema::IfcProductDefinitionShape(boost::none, boost::none, representations); - addEntity(def); + def = create(); + def.setRepresentations(representations); } else { - def->setRepresentations(representations); + def.setRepresentations(representations); + } + + return def; +} + +template +typename Schema::IfcProductDefinitionShape IfcHierarchyHelper::addMappedItem( + std::vector& reps, + typename Schema::IfcCartesianTransformationOperator3D transform) +{ + typename Schema::IfcProductDefinitionShape def; + for (auto& r : reps) { + def = addMappedItem(r, transform, def); } return def; } template -typename Schema::IfcProductDefinitionShape* IfcHierarchyHelper::addMappedItem( - typename Schema::IfcShapeRepresentation::list::ptr reps, - typename Schema::IfcCartesianTransformationOperator3D* transform) { - typename Schema::IfcProductDefinitionShape* def = 0; - for (typename Schema::IfcShapeRepresentation::list::it it = reps->begin(); it != reps->end(); ++it) { - def = addMappedItem(*it, transform, def); - } - return def; -} - -template -typename Schema::IfcShapeRepresentation* IfcHierarchyHelper::addEmptyRepresentation(const std::string& repid, const std::string& reptype) { - typename Schema::IfcRepresentationItem::list::ptr items(new typename Schema::IfcRepresentationItem::list); - typename Schema::IfcShapeRepresentation* shape_rep = new typename Schema::IfcShapeRepresentation(getRepresentationContext(reptype == "Curve2D" ? "Plan" : "Model"), repid, reptype, items); +typename Schema::IfcShapeRepresentation IfcHierarchyHelper::addEmptyRepresentation(const std::string& repid, const std::string& reptype) { + auto shape_rep = create(); + shape_rep.setContextOfItems(getRepresentationContext(reptype == "Curve2D" ? "Plan" : "Model")); + shape_rep.setRepresentationIdentifier(repid); + shape_rep.setRepresentationType(reptype); + shape_rep.setItems(std::vector{}); addEntity(shape_rep); return shape_rep; } namespace { template -void push_back_to_maybe_optional(T& t, U* u) { - t->push(u); +void push_back_to_maybe_optional(T& t, const U& u) { + t.push_back(u); } // In IFC4 the IfcContext.RepresentationContexts has been made optional, so we need // some boiler plate to push back to a list that might be optional. template -void push_back_to_maybe_optional(boost::optional>& t, U* u) { +void push_back_to_maybe_optional(std::optional>& t, const U& u) { if (!t) { - t = boost::shared_ptr(new T); + t.emplace(); } - (*t)->push(u); + t->push_back(u); } } // namespace template -typename Schema::IfcGeometricRepresentationContext* IfcHierarchyHelper::getRepresentationContext(const std::string& s) { - typename std::map::const_iterator iter = contexts_.find(s); +typename Schema::IfcGeometricRepresentationContext IfcHierarchyHelper::getRepresentationContext(const std::string& s) { + auto iter = contexts_.find(s); if (iter != contexts_.end()) { return iter->second; } - typename Schema::IfcProject* project = getSingle(); + auto project = getSingle(); if (!project) { project = addProject(); } - auto project_contexts = project->RepresentationContexts(); - typename Schema::IfcGeometricRepresentationContext* context = new typename Schema::IfcGeometricRepresentationContext( - boost::none, s, 3, 1e-5, addPlacement3d(), addDoublet(0, 1)); - addEntity(context); - push_back_to_maybe_optional(project_contexts, context); + auto project_contexts = project.RepresentationContexts(); + auto context = create(); + context.setContextIdentifier(s); + context.setCoordinateSpaceDimension(3); + context.setPrecision(1.e-5); + context.setWorldCoordinateSystem(addPlacement3d()); + context.setTrueNorth(addDoublet(0, 1)); + + push_back_to_maybe_optional(project_contexts, context); + project.setRepresentationContexts(project_contexts); - project->setRepresentationContexts(project_contexts); return contexts_[s] = context; } template -typename Schema::IfcGeometricRepresentationSubContext* IfcHierarchyHelper::getRepresentationSubContext(const std::string& ident, const std::string& type) { +typename Schema::IfcGeometricRepresentationSubContext IfcHierarchyHelper::getRepresentationSubContext(const std::string& ident, const std::string& type) { auto geometric_representation_context = getRepresentationContext(type); // creates the representation context if it doesn't already exist // search for a subcontext that matches the ContextIdentifier - auto subcontexts = geometric_representation_context->HasSubContexts(); - typename Schema::IfcGeometricRepresentationSubContext* rep_subcontext = nullptr; - for (auto subcontext : *subcontexts) { - if (subcontext->ContextIdentifier().get_value_or("") == ident) { + auto subcontexts = geometric_representation_context.HasSubContexts(); + typename Schema::IfcGeometricRepresentationSubContext rep_subcontext; + for (auto subcontext : subcontexts) { + if (subcontext.ContextIdentifier().value_or("") == ident) { rep_subcontext = subcontext; break; // found it, break out of the loop } } - if (rep_subcontext == nullptr) { - // didn't find the subcontext, create it - rep_subcontext = new typename Schema::IfcGeometricRepresentationSubContext(ident, type, geometric_representation_context, boost::none, Schema::IfcGeometricProjectionEnum::IfcGeometricProjection_MODEL_VIEW, boost::none); - addEntity(rep_subcontext); + if (!rep_subcontext) { + // didn't find the subcontext, create it + rep_subcontext = create(); + rep_subcontext.setContextIdentifier(ident); + rep_subcontext.setContextType(type); + rep_subcontext.setParentContext(geometric_representation_context); + rep_subcontext.setTargetView(Schema::IfcGeometricProjectionEnum::IfcGeometricProjection_MODEL_VIEW); } return rep_subcontext; diff --git a/src/ifcparse/IfcHierarchyHelper.h b/src/ifcparse/IfcHierarchyHelper.h index 019cbf69c1..a1e74bbba0 100644 --- a/src/ifcparse/IfcHierarchyHelper.h +++ b/src/ifcparse/IfcHierarchyHelper.h @@ -76,287 +76,287 @@ namespace { #ifdef HAS_SCHEMA_2x3 -Ifc2x3::IfcObjectDefinition* get_parent_of_relation(Ifc2x3::IfcRelContainedInSpatialStructure* t) { - return t->RelatingStructure(); +Ifc2x3::IfcObjectDefinition get_parent_of_relation(const Ifc2x3::IfcRelContainedInSpatialStructure& t) { + return t.RelatingStructure(); } -aggregate_of_instance::ptr get_children_of_relation(Ifc2x3::IfcRelContainedInSpatialStructure* t) { - return t->RelatedElements()->generalize(); +std::vector get_children_of_relation(const Ifc2x3::IfcRelContainedInSpatialStructure& t) { + return cast_vector(t.RelatedElements()); } -aggregate_of_instance::ptr get_children_of_relation(Ifc2x3::IfcRelAggregates* t) { - return t->RelatedObjects()->generalize(); +std::vector get_children_of_relation(const Ifc2x3::IfcRelAggregates& t) { + return cast_vector(t.RelatedObjects()); } -void set_children_of_relation(Ifc2x3::IfcRelContainedInSpatialStructure* t, aggregate_of_instance::ptr& cs) { - t->setRelatedElements(cs->as()); +void set_children_of_relation(Ifc2x3::IfcRelContainedInSpatialStructure& t, std::vector& cs) { + t.setRelatedElements(cast_vector(cs)); } -void set_children_of_relation(Ifc2x3::IfcRelAggregates* t, aggregate_of_instance::ptr& cs) { - t->setRelatedObjects(cs->as()); +void set_children_of_relation(Ifc2x3::IfcRelAggregates& t, std::vector& cs) { + t.setRelatedObjects(cast_vector(cs)); } #endif #ifdef HAS_SCHEMA_4 -Ifc4::IfcObjectDefinition* get_parent_of_relation(Ifc4::IfcRelContainedInSpatialStructure* t) { - return t->RelatingStructure(); +Ifc4::IfcObjectDefinition get_parent_of_relation(const Ifc4::IfcRelContainedInSpatialStructure& t) { + return t.RelatingStructure(); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4::IfcRelContainedInSpatialStructure* t) { - return t->RelatedElements()->generalize(); +std::vector get_children_of_relation(const Ifc4::IfcRelContainedInSpatialStructure& t) { + return cast_vector(t.RelatedElements()); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4::IfcRelAggregates* t) { - return t->RelatedObjects()->generalize(); +std::vector get_children_of_relation(const Ifc4::IfcRelAggregates& t) { + return cast_vector(t.RelatedObjects()); } -void set_children_of_relation(Ifc4::IfcRelContainedInSpatialStructure* t, aggregate_of_instance::ptr& cs) { - t->setRelatedElements(cs->as()); +void set_children_of_relation(Ifc4::IfcRelContainedInSpatialStructure& t, std::vector& cs) { + t.setRelatedElements(cast_vector(cs)); } -void set_children_of_relation(Ifc4::IfcRelAggregates* t, aggregate_of_instance::ptr& cs) { - t->setRelatedObjects(cs->as()); +void set_children_of_relation(Ifc4::IfcRelAggregates& t, std::vector& cs) { + t.setRelatedObjects(cast_vector(cs)); } #endif #ifdef HAS_SCHEMA_4x1 -Ifc4x1::IfcObjectDefinition* get_parent_of_relation(Ifc4x1::IfcRelContainedInSpatialStructure* t) { - return t->RelatingStructure(); +Ifc4x1::IfcObjectDefinition get_parent_of_relation(const Ifc4x1::IfcRelContainedInSpatialStructure& t) { + return t.RelatingStructure(); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x1::IfcRelContainedInSpatialStructure* t) { - return t->RelatedElements()->generalize(); +std::vector get_children_of_relation(const Ifc4x1::IfcRelContainedInSpatialStructure& t) { + return cast_vector(t.RelatedElements()); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x1::IfcRelAggregates* t) { - return t->RelatedObjects()->generalize(); +std::vector get_children_of_relation(const Ifc4x1::IfcRelAggregates& t) { + return cast_vector(t.RelatedObjects()); } -void set_children_of_relation(Ifc4x1::IfcRelContainedInSpatialStructure* t, aggregate_of_instance::ptr& cs) { - t->setRelatedElements(cs->as()); +void set_children_of_relation(Ifc4x1::IfcRelContainedInSpatialStructure& t, std::vector& cs) { + t.setRelatedElements(cast_vector(cs)); } -void set_children_of_relation(Ifc4x1::IfcRelAggregates* t, aggregate_of_instance::ptr& cs) { - t->setRelatedObjects(cs->as()); +void set_children_of_relation(Ifc4x1::IfcRelAggregates& t, std::vector& cs) { + t.setRelatedObjects(cast_vector(cs)); } #endif #ifdef HAS_SCHEMA_4x2 -Ifc4x2::IfcObjectDefinition* get_parent_of_relation(Ifc4x2::IfcRelContainedInSpatialStructure* t) { - return t->RelatingStructure(); +Ifc4x2::IfcObjectDefinition get_parent_of_relation(const Ifc4x2::IfcRelContainedInSpatialStructure& t) { + return t.RelatingStructure(); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x2::IfcRelContainedInSpatialStructure* t) { - return t->RelatedElements()->generalize(); +std::vector get_children_of_relation(const Ifc4x2::IfcRelContainedInSpatialStructure& t) { + return cast_vector(t.RelatedElements()); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x2::IfcRelAggregates* t) { - return t->RelatedObjects()->generalize(); +std::vector get_children_of_relation(const Ifc4x2::IfcRelAggregates& t) { + return cast_vector(t.RelatedObjects()); } -void set_children_of_relation(Ifc4x2::IfcRelContainedInSpatialStructure* t, aggregate_of_instance::ptr& cs) { - t->setRelatedElements(cs->as()); +void set_children_of_relation(Ifc4x2::IfcRelContainedInSpatialStructure& t, std::vector& cs) { + t.setRelatedElements(cast_vector(cs)); } -void set_children_of_relation(Ifc4x2::IfcRelAggregates* t, aggregate_of_instance::ptr& cs) { - t->setRelatedObjects(cs->as()); +void set_children_of_relation(Ifc4x2::IfcRelAggregates& t, std::vector& cs) { + t.setRelatedObjects(cast_vector(cs)); } #endif #ifdef HAS_SCHEMA_4x3_rc1 -Ifc4x3_rc1::IfcObjectDefinition* get_parent_of_relation(Ifc4x3_rc1::IfcRelContainedInSpatialStructure* t) { - return t->RelatingStructure(); +Ifc4x3_rc1::IfcObjectDefinition get_parent_of_relation(const Ifc4x3_rc1::IfcRelContainedInSpatialStructure& t) { + return t.RelatingStructure(); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3_rc1::IfcRelContainedInSpatialStructure* t) { - return t->RelatedElements()->generalize(); +std::vector get_children_of_relation(const Ifc4x3_rc1::IfcRelContainedInSpatialStructure& t) { + return cast_vector(t.RelatedElements()); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3_rc1::IfcRelAggregates* t) { - return t->RelatedObjects()->generalize(); +std::vector get_children_of_relation(const Ifc4x3_rc1::IfcRelAggregates& t) { + return cast_vector(t.RelatedObjects()); } -void set_children_of_relation(Ifc4x3_rc1::IfcRelContainedInSpatialStructure* t, aggregate_of_instance::ptr& cs) { - t->setRelatedElements(cs->as()); +void set_children_of_relation(Ifc4x3_rc1::IfcRelContainedInSpatialStructure& t, std::vector& cs) { + t.setRelatedElements(cast_vector(cs)); } -void set_children_of_relation(Ifc4x3_rc1::IfcRelAggregates* t, aggregate_of_instance::ptr& cs) { - t->setRelatedObjects(cs->as()); +void set_children_of_relation(Ifc4x3_rc1::IfcRelAggregates& t, std::vector& cs) { + t.setRelatedObjects(cast_vector(cs)); } #endif #ifdef HAS_SCHEMA_4x3_rc2 -Ifc4x3_rc2::IfcObjectDefinition* get_parent_of_relation(Ifc4x3_rc2::IfcRelContainedInSpatialStructure* t) { - return t->RelatingStructure(); +Ifc4x3_rc2::IfcObjectDefinition get_parent_of_relation(const Ifc4x3_rc2::IfcRelContainedInSpatialStructure& t) { + return t.RelatingStructure(); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3_rc2::IfcRelContainedInSpatialStructure* t) { - return t->RelatedElements()->generalize(); +std::vector get_children_of_relation(const Ifc4x3_rc2::IfcRelContainedInSpatialStructure& t) { + return cast_vector(t.RelatedElements()); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3_rc2::IfcRelAggregates* t) { - return t->RelatedObjects()->generalize(); +std::vector get_children_of_relation(const Ifc4x3_rc2::IfcRelAggregates& t) { + return cast_vector(t.RelatedObjects()); } -void set_children_of_relation(Ifc4x3_rc2::IfcRelContainedInSpatialStructure* t, aggregate_of_instance::ptr& cs) { - t->setRelatedElements(cs->as()); +void set_children_of_relation(Ifc4x3_rc2::IfcRelContainedInSpatialStructure& t, std::vector& cs) { + t.setRelatedElements(cast_vector(cs)); } -void set_children_of_relation(Ifc4x3_rc2::IfcRelAggregates* t, aggregate_of_instance::ptr& cs) { - t->setRelatedObjects(cs->as()); +void set_children_of_relation(Ifc4x3_rc2::IfcRelAggregates& t, std::vector& cs) { + t.setRelatedObjects(cast_vector(cs)); } #endif #ifdef HAS_SCHEMA_4x3_rc3 -Ifc4x3_rc3::IfcObjectDefinition* get_parent_of_relation(Ifc4x3_rc3::IfcRelContainedInSpatialStructure* t) { - return t->RelatingStructure(); +Ifc4x3_rc3::IfcObjectDefinition get_parent_of_relation(const Ifc4x3_rc3::IfcRelContainedInSpatialStructure& t) { + return t.RelatingStructure(); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3_rc3::IfcRelContainedInSpatialStructure* t) { - return t->RelatedElements()->generalize(); +std::vector get_children_of_relation(const Ifc4x3_rc3::IfcRelContainedInSpatialStructure& t) { + return cast_vector(t.RelatedElements()); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3_rc3::IfcRelAggregates* t) { - return t->RelatedObjects()->generalize(); +std::vector get_children_of_relation(const Ifc4x3_rc3::IfcRelAggregates& t) { + return cast_vector(t.RelatedObjects()); } -void set_children_of_relation(Ifc4x3_rc3::IfcRelContainedInSpatialStructure* t, aggregate_of_instance::ptr& cs) { - t->setRelatedElements(cs->as()); +void set_children_of_relation(Ifc4x3_rc3::IfcRelContainedInSpatialStructure& t, std::vector& cs) { + t.setRelatedElements(cast_vector(cs)); } -void set_children_of_relation(Ifc4x3_rc3::IfcRelAggregates* t, aggregate_of_instance::ptr& cs) { - t->setRelatedObjects(cs->as()); +void set_children_of_relation(Ifc4x3_rc3::IfcRelAggregates& t, std::vector& cs) { + t.setRelatedObjects(cast_vector(cs)); } #endif #ifdef HAS_SCHEMA_4x3_rc4 -Ifc4x3_rc4::IfcObjectDefinition* get_parent_of_relation(Ifc4x3_rc4::IfcRelContainedInSpatialStructure* t) { - return t->RelatingStructure(); +Ifc4x3_rc4::IfcObjectDefinition get_parent_of_relation(const Ifc4x3_rc4::IfcRelContainedInSpatialStructure& t) { + return t.RelatingStructure(); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3_rc4::IfcRelContainedInSpatialStructure* t) { - return t->RelatedElements()->generalize(); +std::vector get_children_of_relation(const Ifc4x3_rc4::IfcRelContainedInSpatialStructure& t) { + return cast_vector(t.RelatedElements()); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3_rc4::IfcRelAggregates* t) { - return t->RelatedObjects()->generalize(); +std::vector get_children_of_relation(const Ifc4x3_rc4::IfcRelAggregates& t) { + return cast_vector(t.RelatedObjects()); } -void set_children_of_relation(Ifc4x3_rc4::IfcRelContainedInSpatialStructure* t, aggregate_of_instance::ptr& cs) { - t->setRelatedElements(cs->as()); +void set_children_of_relation(Ifc4x3_rc4::IfcRelContainedInSpatialStructure& t, std::vector& cs) { + t.setRelatedElements(cast_vector(cs)); } -void set_children_of_relation(Ifc4x3_rc4::IfcRelAggregates* t, aggregate_of_instance::ptr& cs) { - t->setRelatedObjects(cs->as()); +void set_children_of_relation(Ifc4x3_rc4::IfcRelAggregates& t, std::vector& cs) { + t.setRelatedObjects(cast_vector(cs)); } #endif #ifdef HAS_SCHEMA_4x3 -Ifc4x3::IfcObjectDefinition* get_parent_of_relation(Ifc4x3::IfcRelContainedInSpatialStructure* t) { - return t->RelatingStructure(); +Ifc4x3::IfcObjectDefinition get_parent_of_relation(const Ifc4x3::IfcRelContainedInSpatialStructure& t) { + return t.RelatingStructure(); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3::IfcRelContainedInSpatialStructure* t) { - return t->RelatedElements()->generalize(); +std::vector get_children_of_relation(const Ifc4x3::IfcRelContainedInSpatialStructure& t) { + return cast_vector(t.RelatedElements()); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3::IfcRelAggregates* t) { - return t->RelatedObjects()->generalize(); +std::vector get_children_of_relation(const Ifc4x3::IfcRelAggregates& t) { + return cast_vector(t.RelatedObjects()); } -void set_children_of_relation(Ifc4x3::IfcRelContainedInSpatialStructure* t, aggregate_of_instance::ptr& cs) { - t->setRelatedElements(cs->as()); +void set_children_of_relation(Ifc4x3::IfcRelContainedInSpatialStructure& t, std::vector& cs) { + t.setRelatedElements(cast_vector(cs)); } -void set_children_of_relation(Ifc4x3::IfcRelAggregates* t, aggregate_of_instance::ptr& cs) { - t->setRelatedObjects(cs->as()); +void set_children_of_relation(Ifc4x3::IfcRelAggregates& t, std::vector& cs) { + t.setRelatedObjects(cast_vector(cs)); } #endif #ifdef HAS_SCHEMA_4x3_tc1 -Ifc4x3_tc1::IfcObjectDefinition* get_parent_of_relation(Ifc4x3_tc1::IfcRelContainedInSpatialStructure* t) { - return t->RelatingStructure(); +Ifc4x3_tc1::IfcObjectDefinition get_parent_of_relation(const Ifc4x3_tc1::IfcRelContainedInSpatialStructure& t) { + return t.RelatingStructure(); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3_tc1::IfcRelContainedInSpatialStructure* t) { - return t->RelatedElements()->generalize(); +std::vector get_children_of_relation(const Ifc4x3_tc1::IfcRelContainedInSpatialStructure& t) { + return cast_vector(t.RelatedElements()); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3_tc1::IfcRelAggregates* t) { - return t->RelatedObjects()->generalize(); +std::vector get_children_of_relation(const Ifc4x3_tc1::IfcRelAggregates& t) { + return cast_vector(t.RelatedObjects()); } -void set_children_of_relation(Ifc4x3_tc1::IfcRelContainedInSpatialStructure* t, aggregate_of_instance::ptr& cs) { - t->setRelatedElements(cs->as()); +void set_children_of_relation(Ifc4x3_tc1::IfcRelContainedInSpatialStructure& t, std::vector& cs) { + t.setRelatedElements(cast_vector(cs)); } -void set_children_of_relation(Ifc4x3_tc1::IfcRelAggregates* t, aggregate_of_instance::ptr& cs) { - t->setRelatedObjects(cs->as()); +void set_children_of_relation(Ifc4x3_tc1::IfcRelAggregates& t, std::vector& cs) { + t.setRelatedObjects(cast_vector(cs)); } #endif #ifdef HAS_SCHEMA_4x3_add1 -Ifc4x3_add1::IfcObjectDefinition* get_parent_of_relation(Ifc4x3_add1::IfcRelContainedInSpatialStructure* t) { - return t->RelatingStructure(); +Ifc4x3_add1::IfcObjectDefinition get_parent_of_relation(const Ifc4x3_add1::IfcRelContainedInSpatialStructure& t) { + return t.RelatingStructure(); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3_add1::IfcRelContainedInSpatialStructure* t) { - return t->RelatedElements()->generalize(); +std::vector get_children_of_relation(const Ifc4x3_add1::IfcRelContainedInSpatialStructure& t) { + return cast_vector(t.RelatedElements()); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3_add1::IfcRelAggregates* t) { - return t->RelatedObjects()->generalize(); +std::vector get_children_of_relation(const Ifc4x3_add1::IfcRelAggregates& t) { + return cast_vector(t.RelatedObjects()); } -void set_children_of_relation(Ifc4x3_add1::IfcRelContainedInSpatialStructure* t, aggregate_of_instance::ptr& cs) { - t->setRelatedElements(cs->as()); +void set_children_of_relation(Ifc4x3_add1::IfcRelContainedInSpatialStructure& t, std::vector& cs) { + t.setRelatedElements(cast_vector(cs)); } -void set_children_of_relation(Ifc4x3_add1::IfcRelAggregates* t, aggregate_of_instance::ptr& cs) { - t->setRelatedObjects(cs->as()); +void set_children_of_relation(Ifc4x3_add1::IfcRelAggregates& t, std::vector& cs) { + t.setRelatedObjects(cast_vector(cs)); } #endif #ifdef HAS_SCHEMA_4x3_add2 -Ifc4x3_add2::IfcObjectDefinition* get_parent_of_relation(Ifc4x3_add2::IfcRelContainedInSpatialStructure* t) { - return t->RelatingStructure(); +Ifc4x3_add2::IfcObjectDefinition get_parent_of_relation(const Ifc4x3_add2::IfcRelContainedInSpatialStructure& t) { + return t.RelatingStructure(); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3_add2::IfcRelContainedInSpatialStructure* t) { - return t->RelatedElements()->generalize(); +std::vector get_children_of_relation(const Ifc4x3_add2::IfcRelContainedInSpatialStructure& t) { + return cast_vector(t.RelatedElements()); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3_add2::IfcRelAggregates* t) { - return t->RelatedObjects()->generalize(); +std::vector get_children_of_relation(const Ifc4x3_add2::IfcRelAggregates& t) { + return cast_vector(t.RelatedObjects()); } -aggregate_of_instance::ptr get_children_of_relation(Ifc4x3_add2::IfcRelNests* t) { - return t->RelatedObjects()->generalize(); +std::vector get_children_of_relation(const Ifc4x3_add2::IfcRelNests& t) { + return cast_vector(t.RelatedObjects()); } -void set_children_of_relation(Ifc4x3_add2::IfcRelContainedInSpatialStructure* t, aggregate_of_instance::ptr& cs) { - t->setRelatedElements(cs->as()); +void set_children_of_relation(Ifc4x3_add2::IfcRelContainedInSpatialStructure& t, std::vector& cs) { + t.setRelatedElements(cast_vector(cs)); } -void set_children_of_relation(Ifc4x3_add2::IfcRelAggregates* t, aggregate_of_instance::ptr& cs) { - t->setRelatedObjects(cs->as()); +void set_children_of_relation(Ifc4x3_add2::IfcRelAggregates& t, std::vector& cs) { + t.setRelatedObjects(cast_vector(cs)); } -void set_children_of_relation(Ifc4x3_add2::IfcRelNests* t, aggregate_of_instance::ptr& cs) { - t->setRelatedObjects(cs->as()); +void set_children_of_relation(Ifc4x3_add2::IfcRelNests& t, std::vector& cs) { + t.setRelatedObjects(cast_vector(cs)); } #endif -IfcUtil::IfcBaseClass* get_parent_of_relation(IfcUtil::IfcBaseClass* t) { - return t->as()->get("RelatingObject"); +express::Base get_parent_of_relation(const express::Base& t) { + return t.as().get("RelatingObject"); } -aggregate_of_instance::ptr get_children_of_relation(IfcUtil::IfcBaseClass* t) { - return t->as()->get("RelatedElements"); +std::vector get_children_of_relation(const express::Base& t) { + return t.as().get("RelatedElements"); } -void set_children_of_relation(IfcUtil::IfcBaseClass* t, aggregate_of_instance::ptr& cs) { - return t->as()->set_attribute_value("RelatedElements", cs); +void set_children_of_relation(express::Base& t, std::vector& cs) { + return t.set_attribute_value("RelatedElements", cs); } } // namespace template @@ -365,40 +365,33 @@ class IFC_PARSE_API IfcHierarchyHelper : public IfcParse::IfcFile { IfcHierarchyHelper() : IfcParse::IfcFile(&Schema::get_schema()) {} template - T* addTriplet(double x, double y, double z) { - std::vector a; - a.push_back(x); - a.push_back(y); - a.push_back(z); - T* t = new T(a); - addEntity(t); + T addTriplet(double x, double y, double z) { + auto t = create(); + t.set_attribute_value(0, std::vector{x, y, z}); return t; } template - T* addDoublet(double x, double y) { - std::vector a; - a.push_back(x); - a.push_back(y); - T* t = new T(a); - addEntity(t); + T addDoublet(double x, double y) { + auto t = create(); + t.set_attribute_value(0, std::vector{x, y}); return t; } template - T* getSingle() { - typename T::list::ptr ts = instances_by_type(); - if (ts->size() != 1) { - return 0; + T getSingle() { + auto ts = instances_by_type(); + if (ts.size() != 1) { + return T{}; } - return *ts->begin(); + return ts.front(); } - typename Schema::IfcAxis2Placement3D* addPlacement3d(double ox = 0.0, double oy = 0.0, double oz = 0.0, double zx = 0.0, double zy = 0.0, double zz = 1.0, double xx = 1.0, double xy = 0.0, double xz = 0.0); + typename Schema::IfcAxis2Placement3D addPlacement3d(double ox = 0.0, double oy = 0.0, double oz = 0.0, double zx = 0.0, double zy = 0.0, double zz = 1.0, double xx = 1.0, double xy = 0.0, double xz = 0.0); - typename Schema::IfcAxis2Placement2D* addPlacement2d(double ox = 0.0, double oy = 0.0, double xx = 1.0, double xy = 0.0); + typename Schema::IfcAxis2Placement2D addPlacement2d(double ox = 0.0, double oy = 0.0, double xx = 1.0, double xy = 0.0); - typename Schema::IfcLocalPlacement* addLocalPlacement(typename Schema::IfcObjectPlacement* parent = 0, + typename Schema::IfcLocalPlacement addLocalPlacement(typename Schema::IfcObjectPlacement parent = typename Schema::IfcObjectPlacement{}, double ox = 0.0, double oy = 0.0, double oz = 0.0, @@ -410,19 +403,18 @@ class IFC_PARSE_API IfcHierarchyHelper : public IfcParse::IfcFile { double xz = 0.0); template - void addRelatedObject(typename Schema::IfcObjectDefinition* relating_object, - typename Schema::IfcObjectDefinition* related_object, - typename Schema::IfcOwnerHistory* owner_hist = 0) + void addRelatedObject(const typename Schema::IfcObjectDefinition& relating_object, + const typename Schema::IfcObjectDefinition& related_object, + typename Schema::IfcOwnerHistory owner_hist = typename Schema::IfcOwnerHistory{}) { if constexpr (std::is_same_v) { - typename Schema::IfcRelDefinesByType::list::ptr li = instances_by_type(); + auto li = instances_by_type(); bool found = false; - for (typename Schema::IfcRelDefinesByType::list::it i = li->begin(); i != li->end(); ++i) { - typename Schema::IfcRelDefinesByType* rel = *i; + for (auto & rel : li) { if (rel->RelatingType() == relating_object) { - typename Schema::IfcObject::list::ptr objects = rel->RelatedObjects(); - objects->push(addEntity(related_object)->template as()); - rel->setRelatedObjects(objects); + auto objects = rel->RelatedObjects(); + objects.push_back(addEntity(related_object).template as()); + rel.setRelatedObjects(objects); found = true; break; } @@ -434,21 +426,21 @@ class IFC_PARSE_API IfcHierarchyHelper : public IfcParse::IfcFile { if (!owner_hist) { owner_hist = addOwnerHistory(); } - typename Schema::IfcObject::list::ptr related_objects(new aggregate_of()); - related_objects->push(related_object->template as()); - typename Schema::IfcRelDefinesByType* t = new typename Schema::IfcRelDefinesByType(IfcParse::IfcGlobalId(), owner_hist, boost::none, boost::none, related_objects, relating_object->template as()); - - addEntity(t); + std::vector related_objects = {related_object.template as()}; + auto t = create(); + t.setGlobalId(IfcParse::IfcGlobalId()); + t.setOwnerHistory(owner_hist); + t.setRelatedObjects(related_objects); + t.setRelatingType(relating_object.template as()); } } else { - typename T::list::ptr li = instances_by_type(); + auto li = instances_by_type(); bool found = false; - for (typename T::list::it i = li->begin(); i != li->end(); ++i) { - T* rel = *i; + for (auto& rel : li) { try { if (get_parent_of_relation(rel) == relating_object) { - aggregate_of_instance::ptr products = get_children_of_relation(rel); - products->push(addEntity(related_object)); + auto products = get_children_of_relation(rel); + products.push_back(addEntity(related_object)); set_children_of_relation(rel, products); found = true; break; @@ -467,168 +459,168 @@ class IFC_PARSE_API IfcHierarchyHelper : public IfcParse::IfcFile { owner_hist = addOwnerHistory(); } - aggregate_of_instance::ptr related_objects(new aggregate_of_instance); - related_objects->push(related_object); + std::vector related_objects; + related_objects.push_back(related_object); - T* t = create(&T::Class())->template as(); - t->set_attribute_value(0, (std::string)IfcParse::IfcGlobalId()); - t->set_attribute_value(1, owner_hist); + T t = create(); + t.set_attribute_value(0, (std::string)IfcParse::IfcGlobalId()); + t.set_attribute_value(1, owner_hist); int relating_index = 4; int related_index = 5; if (T::Class().name() == "IfcRelContainedInSpatialStructure" || std::is_base_of::value) { // some classes have attributes reversed. std::swap(relating_index, related_index); } - t->set_attribute_value(relating_index, relating_object); - t->set_attribute_value(related_index, related_objects); + t.set_attribute_value(relating_index, relating_object); + t.set_attribute_value(related_index, related_objects); } } } - typename Schema::IfcOwnerHistory* addOwnerHistory(); - typename Schema::IfcProject* addProject(typename Schema::IfcOwnerHistory* owner_hist = 0); - void relatePlacements(typename Schema::IfcProduct* parent, typename Schema::IfcProduct* product); - typename Schema::IfcSite* addSite(typename Schema::IfcProject* proj = 0, typename Schema::IfcOwnerHistory* owner_hist = 0); - typename Schema::IfcBuilding* addBuilding(typename Schema::IfcSite* site = 0, typename Schema::IfcOwnerHistory* owner_hist = 0); + typename Schema::IfcOwnerHistory addOwnerHistory(); + typename Schema::IfcProject addProject(typename Schema::IfcOwnerHistory owner_hist = typename Schema::IfcOwnerHistory{}); + void relatePlacements(typename Schema::IfcProduct parent, typename Schema::IfcProduct product); + typename Schema::IfcSite addSite(typename Schema::IfcProject = typename Schema::IfcProject{}, typename Schema::IfcOwnerHistory = typename Schema::IfcOwnerHistory{}); + typename Schema::IfcBuilding addBuilding(typename Schema::IfcSite site = typename Schema::IfcSite{}, typename Schema::IfcOwnerHistory owner_hist = typename Schema::IfcOwnerHistory{}); - typename Schema::IfcBuildingStorey* addBuildingStorey(typename Schema::IfcBuilding* building = 0, - typename Schema::IfcOwnerHistory* owner_hist = 0); + typename Schema::IfcBuildingStorey addBuildingStorey(typename Schema::IfcBuilding building = typename Schema::IfcBuilding{}, + typename Schema::IfcOwnerHistory owner_hist = typename Schema::IfcOwnerHistory{}); - typename Schema::IfcBuildingStorey* addBuildingProduct(typename Schema::IfcProduct* product, - typename Schema::IfcBuildingStorey* storey = 0, - typename Schema::IfcOwnerHistory* owner_hist = 0); + typename Schema::IfcBuildingStorey addBuildingProduct(typename Schema::IfcProduct product, + typename Schema::IfcBuildingStorey storey = typename Schema::IfcBuildingStorey{}, + typename Schema::IfcOwnerHistory owner_hist = typename Schema::IfcOwnerHistory{}); - void addExtrudedPolyline(typename Schema::IfcShapeRepresentation* rep, const std::vector>& points, double h, typename Schema::IfcAxis2Placement2D* place = 0, typename Schema::IfcAxis2Placement3D* place2 = 0, typename Schema::IfcDirection* dir = 0, typename Schema::IfcRepresentationContext* context = 0); + void addExtrudedPolyline(typename Schema::IfcShapeRepresentation rep, const std::vector>& points, double h, typename Schema::IfcAxis2Placement2D place = typename Schema::IfcAxis2Placement2D{}, typename Schema::IfcAxis2Placement3D place2 = typename Schema::IfcAxis2Placement3D{}, typename Schema::IfcDirection dir = typename Schema::IfcDirection{}, typename Schema::IfcRepresentationContext context = typename Schema::IfcRepresentationContext{}); - typename Schema::IfcProductDefinitionShape* addExtrudedPolyline(const std::vector>& points, double h, typename Schema::IfcAxis2Placement2D* place = 0, typename Schema::IfcAxis2Placement3D* place2 = 0, typename Schema::IfcDirection* dir = 0, typename Schema::IfcRepresentationContext* context = 0); + typename Schema::IfcProductDefinitionShape addExtrudedPolyline(const std::vector>& points, double h, typename Schema::IfcAxis2Placement2D place = typename Schema::IfcAxis2Placement2D{}, typename Schema::IfcAxis2Placement3D place2 = typename Schema::IfcAxis2Placement3D{}, typename Schema::IfcDirection dir = typename Schema::IfcDirection{}, typename Schema::IfcRepresentationContext context = typename Schema::IfcRepresentationContext{}); - void addBox(typename Schema::IfcShapeRepresentation* rep, double w, double d, double h, typename Schema::IfcAxis2Placement2D* place = 0, typename Schema::IfcAxis2Placement3D* place2 = 0, typename Schema::IfcDirection* dir = 0, typename Schema::IfcRepresentationContext* context = 0); + void addBox(typename Schema::IfcShapeRepresentation rep, double w, double d, double h, typename Schema::IfcAxis2Placement2D place = typename Schema::IfcAxis2Placement2D{}, typename Schema::IfcAxis2Placement3D place2 = typename Schema::IfcAxis2Placement3D{}, typename Schema::IfcDirection dir = typename Schema::IfcDirection{}, typename Schema::IfcRepresentationContext context = typename Schema::IfcRepresentationContext{}); - typename Schema::IfcProductDefinitionShape* addBox(double w, double d, double h, typename Schema::IfcAxis2Placement2D* place = 0, typename Schema::IfcAxis2Placement3D* place2 = 0, typename Schema::IfcDirection* dir = 0, typename Schema::IfcRepresentationContext* context = 0); + typename Schema::IfcProductDefinitionShape addBox(double w, double d, double h, typename Schema::IfcAxis2Placement2D place = typename Schema::IfcAxis2Placement2D{}, typename Schema::IfcAxis2Placement3D place2 = typename Schema::IfcAxis2Placement3D{}, typename Schema::IfcDirection dir = typename Schema::IfcDirection{}, typename Schema::IfcRepresentationContext context = typename Schema::IfcRepresentationContext{}); - void addAxis(typename Schema::IfcShapeRepresentation* rep, double l, typename Schema::IfcRepresentationContext* context = 0); + void addAxis(typename Schema::IfcShapeRepresentation rep, double l, typename Schema::IfcRepresentationContext context = typename Schema::IfcRepresentationContext{}); - typename Schema::IfcProductDefinitionShape* addAxisBox(double w, double d, double h, typename Schema::IfcRepresentationContext* context = 0); + typename Schema::IfcProductDefinitionShape addAxisBox(double w, double d, double h, typename Schema::IfcRepresentationContext context = typename Schema::IfcRepresentationContext{}); - void clipRepresentation(typename Schema::IfcProductRepresentation* shape, - typename Schema::IfcAxis2Placement3D* place, + void clipRepresentation(typename Schema::IfcProductRepresentation shape, + typename Schema::IfcAxis2Placement3D place, bool agree); - void clipRepresentation(typename Schema::IfcRepresentation* shape, - typename Schema::IfcAxis2Placement3D* place, + void clipRepresentation(typename Schema::IfcRepresentation shape, + typename Schema::IfcAxis2Placement3D place, bool agree); - typename Schema::IfcProductDefinitionShape* addMappedItem(typename Schema::IfcShapeRepresentation*, - typename Schema::IfcCartesianTransformationOperator3D* transform = 0, - typename Schema::IfcProductDefinitionShape* def = 0); + typename Schema::IfcProductDefinitionShape addMappedItem(typename Schema::IfcShapeRepresentation, + typename Schema::IfcCartesianTransformationOperator3D transform = typename Schema::IfcCartesianTransformationOperator3D{}, + typename Schema::IfcProductDefinitionShape def = typename Schema::IfcProductDefinitionShape{}); - typename Schema::IfcProductDefinitionShape* addMappedItem(typename Schema::IfcShapeRepresentation::list::ptr, - typename Schema::IfcCartesianTransformationOperator3D* transform = 0); + typename Schema::IfcProductDefinitionShape addMappedItem(std::vector&, + typename Schema::IfcCartesianTransformationOperator3D transform = typename Schema::IfcCartesianTransformationOperator3D{}); - typename Schema::IfcShapeRepresentation* addEmptyRepresentation(const std::string& repid = "Body", const std::string& reptype = "SweptSolid"); + typename Schema::IfcShapeRepresentation addEmptyRepresentation(const std::string& repid = "Body", const std::string& reptype = "SweptSolid"); - typename Schema::IfcGeometricRepresentationContext* getRepresentationContext(const std::string&); + typename Schema::IfcGeometricRepresentationContext getRepresentationContext(const std::string&); - typename Schema::IfcGeometricRepresentationSubContext* getRepresentationSubContext(const std::string& ident, const std::string& type); + typename Schema::IfcGeometricRepresentationSubContext getRepresentationSubContext(const std::string& ident, const std::string& type); private: - std::map contexts_; + std::map contexts_; }; #ifdef HAS_SCHEMA_2x3 -IFC_PARSE_API Ifc2x3::IfcPresentationStyleAssignment* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc2x3::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc2x3::IfcProductRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc2x3::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc2x3::IfcRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc2x3::IfcProductRepresentation* shape, Ifc2x3::IfcPresentationStyleAssignment* style_assignment); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc2x3::IfcRepresentation* shape, Ifc2x3::IfcPresentationStyleAssignment* style_assignment); +IFC_PARSE_API Ifc2x3::IfcPresentationStyleAssignment addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc2x3::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, const Ifc2x3::IfcProductRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc2x3::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, const Ifc2x3::IfcRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc2x3::IfcProductRepresentation& shape, Ifc2x3::IfcPresentationStyleAssignment* style_assignment); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc2x3::IfcRepresentation& shape, Ifc2x3::IfcPresentationStyleAssignment* style_assignment); #endif #ifdef HAS_SCHEMA_4 -IFC_PARSE_API Ifc4::IfcPresentationStyleAssignment* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4::IfcProductRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4::IfcRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4::IfcProductRepresentation* shape, Ifc4::IfcPresentationStyleAssignment* style_assignment); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4::IfcRepresentation* shape, Ifc4::IfcPresentationStyleAssignment* style_assignment); +IFC_PARSE_API Ifc4::IfcPresentationStyleAssignment addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, const Ifc4::IfcProductRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, const Ifc4::IfcRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4::IfcProductRepresentation& shape, Ifc4::IfcPresentationStyleAssignment* style_assignment); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4::IfcRepresentation& shape, Ifc4::IfcPresentationStyleAssignment* style_assignment); #endif #ifdef HAS_SCHEMA_4x1 -IFC_PARSE_API Ifc4x1::IfcPresentationStyleAssignment* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x1::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x1::IfcProductRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x1::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x1::IfcRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x1::IfcProductRepresentation* shape, Ifc4x1::IfcPresentationStyleAssignment* style_assignment); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x1::IfcRepresentation* shape, Ifc4x1::IfcPresentationStyleAssignment* style_assignment); +IFC_PARSE_API Ifc4x1::IfcPresentationStyleAssignment addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x1::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x1::IfcProductRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x1::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x1::IfcRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x1::IfcProductRepresentation& shape, Ifc4x1::IfcPresentationStyleAssignment* style_assignment); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x1::IfcRepresentation& shape, Ifc4x1::IfcPresentationStyleAssignment* style_assignment); #endif #ifdef HAS_SCHEMA_4x2 -IFC_PARSE_API Ifc4x2::IfcPresentationStyleAssignment* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x2::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x2::IfcProductRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x2::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x2::IfcRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x2::IfcProductRepresentation* shape, Ifc4x2::IfcPresentationStyleAssignment* style_assignment); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x2::IfcRepresentation* shape, Ifc4x2::IfcPresentationStyleAssignment* style_assignment); +IFC_PARSE_API Ifc4x2::IfcPresentationStyleAssignment addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x2::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x2::IfcProductRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x2::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x2::IfcRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x2::IfcProductRepresentation& shape, Ifc4x2::IfcPresentationStyleAssignment* style_assignment); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x2::IfcRepresentation& shape, Ifc4x2::IfcPresentationStyleAssignment* style_assignment); #endif #ifdef HAS_SCHEMA_4x3_rc1 -IFC_PARSE_API Ifc4x3_rc1::IfcPresentationStyleAssignment* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3_rc1::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc1::IfcProductRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3_rc1::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc1::IfcRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc1::IfcProductRepresentation* shape, Ifc4x3_rc1::IfcPresentationStyleAssignment* style_assignment); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc1::IfcRepresentation* shape, Ifc4x3_rc1::IfcPresentationStyleAssignment* style_assignment); +IFC_PARSE_API Ifc4x3_rc1::IfcPresentationStyleAssignment addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3_rc1::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc1::IfcProductRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3_rc1::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc1::IfcRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc1::IfcProductRepresentation& shape, Ifc4x3_rc1::IfcPresentationStyleAssignment* style_assignment); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc1::IfcRepresentation& shape, Ifc4x3_rc1::IfcPresentationStyleAssignment* style_assignment); #endif #ifdef HAS_SCHEMA_4x3_rc2 -IFC_PARSE_API Ifc4x3_rc2::IfcPresentationStyleAssignment* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3_rc2::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc2::IfcProductRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3_rc2::IfcPresentationStyleAssignment* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc2::IfcRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc2::IfcProductRepresentation* shape, Ifc4x3_rc2::IfcPresentationStyleAssignment* style_assignment); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc2::IfcRepresentation* shape, Ifc4x3_rc2::IfcPresentationStyleAssignment* style_assignment); +IFC_PARSE_API Ifc4x3_rc2::IfcPresentationStyleAssignment addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3_rc2::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc2::IfcProductRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3_rc2::IfcPresentationStyleAssignment setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc2::IfcRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc2::IfcProductRepresentation& shape, Ifc4x3_rc2::IfcPresentationStyleAssignment* style_assignment); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc2::IfcRepresentation& shape, Ifc4x3_rc2::IfcPresentationStyleAssignment* style_assignment); #endif #ifdef HAS_SCHEMA_4x3_rc3 -IFC_PARSE_API Ifc4x3_rc3::IfcPresentationStyle* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3_rc3::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc3::IfcProductRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3_rc3::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc3::IfcRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc3::IfcProductRepresentation* shape, Ifc4x3_rc3::IfcPresentationStyle* style); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc3::IfcRepresentation* shape, Ifc4x3_rc3::IfcPresentationStyle* style); +IFC_PARSE_API Ifc4x3_rc3::IfcPresentationStyle addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3_rc3::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc3::IfcProductRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3_rc3::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc3::IfcRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc3::IfcProductRepresentation& shape, const Ifc4x3_rc3::IfcPresentationStyle& style); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc3::IfcRepresentation& shape, const Ifc4x3_rc3::IfcPresentationStyle& style); #endif #ifdef HAS_SCHEMA_4x3_rc4 -IFC_PARSE_API Ifc4x3_rc4::IfcPresentationStyle* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3_rc4::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc4::IfcProductRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3_rc4::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc4::IfcRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc4::IfcProductRepresentation* shape, Ifc4x3_rc4::IfcPresentationStyle* style); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_rc4::IfcRepresentation* shape, Ifc4x3_rc4::IfcPresentationStyle* style); +IFC_PARSE_API Ifc4x3_rc4::IfcPresentationStyle addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3_rc4::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc4::IfcProductRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3_rc4::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc4::IfcRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc4::IfcProductRepresentation& shape, const Ifc4x3_rc4::IfcPresentationStyle& style); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_rc4::IfcRepresentation& shape, const Ifc4x3_rc4::IfcPresentationStyle& style); #endif #ifdef HAS_SCHEMA_4x3 -IFC_PARSE_API Ifc4x3::IfcPresentationStyle* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3::IfcProductRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3::IfcRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3::IfcProductRepresentation* shape, Ifc4x3::IfcPresentationStyle* style); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3::IfcRepresentation* shape, Ifc4x3::IfcPresentationStyle* style); +IFC_PARSE_API Ifc4x3::IfcPresentationStyle addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3::IfcProductRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3::IfcRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3::IfcProductRepresentation& shape, const Ifc4x3::IfcPresentationStyle& style); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3::IfcRepresentation& shape, const Ifc4x3::IfcPresentationStyle& style); #endif #ifdef HAS_SCHEMA_4x3_tc1 -IFC_PARSE_API Ifc4x3_tc1::IfcPresentationStyle* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3_tc1::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_tc1::IfcProductRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3_tc1::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_tc1::IfcRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_tc1::IfcProductRepresentation* shape, Ifc4x3_tc1::IfcPresentationStyle* style); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_tc1::IfcRepresentation* shape, Ifc4x3_tc1::IfcPresentationStyle* style); +IFC_PARSE_API Ifc4x3_tc1::IfcPresentationStyle addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3_tc1::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_tc1::IfcProductRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3_tc1::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_tc1::IfcRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_tc1::IfcProductRepresentation& shape, const Ifc4x3_tc1::IfcPresentationStyle& style); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_tc1::IfcRepresentation& shape, const Ifc4x3_tc1::IfcPresentationStyle& style); #endif #ifdef HAS_SCHEMA_4x3_add1 -IFC_PARSE_API Ifc4x3_add1::IfcPresentationStyle* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3_add1::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add1::IfcProductRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3_add1::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add1::IfcRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add1::IfcProductRepresentation* shape, Ifc4x3_add1::IfcPresentationStyle* style); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add1::IfcRepresentation* shape, Ifc4x3_add1::IfcPresentationStyle* style); +IFC_PARSE_API Ifc4x3_add1::IfcPresentationStyle addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3_add1::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_add1::IfcProductRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3_add1::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_add1::IfcRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_add1::IfcProductRepresentation& shape, const Ifc4x3_add1::IfcPresentationStyle& style); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_add1::IfcRepresentation& shape, const Ifc4x3_add1::IfcPresentationStyle& style); #endif #ifdef HAS_SCHEMA_4x3_add2 -IFC_PARSE_API Ifc4x3_add2::IfcPresentationStyle* addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3_add2::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add2::IfcProductRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API Ifc4x3_add2::IfcPresentationStyle* setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add2::IfcRepresentation* shape, double r, double g, double b, double a = 1.0); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add2::IfcProductRepresentation* shape, Ifc4x3_add2::IfcPresentationStyle* style); -IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, Ifc4x3_add2::IfcRepresentation* shape, Ifc4x3_add2::IfcPresentationStyle* style); +IFC_PARSE_API Ifc4x3_add2::IfcPresentationStyle addStyleAssignment(IfcHierarchyHelper& file, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3_add2::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_add2::IfcProductRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API Ifc4x3_add2::IfcPresentationStyle setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_add2::IfcRepresentation& shape, double r, double g, double b, double a = 1.0); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_add2::IfcProductRepresentation& shape, const Ifc4x3_add2::IfcPresentationStyle& style); +IFC_PARSE_API void setSurfaceColour(IfcHierarchyHelper& file, const Ifc4x3_add2::IfcRepresentation& shape, const Ifc4x3_add2::IfcPresentationStyle& style); #endif #endif diff --git a/src/ifcparse/IfcLogger.cpp b/src/ifcparse/IfcLogger.cpp index 5595550c3e..efa66f8f4c 100644 --- a/src/ifcparse/IfcLogger.cpp +++ b/src/ifcparse/IfcLogger.cpp @@ -20,6 +20,7 @@ #include "IfcLogger.h" #include "Argument.h" +#include "InstanceData.h" #include #include @@ -33,7 +34,7 @@ #include #include -static my_thread_local const IfcUtil::IfcBaseClass* current_product_; +static my_thread_local express::Base current_product_; namespace { @@ -63,17 +64,17 @@ template <> const std::array, 5> severity_strings::value = {L"Performance", L"Debug", L"Notice", L"Warning", L"Error"}; template -void plain_text_message(T& out, const IfcUtil::IfcBaseClass* current_product, Logger::Severity type, const std::string& message, const IfcUtil::IfcBaseInterface* instance) { +void plain_text_message(T& out, const express::Base& current_product, Logger::Severity type, const std::string& message, const express::Base& instance) { out << "[" << severity_strings::value[type] << "] "; out << "[" << get_time(type <= Logger::LOG_PERF).c_str() << "] "; if (current_product) { - std::string global_id = current_product->as()->get("GlobalId"); + std::string global_id = current_product.as().get("GlobalId"); out << "{" << global_id.c_str() << "} "; } out << message.c_str() << std::endl; if (instance) { std::ostringstream oss; - instance->as()->toString(oss); + instance.toString(oss); auto instance_string = oss.str(); if (instance_string.size() > 259) { instance_string = instance_string.substr(0, 256) + "..."; @@ -90,7 +91,7 @@ std::basic_string string_as(const std::string& string) { } template -void json_message(T& out, const IfcUtil::IfcBaseClass* current_product, Logger::Severity type, const std::string& message, const IfcUtil::IfcBaseInterface* instance) { +void json_message(T& out, const express::Base& current_product, Logger::Severity type, const std::string& message, const express::Base& instance) { boost::property_tree::basic_ptree, std::basic_string> property_tree; // @todo this is crazy @@ -103,13 +104,13 @@ void json_message(T& out, const IfcUtil::IfcBaseClass* current_product, Logger:: property_tree.put(level_string, severity_strings::value[type]); if (current_product) { std::ostringstream oss; - current_product->toString(oss); + current_product.toString(oss); property_tree.put(product_string, string_as(oss.str())); } property_tree.put(message_string, string_as(message)); if (instance) { std::ostringstream oss; - instance->as()->toString(oss); + instance.toString(oss); property_tree.put(instance_string, string_as(oss.str())); } @@ -125,7 +126,7 @@ void json_message(T& out, const IfcUtil::IfcBaseClass* current_product, Logger:: } } // namespace -void Logger::SetProduct(boost::optional product) { +void Logger::SetProduct(std::optional product) { if (verbosity_ <= LOG_DEBUG && product) { Message(LOG_DEBUG, "Begin processing", *product); } @@ -133,7 +134,7 @@ void Logger::SetProduct(boost::optional product) { PrintPerformanceStats(); performance_statistics_.clear(); } - current_product_ = product.get_value_or(nullptr); + current_product_ = product.value_or(express::Base{}); } void Logger::SetOutput(std::ostream* stream1, std::ostream* stream2) { @@ -154,7 +155,7 @@ void Logger::SetOutput(std::wostream* stream1, std::wostream* stream2) { } } -void Logger::Message(Logger::Severity type, const std::string& message, const IfcUtil::IfcBaseInterface* instance) { +void Logger::Message(Logger::Severity type, const std::string& message, const express::Base& instance) { if (type < verbosity_) { return; } @@ -195,7 +196,7 @@ void Logger::Message(Logger::Severity type, const std::string& message, const If } } -void Logger::Message(Logger::Severity type, const std::exception& exception, const IfcUtil::IfcBaseInterface* instance) { +void Logger::Message(Logger::Severity type, const std::exception& exception, const express::Base& instance) { Message(type, std::string(exception.what()), instance); } @@ -263,7 +264,7 @@ std::stringstream Logger::log_stream_; Logger::Severity Logger::verbosity_ = Logger::LOG_NOTICE; Logger::Severity Logger::max_severity_ = Logger::LOG_NOTICE; Logger::Format Logger::format_ = Logger::FMT_PLAIN; -boost::optional Logger::first_timepoint_; +std::optional Logger::first_timepoint_; std::map Logger::performance_statistics_; std::map Logger::performance_signal_start_; bool Logger::print_perf_stats_on_element_ = false; diff --git a/src/ifcparse/IfcLogger.h b/src/ifcparse/IfcLogger.h index 4bca7be438..4155c80024 100644 --- a/src/ifcparse/IfcLogger.h +++ b/src/ifcparse/IfcLogger.h @@ -21,7 +21,7 @@ #define IFCLOGGER_H #include "ifc_parse_api.h" -#include "IfcBaseClass.h" +#include "express.h" #include #include @@ -59,14 +59,14 @@ class IFC_PARSE_API Logger { static Format format_; static Severity max_severity_; - static boost::optional first_timepoint_; + static std::optional first_timepoint_; static std::map performance_statistics_; static std::map performance_signal_start_; static bool print_perf_stats_on_element_; public: - static void SetProduct(boost::optional product); + static void SetProduct(std::optional product); /// Determines to what stream respectively progress and errors are logged static void SetOutput(std::wostream* stream1, std::wostream* stream2); @@ -84,16 +84,16 @@ class IFC_PARSE_API Logger { static Format OutputFormat(); /// Log a message to the output stream - static void Message(Severity type, const std::string& message, const IfcUtil::IfcBaseInterface* instance = 0); - static void Message(Severity type, const std::exception& exception, const IfcUtil::IfcBaseInterface* instance = 0); + static void Message(Severity type, const std::string& message, const express::Base& instance = express::Base()); + static void Message(Severity type, const std::exception& exception, const express::Base& instance = express::Base()); - static void Notice(const std::string& message, const IfcUtil::IfcBaseInterface* instance = 0) { Message(LOG_NOTICE, message, instance); } - static void Warning(const std::string& message, const IfcUtil::IfcBaseInterface* instance = 0) { Message(LOG_WARNING, message, instance); } - static void Error(const std::string& message, const IfcUtil::IfcBaseInterface* instance = 0) { Message(LOG_ERROR, message, instance); } + static void Notice(const std::string& message, const express::Base& instance = express::Base()) { Message(LOG_NOTICE, message, instance); } + static void Warning(const std::string& message, const express::Base& instance = express::Base()) { Message(LOG_WARNING, message, instance); } + static void Error(const std::string& message, const express::Base& instance = express::Base()) { Message(LOG_ERROR, message, instance); } - static void Notice(const std::exception& exception, const IfcUtil::IfcBaseInterface* instance = 0) { Message(LOG_NOTICE, exception, instance); } - static void Warning(const std::exception& exception, const IfcUtil::IfcBaseInterface* instance = 0) { Message(LOG_WARNING, exception, instance); } - static void Error(const std::exception& exception, const IfcUtil::IfcBaseInterface* instance = 0) { Message(LOG_ERROR, exception, instance); } + static void Notice(const std::exception& exception, const express::Base& instance = express::Base()) { Message(LOG_NOTICE, exception, instance); } + static void Warning(const std::exception& exception, const express::Base& instance = express::Base()) { Message(LOG_WARNING, exception, instance); } + static void Error(const std::exception& exception, const express::Base& instance = express::Base()) { Message(LOG_ERROR, exception, instance); } static void Status(const std::string& message, bool new_line = true); diff --git a/src/ifcparse/IfcParse.cpp b/src/ifcparse/IfcParse.cpp index f0f880b7d6..c2a4fd6620 100644 --- a/src/ifcparse/IfcParse.cpp +++ b/src/ifcparse/IfcParse.cpp @@ -19,7 +19,7 @@ #include "IfcParse.h" -#include "IfcBaseClass.h" +#include "express.h" #include "IfcCharacterDecoder.h" #include "IfcException.h" #include "IfcFile.h" @@ -238,8 +238,8 @@ void IfcSpfLexer::TokenString(size_t offset, std::string& buffer) { } if (character == '\'') { // todo, make decoder use local offset ptr - auto offset = local_stream.tell(); - buffer = decoder_->get(offset); + auto local_offset = local_stream.tell(); + buffer = decoder_->get(local_offset); break; } buffer.push_back(character); @@ -522,7 +522,7 @@ std::string TokenFunc::toString(const Token& token) { // Reads the arguments from a list of token // Aditionally, registers the ids (i.e. #[\d]+) in the inverse map // -void IfcParse::impl::in_memory_file_storage::load(boost::optional entity_instance_name, const IfcParse::entity* entity, parse_context& context, int attribute_index) { +void IfcParse::impl::in_memory_file_storage::load(std::optional entity_instance_name, const IfcParse::entity* entity, parse_context& context, int attribute_index) { Token next = tokens->Next(); /* @@ -562,11 +562,11 @@ void IfcParse::impl::in_memory_file_storage::load(boost::optional entity // type) and to be able to actually register the references in // the 2nd pass. load(entity_instance_name, entity, ps, attribute_index == -1 ? (int)attribute_index_within_data : attribute_index); - auto* simple_type_instance = (schema ? schema : file->schema())->instantiate(decl, ps.construct(entity_instance_name, *references_to_resolve, decl, boost::none, attribute_index == -1 ? (int)attribute_index_within_data : attribute_index)); - read_simple_type_instances.emplace_back(simple_type_instance); - //@todo decide addEntity(((IfcUtil::IfcBaseClass*)*entity)); + express::Base simple_type_instance(read_simple_type_instances.emplace_back( + ps.construct(file, entity_instance_name, *references_to_resolve, decl, std::nullopt, attribute_index == -1 ? (int)attribute_index_within_data : attribute_index)) + ); + // @todo do we need express::Base here? Or should we just push InstanceData? context.push(simple_type_instance); - simple_type_instance->file_ = file; } catch (IfcException& e) { Logger::Message(Logger::LOG_ERROR, std::string(e.what()) + " at offset " + std::to_string(next.startPos)); // #4070 We didn't actually capture an aggregate entry, undo length increment. @@ -583,7 +583,7 @@ void IfcParse::impl::in_memory_file_storage::load(boost::optional entity // // Reads an Entity from the list of Tokens at the specified offset in the file // -IfcEntityInstanceData IfcParse::impl::in_memory_file_storage::read(unsigned int i) { +std::shared_ptr IfcParse::impl::in_memory_file_storage::read(unsigned int i) { Token datatype = tokens->Next(); if (!TokenFunc::isKeyword(datatype)) { throw IfcException("Unexpected token while parsing entity"); @@ -592,7 +592,7 @@ IfcEntityInstanceData IfcParse::impl::in_memory_file_storage::read(unsigned int parse_context pc; tokens->Next(); load(i, ty->as_entity(), pc, -1); - return IfcEntityInstanceData(pc.construct(i, *references_to_resolve, ty, boost::none, -1)); + return pc.construct(file, i, *references_to_resolve, ty, std::nullopt, -1); } void IfcParse::impl::in_memory_file_storage::try_read_semicolon() const { @@ -608,8 +608,8 @@ void IfcParse::impl::in_memory_file_storage::register_inverse(unsigned id_from, byref_excl_[{inst_id, from_entity->index_in_schema(), attribute_index}].push_back(id_from); } -void IfcParse::impl::in_memory_file_storage::unregister_inverse(unsigned id_from, const IfcParse::entity* from_entity, IfcUtil::IfcBaseClass* inst, int attribute_index) { - auto& ids = byref_excl_[{inst->id(), from_entity->index_in_schema(), attribute_index}]; +void IfcParse::impl::in_memory_file_storage::unregister_inverse(unsigned id_from, const IfcParse::entity* from_entity, const express::Base& inst, int attribute_index) { + auto& ids = byref_excl_[{inst.id(), from_entity->index_in_schema(), attribute_index}]; auto iter = std::find(ids.begin(), ids.end(), id_from); if (iter == ids.end()) { // @todo inverses also need to be populated when multiple instances are added to a new file. @@ -651,10 +651,10 @@ void IfcParse::impl::rocks_db_file_storage::register_inverse(unsigned id_from, c #endif } -void IfcParse::impl::rocks_db_file_storage::unregister_inverse(unsigned id_from, const IfcParse::entity* from_entity, IfcUtil::IfcBaseClass* inst, int attribute_index) { +void IfcParse::impl::rocks_db_file_storage::unregister_inverse(unsigned id_from, const IfcParse::entity* from_entity, const express::Base& inst, int attribute_index) { #ifdef IFOPSH_WITH_ROCKSDB static std::string s; - auto inst_id = inst->id(); + auto inst_id = inst.id(); auto key = "v|" + to_string_fixed_width(inst_id, 10) + "|" + to_string_fixed_width(from_entity->index_in_schema(), 4) + "|" + to_string_fixed_width(attribute_index, 2); if (db->Get(rocksdb::ReadOptions{}, key, &s).ok()) { std::vector vals(s.size() / sizeof(uint32_t)); @@ -672,23 +672,23 @@ void IfcParse::impl::rocks_db_file_storage::unregister_inverse(unsigned id_from, #endif } -void IfcParse::impl::rocks_db_file_storage::add_type_ref(IfcUtil::IfcBaseClass* new_entity) +void IfcParse::impl::rocks_db_file_storage::add_type_ref(const express::Base& new_entity) { #ifdef IFOPSH_WITH_ROCKSDB size_t v; std::string s(sizeof(size_t), ' '); - if (new_entity->declaration().as_entity()) { - v = new_entity->id(); + if (new_entity.declaration().as_entity()) { + v = new_entity.id(); memcpy(s.data(), &v, sizeof(size_t)); // no merges yet, because the python client doesn't support them - db->Merge(wopts, "t|" + std::to_string(new_entity->declaration().index_in_schema()), s); + db->Merge(wopts, "t|" + std::to_string(new_entity.declaration().index_in_schema()), s); /*{ std::string current; // @todo this uses the same key-namespace as typedecl instances, not a direct conflict, but also not very clear - auto key = "t|" + std::to_string(new_entity->declaration().index_in_schema()); + auto key = "t|" + std::to_string(new_entity.declaration().index_in_schema()); db->Get(rocksdb::ReadOptions{}, key, ¤t); auto new_val = current + s; db->Put(wopts, key, new_val); @@ -696,29 +696,29 @@ void IfcParse::impl::rocks_db_file_storage::add_type_ref(IfcUtil::IfcBaseClass* } // not only mapping also register type - v = new_entity->declaration().index_in_schema(); + v = new_entity.declaration().index_in_schema(); memcpy(s.data(), &v, sizeof(size_t)); - db->Put(wopts, (new_entity->declaration().as_entity() ? "i|" : "t|") + std::to_string(new_entity->id() ? new_entity->id() : new_entity->identity()) + "|_", s); + db->Put(wopts, (new_entity.declaration().as_entity() ? "i|" : "t|") + std::to_string(new_entity.id() ? new_entity.id() : new_entity.identity()) + "|_", s); #endif } -void IfcParse::impl::rocks_db_file_storage::remove_type_ref(IfcUtil::IfcBaseClass* new_entity) +void IfcParse::impl::rocks_db_file_storage::remove_type_ref(const express::Base& new_entity) { #ifdef IFOPSH_WITH_ROCKSDB - if (new_entity->declaration().as_entity()) { + if (new_entity.declaration().as_entity()) { std::string s; - auto key = "t|" + std::to_string(new_entity->declaration().index_in_schema()); + auto key = "t|" + std::to_string(new_entity.declaration().index_in_schema()); if (db->Get(rocksdb::ReadOptions{}, key, &s).ok()) { std::vector vals(s.size() / sizeof(size_t)); memcpy(vals.data(), s.data(), s.size()); - vals.erase(std::find(vals.begin(), vals.end(), (size_t)new_entity->id())); + vals.erase(std::find(vals.begin(), vals.end(), (size_t)new_entity.id())); s.resize(vals.size() * sizeof(size_t)); memcpy(s.data(), vals.data(), s.size()); db->Put(wopts, key, s); } } - db->Delete(wopts, (new_entity->declaration().as_entity() ? "i|" : "t|") + std::to_string(new_entity->id() ? new_entity->id() : new_entity->identity()) + "|_"); + db->Delete(wopts, (new_entity.declaration().as_entity() ? "i|" : "t|") + std::to_string(new_entity.id() ? new_entity.id() : new_entity.identity()) + "|_"); #endif } @@ -814,17 +814,17 @@ namespace { void operator()(const EnumerationReference& i) { data_ << "." << i.value() << "."; } - void operator()(const IfcUtil::IfcBaseClass* const& i) { - if (i->declaration().as_entity() == nullptr || i->declaration().schema() == &Header_section_schema::get_schema()) { - i->toString(data_, upper_); + void operator()(const express::Base& i) { + if (i.declaration().as_entity() == nullptr || i.declaration().schema() == &Header_section_schema::get_schema()) { + i.toString(data_, upper_); } else { - data_ << "#" << i->id(); + data_ << "#" << i.id(); } } - void operator()(const aggregate_of_instance::ptr& i) { + void operator()(const std::vector& i) { data_ << "("; - for (aggregate_of_instance::it it = i->begin(); it != i->end(); ++it) { - if (it != i->begin()) { + for (auto it = i.begin(); it != i.end(); ++it) { + if (it != i.begin()) { data_ << ","; } (*this)(*it); @@ -833,14 +833,14 @@ namespace { } void operator()(const std::vector>& i); void operator()(const std::vector>& i); - void operator()(const aggregate_of_aggregate_of_instance::ptr& i) { + void operator()(const std::vector>& i) { data_ << "("; - for (aggregate_of_aggregate_of_instance::outer_it outer_it = i->begin(); outer_it != i->end(); ++outer_it) { - if (outer_it != i->begin()) { + for (auto outer_it = i.begin(); outer_it != i.end(); ++outer_it) { + if (outer_it != i.begin()) { data_ << ","; } data_ << "("; - for (aggregate_of_aggregate_of_instance::inner_it inner_it = outer_it->begin(); inner_it != outer_it->end(); ++inner_it) { + for (auto inner_it = outer_it->begin(); inner_it != outer_it->end(); ++inner_it) { if (inner_it != outer_it->begin()) { data_ << ","; } @@ -921,7 +921,7 @@ namespace { // Returns a string representation of the entity // Note that this initializes the entity if it is not initialized // -void IfcEntityInstanceData::toString(void* storage, const IfcParse::declaration* decl, std::size_t identity, std::ostream& ss, bool upper) const { +void InstanceData::toString(std::ostream& ss, bool upper) const { ss.imbue(std::locale::classic()); ss << "("; @@ -930,7 +930,7 @@ void IfcEntityInstanceData::toString(void* storage, const IfcParse::declaration* // In almost all cases, storage is initialized with the size of the schema declaration, // apparently except in case of header entities and invalid in-line type declarations. - auto size = (decl && decl->as_entity() ? decl->as_entity()->attribute_count() : 1); + auto size = (declaration_ && declaration_->as_entity() ? declaration_->as_entity()->attribute_count() : 1); if (storage_) { size = (std::min)(size, storage_->size()); } @@ -939,25 +939,27 @@ void IfcEntityInstanceData::toString(void* storage, const IfcParse::declaration* if (i != 0) { ss << ","; } - if (has_attribute_value(storage, decl, identity, i)) { - if (decl != nullptr && decl->as_entity() && decl->as_entity()->derived()[i]) { + if (has_attribute_value(i)) { + if (declaration_ != nullptr && declaration_->as_entity() && declaration_->as_entity()->derived()[i]) { ss << "*"; } else { ss << "$"; } } else { - apply_visitor(storage, decl, identity, vis, i); + apply_visitor(vis, i); } } ss << ")"; } -unsigned IfcUtil::IfcBaseEntity::set_id(const boost::optional& i) { +/* +unsigned IfcUtil::IfcBaseEntity::set_id(const std::optional& i) { if (i) { return id_ = *i; } return id_ = file_->FreshId(); } +*/ namespace { // @todo remove redundancy with python wrapper code (which is not identical due to @@ -985,74 +987,74 @@ IfcUtil::ArgumentType get_argument_type(const IfcParse::declaration* decl, size_ class unregister_inverse_visitor { private: IfcFile& file_; - const IfcUtil::IfcBaseClass* data_; + const express::Base data_; public: - unregister_inverse_visitor(IfcFile& file, const IfcUtil::IfcBaseClass* data) + unregister_inverse_visitor(IfcFile& file, const express::Base& data) : file_(file), data_(data) {} - void operator()(IfcUtil::IfcBaseClass* inst, int index) { - file_.unregister_inverse(data_->id(), data_->declaration().as_entity(), inst, index); + void operator()(const express::Base& inst, int index) { + file_.unregister_inverse(data_.id(), data_.declaration().as_entity(), inst, index); } }; class register_inverse_visitor { private: IfcFile& file_; - const IfcUtil::IfcBaseClass* data_; + const express::Base data_; public: - register_inverse_visitor(IfcFile& file, const IfcUtil::IfcBaseClass* data) + register_inverse_visitor(IfcFile& file, const express::Base& data) : file_(file), data_(data) {} - void operator()(IfcUtil::IfcBaseClass* inst, int index) { - file_.register_inverse(data_->id(), data_->declaration().as_entity(), inst->id(), index); + void operator()(const express::Base& inst, int index) { + file_.register_inverse(data_.id(), data_.declaration().as_entity(), inst.id(), index); } }; class add_to_instance_list_visitor { private: - aggregate_of_instance::ptr& list_; + std::vector* list_; public: - add_to_instance_list_visitor(aggregate_of_instance::ptr& list) + add_to_instance_list_visitor(std::vector* list) : list_(list) {} - void operator()(IfcUtil::IfcBaseClass* inst) { - list_->push(inst); + void operator()(const express::Base& inst) { + list_->push_back(inst); } }; class apply_individual_instance_visitor { private: - boost::optional attribute_; + std::optional attribute_; int attribute_index_; - const IfcUtil::IfcBaseClass* inst_; + const express::Base inst_; template void apply_attribute_(T& t, const AttributeValue& attr, int index) const { switch (attr.type()) { case IfcUtil::Argument_ENTITY_INSTANCE: { - IfcUtil::IfcBaseClass* inst = attr; + express::Base inst = attr; t(inst, index); break; } case IfcUtil::Argument_AGGREGATE_OF_ENTITY_INSTANCE: { - aggregate_of_instance::ptr entity_list_attribute = attr; - for (aggregate_of_instance::it it = entity_list_attribute->begin(); it != entity_list_attribute->end(); ++it) { - t(*it, index); + std::vector entity_list_attribute = attr; + for (auto& inst : entity_list_attribute) { + t(inst, index); } break; } case IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_ENTITY_INSTANCE: { - aggregate_of_aggregate_of_instance::ptr entity_list_attribute = attr; - for (aggregate_of_aggregate_of_instance::outer_it it = entity_list_attribute->begin(); it != entity_list_attribute->end(); ++it) { - for (aggregate_of_aggregate_of_instance::inner_it jt = it->begin(); jt != it->end(); ++jt) { - t(*jt, index); + std::vector> nested_list_attr = attr; + for (auto& vec : nested_list_attr) { + for (auto& inst : vec) { + t(inst, index); } } break; @@ -1067,7 +1069,7 @@ class apply_individual_instance_visitor { , attribute_index_(idx) {} - apply_individual_instance_visitor(const IfcUtil::IfcBaseClass* data) + apply_individual_instance_visitor(const express::Base& data) : inst_(data) {} @@ -1076,9 +1078,9 @@ class apply_individual_instance_visitor { if (attribute_) { apply_attribute_(t, *attribute_, attribute_index_); } else { - const auto& decl = inst_->declaration(); + const auto& decl = inst_.declaration(); for (size_t i = 0; i < (decl.as_entity() ? decl.as_entity()->attribute_count() : 1); ++i) { - auto attr = inst_->get_attribute_value(i); + auto attr = inst_.get_attribute_value(i); apply_attribute_(t, attr, (int) i); } } @@ -1087,9 +1089,9 @@ class apply_individual_instance_visitor { template typename std::enable_if< - (!(std::is_pointer::value&& std::is_base_of::type>::value) || std::is_same_v>), + (!std::is_base_of_v || std::is_same_v), void>::type -IfcUtil::IfcBaseClass::set_attribute_value(size_t i, const T& t) { +express::Base::set_attribute_value(size_t i, const T& t) { if constexpr (std::is_same_v, double>) { if (!std::isfinite(t)) { throw IfcParse::IfcException("Only finite values are allowed"); @@ -1108,72 +1110,62 @@ IfcUtil::IfcBaseClass::set_attribute_value(size_t i, const T& t) { } } auto current_attribute = get_attribute_value(i); - if (file_ != nullptr) { - // Deregister old attribute guid in file guid map. - if (i == 0 && (file_->ifcroot_type() != nullptr) && this->declaration().is(*file_->ifcroot_type())) { - try { - auto guid = (std::string) current_attribute; - auto it = file_->internal_guid_map().find(guid); - if (it != file_->internal_guid_map().end()) { - const std::pair& p = *it; - if (p.second == this) { - file_->internal_guid_map().erase(it); - } + // Deregister old attribute guid in file guid map. + if (i == 0 && (data()->file()->ifcroot_type() != nullptr) && this->declaration().is(*data()->file()->ifcroot_type())) { + try { + auto guid = (std::string) current_attribute; + auto it = data()->file()->internal_guid_map().find(guid); + if (it != data()->file()->internal_guid_map().end()) { + const std::pair& p = *it; + if (p.second == *this) { + data()->file()->internal_guid_map().erase(it); } - } catch (IfcParse::IfcException& e) { - Logger::Error(e); } - } - - if constexpr (std::is_same_v || std::is_same_v || std::is_same_v || std::is_same_v) { - // Deregister inverse indices in file - unregister_inverse_visitor visitor(*file_, this); - apply_individual_instance_visitor(current_attribute, (int)i).apply(visitor); + } catch (IfcParse::IfcException& e) { + Logger::Error(e); } } + + if constexpr (std::is_same_v || std::is_same_v> || std::is_same_v>> || std::is_same_v) { + // Deregister inverse indices in file + unregister_inverse_visitor visitor(*data()->file(), *this); + apply_individual_instance_visitor(current_attribute, (int)i).apply(visitor); + } + { - void* const storage = file_ ? std::visit([](const auto& m) { return (void*)&m; }, file_->storage_) : nullptr; - if constexpr (std::is_pointer_v) { - if (t) { - data_.set_attribute_value(storage, &declaration(), id() ? id() : identity(), i, t); - } else { - data_.set_attribute_value(storage, &declaration(), id() ? id() : identity(), i, Blank{}); - } - } else { - data_.set_attribute_value(storage, &declaration(), id() ? id() : identity(),i, t); - } + void* const storage = std::visit([](const auto& m) { return (void*)&m; }, data()->file()->storage_); + data()->set_attribute_value(i, t); } auto new_attribute = get_attribute_value(i); - if (file_ != nullptr) { - // Register inverse indices in file - if constexpr (std::is_same_v || std::is_same_v || std::is_same_v) { - register_inverse_visitor visitor(*file_, this); - apply_individual_instance_visitor(new_attribute, (int)i).apply(visitor); - } + // Register inverse indices in file + if constexpr (std::is_same_v || std::is_same_v> || std::is_same_v>>) { + register_inverse_visitor visitor(*data()->file(), *this); + apply_individual_instance_visitor(new_attribute, (int)i).apply(visitor); + } - // Register new attribute guid in guid map - if (i == 0 && (file_->ifcroot_type() != nullptr) && this->declaration().is(*file_->ifcroot_type())) { - try { - auto guid = (std::string) new_attribute; - auto it = file_->internal_guid_map().find(guid); - if (it != file_->internal_guid_map().end()) { - Logger::Warning("Duplicate guid " + guid); - } - file_->internal_guid_map().insert({ guid, this }); - } catch (IfcParse::IfcException& e) { - Logger::Error(e); + // Register new attribute guid in guid map + if (i == 0 && (data()->file()->ifcroot_type() != nullptr) && this->declaration().is(*data()->file()->ifcroot_type())) { + try { + auto guid = (std::string) new_attribute; + auto it = data()->file()->internal_guid_map().find(guid); + if (it != data()->file()->internal_guid_map().end()) { + Logger::Warning("Duplicate guid " + guid); } + data()->file()->internal_guid_map().insert({guid, *this}); + } catch (IfcParse::IfcException& e) { + Logger::Error(e); } } } template typename std::enable_if< - (!(std::is_pointer::value&& std::is_base_of::type>::value) || std::is_same_v>), + (!std::is_base_of_v || std::is_same_v), void>::type -IfcUtil::IfcBaseClass::set_attribute_value(const std::string& s, const T& t) { +express::Base::set_attribute_value(const std::string& s, const T& t) +{ set_attribute_value(declaration().as_entity()->attribute_index(s), t); } @@ -1199,7 +1191,7 @@ bool IfcParse::IfcFile::initialize(const std::string& fn, bool mmap) { if ((good_ = std::get(storage_).good_)) { // @todo unify these names, it's already confusing enough as it stands - byid_ = decltype(byid_)(&std::get(storage_).byid_); + byid_ = decltype(byid_)(&std::get(storage_).byid_read_); byref_excl_ = decltype(byref_excl_)(&std::get(storage_).byref_excl_); byguid_ = decltype(byguid_)(&std::get(storage_).byguid_); } @@ -1210,7 +1202,7 @@ bool IfcParse::IfcFile::initialize(const std::string& fn, bool mmap) { #endif IfcFile::IfcFile(const uninitialized_tag&) - : schema_(nullptr), max_id_(0), _header(this), good_(file_open_status::UNKNOWN), ifcroot_type_(nullptr) {} + : schema_(nullptr), max_id_(0), header_(new IfcParse::IfcSpfHeader(this)), good_(file_open_status::UNKNOWN), ifcroot_type_(nullptr) {} bool IfcParse::IfcFile::initialize(const std::string& path, filetype ty, bool readonly) { if (ty == FT_AUTODETECT) { @@ -1223,7 +1215,7 @@ bool IfcParse::IfcFile::initialize(const std::string& path, filetype ty, bool re if ((good_ = std::get(storage_).good_)) { // @todo unify these names, it's already confusing enough as it stands - byid_ = decltype(byid_)(&std::get(storage_).byid_); + byid_ = decltype(byid_)(&std::get(storage_).byid_read_); byref_excl_ = decltype(byref_excl_)(&std::get(storage_).byref_excl_); byguid_ = decltype(byguid_)(&std::get(storage_).byguid_); } @@ -1264,7 +1256,7 @@ void IfcParse::IfcFile::bypass_type(const std::string& type_name) { IfcFile::IfcFile(const std::string& path, filetype ty, bool readonly) : schema_(nullptr) , max_id_(0) - , _header(this) + , header_(new IfcSpfHeader(this)) { initialize(path, ty, readonly); } @@ -1285,7 +1277,7 @@ IfcFile::IfcFile(std::istream& stream, int length) good_ = std::get(storage_).good_; ifcroot_type_ = schema_ ? schema_->declaration_by_name("IfcRoot") : nullptr; - byid_ = decltype(byid_)(&std::get(storage_).byid_); + byid_ = decltype(byid_)(&std::get(storage_).byid_read_); byref_excl_ = decltype(byref_excl_)(&std::get(storage_).byref_excl_); byguid_ = decltype(byguid_)(&std::get(storage_).byguid_); } @@ -1301,7 +1293,7 @@ IfcFile::IfcFile(void* data, int length) good_ = std::get(storage_).good_; ifcroot_type_ = schema_ ? schema_->declaration_by_name("IfcRoot") : nullptr; - byid_ = decltype(byid_)(&std::get(storage_).byid_); + byid_ = decltype(byid_)(&std::get(storage_).byid_read_); byref_excl_ = decltype(byref_excl_)(&std::get(storage_).byref_excl_); byguid_ = decltype(byguid_)(&std::get(storage_).byguid_); } @@ -1315,7 +1307,7 @@ IfcFile::IfcFile(IfcParse::FileReader* s) good_ = std::get(storage_).good_; ifcroot_type_ = schema_ ? schema_->declaration_by_name("IfcRoot") : nullptr; - byid_ = decltype(byid_)(&std::get(storage_).byid_); + byid_ = decltype(byid_)(&std::get(storage_).byid_read_); byref_excl_ = decltype(byref_excl_)(&std::get(storage_).byref_excl_); byguid_ = decltype(byguid_)(&std::get(storage_).byguid_); } @@ -1331,7 +1323,7 @@ IfcFile::IfcFile(const IfcParse::schema_definition* schema, filetype ty, const s if (ty == FT_IFCSPF) { storage_.emplace<1>(this); - byid_ = decltype(byid_)(&std::get(storage_).byid_); + byid_ = decltype(byid_)(&std::get(storage_).byid_read_); byref_excl_ = decltype(byref_excl_)(&std::get(storage_).byref_excl_); byguid_ = decltype(byguid_)(&std::get(storage_).byguid_); @@ -1347,7 +1339,7 @@ IfcFile::IfcFile(const IfcParse::schema_definition* schema, filetype ty, const s } else { throw std::runtime_error("Unsupported file format"); } - _header = IfcSpfHeader(this); + header_.reset(new IfcSpfHeader(this)); setDefaultHeaderValues(); } @@ -1403,9 +1395,9 @@ void IfcParse::InstanceStreamer::pushPage(const std::string& page) stream_->pushNextPage(page); if (good_ == file_open_status::NO_HEADER) { header_ = new IfcParse::IfcSpfHeader(lexer_); - if (header_->tryRead() && header_->file_schema()->schema_identifiers().size() == 1) { + if (header_->tryRead() && header_->file_schema().schema_identifiers().size() == 1) { try { - schema_ = IfcParse::schema_by_name(header_->file_schema()->schema_identifiers().front()); + schema_ = IfcParse::schema_by_name(header_->file_schema().schema_identifiers().front()); good_ = file_open_status::SUCCESS; } catch (const IfcParse::IfcException&) { } @@ -1440,9 +1432,9 @@ IfcParse::InstanceStreamer::InstanceStreamer(const std::string& fn, bool mmap) good_ = file_open_status::NO_HEADER; if (stream_->size() && !stream_->eof()) { header_ = new IfcParse::IfcSpfHeader(lexer_); - if (header_->tryRead() && header_->file_schema()->schema_identifiers().size() == 1) { + if (header_->tryRead() && header_->file_schema().schema_identifiers().size() == 1) { try { - schema_ = IfcParse::schema_by_name(header_->file_schema()->schema_identifiers().front()); + schema_ = IfcParse::schema_by_name(header_->file_schema().schema_identifiers().front()); good_ = file_open_status::SUCCESS; } catch (const IfcParse::IfcException&) { } @@ -1466,9 +1458,9 @@ IfcParse::InstanceStreamer::InstanceStreamer(void* data, int length) good_ = file_open_status::NO_HEADER; if (stream_->size() && !stream_->eof()) { header_ = new IfcParse::IfcSpfHeader(lexer_); - if (header_->tryRead() && header_->file_schema()->schema_identifiers().size() == 1) { + if (header_->tryRead() && header_->file_schema().schema_identifiers().size() == 1) { try { - schema_ = IfcParse::schema_by_name(header_->file_schema()->schema_identifiers().front()); + schema_ = IfcParse::schema_by_name(header_->file_schema().schema_identifiers().front()); good_ = file_open_status::SUCCESS; } catch (const IfcParse::IfcException&) { } @@ -1513,12 +1505,11 @@ void IfcParse::impl::in_memory_file_storage::read_from_stream(IfcParse::FileRead std::vector schemas; - // @todo this line makes no sense file->header().file(file); if (file->header().tryRead()) { try { - schemas = file->header().file_schema()->schema_identifiers(); + schemas = file->header().file_schema().schema_identifiers(); } catch (...) { // Purposely empty catch block } @@ -1543,6 +1534,7 @@ void IfcParse::impl::in_memory_file_storage::read_from_stream(IfcParse::FileRead auto ifcroot_type_ = schema->declaration_by_name("IfcRoot"); InstanceStreamer streamer(schema, tokens); + streamer.owner = file; streamer.bypassTypes(typed_to_bypass); Logger::Status("Scanning file..."); @@ -1558,14 +1550,11 @@ void IfcParse::impl::in_memory_file_storage::read_from_stream(IfcParse::FileRead auto current_id = std::get<0>(*inst); - auto instance = schema->instantiate(std::get<1>(*inst), std::move(std::get<2>(*inst))); - instance->file_ = file; - instance->id_ = (uint32_t) current_id; + express::Base instance(std::get<2>(*inst)); - if (instance->declaration().is(*ifcroot_type_)) { + if (instance.declaration().is(*ifcroot_type_)) { try { - // @nb here we know we're using in-memory so 'nullptr, nullptr, 0' is safe - const std::string guid = instance->data().get_attribute_value(nullptr, nullptr, 0, 0); + const std::string guid = instance.get_attribute_value(0); if (byguid_.find(guid) != byguid_.end()) { std::stringstream ss; ss << "Instance encountered with non-unique GlobalId " << guid; @@ -1577,13 +1566,10 @@ void IfcParse::impl::in_memory_file_storage::read_from_stream(IfcParse::FileRead } } - const IfcParse::declaration* ty = &instance->declaration(); + const IfcParse::declaration* ty = &instance.declaration(); { - if (bytype_excl_.find(ty) == bytype_excl_.end()) { - bytype_excl_[ty].reset(new aggregate_of_instance()); - } - bytype_excl_[ty]->push(instance); + bytype_excl_[ty].push_back(instance); } if (byid_.find(current_id) != byid_.end()) { @@ -1592,12 +1578,7 @@ void IfcParse::impl::in_memory_file_storage::read_from_stream(IfcParse::FileRead Logger::Message(Logger::LOG_WARNING, ss.str()); } - // byidentity_[instance->identity()] = instance; - byid_.insert({(uint32_t) current_id, instance }); - - // @nb cannot assign to byid_; - // byid_[current_id] = instance; - + byid_.insert({(uint32_t)current_id, std::get<2>(*inst)}); max_id = (std::max)(max_id, (unsigned int) current_id); } @@ -1608,9 +1589,12 @@ void IfcParse::impl::in_memory_file_storage::read_from_stream(IfcParse::FileRead read_simple_type_instances = streamer.stealInstances(); // Set file ownership on simple type instances, so that when adding them to other files, proper copies are created + /* + // @todo double check whether file ownership is property set earlier on for (auto& inst : read_simple_type_instances) { inst->file_ = file; } + */ Logger::Status("\rDone scanning file "); @@ -1634,30 +1618,30 @@ void IfcParse::impl::in_memory_file_storage::read_from_stream(IfcParse::FileRead if (it == byid_.end()) { Logger::Error("Instance reference #" + std::to_string(*name) + " used by instance #" + std::to_string(ref) + " at attribute index " + std::to_string(refattr) + " not found at offset " + std::to_string(name->file_offset)); } else { - auto* storage = &byid_[p.first.name_]->data(); + auto& storage = byid_[p.first.name_]; auto attr_index = p.first.index_; - if (storage->has_attribute_value(nullptr, nullptr, 0, attr_index)) { - IfcUtil::IfcBaseClass* inst = storage->get_attribute_value(nullptr, nullptr, 0, attr_index); - if (!inst->declaration().as_entity()) { + if (storage->has_attribute_value(attr_index)) { + express::Base inst = storage->get_attribute_value(attr_index); + if (!inst.declaration().as_entity()) { // Probably a case of IfcPropertySetDefinitionSet, divert storage of reference to the simply type instance - storage = &inst->data(); + storage = inst.data_weak().lock(); attr_index = 0; } } - if (storage->has_attribute_value(nullptr, nullptr, 0, attr_index)) { - storage->set_attribute_value(nullptr, nullptr, 0, attr_index, it->second); + if (storage->has_attribute_value(attr_index)) { + storage->set_attribute_value(attr_index, express::Base(it->second)); } else { Logger::Error("Duplicate definition for instance reference"); } } - } else if (auto* inst = std::get_if(v)) { - byid_[p.first.name_]->data().set_attribute_value(nullptr, nullptr, 0, p.first.index_, *inst); + } else if (auto inst = std::get_if(v)) { + byid_[p.first.name_]->set_attribute_value(p.first.index_, *inst); } } else if (auto* vv = std::get_if>(&p.second)) { - aggregate_of_instance::ptr instances(new aggregate_of_instance); - instances->reserve(vv->size()); + std::vector instances; + instances.reserve(vv->size()); for (const auto& vi : *vv) { if (auto* name = std::get_if(&vi)) { if (std::binary_search(bypassed.begin(), bypassed.end(), *name)) { @@ -1667,34 +1651,34 @@ void IfcParse::impl::in_memory_file_storage::read_from_stream(IfcParse::FileRead if (it == byid_.end()) { Logger::Error("Instance reference #" + std::to_string(*name) + " used by instance #" + std::to_string(ref) + " at attribute index " + std::to_string(refattr) + " not found at offset " + std::to_string(name->file_offset)); } else { - instances->push(it->second); + instances.push_back(express::Base(it->second)); } - } else if (auto* inst = std::get_if(&vi)) { - instances->push(*inst); + } else if (auto* inst = std::get_if(&vi)) { + instances.push_back(*inst); } } - auto* storage = &byid_[p.first.name_]->data(); + auto& storage = byid_[p.first.name_]; auto attr_index = p.first.index_; - if (storage->has_attribute_value(nullptr, nullptr, 0, attr_index)) { - IfcUtil::IfcBaseClass* inst = storage->get_attribute_value(nullptr, nullptr, 0, attr_index); - if (!inst->declaration().as_entity()) { + if (storage->has_attribute_value(attr_index)) { + express::Base inst = storage->get_attribute_value(attr_index); + if (!inst.declaration().as_entity()) { // Probably a case of IfcPropertySetDefinitionSet, divert storage of reference to the simply type instance - storage = &inst->data(); + storage = inst.data_weak().lock(); attr_index = 0; } } - if (storage->has_attribute_value(nullptr, nullptr, 0, attr_index)) { - storage->set_attribute_value(nullptr, nullptr, 0, attr_index, instances); + if (storage->has_attribute_value(attr_index)) { + storage->set_attribute_value(attr_index, instances); } else { Logger::Error("Duplicate definition for instance reference"); } } else if (auto* vvv = std::get_if>>(&p.second)) { - aggregate_of_aggregate_of_instance::ptr instances(new aggregate_of_aggregate_of_instance); + std::vector> instances; for (const auto& vi : *vvv) { - std::vector inner; + auto& inner = instances.emplace_back(); for (const auto& vii : vi) { if (auto* name = std::get_if(&vii)) { if (std::binary_search(bypassed.begin(), bypassed.end(), *name)) { @@ -1704,29 +1688,28 @@ void IfcParse::impl::in_memory_file_storage::read_from_stream(IfcParse::FileRead if (it == byid_.end()) { Logger::Error("Instance reference #" + std::to_string(*name) + " used by instance #" + std::to_string(ref) + " at attribute index " + std::to_string(refattr) + " not found at offset " + std::to_string(name->file_offset)); } else { - inner.push_back(it->second); + inner.push_back(express::Base(it->second)); } - } else if (auto* inst = std::get_if(&vii)) { + } else if (auto* inst = std::get_if(&vii)) { inner.push_back(*inst); } } - instances->push(inner); } - auto* storage = &byid_[p.first.name_]->data(); + auto& storage = byid_[p.first.name_]; auto attr_index = p.first.index_; - if (storage->has_attribute_value(nullptr, nullptr, 0, attr_index)) { - IfcUtil::IfcBaseClass* inst = storage->get_attribute_value(nullptr, nullptr, 0, attr_index); - if (!inst->declaration().as_entity()) { + if (storage->has_attribute_value(attr_index)) { + express::Base inst = storage->get_attribute_value(attr_index); + if (!inst.declaration().as_entity()) { // Probably a case of IfcPropertySetDefinitionSet, divert storage of reference to the simply type instance - storage = &inst->data(); + storage = inst.data_weak().lock(); attr_index = 0; } } - if (storage->has_attribute_value(nullptr, nullptr, 0, attr_index)) { - storage->set_attribute_value(nullptr, nullptr, 0, attr_index, instances); + if (storage->has_attribute_value(attr_index)) { + storage->set_attribute_value(attr_index, instances); } else { Logger::Error("Duplicate definition for instance reference"); } @@ -1750,36 +1733,30 @@ void IfcFile::recalculate_id_counter() { } class traversal_recorder { - aggregate_of_instance::ptr list_; - std::map instances_by_level_; + std::vector list_; + std::map> instances_by_level_; int mode_; public: traversal_recorder(int mode) : mode_(mode) { - if (mode == 0) { - list_.reset(new aggregate_of_instance); - } }; - void push_back(int level, IfcUtil::IfcBaseClass* instance) { + void push_back(int level, const express::Base& instance) { if (mode_ == 0) { - list_->push(instance); + list_.push_back(instance); } else { auto& l = instances_by_level_[level]; - if (!l) { - l.reset(new aggregate_of_instance); - } - l->push(instance); + l.push_back(instance); } } - aggregate_of_instance::ptr get_list() const { + std::vector get_list() const { if (mode_ == 0) { return list_; } - aggregate_of_instance::ptr l(new aggregate_of_instance); + std::vector l; for (const auto& p : instances_by_level_) { - l->push(p.second); + l.insert(l.end(), p.second.begin(), p.second.end()); } return l; } @@ -1787,22 +1764,22 @@ class traversal_recorder { class traversal_visitor { private: - std::set& visited_; + std::set& visited_; traversal_recorder& list_; int level_; int max_level_; public: - traversal_visitor(std::set& visited, traversal_recorder& list, int level, int max_level) + traversal_visitor(std::set& visited, traversal_recorder& list, int level, int max_level) : visited_(visited), list_(list), level_(level), max_level_(max_level) {} - void operator()(IfcUtil::IfcBaseClass* inst, int index); + void operator()(const express::Base& inst, int index); }; -void traverse_(IfcUtil::IfcBaseClass* instance, std::set& visited, traversal_recorder& list, int level, int max_level) { +void traverse_(const express::Base& instance, std::set& visited, traversal_recorder& list, int level, int max_level) { if (visited.find(instance) != visited.end()) { return; } @@ -1817,12 +1794,12 @@ void traverse_(IfcUtil::IfcBaseClass* instance, std::set apply_individual_instance_visitor(instance).apply(visit); } -void traversal_visitor::operator()(IfcUtil::IfcBaseClass* inst, int /* index */) { +void traversal_visitor::operator()(const express::Base& inst, int /* index */) { traverse_(inst, visited_, list_, level_, max_level_); } -aggregate_of_instance::ptr IfcParse::traverse(IfcUtil::IfcBaseClass* instance, int max_level) { - std::set visited; +std::vector IfcParse::traverse(const express::Base& instance, int max_level) { + std::set visited; traversal_recorder recorder(0); traverse_(instance, visited, recorder, 0, max_level); return recorder.get_list(); @@ -1830,65 +1807,50 @@ aggregate_of_instance::ptr IfcParse::traverse(IfcUtil::IfcBaseClass* instance, i // I'm cheating this isn't breadth-first, but rather we record visited instances // keeping track of their rank and return a list ordered by rank. Is this equivalent? -aggregate_of_instance::ptr IfcParse::traverse_breadth_first(IfcUtil::IfcBaseClass* instance, int max_level) { - std::set visited; +std::vector IfcParse::traverse_breadth_first(const express::Base& instance, int max_level) { + std::set visited; traversal_recorder recorder(1); traverse_(instance, visited, recorder, 0, max_level); return recorder.get_list(); } /// @note: for backwards compatibility -aggregate_of_instance::ptr IfcFile::traverse(IfcUtil::IfcBaseClass* instance, int max_level) { +std::vector IfcFile::traverse(const express::Base& instance, int max_level) { return IfcParse::traverse(instance, max_level); } /// @note: for backwards compatibility -aggregate_of_instance::ptr IfcFile::traverse_breadth_first(IfcUtil::IfcBaseClass* instance, int max_level) { +std::vector IfcFile::traverse_breadth_first(const express::Base& instance, int max_level) { return IfcParse::traverse_breadth_first(instance, max_level); } -void IfcFile::addEntities(aggregate_of_instance::ptr entities) { - for (aggregate_of_instance::it i = entities->begin(); i != entities->end(); ++i) { - addEntity(*i); - } -} - -IfcUtil::IfcBaseClass* IfcFile::addEntity(IfcUtil::IfcBaseClass* entity, int id) { - if (id != -1) { - bool id_already_exists = false; - try { - if (check_existance_before_adding) { - instance_by_id(id); - id_already_exists = true; - } - } catch (...) {} - if (id_already_exists) { - throw IfcParse::IfcException("An instance with id " + boost::lexical_cast(id) + " is already part of this file"); - } +express::Base IfcFile::addEntity(const express::Base& entity) { + if (entity.data()->file() == this) { + return entity; } - if (entity->declaration().schema() != schema()) { - throw IfcParse::IfcException("Unabled to add instance from " + entity->declaration().schema()->name() + " schema to file with " + schema()->name() + " schema"); + if (entity.declaration().schema() != schema()) { + throw IfcParse::IfcException("Unabled to add instance from " + entity.declaration().schema()->name() + " schema to file with " + schema()->name() + " schema"); } // If this instance has been inserted before, return // a reference to the copy that was created from it. - entity_entity_map_t::iterator mit = entity_file_map_.find(entity->identity()); + entity_entity_map_t::iterator mit = entity_file_map_.find(entity.identity()); if (mit != entity_file_map_.end()) { return mit->second; } - IfcUtil::IfcBaseClass* new_entity = entity; + express::Base new_entity; // Obtain all forward references by a depth-first // traversal and add them to the file. try { - aggregate_of_instance::ptr entity_attributes = traverse(entity, 1); - for (aggregate_of_instance::it it = entity_attributes->begin(); it != entity_attributes->end(); ++it) { + auto entity_attributes = traverse(entity, 1); + for (auto it = entity_attributes.begin() + 1; it != entity_attributes.end(); ++it) { if (*it != entity) { - entity_entity_map_t::iterator mit2 = entity_file_map_.find((*it)->identity()); + entity_entity_map_t::iterator mit2 = entity_file_map_.find(it->identity()); if (mit2 == entity_file_map_.end()) { - entity_file_map_.insert(entity_entity_map_t::value_type((*it)->identity(), addEntity(*it))); + entity_file_map_.insert(entity_entity_map_t::value_type(it->identity(), addEntity(*it))); } } } @@ -1896,173 +1858,126 @@ IfcUtil::IfcBaseClass* IfcFile::addEntity(IfcUtil::IfcBaseClass* entity, int id) Logger::Message(Logger::LOG_ERROR, "Failed to visit forward references of", entity); } - // See whether the instance is already part of a file - if (entity->file_ != nullptr) { - if (entity->file_ == this) { - if (entity->declaration().as_entity() == nullptr) { - // While not a mapping that can be queried, we do need to free the instance later on - // @todo. why (over?)write this when adding from the same file? - std::visit([new_entity](auto& m) { - if constexpr (std::is_same_v, impl::in_memory_file_storage>) { - // @todo not freed yet - m.tbyid_.insert({ new_entity->identity(), new_entity }); - } - }, storage_); - } + // An instance is being added from another file. A copy of the + // container and entity is created. The attribute references + // need to be updated to point to instances in this file. + IfcFile* other_file = entity.data()->file(); + create(&entity.declaration()); + auto* decl = &entity.declaration(); - // If it is part of this file - // nothing else needs to be done. - return entity; - } - - // An instance is being added from another file. A copy of the - // container and entity is created. The attribute references - // need to be updated to point to instances in this file. - IfcFile* other_file = entity->file_; - - auto* decl = &entity->declaration(); - if (storage_.index() == 1) { - if (auto* ent = decl->as_entity()) { - new_entity = schema_->instantiate(decl, in_memory_attribute_storage(ent->attribute_count())); - } else if (auto* typedecl = decl->as_type_declaration()) { - new_entity = schema_->instantiate(decl, in_memory_attribute_storage(1)); - } - } - if (storage_.index() == 2) { - new_entity = schema_->instantiate(decl, rocks_db_attribute_storage{}); - } - new_entity->file_ = this; - - // A new entity instance name is generated and - // the instance is pointed to this file. - if (new_entity->declaration().as_entity() != nullptr) { - if (id == -1) { - new_entity->as()->set_id(FreshId()); + auto num_attributes = (decl->as_entity() ? decl->as_entity()->attribute_count() : 1); + for (size_t i = 0; i < num_attributes; ++i) { + entity.data()->apply_visitor([this, i, decl, &new_entity](const auto& v) { + using U = std::decay_t; + // only need to copy non-instance attribute values, others are assigned below after mapping + if constexpr (std::is_same_v) { + } else if constexpr (std::is_same_v>) { + } else if constexpr (std::is_same_v>>) { } else { - new_entity->as()->set_id((unsigned int)id); - if ((unsigned)id > max_id_) { - max_id_ = (unsigned)id; - } + new_entity.set_attribute_value(i, v); } - } - - void* own_storage = std::visit([](const auto& m) { return (void*)&m; }, storage_); - void* other_storage = std::visit([](const auto& m) { return (void*)&m; }, other_file->storage_); - auto num_attributes = (entity->declaration().as_entity() ? entity->declaration().as_entity()->attribute_count() : 1); - for (size_t i = 0; i < num_attributes; ++i) { - entity->data().apply_visitor(other_storage, decl, entity->id() ? entity->id() : entity->identity(), [this, i, decl, new_entity, own_storage](const auto& v) { - using U = std::decay_t; - // only need to copy non-instance attribute values, others are assigned below after mapping - if constexpr (std::is_same_v) { - } else if constexpr (std::is_same_v) { - } else if constexpr (std::is_same_v) { - } else { - new_entity->set_attribute_value(i, v); - } - }, i); - } + }, i); + } - // In case an entity is added that contains geometry, the unit - // information needs to be accounted for for IfcLengthMeasures. - double conversion_factor = calculate_unit_factors ? std::numeric_limits::quiet_NaN() : 1.0; + // In case an entity is added that contains geometry, the unit + // information needs to be accounted for for IfcLengthMeasures. + double conversion_factor = calculate_unit_factors ? std::numeric_limits::quiet_NaN() : 1.0; - for (size_t i = 0; i < (new_entity->declaration().as_entity() ? new_entity->declaration().as_entity()->attribute_count() : 1); ++i) { - // old attribute value - auto attr = entity->get_attribute_value(i); - IfcUtil::ArgumentType attr_type = attr.type(); + for (size_t i = 0; i < num_attributes; ++i) { + // old attribute value + auto attr = entity.get_attribute_value(i); + IfcUtil::ArgumentType attr_type = attr.type(); - IfcParse::declaration* potentially_length_measure_decl = 0; - if (entity->declaration().as_entity() != nullptr) { - potentially_length_measure_decl = 0; - const parameter_type* pt = entity->declaration().as_entity()->attribute_by_index(i)->type_of_attribute(); - while (pt->as_aggregation_type() != nullptr) { - pt = pt->as_aggregation_type()->type_of_element(); - } - if (pt->as_named_type() != nullptr) { - potentially_length_measure_decl = pt->as_named_type()->declared_type(); - } + IfcParse::declaration* potentially_length_measure_decl = 0; + if (decl->as_entity() != nullptr) { + potentially_length_measure_decl = 0; + const parameter_type* pt = decl->as_entity()->attribute_by_index(i)->type_of_attribute(); + while (pt->as_aggregation_type() != nullptr) { + pt = pt->as_aggregation_type()->type_of_element(); } + if (pt->as_named_type() != nullptr) { + potentially_length_measure_decl = pt->as_named_type()->declared_type(); + } + } - if (attr_type == IfcUtil::Argument_ENTITY_INSTANCE) { - entity_entity_map_t::const_iterator eit = entity_file_map_.find(((IfcUtil::IfcBaseClass*)(attr))->identity()); + if (attr_type == IfcUtil::Argument_ENTITY_INSTANCE) { + entity_entity_map_t::const_iterator eit = entity_file_map_.find(((express::Base)(attr)).identity()); + if (eit == entity_file_map_.end()) { + throw IfcParse::IfcException("Unable to map instance to file"); + } + // @todo previously, we directly use storage::set() not to trigger inverse recalculation which happens at the end + new_entity.set_attribute_value(i, eit->second); + } else if (attr_type == IfcUtil::Argument_AGGREGATE_OF_ENTITY_INSTANCE) { + std::vector instances = attr; + std::vector new_instances; + for (auto& i : instances) { + entity_entity_map_t::const_iterator eit = entity_file_map_.find(i.identity()); if (eit == entity_file_map_.end()) { throw IfcParse::IfcException("Unable to map instance to file"); } - // @todo previously, we directly use storage::set() not to trigger inverse recalculation which happens at the end - new_entity->set_attribute_value(i, eit->second); - } else if (attr_type == IfcUtil::Argument_AGGREGATE_OF_ENTITY_INSTANCE) { - aggregate_of_instance::ptr instances = attr; - aggregate_of_instance::ptr new_instances(new aggregate_of_instance); - for (aggregate_of_instance::it it = instances->begin(); it != instances->end(); ++it) { - entity_entity_map_t::const_iterator eit = entity_file_map_.find((*it)->identity()); + new_instances.push_back(eit->second); + } + new_entity.set_attribute_value(i, new_instances); + } else if (attr_type == IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_ENTITY_INSTANCE) { + std::vector> instances = attr; + std::vector> new_instances; + + for (auto& v : instances) { + new_instances.emplace_back(); + for (auto& i : v) { + entity_entity_map_t::const_iterator eit = entity_file_map_.find(i.identity()); if (eit == entity_file_map_.end()) { throw IfcParse::IfcException("Unable to map instance to file"); } - new_instances->push(eit->second); - } - - new_entity->set_attribute_value(i, new_instances); - } else if (attr_type == IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_ENTITY_INSTANCE) { - aggregate_of_aggregate_of_instance::ptr instances = attr; - aggregate_of_aggregate_of_instance::ptr new_instances(new aggregate_of_aggregate_of_instance); - for (aggregate_of_aggregate_of_instance::outer_it it = instances->begin(); it != instances->end(); ++it) { - std::vector list; - for (aggregate_of_aggregate_of_instance::inner_it jt = it->begin(); jt != it->end(); ++jt) { - entity_entity_map_t::const_iterator eit = entity_file_map_.find((*jt)->identity()); - if (eit == entity_file_map_.end()) { - throw IfcParse::IfcException("Unable to map instance to file"); - } - list.push_back(eit->second); - } - new_instances->push(list); - } - - new_entity->set_attribute_value(i, new_instances); - } else if ((potentially_length_measure_decl != nullptr) && potentially_length_measure_decl->is(*schema()->declaration_by_name("IfcLengthMeasure"))) { - if (boost::math::isnan(conversion_factor)) { - std::pair this_file_unit = {nullptr, 1.0}; - std::pair other_file_unit = {nullptr, 1.0}; - try { - this_file_unit = getUnit("LENGTHUNIT"); - other_file_unit = other_file->getUnit("LENGTHUNIT"); - } catch (IfcParse::IfcException&) { - } - if ((this_file_unit.first != nullptr) && (other_file_unit.first != nullptr)) { - conversion_factor = other_file_unit.second / this_file_unit.second; - } else { - conversion_factor = 1.; - } - } - if (attr_type == IfcUtil::Argument_DOUBLE) { - double v = attr; - v *= conversion_factor; - new_entity->set_attribute_value(i, v); - } else if (attr_type == IfcUtil::Argument_AGGREGATE_OF_DOUBLE) { - std::vector v = attr; - for (std::vector::iterator it = v.begin(); it != v.end(); ++it) { - (*it) *= conversion_factor; - } - new_entity->set_attribute_value(i, v); - } else if (attr_type == IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_DOUBLE) { - std::vector> v = attr; - for (std::vector>::iterator it = v.begin(); it != v.end(); ++it) { - std::vector& v2 = (*it); - for (std::vector::iterator jt = v2.begin(); jt != v2.end(); ++jt) { - (*jt) *= conversion_factor; - } - } - new_entity->set_attribute_value(i, v); + new_instances.back().push_back(eit->second); } } + + new_entity.set_attribute_value(i, new_instances); + } else if ((potentially_length_measure_decl != nullptr) && potentially_length_measure_decl->is(*schema()->declaration_by_name("IfcLengthMeasure"))) { + if (boost::math::isnan(conversion_factor)) { + std::pair this_file_unit = {express::Base{}, 1.0}; + std::pair other_file_unit = {express::Base{}, 1.0}; + try { + this_file_unit = getUnit("LENGTHUNIT"); + other_file_unit = other_file->getUnit("LENGTHUNIT"); + } catch (IfcParse::IfcException&) { + } + if (this_file_unit.first && other_file_unit.first) { + conversion_factor = other_file_unit.second / this_file_unit.second; + } else { + conversion_factor = 1.; + } + } + if (attr_type == IfcUtil::Argument_DOUBLE) { + double v = attr; + v *= conversion_factor; + new_entity.set_attribute_value(i, v); + } else if (attr_type == IfcUtil::Argument_AGGREGATE_OF_DOUBLE) { + std::vector v = attr; + for (std::vector::iterator it = v.begin(); it != v.end(); ++it) { + (*it) *= conversion_factor; + } + new_entity.set_attribute_value(i, v); + } else if (attr_type == IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_DOUBLE) { + std::vector> v = attr; + for (std::vector>::iterator it = v.begin(); it != v.end(); ++it) { + std::vector& v2 = (*it); + for (std::vector::iterator jt = v2.begin(); jt != v2.end(); ++jt) { + (*jt) *= conversion_factor; + } + } + new_entity.set_attribute_value(i, v); + } } - - entity_file_map_.insert(entity_entity_map_t::value_type(entity->identity(), new_entity)); } + entity_file_map_.insert(entity_entity_map_t::value_type(entity.identity(), new_entity)); + // For subtypes of IfcRoot, the GUID mapping needs to be updated. - if (new_entity->declaration().is(*ifcroot_type_)) { + if (decl->is(*ifcroot_type_)) { try { - const std::string guid = new_entity->get_attribute_value(0); + const std::string guid = new_entity.get_attribute_value(0); if (byguid_.find(guid) != byguid_.end()) { std::stringstream ss; ss << "Overwriting entity with guid " << guid; @@ -2074,82 +1989,21 @@ IfcUtil::IfcBaseClass* IfcFile::addEntity(IfcUtil::IfcBaseClass* entity, int id) } } - // The mapping by entity type is updated. - const IfcParse::declaration* ty = &new_entity->declaration(); - - // @nb happens always because this also registers the type of the instance in rocksdb - // if (ty->as_entity() != nullptr) { - add_type_ref(new_entity); - // } - - if (ty->as_entity() != nullptr) { - int new_id = -1; - if (new_entity->file_ == nullptr) { - // For newly created entities ensure a valid ENTITY_INSTANCE_NAME is set - new_entity->file_ = this; - boost::optional id_value; - if (id != -1) { - id_value = (unsigned)id; - if ((unsigned)id > max_id_) { - max_id_ = (unsigned)id; - } - } - new_id = new_entity->as()->set_id(id_value); - } else { - new_id = new_entity->id(); - } - - /* - if (byid_.find(new_id) != byid_.end()) { - // This should not happen - std::stringstream ss; - ss << "Overwriting entity with id " << new_id; - Logger::Message(Logger::LOG_WARNING, ss.str()); - } - */ - - // rocksdb instances are assumed to be create with file.create(); - std::visit([new_entity](auto& m) { - if constexpr (std::is_same_v, impl::in_memory_file_storage>) { - // @todo not freed yet - m.byid_.insert({ new_entity->id(), new_entity }); - } - }, storage_); - } else if (new_entity->file_ == nullptr) { - // For non-entity instances, no mappings are updated, but the file - // pointer has to be set, so that actual copies are created in subsequent - // times. - new_entity->file_ = this; - - // rocksdb instances are assumed to be create with file.create(); - std::visit([new_entity](auto& m) { - if constexpr (std::is_same_v, impl::in_memory_file_storage>) { - // @todo not freed yet - m.tbyid_.insert({ new_entity->identity(), new_entity }); - } - }, storage_); - } - - // @todo verify whether this is still needed. If instances are created directly on the file - // with create() (which is a necessity for using rocksdb storage) then it should be sufficient - // to register inverses only on attribute updates. - if ((ty->as_entity() != nullptr)) { - build_inverses_(new_entity); - } + add_type_ref(new_entity); return new_entity; } -void IfcFile::removeEntity(IfcUtil::IfcBaseClass* entity) { - const unsigned id = entity->id(); +void IfcFile::removeEntity(const express::Base& entity) { + auto id = entity.id(); - IfcUtil::IfcBaseClass* file_entity = instance_by_id(id); + auto file_entity = instance_by_id(id); // Attention when running removeEntity inside a loop over a list of entities to be removed. // This invalidates the iterator. A workaround is to reverse the loop: // boost::shared_ptr entities = ...; // for (auto it = entities->end() - 1; it >= entities->begin(); --it) { - // IfcUtil::IfcBaseClass *const inst = *it; + // express::Base *const inst = *it; // model->removeEntity(inst); // } @@ -2171,26 +2025,24 @@ void IfcFile::removeEntity(IfcUtil::IfcBaseClass* entity) { } } -void IfcFile::process_deletion_(IfcUtil::IfcBaseClass* entity) { +void IfcFile::process_deletion_(const express::Base& entity) { - aggregate_of_instance::ptr references = instances_by_reference(entity->id()); + auto references = instances_by_reference(entity.id()); // Alter entity instances with INVERSE relations to the entity being // deleted. This is necessary to maintain a valid IFC file, because // dangling references to it's entities name should be removed. At this // moment, inversely related instances affected by the removal of the // entity being deleted are not deleted themselves. - if (references) { - for (aggregate_of_instance::it iit = references->begin(); iit != references->end(); ++iit) { - IfcUtil::IfcBaseEntity* related_instance = (IfcUtil::IfcBaseEntity*)*iit; - - if (std::find(batch_deletion_ids_.begin(), batch_deletion_ids_.end(), related_instance->id()) != batch_deletion_ids_.end()) { + if (!references.empty()) { + for (auto& related_instance : references) { + if (std::find(batch_deletion_ids_.begin(), batch_deletion_ids_.end(), related_instance.id()) != batch_deletion_ids_.end()) { continue; } - const auto& decl = related_instance->declaration(); + const auto& decl = related_instance.declaration(); for (size_t i = 0; i < (decl.as_entity() ? decl.as_entity()->attribute_count() : 1); ++i) { - auto attr = related_instance->get_attribute_value(i); + auto attr = related_instance.get_attribute_value(i); if (attr.isNull()) { continue; } @@ -2198,37 +2050,35 @@ void IfcFile::process_deletion_(IfcUtil::IfcBaseClass* entity) { IfcUtil::ArgumentType attr_type = attr.type(); switch (attr_type) { case IfcUtil::Argument_ENTITY_INSTANCE: { - IfcUtil::IfcBaseClass* instance_attribute = attr; + express::Base instance_attribute = attr; if (instance_attribute == entity) { - related_instance->set_attribute_value(i, Blank{}); + related_instance.set_attribute_value(i, Blank{}); } } break; case IfcUtil::Argument_AGGREGATE_OF_ENTITY_INSTANCE: { - aggregate_of_instance::ptr instance_list = attr; - if (instance_list->contains(entity)) { - instance_list->remove(entity); - if ((instance_list->size() == 0U) && related_instance->declaration().as_entity()->attribute_by_index(i)->optional()) { + std::vector instance_list = attr; + auto it = std::remove(instance_list.begin(), instance_list.end(), entity); + if (it != instance_list.end()) { + instance_list.erase(it, instance_list.end()); + if (instance_list.empty() && related_instance.declaration().as_entity()->attribute_by_index(i)->optional()) { // @todo we can also check the lower bound of the attribute type before setting to null. - related_instance->set_attribute_value(i, Blank{}); + related_instance.set_attribute_value(i, Blank{}); } else { - related_instance->set_attribute_value(i, instance_list); + related_instance.set_attribute_value(i, instance_list); } } } break; case IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_ENTITY_INSTANCE: { - aggregate_of_aggregate_of_instance::ptr instance_list_list = attr; - if (instance_list_list->contains(entity)) { - aggregate_of_aggregate_of_instance::ptr new_list(new aggregate_of_aggregate_of_instance); - for (aggregate_of_aggregate_of_instance::outer_it it = instance_list_list->begin(); it != instance_list_list->end(); ++it) { - std::vector instances = *it; - std::vector::iterator jt; - while ((jt = std::find(instances.begin(), instances.end(), entity)) != instances.end()) { - instances.erase(jt); - } - new_list->push(instances); + std::vector> instance_list_list = attr; + bool updated = false; + for (auto& li : instance_list_list) { + auto it = std::remove(li.begin(), li.end(), entity); + if (it != li.end()) { + li.erase(it, li.end()); + updated = true; } - related_instance->set_attribute_value(i, new_list); } + related_instance.set_attribute_value(i, instance_list_list); } break; default: break; @@ -2237,8 +2087,8 @@ void IfcFile::process_deletion_(IfcUtil::IfcBaseClass* entity) { } } - if (entity->declaration().is(*ifcroot_type_) && !entity->get_attribute_value(0).isNull()) { - const std::string global_id = entity->get_attribute_value(0); + if (entity.declaration().is(*ifcroot_type_) && !entity.get_attribute_value(0).isNull()) { + const std::string global_id = entity.get_attribute_value(0); auto it = byguid_.find(global_id); if (it != byguid_.end()) { byguid_.erase(it); @@ -2249,12 +2099,12 @@ void IfcFile::process_deletion_(IfcUtil::IfcBaseClass* entity) { process_deletion_inverse(entity); - byid_.erase(entity->id()); - remove_type_ref(entity); // entity_file_map is in place to prevent duplicate definitions with usage of add(). // Upon deletion the pairs need to be erased. + // @todo this is not strictly necessary anymore and can be amortized to e.g 1/100 times + // to delete the expired weak_ptrs. for (auto it = entity_file_map_.begin(); it != entity_file_map_.end();) { if (it->second == entity) { it = entity_file_map_.erase(it); @@ -2263,11 +2113,12 @@ void IfcFile::process_deletion_(IfcUtil::IfcBaseClass* entity) { } } - delete entity; + // This now frees the shared_ptr + byid_.erase(entity.id()); } -void IfcParse::impl::in_memory_file_storage::process_deletion_inverse(IfcUtil::IfcBaseClass* entity) { - auto id = entity->id(); +void IfcParse::impl::in_memory_file_storage::process_deletion_inverse(const express::Base& entity) { + auto id = entity.id(); // Delete inverses into entity byref_excl_.erase( @@ -2276,13 +2127,13 @@ void IfcParse::impl::in_memory_file_storage::process_deletion_inverse(IfcUtil::I // This is based on traversal which needs instances to still be contained in the map. // another option would be to keep byid intact for the remainder of this loop - aggregate_of_instance::ptr entity_attributes = traverse(entity, 1); - for (aggregate_of_instance::it it = entity_attributes->begin(); it != entity_attributes->end(); ++it) { - IfcUtil::IfcBaseClass* entity_attribute = *it; + auto entity_attributes = traverse(entity, 1); + for (auto it = entity_attributes.begin(); it != entity_attributes.end(); ++it) { + auto entity_attribute = *it; if (entity_attribute == entity) { continue; } - const unsigned int name = entity_attribute->id(); + const unsigned int name = entity_attribute.id(); // Do not update inverses for simple types (which have id()==0 in IfcOpenShell). if (name != 0) { // Find instances entity -> other @@ -2316,27 +2167,24 @@ namespace { } } -aggregate_of_instance::ptr IfcFile::instances_by_type(const IfcParse::declaration* t) { - aggregate_of_instance::ptr insts(new aggregate_of_instance); +std::vector IfcFile::instances_by_type(const IfcParse::declaration* t) { + std::vector insts; if (t->as_entity() != nullptr) { visit_subtypes(t->as_entity(), [this, &insts](const IfcParse::entity* ent) { auto subtype_insts = instances_by_type_excl_subtypes(ent); - // @todo stop returning empty shared_ptrs - if (subtype_insts) { - insts->push(subtype_insts); - } + insts.insert(insts.end(), subtype_insts.begin(), subtype_insts.end()); }); } return insts; } -aggregate_of_instance::ptr IfcFile::instances_by_type_excl_subtypes(const IfcParse::declaration* t) { +std::vector IfcFile::instances_by_type_excl_subtypes(const IfcParse::declaration* t) { return std::visit([t](auto& x) { if constexpr (std::is_same_v, impl::in_memory_file_storage>) { auto it = x.bytype_excl_.find(t); - return (it == x.bytype_excl_.end()) ? aggregate_of_instance::ptr(new aggregate_of_instance) : it->second; + return (it == x.bytype_excl_.end()) ? std::vector{} : it->second; } else if constexpr (std::is_same_v, impl::rocks_db_file_storage>) { - aggregate_of_instance::ptr ret(new aggregate_of_instance); + std::vector ret; auto it = x.bytype_.find(t->index_in_schema()); if (it != x.bytype_.end()) { const auto& s = it->second; @@ -2344,35 +2192,35 @@ aggregate_of_instance::ptr IfcFile::instances_by_type_excl_subtypes(const IfcPar std::vector vals(s.size() / sizeof(size_t)); memcpy(vals.data(), s.data(), s.size()); for (auto& v : vals) { - ret->push(x.assert_existance(v, IfcParse::impl::rocks_db_file_storage::entityinstance_ref)); + ret.push_back(x.assert_existance(v, IfcParse::impl::rocks_db_file_storage::entityinstance_ref)); } } return ret; } else { throw std::runtime_error("Storage not initialized"); - aggregate_of_instance::ptr ret(new aggregate_of_instance); + std::vector ret; return ret; } }, storage_); } -aggregate_of_instance::ptr IfcFile::instances_by_type(const std::string& t) { +std::vector IfcFile::instances_by_type(const std::string& t) { return instances_by_type(schema()->declaration_by_name(t)); } -aggregate_of_instance::ptr IfcFile::instances_by_type_excl_subtypes(const std::string& t) { +std::vector IfcFile::instances_by_type_excl_subtypes(const std::string& t) { return instances_by_type_excl_subtypes(schema()->declaration_by_name(t)); } -aggregate_of_instance::ptr IfcFile::instances_by_reference(int t) { - aggregate_of_instance::ptr ret(new aggregate_of_instance); +std::vector IfcFile::instances_by_reference(int t) { + std::vector ret; std::visit([this, t, &ret](auto& x) { if constexpr (std::is_same_v, impl::in_memory_file_storage>) { auto lower = x.byref_excl_.lower_bound({ t, -1, -1 }); auto upper = x.byref_excl_.upper_bound({ t, std::numeric_limits::max(), std::numeric_limits::max() }); for (auto it = lower; it != upper; ++it) { for (auto& i : it->second) { - ret->push(instance_by_id(i)); + ret.push_back(instance_by_id(i)); } } } @@ -2386,7 +2234,7 @@ aggregate_of_instance::ptr IfcFile::instances_by_reference(int t) { std::vector vals(it->value().size() / sizeof(uint32_t)); memcpy(vals.data(), it->value().data(), it->value().size()); for (auto& v : vals) { - ret->push(instance_by_id(v)); + ret.push_back(instance_by_id(v)); } it->Next(); } @@ -2399,18 +2247,18 @@ aggregate_of_instance::ptr IfcFile::instances_by_reference(int t) { return ret; } -IfcUtil::IfcBaseClass* IfcFile::instance_by_id(int id) { +express::Base IfcFile::instance_by_id(int id) { return std::visit([id](auto& x) { if constexpr (std::is_same_v, std::monostate>) { throw std::runtime_error("Storage not initialized"); - return (IfcUtil::IfcBaseClass*) nullptr; + return express::Base{}; } else { return x.instance_by_id(id); } }, storage_); } -void IfcParse::IfcFile::add_type_ref(IfcUtil::IfcBaseClass* new_entity) +void IfcParse::IfcFile::add_type_ref(const express::Base& new_entity) { std::visit([new_entity](auto& x) { if constexpr (std::is_same_v, std::monostate>) { @@ -2422,8 +2270,7 @@ void IfcParse::IfcFile::add_type_ref(IfcUtil::IfcBaseClass* new_entity) } -void IfcParse::IfcFile::remove_type_ref(IfcUtil::IfcBaseClass* new_entity) -{ +void IfcParse::IfcFile::remove_type_ref(const express::Base& new_entity) { std::visit([new_entity](auto& x) { if constexpr (std::is_same_v, std::monostate>) { throw std::runtime_error("Storage not initialized"); @@ -2433,8 +2280,7 @@ void IfcParse::IfcFile::remove_type_ref(IfcUtil::IfcBaseClass* new_entity) }, storage_); } -void IfcParse::IfcFile::process_deletion_inverse(IfcUtil::IfcBaseClass* inst) -{ +void IfcParse::IfcFile::process_deletion_inverse(const express::Base& inst) { std::visit([inst](auto& x) { if constexpr (std::is_same_v, std::monostate>) { throw std::runtime_error("Storage not initialized"); @@ -2444,7 +2290,7 @@ void IfcParse::IfcFile::process_deletion_inverse(IfcUtil::IfcBaseClass* inst) }, storage_); } -IfcUtil::IfcBaseClass* IfcFile::instance_by_guid(const std::string& guid) { +express::Base IfcFile::instance_by_guid(const std::string& guid) { auto it = byguid_.find(guid); if (it == byguid_.end()) { throw IfcException("Instance with GlobalId '" + guid + "' not found"); @@ -2479,15 +2325,15 @@ IfcFile::type_iterator IfcFile::types_end() const { std::ostream& operator<<(std::ostream& out, const IfcParse::IfcFile& file) { file.header().write(out); - typedef std::vector vector_t; + typedef std::vector vector_t; vector_t sorted; std::transform(file.begin(), file.end(), std::back_inserter(sorted), [&file](const auto& x) { return x.second; }); - std::sort(sorted.begin(), sorted.end(), [](const auto& a, const auto& b) { return a->id() < b->id(); }); + std::sort(sorted.begin(), sorted.end(), [](const auto& a, const auto& b) { return a.id() < b.id(); }); for (auto& e : sorted) { // @todo this check should no longer be necessary? - if (e->declaration().as_entity() != nullptr) { - e->toString(out, true); + if (e.declaration().as_entity() != nullptr) { + e.toString(out, true); out << ";" << std::endl; } } @@ -2558,8 +2404,8 @@ std::vector IfcFile::get_inverse_indices(int instance_id) { auto refs = instances_by_reference(instance_id); - for (const auto& ref : *refs) { - auto it = mapping.find(ref->id()); + for (const auto& ref : refs) { + auto it = mapping.find(ref.id()); if (it == mapping.end() || it->second.empty()) { throw IfcException("Internal error"); } @@ -2578,13 +2424,18 @@ std::vector IfcFile::get_inverse_indices(int instance_id) { return return_value; } -aggregate_of_instance::ptr IfcFile::getInverse(int instance_id, const IfcParse::declaration* type, int attribute_index) { +std::vector IfcFile::getInverse(int instance_id, const IfcParse::declaration* type, int attribute_index) { + std::vector return_value; + if (type == nullptr && attribute_index == -1) { - return instances_by_reference(instance_id); + // @todo this is silly. + auto r = instances_by_reference(instance_id); + for (auto& i : r) { + return_value.push_back(i.as()); + } + return return_value; } - - aggregate_of_instance::ptr return_value(new aggregate_of_instance); - + visit_subtypes(type->as_entity(), [this, attribute_index, instance_id, &return_value](const IfcParse::declaration* ent) { std::visit([&return_value, this, attribute_index, instance_id, ent](const auto& x) { @@ -2596,14 +2447,14 @@ aggregate_of_instance::ptr IfcFile::getInverse(int instance_id, const IfcParse:: for (auto it = lower; it != upper; ++it) { for (auto& i : it->second) { - return_value->push(instance_by_id(i)); + return_value.push_back(instance_by_id(i).as()); } } } else { auto it = x.byref_excl_.find({ instance_id, ent->index_in_schema(), attribute_index }); if (it != x.byref_excl_.end()) { for (auto& i : it->second) { - return_value->push(instance_by_id(i)); + return_value.push_back(instance_by_id(i).as()); } } } @@ -2619,7 +2470,7 @@ aggregate_of_instance::ptr IfcFile::getInverse(int instance_id, const IfcParse:: std::vector vals(it->value().size() / sizeof(uint32_t)); memcpy(vals.data(), it->value().data(), it->value().size()); for (auto& v : vals) { - return_value->push(instance_by_id(v)); + return_value.push_back(instance_by_id(v).as()); } it->Next(); } @@ -2627,7 +2478,7 @@ aggregate_of_instance::ptr IfcFile::getInverse(int instance_id, const IfcParse:: auto it = x.byref_excl_.find({ instance_id, ent->index_in_schema(), attribute_index }); if (it != x.byref_excl_.end()) { for (auto& i : it->second) { - return_value->push(instance_by_id(i)); + return_value.push_back(instance_by_id(i).as()); } } } @@ -2669,76 +2520,64 @@ void IfcFile::setDefaultHeaderValues() { schema_identifiers.push_back(schema()->name()); } - header().file_description()->setdescription(file_description); - header().file_description()->setimplementation_level("2;1"); + header().file_description().setdescription(file_description); + header().file_description().setimplementation_level("2;1"); - header().file_name()->setname(empty_string); - header().file_name()->settime_stamp(createTimestamp()); - header().file_name()->setauthor(string_vector); - header().file_name()->setorganization(string_vector); - header().file_name()->setpreprocessor_version("IfcOpenShell " + std::string(IFCOPENSHELL_VERSION)); - header().file_name()->setoriginating_system("IfcOpenShell " + std::string(IFCOPENSHELL_VERSION)); - header().file_name()->setauthorization(empty_string); + header().file_name().setname(empty_string); + header().file_name().settime_stamp(createTimestamp()); + header().file_name().setauthor(string_vector); + header().file_name().setorganization(string_vector); + header().file_name().setpreprocessor_version("IfcOpenShell " + std::string(IFCOPENSHELL_VERSION)); + header().file_name().setoriginating_system("IfcOpenShell " + std::string(IFCOPENSHELL_VERSION)); + header().file_name().setauthorization(empty_string); - header().file_schema()->setschema_identifiers(schema_identifiers); + header().file_schema().setschema_identifiers(schema_identifiers); } -std::pair IfcFile::getUnit(const std::string& unit_type) { - std::pair return_value(0, 1.); +std::pair IfcFile::getUnit(const std::string& unit_type) { + std::pair return_value(express::Base{}, 1.); - aggregate_of_instance::ptr projects = instances_by_type(schema()->declaration_by_name("IfcProject")); - if (!projects || projects->size() == 0) { + auto projects = instances_by_type(schema()->declaration_by_name("IfcProject")); + if (projects.empty()) { try { projects = instances_by_type(schema()->declaration_by_name("IfcContext")); } catch (IfcException&) { } } - if (projects && projects->size() == 1) { - IfcUtil::IfcBaseClass* project = *projects->begin(); + if (!projects.empty()) { + auto project = *projects.begin(); - IfcUtil::IfcBaseClass* unit_assignment = project->get_attribute_value( - project->declaration().as_entity()->attribute_index("UnitsInContext")); + express::Base unit_assignment = project.as().get("UnitsInContext"); - aggregate_of_instance::ptr units = unit_assignment->get_attribute_value( - unit_assignment->declaration().as_entity()->attribute_index("Units")); + std::vector units = unit_assignment.as().get("Units"); - for (aggregate_of_instance::it it = units->begin(); it != units->end(); ++it) { - IfcUtil::IfcBaseClass* unit = *it; - if (unit->declaration().is("IfcNamedUnit")) { - const std::string file_unit_type = unit->get_attribute_value( - unit->declaration().as_entity()->attribute_index("UnitType")); + for (auto& unit : units) { + if (unit.declaration().is("IfcNamedUnit")) { + const std::string file_unit_type = unit.as().get("UnitType"); if (file_unit_type != unit_type) { continue; } - IfcUtil::IfcBaseClass* siunit = 0; - if (unit->declaration().is("IfcConversionBasedUnit")) { - IfcUtil::IfcBaseClass* mu = unit->get_attribute_value( - unit->declaration().as_entity()->attribute_index("ConversionFactor")); - - IfcUtil::IfcBaseClass* vlc = mu->get_attribute_value( - mu->declaration().as_entity()->attribute_index("ValueComponent")); - - IfcUtil::IfcBaseClass* unc = mu->get_attribute_value( - mu->declaration().as_entity()->attribute_index("UnitComponent")); - - return_value.second *= static_cast(vlc->get_attribute_value(0)); + express::Base siunit; + if (unit.declaration().is("IfcConversionBasedUnit")) { + express::Base mu = unit.as().get("ConversionFactor"); + express::Base vlc = mu.as().get("ValueComponent"); + express::Base unc = mu.as().get("UnitComponent"); + return_value.second *= static_cast(vlc.get_attribute_value(0)); return_value.first = unit; - if (unc->declaration().is("IfcSIUnit")) { + if (unc.declaration().is("IfcSIUnit")) { siunit = unc; } - } else if (unit->declaration().is("IfcSIUnit")) { + } else if (unit.declaration().is("IfcSIUnit")) { return_value.first = siunit = unit; } - if (siunit != nullptr) { - AttributeValue prefix = siunit->get_attribute_value( - siunit->declaration().as_entity()->attribute_index("Prefix")); - + if (siunit) { + AttributeValue prefix = siunit.as().get("Prefix"); if (!prefix.isNull()) { return_value.second *= IfcSIPrefixToValue(prefix); } @@ -2750,16 +2589,16 @@ std::pair IfcFile::getUnit(const std::string& un return return_value; } -void IfcParse::IfcFile::build_inverses_(IfcUtil::IfcBaseClass* inst) { - std::function fn = [this, inst](IfcUtil::IfcBaseClass* attr, int idx) { - if (attr->declaration().as_entity() != nullptr) { - unsigned entity_attribute_id = attr->id(); - const auto* decl = inst->declaration().as_entity(); +void IfcParse::IfcFile::build_inverses_(const express::Base& inst) { + std::function fn = [this, inst](const express::Base& attr, int idx) { + if (attr.declaration().as_entity() != nullptr) { + unsigned entity_attribute_id = attr.id(); + const auto* decl = inst.declaration().as_entity(); std::visit([entity_attribute_id, decl, idx, inst](auto& x) { if constexpr (std::is_same_v, std::monostate>) { } else if constexpr (std::is_same_v, impl::in_memory_file_storage>) { - x.byref_excl_[{entity_attribute_id, decl->index_in_schema(), idx}].push_back(inst->id()); + x.byref_excl_[{entity_attribute_id, decl->index_in_schema(), idx}].push_back(inst.id()); } else if constexpr (std::is_same_v, impl::rocks_db_file_storage>) { // @todo } @@ -2789,7 +2628,7 @@ void IfcParse::IfcFile::reset_identity_cache() { void IfcParse::IfcFile::build_inverses() { for (const auto& pair : *this) { - build_inverses_(pair.second); + build_inverses_(express::Base(pair.second)); } } @@ -2804,7 +2643,7 @@ void IfcParse::IfcFile::register_inverse(unsigned id_from, const IfcParse::entit }, storage_); } -void IfcParse::IfcFile::unregister_inverse(unsigned id_from, const IfcParse::entity* from_entity, IfcUtil::IfcBaseClass* inst, int attribute_index) +void IfcParse::IfcFile::unregister_inverse(unsigned id_from, const IfcParse::entity* from_entity, const express::Base& inst, int attribute_index) { std::visit([id_from, from_entity, inst, attribute_index](auto& x) { if constexpr (std::is_same_v, std::monostate>) { @@ -2815,49 +2654,54 @@ void IfcParse::IfcFile::unregister_inverse(unsigned id_from, const IfcParse::ent }, storage_); } -std::atomic_uint32_t IfcUtil::IfcBaseClass::counter_(0); +std::atomic_uint32_t InstanceData::counter_(0); // bool IfcParse::IfcFile::guid_map_ = true; -void IfcUtil::IfcBaseClass::unset_attribute_value(size_t index) { - void* storage = file_ ? std::visit([](const auto& m) { return (void*)&m; }, file_->storage_) : nullptr; - data_.set_attribute_value(storage, &declaration(), id() ? id() : identity(), index, Blank{}); +void express::Base::unset_attribute_value(size_t index) { + data()->set_attribute_value(index, Blank{}); } -AttributeValue IfcUtil::IfcBaseClass::get_attribute_value(size_t index) const { - void* storage = file_ ? std::visit([](const auto& m) { return (void*)&m; }, file_->storage_) : nullptr; - return data_.get_attribute_value(storage, &declaration(), id() ? id() : identity(), index); +AttributeValue express::Base::get_attribute_value(size_t index) const { + return data()->get_attribute_value(index); } -void IfcUtil::IfcBaseClass::toString(std::ostream& out, bool upper) const +void express::Base::toString(std::ostream& out, bool upper) const { const auto *ent = declaration().as_entity(); if (ent != nullptr && declaration().schema() != &Header_section_schema::get_schema()) { - out << "#" << as()->id() << "="; + out << "#" << id() << "="; } if (upper) { out << declaration().name_uc(); } else { out << declaration().name(); } - void* storage = file_ ? std::visit([](const auto& m) { return (void*)&m; }, file_->storage_) : nullptr; - data().toString(storage, &declaration(), id() ? id() : identity(), out, upper); + data()->toString(out, upper); } /* -IfcEntityInstanceData::IfcEntityInstanceData(const IfcEntityInstanceData& data) +InstanceData::InstanceData(const InstanceData& data) : storage_(data.size()) { } */ -AttributeValue IfcEntityInstanceData::get_attribute_value(void* storage, const IfcParse::declaration* decl, std::size_t identity, size_t index) const +AttributeValue InstanceData::get_attribute_value(size_t index) const { if (storage_) { return AttributeValue(storage_, (uint8_t)index); } else { - return AttributeValue((IfcParse::impl::rocks_db_file_storage*)storage, identity, decl, (uint8_t) index); + auto* const storage = std::visit([](auto& m) -> IfcParse::impl::rocks_db_file_storage* { + using U = std::decay_t; + if constexpr (std::is_same_v) { + return &m; + } else { + return nullptr; + } + }, file_->storage_); + return AttributeValue(storage, identity_, declaration_, (uint8_t) index); } } @@ -2879,63 +2723,114 @@ bool IfcParse::impl::rocks_db_file_storage::read_schema(const IfcParse::schema_d return false; } -IfcUtil::IfcBaseClass::IfcBaseClass(IfcEntityInstanceData&& data) + /* +express::Base::IfcBaseClass(InstanceData&& data) : identity_(counter_++) , id_(0) , file_(nullptr) , data_(std::move(data)) { - /* * @todo this is not allowed cannot call virtual func in constructor if (!declaration().as_entity()) { // @nb from v0.9 type decl instances have their own id, which may collide with instance names in the file // but is otherwise unique id_ = identity_; } +} */ + +void express::Base::set_attribute_value(size_t i, const express::Base& p) { + set_attribute_value(i, p); +} +void express::Base::set_attribute_value(const std::string& name, const express::Base& p) { + set_attribute_value(name, p); } -void IfcUtil::IfcBaseClass::set_attribute_value(size_t i, IfcUtil::IfcBaseClass* p) { - set_attribute_value(i, p); -} -void IfcUtil::IfcBaseClass::set_attribute_value(const std::string& name, IfcUtil::IfcBaseClass* p) { - set_attribute_value(name, p); +template void IFC_PARSE_API express::Base::set_attribute_value(size_t index, const Blank& value); +template void IFC_PARSE_API express::Base::set_attribute_value(size_t index, const Derived& value); +template void IFC_PARSE_API express::Base::set_attribute_value(size_t index, const int& value); +template void IFC_PARSE_API express::Base::set_attribute_value(size_t index, const bool& value); +template void IFC_PARSE_API express::Base::set_attribute_value(size_t index, const boost::logic::tribool& value); +template void IFC_PARSE_API express::Base::set_attribute_value(size_t index, const double& value); +template void IFC_PARSE_API express::Base::set_attribute_value(size_t index, const std::string& value); +template void IFC_PARSE_API express::Base::set_attribute_value>(size_t index, const boost::dynamic_bitset<>& value); +template void IFC_PARSE_API express::Base::set_attribute_value(size_t index, const EnumerationReference& value); +template void IFC_PARSE_API express::Base::set_attribute_value>(size_t index, const std::vector& value); +template void IFC_PARSE_API express::Base::set_attribute_value>(size_t index, const std::vector& value); +template void IFC_PARSE_API express::Base::set_attribute_value>(size_t index, const std::vector& value); +template void IFC_PARSE_API express::Base::set_attribute_value>>(size_t index, const std::vector>& value); +template void IFC_PARSE_API express::Base::set_attribute_value>(size_t index, const std::vector& value); +template void IFC_PARSE_API express::Base::set_attribute_value>>(size_t index, const std::vector>& value); +template void IFC_PARSE_API express::Base::set_attribute_value>>(size_t index, const std::vector>& value); +template void IFC_PARSE_API express::Base::set_attribute_value>>(size_t index, const std::vector>& value); + +template void IFC_PARSE_API express::Base::set_attribute_value(const std::string& name, const Blank& value); +template void IFC_PARSE_API express::Base::set_attribute_value(const std::string& name, const Derived& value); +template void IFC_PARSE_API express::Base::set_attribute_value(const std::string& name, const int& value); +template void IFC_PARSE_API express::Base::set_attribute_value(const std::string& name, const bool& value); +template void IFC_PARSE_API express::Base::set_attribute_value(const std::string& name, const boost::logic::tribool& value); +template void IFC_PARSE_API express::Base::set_attribute_value(const std::string& name, const double& value); +template void IFC_PARSE_API express::Base::set_attribute_value(const std::string& name, const std::string& value); +template void IFC_PARSE_API express::Base::set_attribute_value>(const std::string& name, const boost::dynamic_bitset<>& value); +template void IFC_PARSE_API express::Base::set_attribute_value(const std::string& name, const EnumerationReference& value); +template void IFC_PARSE_API express::Base::set_attribute_value>(const std::string& name, const std::vector& value); +template void IFC_PARSE_API express::Base::set_attribute_value>(const std::string& name, const std::vector& value); +template void IFC_PARSE_API express::Base::set_attribute_value>(const std::string& name, const std::vector& value); +template void IFC_PARSE_API express::Base::set_attribute_value>>(const std::string& name, const std::vector>& value); +template void IFC_PARSE_API express::Base::set_attribute_value>(const std::string& name, const std::vector& value); +template void IFC_PARSE_API express::Base::set_attribute_value>>(const std::string& name, const std::vector>& value); +template void IFC_PARSE_API express::Base::set_attribute_value>>(const std::string& name, const std::vector>& value); +template void IFC_PARSE_API express::Base::set_attribute_value>>(const std::string& name, const std::vector>& value); + +namespace express { +template +T Entity::get_value(const std::string& name) const { + auto attr = get(name); + T v = attr; + return v; } -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(size_t index, const Blank& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(size_t index, const Derived& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(size_t index, const int& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(size_t index, const bool& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(size_t index, const boost::logic::tribool& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(size_t index, const double& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(size_t index, const std::string& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value>(size_t index, const boost::dynamic_bitset<>& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(size_t index, const EnumerationReference& value); -// template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(size_t index, IfcUtil::IfcBaseClass* const& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value>(size_t index, const std::vector& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value>(size_t index, const std::vector& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value>(size_t index, const std::vector& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value>>(size_t index, const std::vector>& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(size_t index, const aggregate_of_instance::ptr& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value>>(size_t index, const std::vector>& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value>>(size_t index, const std::vector>& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(size_t index, const aggregate_of_aggregate_of_instance::ptr& value); +template +T Entity::get_value(const std::string& name, const T& default_value) const { + auto attr = get(name); + if (attr.isNull()) { + return default_value; + } + T v = attr; + return v; +} +} // namespace express -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(const std::string& name, const Blank& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(const std::string& name, const Derived& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(const std::string& name, const int& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(const std::string& name, const bool& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(const std::string& name, const boost::logic::tribool& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(const std::string& name, const double& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(const std::string& name, const std::string& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value>(const std::string& name, const boost::dynamic_bitset<>& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(const std::string& name, const EnumerationReference& value); -// template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(const std::string& name, IfcUtil::IfcBaseClass* const& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value>(const std::string& name, const std::vector& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value>(const std::string& name, const std::vector& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value>(const std::string& name, const std::vector& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value>>(const std::string& name, const std::vector>& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(const std::string& name, const aggregate_of_instance::ptr& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value>>(const std::string& name, const std::vector>& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value>>(const std::string& name, const std::vector>& value); -template void IFC_PARSE_API IfcUtil::IfcBaseClass::set_attribute_value(const std::string& name, const aggregate_of_aggregate_of_instance::ptr& value); +template int IFC_PARSE_API express::Entity::get_value(const std::string&) const; +template bool IFC_PARSE_API express::Entity::get_value(const std::string&) const; +template boost::logic::tribool IFC_PARSE_API express::Entity::get_value(const std::string&) const; +template double IFC_PARSE_API express::Entity::get_value(const std::string&) const; +template std::string IFC_PARSE_API express::Entity::get_value(const std::string&) const; +template express::Base IFC_PARSE_API express::Entity::get_value(const std::string&) const; +template boost::dynamic_bitset<> IFC_PARSE_API express::Entity::get_value>(const std::string&) const; +template EnumerationReference IFC_PARSE_API express::Entity::get_value(const std::string&) const; +template std::vector IFC_PARSE_API express::Entity::get_value>(const std::string&) const; +template std::vector IFC_PARSE_API express::Entity::get_value>(const std::string&) const; +template std::vector IFC_PARSE_API express::Entity::get_value>(const std::string&) const; +template std::vector> IFC_PARSE_API express::Entity::get_value>>(const std::string&) const; +template std::vector IFC_PARSE_API express::Entity::get_value>(const std::string&) const; +template std::vector> IFC_PARSE_API express::Entity::get_value>>(const std::string&) const; +template std::vector> IFC_PARSE_API express::Entity::get_value>>(const std::string&) const; +template std::vector> IFC_PARSE_API express::Entity::get_value>>(const std::string&) const; + +template int IFC_PARSE_API express::Entity::get_value(const std::string&, const int&) const; +template bool IFC_PARSE_API express::Entity::get_value(const std::string&, const bool&) const; +template boost::logic::tribool IFC_PARSE_API express::Entity::get_value(const std::string&, const boost::logic::tribool&) const; +template double IFC_PARSE_API express::Entity::get_value(const std::string&, const double&) const; +template std::string IFC_PARSE_API express::Entity::get_value(const std::string&, const std::string&) const; +template express::Base IFC_PARSE_API express::Entity::get_value(const std::string&, const express::Base&) const; +template boost::dynamic_bitset<> IFC_PARSE_API express::Entity::get_value>(const std::string&, const boost::dynamic_bitset<>&) const; +template EnumerationReference IFC_PARSE_API express::Entity::get_value(const std::string&, const EnumerationReference&) const; +template std::vector IFC_PARSE_API express::Entity::get_value>(const std::string&, const std::vector&) const; +template std::vector IFC_PARSE_API express::Entity::get_value>(const std::string&, const std::vector&) const; +template std::vector IFC_PARSE_API express::Entity::get_value>(const std::string&, const std::vector&) const; +template std::vector> IFC_PARSE_API express::Entity::get_value>>(const std::string&, const std::vector>&) const; +template std::vector IFC_PARSE_API express::Entity::get_value>(const std::string&, const std::vector&) const; +template std::vector> IFC_PARSE_API express::Entity::get_value>>(const std::string&, const std::vector>&) const; +template std::vector> IFC_PARSE_API express::Entity::get_value>>(const std::string&, const std::vector>&) const; +template std::vector> IFC_PARSE_API express::Entity::get_value>>(const std::string&, const std::vector>&) const; diff --git a/src/ifcparse/IfcParse.h b/src/ifcparse/IfcParse.h index a034fde218..b6efdc9501 100644 --- a/src/ifcparse/IfcParse.h +++ b/src/ifcparse/IfcParse.h @@ -27,10 +27,9 @@ #ifndef IFCPARSE_H #define IFCPARSE_H -#include "aggregate_of_instance.h" #include "Argument.h" #include "ifc_parse_api.h" -#include "IfcBaseClass.h" +#include "express.h" #include "IfcCharacterDecoder.h" #include "FileReader.h" #include "macros.h" @@ -126,9 +125,9 @@ class IFC_PARSE_API IfcSpfLexer { void TokenString(size_t offset, std::string& result); }; -IFC_PARSE_API aggregate_of_instance::ptr traverse(IfcUtil::IfcBaseClass* instance, int max_level = -1); +IFC_PARSE_API std::vector traverse(const express::Base& instance, int max_level = -1); -IFC_PARSE_API aggregate_of_instance::ptr traverse_breadth_first(IfcUtil::IfcBaseClass* instance, int max_level = -1); +IFC_PARSE_API std::vector traverse_breadth_first(const express::Base& instance, int max_level = -1); } // namespace IfcParse IFC_PARSE_API std::ostream& operator<<(std::ostream& out, const IfcParse::IfcFile& file); diff --git a/src/ifcparse/IfcSIPrefix.cpp b/src/ifcparse/IfcSIPrefix.cpp index 22be5e52d3..1c9bcd485d 100644 --- a/src/ifcparse/IfcSIPrefix.cpp +++ b/src/ifcparse/IfcSIPrefix.cpp @@ -18,6 +18,7 @@ ********************************************************************************/ #include "IfcSIPrefix.h" +#include "InstanceData.h" #ifdef HAS_SCHEMA_2x3 #include "Ifc2x3.h" @@ -109,25 +110,23 @@ double IfcParse::IfcSIPrefixToValue(const std::string& prefix) { } template -double IfcParse::get_SI_equivalent(typename Schema::IfcNamedUnit* named_unit) { +double IfcParse::get_SI_equivalent(const typename Schema::IfcNamedUnit& named_unit) { double scale = 1.; - typename Schema::IfcSIUnit* si_unit = 0; + typename Schema::IfcSIUnit si_unit; - if (named_unit->declaration().is(Schema::IfcConversionBasedUnit::Class())) { - typename Schema::IfcConversionBasedUnit* conv_unit = named_unit->template as(); - typename Schema::IfcMeasureWithUnit* factor = conv_unit->ConversionFactor(); - typename Schema::IfcUnit* component = factor->UnitComponent(); - if (component->declaration().is(Schema::IfcSIUnit::Class())) { - si_unit = component->template as(); - typename Schema::IfcValue* value = factor->ValueComponent(); - scale = value->template as()->get_attribute_value(0); + if (auto conv_unit = named_unit.template as()) { + auto factor = conv_unit.ConversionFactor(); + auto component = factor.UnitComponent(); + if (si_unit = component.concrete().template as()) { + auto value = factor.ValueComponent(); + scale = value.get_attribute_value(0); } - } else if (named_unit->declaration().is(Schema::IfcSIUnit::Class())) { - si_unit = named_unit->template as(); + } else { + si_unit = named_unit.template as(); } if (si_unit) { - if (si_unit->Prefix()) { - scale *= IfcSIPrefixToValue(Schema::IfcSIPrefix::ToString(*si_unit->Prefix())); + if (si_unit.Prefix()) { + scale *= IfcSIPrefixToValue(Schema::IfcSIPrefix::ToString(*si_unit.Prefix())); } } else { scale = 0.; @@ -139,76 +138,79 @@ double IfcParse::get_SI_equivalent(typename Schema::IfcNamedUnit* named_unit) { #if defined(_MSC_VER) && _MSC_VER < 1900 #ifdef HAS_SCHEMA_2x3 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(Ifc2x3::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const Ifc2x3::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(Ifc4::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const Ifc4::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x1 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(Ifc4x1::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const Ifc4x1::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x2 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(Ifc4x2::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const Ifc4x2::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x3_rc1 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(Ifc4x3_rc1::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const Ifc4x3_rc1::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x3_rc2 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(Ifc4x3_rc2::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const Ifc4x3_rc2::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x3_rc3 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(Ifc4x3_rc3::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const Ifc4x3_rc3::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x3_rc4 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(Ifc4x3_rc4::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const Ifc4x3_rc4::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x3 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(Ifc4x3::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const Ifc4x3::IfcNamedUnit& named_unit); +#endif +#ifdef HAS_SCHEMA_4x3_tc1 +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const Ifc4x3_tc1::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x3_add1 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(Ifc4x3_add1::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const Ifc4x3_add1::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x3_add2 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(Ifc4x3_add2::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const Ifc4x3_add2::IfcNamedUnit& named_unit); #endif #else #ifdef HAS_SCHEMA_2x3 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(typename Ifc2x3::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const typename Ifc2x3::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(typename Ifc4::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const typename Ifc4::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x1 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(typename Ifc4x1::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const typename Ifc4x1::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x2 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(typename Ifc4x2::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const typename Ifc4x2::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x3_rc1 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(typename Ifc4x3_rc1::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const typename Ifc4x3_rc1::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x3_rc2 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(typename Ifc4x3_rc2::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const typename Ifc4x3_rc2::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x3_rc3 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(typename Ifc4x3_rc3::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const typename Ifc4x3_rc3::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x3_rc4 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(typename Ifc4x3_rc4::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const typename Ifc4x3_rc4::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x3 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(typename Ifc4x3::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const typename Ifc4x3::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x3_tc1 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(typename Ifc4x3_tc1::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const typename Ifc4x3_tc1::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x3_add1 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(typename Ifc4x3_add1::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const typename Ifc4x3_add1::IfcNamedUnit& named_unit); #endif #ifdef HAS_SCHEMA_4x3_add2 -template double IFC_PARSE_API IfcParse::get_SI_equivalent(typename Ifc4x3_add2::IfcNamedUnit* named_unit); +template double IFC_PARSE_API IfcParse::get_SI_equivalent(const typename Ifc4x3_add2::IfcNamedUnit& named_unit); #endif #endif diff --git a/src/ifcparse/IfcSIPrefix.h b/src/ifcparse/IfcSIPrefix.h index f790b1cd5f..c2ff6ded5e 100644 --- a/src/ifcparse/IfcSIPrefix.h +++ b/src/ifcparse/IfcSIPrefix.h @@ -28,7 +28,7 @@ namespace IfcParse { IFC_PARSE_API double IfcSIPrefixToValue(const std::string& prefix); template -IFC_PARSE_API double get_SI_equivalent(typename Schema::IfcNamedUnit*); +IFC_PARSE_API double get_SI_equivalent(const typename Schema::IfcNamedUnit&); } // namespace IfcParse #endif diff --git a/src/ifcparse/IfcSchema.cpp b/src/ifcparse/IfcSchema.cpp index 3e077569f8..61581ca3bd 100644 --- a/src/ifcparse/IfcSchema.cpp +++ b/src/ifcparse/IfcSchema.cpp @@ -19,7 +19,7 @@ #include "IfcSchema.h" -#include "IfcBaseClass.h" +#include "express.h" #include @@ -91,6 +91,14 @@ bool IfcParse::declaration::is(const IfcParse::declaration& decl) const { return true; } + if (decl.as_select_type() != nullptr) { + const auto& li = decl.as_select_type()->select_list(); + for (const auto* selected_decl : li) { + if (is(*selected_decl)) { + return true; + } + } + } if ((this->as_entity() != nullptr) && (this->as_entity()->supertype() != nullptr)) { return this->as_entity()->supertype()->is(decl); } @@ -122,10 +130,10 @@ IfcParse::entity::~entity() { } static std::map schemas; -IfcParse::schema_definition::schema_definition(const std::string& name, const std::vector& declarations, instance_factory* factory) - : name_(name), - declarations_(declarations), - factory_(factory) { +IfcParse::schema_definition::schema_definition(const std::string& name, const std::vector& declarations) + : name_(name) + , declarations_(declarations) +{ std::sort(declarations_.begin(), declarations_.end(), declaration_by_index_sort()); for (std::vector::iterator it = declarations_.begin(); it != declarations_.end(); ++it) { (**it).schema_ = this; @@ -150,14 +158,6 @@ IfcParse::schema_definition::~schema_definition() { for (std::vector::const_iterator it = declarations_.begin(); it != declarations_.end(); ++it) { delete *it; } - delete factory_; -} - -IfcUtil::IfcBaseClass* IfcParse::schema_definition::instantiate(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) const { - if (factory_ != nullptr) { - return (*factory_)(decl, std::move(data)); - } - return new IfcUtil::IfcLateBoundEntity(decl, std::move(data)); } void IfcParse::register_schema(schema_definition* schema) { diff --git a/src/ifcparse/IfcSchema.h b/src/ifcparse/IfcSchema.h index 3dedd47a8e..40dc00af8b 100644 --- a/src/ifcparse/IfcSchema.h +++ b/src/ifcparse/IfcSchema.h @@ -30,13 +30,7 @@ #include // Forward declarations -class IfcEntityInstanceData; - -namespace IfcUtil { -class IfcBaseClass; -class IfcBaseEntity; -class IfcBaseType; -} // namespace IfcUtil +class InstanceData; namespace IfcParse { @@ -437,13 +431,6 @@ class IFC_PARSE_API entity : public declaration { virtual const entity* as_entity() const { return this; } }; -class IFC_PARSE_API instance_factory { - public: - virtual ~instance_factory() {} - - virtual IfcUtil::IfcBaseClass* operator()(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) const = 0; -}; - class IFC_PARSE_API schema_definition { private: std::string name_; @@ -469,15 +456,13 @@ class IFC_PARSE_API schema_definition { } }; - instance_factory* factory_; - std::string& temp_string_() const { static my_thread_local std::string string; return string; } public: - schema_definition(const std::string& name, const std::vector& declarations, instance_factory* factory); + schema_definition(const std::string& name, const std::vector& declarations); ~schema_definition(); @@ -506,8 +491,6 @@ class IFC_PARSE_API schema_definition { const std::vector& entities() const { return entities_; } const std::string& name() const { return name_; } - - IfcUtil::IfcBaseClass* instantiate(const IfcParse::declaration* decl, IfcEntityInstanceData&& data) const; }; IFC_PARSE_API const schema_definition* schema_by_name(const std::string&); diff --git a/src/ifcparse/IfcSpfHeader.cpp b/src/ifcparse/IfcSpfHeader.cpp index 2b98adc4df..c394e48689 100644 --- a/src/ifcparse/IfcSpfHeader.cpp +++ b/src/ifcparse/IfcSpfHeader.cpp @@ -30,15 +30,15 @@ static const char* const DATA = "DATA"; using namespace IfcParse; namespace { - IfcEntityInstanceData read_from_spf_file(IfcParse::impl::in_memory_file_storage* storage, const IfcParse::entity* decl) { + std::shared_ptr read_from_spf_file(IfcParse::IfcFile* file, IfcParse::impl::in_memory_file_storage* storage, const IfcParse::entity* decl) { if (storage != nullptr) { parse_context pc; storage->tokens->Next(); storage->load(-1, nullptr, pc, -1); - return pc.construct(boost::none, *storage->references_to_resolve, decl, decl->as_entity()->attribute_count(), -1); + return pc.construct(file, std::nullopt, *storage->references_to_resolve, decl, decl->as_entity()->attribute_count(), -1); } else { // std::unreachable(); - return IfcEntityInstanceData(in_memory_attribute_storage(10)); + return nullptr; } } } // namespace @@ -67,37 +67,28 @@ void IfcSpfHeader::readTerminal(const std::string& term, Trail trail) { } IfcParse::IfcSpfHeader::IfcSpfHeader(IfcParse::IfcFile* file) - : file_(file), - file_description_(nullptr), - file_name_(nullptr), - file_schema_(nullptr) + : file_(file) { Header_section_schema::get_schema(); - if (file == nullptr) { - // overwritten later in IfcFile::setDefaultHeaderValues() when we know the schema identifier - file_description_ = new Header_section_schema::file_description({}, ""); - file_description_->file_ = file_; - file_name_ = new Header_section_schema::file_name("", "", {}, {}, "", "", ""); - file_name_->file_ = file_; - file_schema_ = new Header_section_schema::file_schema({}); - file_schema_->file_ = file_; - } else { - storage_ = std::visit([this](auto& m) -> decltype(storage_) { - if constexpr (std::is_same_v, impl::in_memory_file_storage>) { - return &m; - } - return nullptr; - }, file_->storage_); - - if (storage_ == nullptr) { - file_description_ = Header_section_schema::get_schema().instantiate(&Header_section_schema::file_description::Class(), IfcEntityInstanceData(rocks_db_attribute_storage{}))->as(); - file_description_->file_ = file_; - file_name_ = Header_section_schema::get_schema().instantiate(&Header_section_schema::file_name::Class(), IfcEntityInstanceData(rocks_db_attribute_storage{}))->as(); - file_name_->file_ = file_; - file_schema_ = Header_section_schema::get_schema().instantiate(&Header_section_schema::file_schema::Class(), IfcEntityInstanceData(rocks_db_attribute_storage{}))->as(); - file_schema_->file_ = file_; + // @todo This might still not work in IfcFile's uninitialized mode + storage_ = std::visit([this](auto& m) -> decltype(storage_) { + if constexpr (std::is_same_v, impl::in_memory_file_storage>) { + return &m; } + return nullptr; + }, file->storage_); + + const bool in_memory = storage_ != nullptr; + + if (in_memory) { + header_entities_[0] = std::make_shared(file, &Header_section_schema::file_description::Class(), 0, in_memory_attribute_storage(Header_section_schema::file_description::Class().attribute_count())); + header_entities_[1] = std::make_shared(file, &Header_section_schema::file_name::Class(), 0, in_memory_attribute_storage(Header_section_schema::file_name::Class().attribute_count())); + header_entities_[2] = std::make_shared(file, &Header_section_schema::file_schema::Class(), 0, in_memory_attribute_storage(Header_section_schema::file_schema::Class().attribute_count())); + } else { + header_entities_[0] = std::make_shared(file, &Header_section_schema::file_description::Class(), 0, rocks_db_attribute_storage{}); + header_entities_[1] = std::make_shared(file, &Header_section_schema::file_name::Class(), 0, rocks_db_attribute_storage{}); + header_entities_[2] = std::make_shared(file, &Header_section_schema::file_schema::Class(), 0, rocks_db_attribute_storage{}); } } @@ -108,33 +99,9 @@ IfcParse::IfcSpfHeader::IfcSpfHeader(IfcParse::IfcSpfLexer* lexer) storage_ = new impl::in_memory_file_storage; storage_->tokens = lexer; file_ = nullptr; - - // overwritten later in IfcFile::setDefaultHeaderValues() when we know the schema identifier - file_description_ = new Header_section_schema::file_description({}, ""); - file_description_->file_ = file_; - file_name_ = new Header_section_schema::file_name("", "", {}, {}, "", "", ""); - file_name_->file_ = file_; - file_schema_ = new Header_section_schema::file_schema({}); - file_schema_->file_ = file_; } IfcParse::IfcSpfHeader::~IfcSpfHeader() { - delete file_schema_; - delete file_name_; - delete file_description_; -} - -void IfcParse::IfcSpfHeader::file(IfcParse::IfcFile* file) -{ - this->file_ = file; - if (file != nullptr) { - storage_ = std::visit([this](auto& m) -> decltype(storage_) { - if constexpr (std::is_same_v, impl::in_memory_file_storage>) { - return &m; - } - return nullptr; - }, file_->storage_); - } } void IfcSpfHeader::read() { @@ -152,21 +119,15 @@ void IfcSpfHeader::read() { // ISO 10303-21 Second edition 2002-01-15 p. 16 readTerminal(Header_section_schema::file_description::Class().name_uc(), NONE); - delete file_description_; - file_description_ = new Header_section_schema::file_description(read_from_spf_file(storage_, &Header_section_schema::file_description::Class())); - file_description_->file_ = file_; + header_entities_[0] = read_from_spf_file(file_, storage_, &Header_section_schema::file_description::Class()); readSemicolon(); readTerminal(Header_section_schema::file_name::Class().name_uc(), NONE); - delete file_name_; - file_name_ = new Header_section_schema::file_name(read_from_spf_file(storage_, &Header_section_schema::file_name::Class())); - file_name_->file_ = file_; + header_entities_[1] = read_from_spf_file(file_, storage_, &Header_section_schema::file_name::Class()); readSemicolon(); readTerminal(Header_section_schema::file_schema::Class().name_uc(), NONE); - delete file_schema_; - file_schema_ = new Header_section_schema::file_schema(read_from_spf_file(storage_, &Header_section_schema::file_schema::Class())); - file_schema_->file_ = file_; + header_entities_[2] = read_from_spf_file(file_, storage_, &Header_section_schema::file_schema::Class()); readSemicolon(); } @@ -185,13 +146,13 @@ void IfcSpfHeader::write(std::ostream& out) const { << "\n"; out << HEADER << ";" << "\n"; - file_description()->toString(out, true); + file_description().toString(out, true); out << ";" << "\n"; - file_name()->toString(out, true); + file_name().toString(out, true); out << ";" << "\n"; - file_schema()->toString(out, true); + file_schema().toString(out, true); out << ";" << "\n"; out << ENDSEC << ";" @@ -200,91 +161,39 @@ void IfcSpfHeader::write(std::ostream& out) const { << "\n"; } -const Header_section_schema::file_description* IfcParse::IfcSpfHeader::file_description() const { - if (file_description_ == nullptr) { - std::visit([this](auto& m) { - if constexpr (std::is_same_v, impl::rocks_db_file_storage>) { - file_description_ = new Header_section_schema::file_description(rocks_db_attribute_storage{}); - } else if constexpr (std::is_same_v, impl::in_memory_file_storage>) { - file_description_ = new Header_section_schema::file_description(in_memory_attribute_storage(Header_section_schema::file_description::Class().attribute_count())); +void IfcParse::IfcSpfHeader::file(IfcParse::IfcFile* file) { + file_ = file; + if (file != nullptr) { + storage_ = std::visit([this](auto& m) -> decltype(storage_) { + if constexpr (std::is_same_v, impl::in_memory_file_storage>) { + return &m; } - }, file_->storage_); - file_description_->file_ = file_; + return nullptr; + }, + file_->storage_); } - return file_description_; } -const Header_section_schema::file_name* IfcParse::IfcSpfHeader::file_name() const { - if (file_name_ == nullptr) { - std::visit([this](auto& m) { - if constexpr (std::is_same_v, impl::rocks_db_file_storage>) { - file_name_ = new Header_section_schema::file_name(rocks_db_attribute_storage{}); - } else if constexpr (std::is_same_v, impl::in_memory_file_storage>) { - file_name_ = new Header_section_schema::file_name(in_memory_attribute_storage(Header_section_schema::file_name::Class().attribute_count())); - } - }, file_->storage_); - file_name_->file_ = file_; - } - - return file_name_; +const Header_section_schema::file_description IfcParse::IfcSpfHeader::file_description() const { + return Header_section_schema::file_description(header_entities_[0]); } -const Header_section_schema::file_schema* IfcParse::IfcSpfHeader::file_schema() const { - if (file_schema_ == nullptr) { - std::visit([this](auto& m) { - if constexpr (std::is_same_v, impl::rocks_db_file_storage>) { - file_schema_ = new Header_section_schema::file_schema(rocks_db_attribute_storage{}); - } else if constexpr (std::is_same_v, impl::in_memory_file_storage>) { - file_schema_ = new Header_section_schema::file_schema(in_memory_attribute_storage(Header_section_schema::file_schema::Class().attribute_count())); - } - }, file_->storage_); - file_schema_->file_ = file_; - } - - return file_schema_; +const Header_section_schema::file_name IfcParse::IfcSpfHeader::file_name() const { + return Header_section_schema::file_name(header_entities_[1]); } -Header_section_schema::file_description* IfcParse::IfcSpfHeader::file_description() { - if (file_description_ == nullptr) { - std::visit([this](auto& m) { - if constexpr (std::is_same_v, impl::rocks_db_file_storage>) { - file_description_ = new Header_section_schema::file_description(rocks_db_attribute_storage{}); - } else if constexpr (std::is_same_v, impl::in_memory_file_storage>) { - file_description_ = new Header_section_schema::file_description(in_memory_attribute_storage(Header_section_schema::file_description::Class().attribute_count())); - } - }, file_->storage_); - file_description_->file_ = file_; - } - - return file_description_; +const Header_section_schema::file_schema IfcParse::IfcSpfHeader::file_schema() const { + return Header_section_schema::file_schema(header_entities_[2]); } -Header_section_schema::file_name* IfcParse::IfcSpfHeader::file_name() { - if (file_name_ == nullptr) { - std::visit([this](auto& m) { - if constexpr (std::is_same_v, impl::rocks_db_file_storage>) { - file_name_ = new Header_section_schema::file_name(rocks_db_attribute_storage{}); - } else if constexpr (std::is_same_v, impl::in_memory_file_storage>) { - file_name_ = new Header_section_schema::file_name(in_memory_attribute_storage(Header_section_schema::file_name::Class().attribute_count())); - } - }, file_->storage_); - file_name_->file_ = file_; - } - - return file_name_; +Header_section_schema::file_description IfcParse::IfcSpfHeader::file_description() { + return Header_section_schema::file_description(header_entities_[0]); } -Header_section_schema::file_schema* IfcParse::IfcSpfHeader::file_schema() { - if (file_schema_ == nullptr) { - std::visit([this](auto& m) { - if constexpr (std::is_same_v, impl::rocks_db_file_storage>) { - file_schema_ = new Header_section_schema::file_schema(rocks_db_attribute_storage{}); - } else if constexpr (std::is_same_v, impl::in_memory_file_storage>) { - file_schema_ = new Header_section_schema::file_schema(in_memory_attribute_storage(Header_section_schema::file_schema::Class().attribute_count())); - } - }, file_->storage_); - file_schema_->file_ = file_; - } - - return file_schema_; +Header_section_schema::file_name IfcParse::IfcSpfHeader::file_name() { + return Header_section_schema::file_name(header_entities_[1]); +} + +Header_section_schema::file_schema IfcParse::IfcSpfHeader::file_schema() { + return Header_section_schema::file_schema(header_entities_[2]); } diff --git a/src/ifcparse/IfcSpfHeader.h b/src/ifcparse/IfcSpfHeader.h index 6d47617316..6f55e01cba 100644 --- a/src/ifcparse/IfcSpfHeader.h +++ b/src/ifcparse/IfcSpfHeader.h @@ -21,7 +21,7 @@ #define IFCSPFHEADER_H #include "ifc_parse_api.h" -#include "IfcEntityInstanceData.h" +#include "InstanceData.h" #include "Header_section_schema.h" #include "storage.h" @@ -34,9 +34,13 @@ class IFC_PARSE_API IfcSpfHeader { IfcFile* file_; IfcParse::impl::in_memory_file_storage* storage_ = nullptr; + std::array, 3> header_entities_; + + /* mutable Header_section_schema::file_description* file_description_; mutable Header_section_schema::file_name* file_name_; mutable Header_section_schema::file_schema* file_schema_; + */ void readSemicolon(); enum Trail { TRAILING_SEMICOLON, @@ -45,26 +49,29 @@ class IFC_PARSE_API IfcSpfHeader { void readTerminal(const std::string& term, Trail trail); public: - explicit IfcSpfHeader(IfcParse::IfcFile* file = nullptr); + explicit IfcSpfHeader(IfcParse::IfcFile* file); explicit IfcSpfHeader(IfcParse::IfcSpfLexer* lexer); ~IfcSpfHeader(); - IfcParse::IfcFile* file() { return file_; } - void file(IfcParse::IfcFile* file); + // IfcParse::IfcFile* file() { return file_; } + // void file(IfcParse::IfcFile* file); void read(); bool tryRead(); void write(std::ostream& out) const; - const Header_section_schema::file_description* file_description() const; - const Header_section_schema::file_name* file_name() const; - const Header_section_schema::file_schema* file_schema() const; + IfcParse::IfcFile* file() { return file_; } + void file(IfcParse::IfcFile* file); - Header_section_schema::file_description* file_description(); - Header_section_schema::file_name* file_name(); - Header_section_schema::file_schema* file_schema(); + const Header_section_schema::file_description file_description() const; + const Header_section_schema::file_name file_name() const; + const Header_section_schema::file_schema file_schema() const; + + Header_section_schema::file_description file_description(); + Header_section_schema::file_name file_name(); + Header_section_schema::file_schema file_schema(); }; } // namespace IfcParse diff --git a/src/ifcparse/IfcUtil.cpp b/src/ifcparse/IfcUtil.cpp index a47083262f..cf4573115c 100644 --- a/src/ifcparse/IfcUtil.cpp +++ b/src/ifcparse/IfcUtil.cpp @@ -51,9 +51,8 @@ #include #endif -#include "aggregate_of_instance.h" #include "Argument.h" -#include "IfcBaseClass.h" +#include "express.h" #include "IfcException.h" #include "utils.h" #include "IfcFile.h" @@ -62,85 +61,6 @@ #include #include -void aggregate_of_instance::push(IfcUtil::IfcBaseClass* instance) { - if (instance != nullptr) { - list_.push_back(instance); - } -} -void aggregate_of_instance::push(const aggregate_of_instance::ptr& instance) { - if (instance) { - for (it i = instance->begin(); i != instance->end(); ++i) { - if (*i != nullptr) { - list_.push_back(*i); - } - } - } -} -size_t aggregate_of_instance::size() const { return list_.size(); } -void aggregate_of_instance::reserve(size_t capacity) { list_.reserve(capacity); } -aggregate_of_instance::it aggregate_of_instance::begin() { return list_.begin(); } -aggregate_of_instance::it aggregate_of_instance::end() { return list_.end(); } -IfcUtil::IfcBaseClass* aggregate_of_instance::operator[](int i) { - return list_[i]; -} -bool aggregate_of_instance::contains(IfcUtil::IfcBaseClass* instance) const { - return std::find(list_.begin(), list_.end(), instance) != list_.end(); -} -void aggregate_of_instance::remove(IfcUtil::IfcBaseClass* instance) { - std::vector::iterator iter; - while ((iter = std::find(list_.begin(), list_.end(), instance)) != list_.end()) { - list_.erase(iter); - } -} - -aggregate_of_instance::ptr aggregate_of_instance::filtered(const std::set& entities) { - aggregate_of_instance::ptr return_value(new aggregate_of_instance); - for (it it = begin(); it != end(); ++it) { - bool contained = false; - for (std::set::const_iterator jt = entities.begin(); jt != entities.end(); ++jt) { - if ((*it)->declaration().is(**jt)) { - contained = true; - break; - } - } - if (!contained) { - return_value->push(*it); - } - } - return return_value; -} - -aggregate_of_instance::ptr aggregate_of_instance::unique() { - std::set encountered; - aggregate_of_instance::ptr return_value(new aggregate_of_instance); - for (it it = begin(); it != end(); ++it) { - if (encountered.find(*it) == encountered.end()) { - return_value->push(*it); - encountered.insert(*it); - } - } - return return_value; -} - -/* -//Note: some of these methods are overloaded in derived classes -Argument::operator int() const { throw IfcParse::IfcException("Argument is not an integer"); } -Argument::operator bool() const { throw IfcParse::IfcException("Argument is not a boolean"); } -Argument::operator boost::logic::tribool() const { throw IfcParse::IfcException("Argument is not a logical"); } -Argument::operator double() const { throw IfcParse::IfcException("Argument is not a number"); } -Argument::operator std::string() const { throw IfcParse::IfcException("Argument is not a string"); } -Argument::operator boost::dynamic_bitset<>() const { throw IfcParse::IfcException("Argument is not a binary"); } -Argument::operator IfcUtil::IfcBaseClass*() const { throw IfcParse::IfcException("Argument is not an entity instance"); } -Argument::operator std::vector() const { throw IfcParse::IfcException("Argument is not a list of floats"); } -Argument::operator std::vector() const { throw IfcParse::IfcException("Argument is not a list of ints"); } -Argument::operator std::vector() const { throw IfcParse::IfcException("Argument is not a list of strings"); } -Argument::operator std::vector>() const { throw IfcParse::IfcException("Argument is not a list of binaries"); } -Argument::operator aggregate_of_instance::ptr() const { throw IfcParse::IfcException("Argument is not a list of entity instances"); } -Argument::operator std::vector>() const { throw IfcParse::IfcException("Argument is not a list of list of ints"); } -Argument::operator std::vector>() const { throw IfcParse::IfcException("Argument is not a list of list of floats"); } -Argument::operator aggregate_of_aggregate_of_instance::ptr() const { throw IfcParse::IfcException("Argument is not a list of list of entity instances"); } -*/ - static const char* const argument_type_string[] = { "NULL", "DERIVED", @@ -202,11 +122,7 @@ void IfcUtil::unescape_xml(std::string& str) { boost::replace_all(str, ">", ">"); } -IfcUtil::IfcBaseEntity::IfcBaseEntity(IfcEntityInstanceData&& data) - : IfcBaseClass(std::move(data)) -{} - -void IfcUtil::IfcBaseEntity::populate_derived() { +void express::Entity::populate_derived() { for (auto it = declaration().as_entity()->derived().begin(); it != declaration().as_entity()->derived().end(); ++it) { if (*it) { set_attribute_value( @@ -217,8 +133,7 @@ void IfcUtil::IfcBaseEntity::populate_derived() { } } -AttributeValue IfcUtil::IfcBaseEntity::get(const std::string& name) const -{ +AttributeValue express::Entity::get(const std::string& name) const { auto attrs = declaration().as_entity()->all_attributes(); auto iter = attrs.begin(); size_t idx = 0; @@ -230,16 +145,13 @@ AttributeValue IfcUtil::IfcBaseEntity::get(const std::string& name) const throw IfcParse::IfcException(name + " not found on " + declaration().name()); } -aggregate_of_instance::ptr IfcUtil::IfcBaseEntity::get_inverse(const std::string& name) const { - if (file_ == nullptr) { - throw IfcParse::IfcException("Instance not added to file"); - } +std::vector express::Entity::get_inverse(const std::string& name) const { const std::vector attrs = declaration().as_entity()->all_inverse_attributes(); std::vector::const_iterator iter = attrs.begin(); for (; iter != attrs.end(); ++iter) { if ((*iter)->name() == name) { - return file_->getInverse( - id_, + return data()->file()->getInverse( + id(), (*iter)->entity_reference(), (int)(*iter)->entity_reference()->attribute_index((*iter)->attribute_reference())); } @@ -248,7 +160,7 @@ aggregate_of_instance::ptr IfcUtil::IfcBaseEntity::get_inverse(const std::string } /* -void IfcUtil::IfcBaseClass::data(IfcEntityInstanceData* data) { +void IfcUtil::IfcBaseClass::data(InstanceData* data) { delete data_; data_ = data; } diff --git a/src/ifcparse/IfcEntityInstanceData.h b/src/ifcparse/InstanceData.h similarity index 80% rename from src/ifcparse/IfcEntityInstanceData.h rename to src/ifcparse/InstanceData.h index 04e7dcb0ad..00e54b0f27 100644 --- a/src/ifcparse/IfcEntityInstanceData.h +++ b/src/ifcparse/InstanceData.h @@ -17,13 +17,14 @@ * * ********************************************************************************/ -#ifndef IFCENTITYINSTANCEDATA_H -#define IFCENTITYINSTANCEDATA_H +#ifndef InstanceData_H +#define InstanceData_H +#include "express.h" #include "ArgumentType.h" #include "variantarray.h" -#include "aggregate_of_instance.h" #include "IfcSchema.h" +#include "storage.h" #ifdef IFOPSH_WITH_ROCKSDB @@ -36,8 +37,6 @@ #endif -#include -#include #include #include @@ -104,7 +103,7 @@ typedef parameter_pack < // An entity instance argument. It will either serialize to // e.g. #123 or datatype identifier for simple types, e.g. // IFCREAL(12.3) - IfcUtil::IfcBaseClass*, + express::Base, // AGGREGATES: empty_aggregate_t, @@ -119,7 +118,7 @@ typedef parameter_pack < // An aggregate of entity instances. It will either serialize to // e.g. (#1,#2,#3) or datatype identifier for simple types, // e.g. (IFCREAL(1.2),IFCINTEGER(3.)) - aggregate_of_instance::ptr, + std::vector, // AGGREGATES OF AGGREGATES: empty_aggregate_of_aggregate_t, @@ -128,8 +127,8 @@ typedef parameter_pack < // An aggregate of an aggregate of floats. E.g. ((1., 2.3), (4.)) std::vector>, // An aggregate of an aggregate of entities. E.g. ((#1, #2), (#3)) - aggregate_of_aggregate_of_instance::ptr -> type_variant_parameter_pack; + std::vector>> +type_variant_parameter_pack; template struct pack_to_variant_array; @@ -154,7 +153,8 @@ struct TypeEncoder_t> { using TypeEncoder = TypeEncoder_t; -struct IFC_PARSE_API MutableAttributeValue { +class IFC_PARSE_API MutableAttributeValue { + public: uint32_t name_; uint8_t index_; }; @@ -220,13 +220,13 @@ namespace impl { bool serialize(std::string& val, const boost::dynamic_bitset<>& t); - bool serialize(std::string& val, const IfcUtil::IfcBaseClass* t); + bool serialize(std::string& val, const express::Base& t); bool serialize(std::string& val, const EnumerationReference& v); - bool serialize(std::string& val, const aggregate_of_instance::ptr& t); + bool serialize(std::string& val, const std::vector& t); - bool serialize(std::string& val, const aggregate_of_aggregate_of_instance::ptr& t); + bool serialize(std::string& val, const std::vector>& t); template ::value && !is_contiguous_container::value, int>::type = 0> bool deserialize(IfcParse::impl::rocks_db_file_storage*, const std::string& val, T& t, bool prefixed = true) { @@ -274,27 +274,32 @@ namespace impl { bool deserialize(IfcParse::impl::rocks_db_file_storage*, const std::string& val, boost::dynamic_bitset<>& t); - bool deserialize(IfcParse::impl::rocks_db_file_storage*, const std::string& val, aggregate_of_instance::ptr& t); + bool deserialize(IfcParse::impl::rocks_db_file_storage*, const std::string& val, std::vector& t); - bool deserialize(IfcParse::impl::rocks_db_file_storage*, const std::string& val, aggregate_of_aggregate_of_instance::ptr& t); -} + bool deserialize(IfcParse::impl::rocks_db_file_storage*, const std::string& val, std::vector>& t); + } #endif // short lived -struct IFC_PARSE_API AttributeValue { +class IFC_PARSE_API AttributeValue { uint8_t index_; uint8_t storage_model_ = 0; const IfcParse::declaration* entity_or_type_ = 0; size_t instance_name_; + + public: union pointer_type { const in_memory_attribute_storage* storage_ptr; IfcParse::impl::rocks_db_file_storage* db_ptr; pointer_type(IfcParse::impl::rocks_db_file_storage* db) : db_ptr(db) {} pointer_type(const in_memory_attribute_storage* ims) : storage_ptr(ims) {} }; + +private: pointer_type array_; - + +public: AttributeValue() : index_(0) , storage_model_(0) @@ -321,17 +326,17 @@ struct IFC_PARSE_API AttributeValue { operator double() const; operator std::string() const; operator boost::dynamic_bitset<>() const; - operator IfcUtil::IfcBaseClass* () const; + operator express::Base() const; operator std::vector() const; operator std::vector() const; operator std::vector() const; operator std::vector>() const; - operator boost::shared_ptr() const; + operator std::vector() const; operator std::vector>() const; operator std::vector>() const; - operator boost::shared_ptr() const; + operator std::vector>() const; operator EnumerationReference() const; @@ -362,7 +367,7 @@ struct IFC_PARSE_API AttributeValue { case IfcUtil::Argument_ENUMERATION: return visitor((EnumerationReference)*this); case IfcUtil::Argument_ENTITY_INSTANCE: - return visitor((IfcUtil::IfcBaseClass*)*this); + return visitor((express::Base) * this); case IfcUtil::Argument_AGGREGATE_OF_INT: return visitor((std::vector)*this); case IfcUtil::Argument_AGGREGATE_OF_DOUBLE: @@ -372,13 +377,13 @@ struct IFC_PARSE_API AttributeValue { case IfcUtil::Argument_AGGREGATE_OF_BINARY: return visitor((std::vector>)*this); case IfcUtil::Argument_AGGREGATE_OF_ENTITY_INSTANCE: - return visitor((boost::shared_ptr)*this); + return visitor((std::vector)*this); case IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_INT: return visitor((std::vector>)*this); case IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_DOUBLE: return visitor((std::vector>)*this); case IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_ENTITY_INSTANCE: - return visitor((boost::shared_ptr)*this); + return visitor((std::vector>)*this); case IfcUtil::Argument_EMPTY_AGGREGATE: return visitor(empty_aggregate_t{}); case IfcUtil::Argument_AGGREGATE_OF_EMPTY_AGGREGATE: @@ -408,78 +413,122 @@ public: #endif }; -class IFC_PARSE_API IfcEntityInstanceData { +class IFC_PARSE_API InstanceData { + protected: + static std::atomic_uint32_t counter_; + + IfcParse::IfcFile* file_; + // @todo this could also be a 2-byte index, because we can get the schema from the file. But it wouldn't save space due to alignment + const IfcParse::declaration* declaration_; + uint32_t identity_; + uint32_t id_; + + template + T* get_storage_of_type() const { + return std::visit([this](auto& m) -> T* { + if constexpr (std::is_same_v, T>) { + return &m; + } + return nullptr; + }, + file()->storage_); + } + public: // Since rocks_db_attribute_storage has no members this is not a variant but in_memory*, where nullptr means a rocks_db_attribute_storage is constructed on the fly given the context from instance data. in_memory_attribute_storage* storage_; - IfcEntityInstanceData(in_memory_attribute_storage&& storage) - : storage_(new in_memory_attribute_storage(std::move(storage))) + const IfcParse::declaration* declaration() const { + return declaration_; + } + + IfcParse::IfcFile* file() const { + return file_; + } + + uint32_t identity() const { + return identity_; + } + + uint32_t id() const { + return id_; + } + + InstanceData(IfcParse::IfcFile* file, const IfcParse::declaration* declaration, uint32_t id, in_memory_attribute_storage&& storage) + : file_(file), declaration_(declaration), identity_(counter_++), id_(id), storage_(new in_memory_attribute_storage(std::move(storage))) {} - IfcEntityInstanceData(rocks_db_attribute_storage&&) - : storage_(nullptr) + InstanceData(IfcParse::IfcFile* file, const IfcParse::declaration* declaration, uint32_t id, rocks_db_attribute_storage&&) + : file_(file), declaration_(declaration), identity_(counter_++), id_(id), storage_(nullptr) {} - IfcEntityInstanceData(IfcEntityInstanceData&& other) noexcept - : storage_(std::exchange(other.storage_, nullptr)) + /* + // now that there are referenced as shared_ptr there is no move constructor anymore + InstanceData(InstanceData&& other) noexcept + : file_(other.file_), id_(other.id_), declaration_(other.declaration_), storage_(std::exchange(other.storage_, nullptr)) {} + */ // No copy-constructor/-assignment anymore because we need the instance for storage model context - IfcEntityInstanceData(const IfcEntityInstanceData&) = delete; - IfcEntityInstanceData& operator=(const IfcEntityInstanceData&) = delete; + InstanceData(const InstanceData&) = delete; + InstanceData& operator=(const InstanceData&) = delete; + InstanceData& operator=(InstanceData&&) = delete; + InstanceData(InstanceData&& other) noexcept = delete; - IfcEntityInstanceData& operator=(IfcEntityInstanceData&& other) noexcept { + /* + // same + InstanceData& operator=(InstanceData&& other) noexcept { if (this != &other) { delete storage_; storage_ = std::exchange(other.storage_, nullptr); } return *this; } + */ - ~IfcEntityInstanceData() { + ~InstanceData() { delete storage_; } - AttributeValue get_attribute_value(void* storage, const IfcParse::declaration*, std::size_t identity, size_t index) const; + AttributeValue get_attribute_value(size_t index) const; template - void set_attribute_value(void* storage, const IfcParse::declaration* decl, std::size_t identity, std::size_t index, T&& value) { + void set_attribute_value(std::size_t index, T&& value) { if (storage_) { storage_->set(index, value); } #ifdef IFOPSH_WITH_ROCKSDB else { - rocks_db_attribute_storage{}.set(storage, decl, identity, index, value); + rocks_db_attribute_storage{}.set(get_storage_of_type(), declaration_, identity_, index, value); } #endif } template - bool has_attribute_value(void* storage, const IfcParse::declaration* decl, std::size_t identity, std::size_t index) const { + bool has_attribute_value(std::size_t index) const { if (storage_) { return storage_->has(index); } #ifdef IFOPSH_WITH_ROCKSDB else { - return rocks_db_attribute_storage{}.has(storage, decl, identity, index); + return rocks_db_attribute_storage{}.has(get_storage_of_type(), declaration_, identity_, index); } #endif } template - auto apply_visitor(void* storage, const IfcParse::declaration* decl, std::size_t identity, Visitor&& visitor, std::size_t index) const { + auto apply_visitor(Visitor&& visitor, std::size_t index) const { if (storage_) { return storage_->apply_visitor(std::forward(visitor), index); } #ifdef IFOPSH_WITH_ROCKSDB else { - return rocks_db_attribute_storage{}.apply_visitor(storage, decl, identity, index, std::forward(visitor)); + return rocks_db_attribute_storage{}.apply_visitor(get_storage_of_type(), declaration_, identity_, index, std::forward(visitor)); } #endif } - void toString(void* storage, const IfcParse::declaration*, std::size_t identity, std::ostream&, bool upper = false) const; + void toString(std::ostream&, bool upper = false) const; }; #endif diff --git a/src/ifcparse/aggregate_of_instance.h b/src/ifcparse/aggregate_of_instance.h deleted file mode 100644 index bcce94ce6e..0000000000 --- a/src/ifcparse/aggregate_of_instance.h +++ /dev/null @@ -1,200 +0,0 @@ -/******************************************************************************** - * * - * 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 . * - * * - ********************************************************************************/ - -#ifndef IFCENTITYLIST_H -#define IFCENTITYLIST_H - -// #include "IfcBaseClass.h" -#include "ifc_parse_api.h" - -#include -#include -#include - -namespace IfcParse { - class declaration; -} -namespace IfcUtil { - class IfcBaseClass; -} - -template -class aggregate_of; - -class IFC_PARSE_API aggregate_of_instance { - std::vector list_; - - public: - typedef boost::shared_ptr ptr; - typedef std::vector::const_iterator it; - void push(IfcUtil::IfcBaseClass* instance); - void push(const ptr& instance); - it begin(); - it end(); - IfcUtil::IfcBaseClass* operator[](int index); - size_t size() const; - void reserve(size_t capacity); - bool contains(IfcUtil::IfcBaseClass*) const; - - template - typename U::list::ptr as(); - - void remove(IfcUtil::IfcBaseClass*); - aggregate_of_instance::ptr filtered(const std::set& entities); - aggregate_of_instance::ptr unique(); -}; - -template -class aggregate_of { - std::vector list_; - - public: - typedef boost::shared_ptr> ptr; - typedef typename std::vector::const_iterator it; - void push(T* type) { - if (type) { - list_.push_back(type); - } - } - void push(ptr instance) { - if (instance) { - for (typename T::list::it it = instance->begin(); it != instance->end(); ++it) { - push(*it); - } - } - } - it begin() { return list_.begin(); } - it end() { return list_.end(); } - size_t size() const { return list_.size(); } - aggregate_of_instance::ptr generalize() { - aggregate_of_instance::ptr result(new aggregate_of_instance()); - for (it i = begin(); i != end(); ++i) { - result->push((*i)->template as()); - } - return result; - } - bool contains(T* type) const { return std::find(list_.begin(), list_.end(), type) != list_.end(); } - template - typename U::list::ptr as() { - typename U::list::ptr result(new typename U::list); - for (it i = begin(); i != end(); ++i) { - if ((*i)->template as()) { - result->push((*i)->template as()); - } - } - return result; - } - void remove(T* type) { - typename std::vector::iterator iter; - while ((iter = std::find(list_.begin(), list_.end(), type)) != list_.end()) { - list_.erase(iter); - } - } -}; - -template -class aggregate_of_aggregate_of; - -class IFC_PARSE_API aggregate_of_aggregate_of_instance { - std::vector> list_; - - public: - typedef boost::shared_ptr ptr; - typedef std::vector>::const_iterator outer_it; - typedef std::vector::const_iterator inner_it; - void push(const std::vector& instance) { - list_.push_back(instance); - } - void push(const aggregate_of_instance::ptr& instance) { - if (instance) { - std::vector list; - for (std::vector::const_iterator iter = instance->begin(); iter != instance->end(); ++iter) { - list.push_back(*iter); - } - push(list); - } - } - outer_it begin() const { return list_.begin(); } - outer_it end() const { return list_.end(); } - int size() const { return (int)list_.size(); } - int totalSize() const { - int accum = 0; - for (outer_it it = begin(); it != end(); ++it) { - accum += (int)it->size(); - } - return accum; - } - bool contains(IfcUtil::IfcBaseClass* instance) const { - for (outer_it it = begin(); it != end(); ++it) { - const std::vector& inner = *it; - if (std::find(inner.begin(), inner.end(), instance) != inner.end()) { - return true; - } - } - return false; - } - - template - typename aggregate_of_aggregate_of::ptr as(); - -}; - -template -class aggregate_of_aggregate_of { - std::vector> list_; - - public: - typedef typename boost::shared_ptr> ptr; - typedef typename std::vector>::const_iterator outer_it; - typedef typename std::vector::const_iterator inner_it; - void push(const std::vector& type) { list_.push_back(type); } - outer_it begin() { return list_.begin(); } - outer_it end() { return list_.end(); } - int size() const { return (int)list_.size(); } - int totalSize() const { - int accum = 0; - for (outer_it it = begin(); it != end(); ++it) { - accum += it->size(); - } - return accum; - } - bool contains(T* type) const { - for (outer_it iter = begin(); iter != end(); ++iter) { - const std::vector& inner = *iter; - if (std::find(inner.begin(), inner.end(), type) != inner.end()) { - return true; - } - } - return false; - } - aggregate_of_aggregate_of_instance::ptr generalize() { - aggregate_of_aggregate_of_instance::ptr result(new aggregate_of_aggregate_of_instance()); - for (outer_it outer = begin(); outer != end(); ++outer) { - const std::vector& from = *outer; - std::vector to; - for (inner_it inner = from.begin(); inner != from.end(); ++inner) { - to.push_back(*inner); - } - result->push(to); - } - return result; - } -}; - -#endif diff --git a/src/ifcparse/express.cpp b/src/ifcparse/express.cpp new file mode 100644 index 0000000000..f504e538dd --- /dev/null +++ b/src/ifcparse/express.cpp @@ -0,0 +1,27 @@ +#include "express.h" +#include "InstanceData.h" + +const IfcParse::declaration& express::Base::declaration() const { + return *data()->declaration(); +} +uint32_t express::Base::identity() const { return data()->identity(); } + +uint32_t express::Base::id() const { return data()->id(); } + +const InstanceData* express::Base::data() const { + auto sp = data_.lock(); + if (sp) { + return sp.get(); + } else { + throw std::runtime_error("Trying to access deleted instance reference"); + } +} + +InstanceData* express::Base::data() { + auto sp = data_.lock(); + if (sp) { + return sp.get(); + } else { + throw std::runtime_error("Trying to access deleted instance reference"); + } +} diff --git a/src/ifcparse/express.h b/src/ifcparse/express.h new file mode 100644 index 0000000000..021c6a7eaa --- /dev/null +++ b/src/ifcparse/express.h @@ -0,0 +1,216 @@ +/******************************************************************************** + * * + * 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 . * + * * + ********************************************************************************/ + +#ifndef IFCBASECLASS_H +#define IFCBASECLASS_H + +#include "Argument.h" +#include "ifc_parse_api.h" +#include "IfcSchema.h" +#include "utils.h" + +#include +#include + +class aggregate_of_instance; + +namespace IfcParse { +class IfcFile; +namespace impl { +struct in_memory_file_storage; +} +} // namespace IfcParse + +class InstanceData; +class AttributeValue; + +namespace express { + +class Base; +class Select; +class Entity; +class DeclaredType; + +class IFC_PARSE_API Base { + protected: + std::weak_ptr data_; + public: + + operator bool() const { + return !data_.expired(); + } + + bool operator<(const Base& other) const { + return data() < other.data(); + } + + bool operator==(const Base& other) const { + return data() == other.data(); + } + + Base() {}; + Base(const std::weak_ptr& data) : data_(data) {} + + const InstanceData* data() const; + InstanceData* data(); + const std::weak_ptr& data_weak() const { return data_; } + + const IfcParse::declaration& declaration() const; + + template + typename std::enable_if< + (!std::is_base_of_v || std::is_same_v), + void>::type + set_attribute_value(size_t i, const T& t); + + template + typename std::enable_if< + (!std::is_base_of_v || std::is_same_v), + void>::type + set_attribute_value(const std::string& name, const T& t); + + void set_attribute_value(size_t i, const express::Base& p); + void set_attribute_value(const std::string& name, const express::Base& p); + + void unset_attribute_value(size_t i); + + AttributeValue get_attribute_value(size_t index) const; + + uint32_t identity() const; + + uint32_t id() const; + + void toString(std::ostream&, bool upper = false) const; + + template + T as() const { + if constexpr (std::is_same_v) { + if (declaration().as_entity() != nullptr) { + return T(data_weak()); + } else { + return T{}; + } + } else if constexpr (std::is_same_v) { + if (declaration().as_entity() == nullptr) { + return T(data_weak()); + } else { + return T{}; + } + } else if constexpr (std::is_same_v) { + static_assert(false, "Select is abstract"); + } else { + if (declaration().is(T::Class())) { + return T(data_weak()); + } else { + return T{}; + } + } + } +}; + +class IFC_PARSE_API Entity : public Base { + public: + Entity() {} + Entity(const std::weak_ptr& data) : Base(data) {} + + AttributeValue get(const std::string& name) const; + + template + T get_value(const std::string& name) const; + + template + T get_value(const std::string& name, const T& default_value) const; + + std::vector get_inverse(const std::string& name) const; + + // unsigned set_id(const std::optional& i); + + void populate_derived(); +}; + +class IFC_PARSE_API Select : public Base { + public: + Select() {} + // Select are constructed from Base as cast functions, not from data directly + Select(const Base& base) : Base(base.data_weak()) {} + + Base concrete() const { + return Base(data_weak()); + } +}; + +// @todo Investigate whether these should be template classes instead +// @todo currently this class doesn't do much, decide whether to keep +// it or move certain functionality from Base downwards to +// Entity and DeclaredType +class IFC_PARSE_API DeclaredType : public Base { + public: + DeclaredType() {} + DeclaredType(const std::weak_ptr& data) : Base(data) {} +}; + +} // namespace express + +namespace std { + +template <> +struct hash { + std::size_t operator()(const express::Base& c) const noexcept { + return std::hash{}((void*) c.data()); + } +}; + +template <> +struct hash { + std::size_t operator()(const express::Entity& c) const noexcept { + return std::hash{}((void*)c.data()); + } +}; + +} // namespace std + +template +std::vector cast_vector(const std::vector& vs) { + std::vector result; + for (const auto& v : vs) { + if constexpr (std::is_base_of_v || std::is_same_v) { + // For a base or identity transform we can just rely on static cast + result.push_back(v); + } else if constexpr (std::is_base_of_v && std::is_same_v) { + // From a select to concrete we simply call the appropriate method + result.push_back(v.concrete()); + } else { + if (auto u = v.as()) { + result.push_back(u); + } + } + } + return result; +} + +template +std::vector> cast_vector_vector(const std::vector>& vs) { + std::vector> result; + for (const auto& v : vs) { + result.push_back(cast_vector(v)); + } + return result; +} + +#endif diff --git a/src/ifcparse/map_transformer.h b/src/ifcparse/map_transformer.h index a7e37cbc88..bf6714e69e 100644 --- a/src/ifcparse/map_transformer.h +++ b/src/ifcparse/map_transformer.h @@ -24,7 +24,7 @@ // map_transformer: wraps a map-like construct so that its iterator returns // a value_type where the mapped element is transformed via a function. -template +template class map_transformer { public: using key_type = typename BaseMap::key_type; @@ -33,15 +33,28 @@ public: using value_type = std::pair; using mapped_type = transformed_mapped_type; -private: + static constexpr bool read_only = std::is_void::value; + struct back_storage_fallback {}; + using back_storage_t = typename std::conditional::type; + + private: BaseMap* base_map_; Transform transform_; - TransformBack transform_back_; + back_storage_t transform_back_; public: - map_transformer(BaseMap* map, Transform transform, TransformBack transform_back) - : base_map_(map), transform_(transform), transform_back_(transform_back){} + // read-only constructor with TransformBack=void + template ::value, int>::type = 0> + map_transformer(BaseMap* map, Transform transform) + : base_map_(map), transform_(std::move(transform)), transform_back_{} {} + + // read-write constructor with TransformBack provided + template ::value, int>::type = 0> + map_transformer(BaseMap* map, Transform transform, TB transform_back) + : base_map_(map), transform_(std::move(transform)), transform_back_(std::move(transform_back)) {} class iterator { public: @@ -51,13 +64,13 @@ public: using key_type = typename BaseMap::key_type; using transformed_mapped_type = std::invoke_result_t; using value_type = std::pair; - private: base_iterator base_it_; Transform* transform_ptr_; mutable value_type cached_value_; + public: iterator() : base_it_(), transform_ptr_(nullptr) {} iterator(base_iterator base_it, Transform* transform_ptr) @@ -111,6 +124,7 @@ public: // @todo still not sure if this is a good idea, do we want to insert into the transformed map? std::pair insert(const value_type& val) { + static_assert(!read_only, "insert() requires TransformBack"); auto p = base_map_->insert({ val.first, transform_back_(val.second) }); return { iterator(p.first, &transform_), p.second }; } @@ -118,4 +132,4 @@ public: size_t erase(const key_type& key) { return base_map_->erase(key); } -}; \ No newline at end of file +}; diff --git a/src/ifcparse/parse_ifcxml.cpp b/src/ifcparse/parse_ifcxml.cpp deleted file mode 100644 index 60cd85c1c6..0000000000 --- a/src/ifcparse/parse_ifcxml.cpp +++ /dev/null @@ -1,725 +0,0 @@ -/******************************************************************************** - * * - * 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 . * - * * - ********************************************************************************/ - -#define BOOST_RESULT_OF_USE_DECLTYPE - -#ifdef WITH_IFCXML - -#include "IfcFile.h" -#include "IfcLogger.h" - -#include -#include -#include -#include -#include - -namespace { - // Base case: when there are no more types left to check. - template - void visit_any_impl(Fn& fn, const boost::any& a) { - } - - // Recursive case: Check the first type in the pack. - template - void visit_any_impl(Fn& fn, const boost::any& a) { - if (a.type() == typeid(T)) { - Fn(boost::any_cast(a)); - } else { - visit_any_impl(a); - } - } - - // Helper to prepend a type to a tuple - template - void visit_any(Fn fn, const boost::any& a); - template - void visit_any(Fn fn, const boost::any & a) { - visit_any_impl(fn, a); - }; - -} - -// For debug printing on release builds -// #undef NDEBUG - -// ifcXML is quite radically different for ifc2x3 and ifc4. ifc2x3 follows -// iso 10303 part 28 and puts all attribute values in XML text nodes. ifc4 -// has attributes in actual XML attributes and may include inverse attributes -// to make trees more compact. -enum ifcxml_dialect { - ifcxml_dialect_ifc2x3, - ifcxml_dialect_ifc4, - ifcxml_dialect_unknown -}; - -// "Dereferences" a named_attribute. For example: -// IfcCompoundPlaneAngleMeasure -> LIST [3:4] OF INTEGER -void follow_named(const IfcParse::parameter_type*& pt) { - while (pt->as_named_type() != nullptr) { - if (pt->as_named_type()->declared_type()->as_type_declaration() != nullptr) { - pt = pt->as_named_type()->declared_type()->as_type_declaration()->declared_type(); - } else { - break; - } - } -} - -// The ifcXML parser uses SAX so we need to keep a stack of where we are in -// the file. These different kinds of nodes could be subclasses but aren't -// for ease in pushing to std::vector. -class stack_node { - public: - enum node_type { - stack_empty, - node_instance, - node_instance_attribute, - node_aggregate, - node_aggregate_element, - node_inverse, - node_select, - node_header, - node_header_entry - }; - - // to be coerced into the correct type later on - std::vector aggregate_elements; - - protected: - node_type type_; - IfcUtil::IfcBaseClass* inst_; - int idx_; - const IfcParse::inverse_attribute* inv_; - std::string tagname_; - std::string id_in_file_; - const IfcParse::parameter_type* aggregate_elem_type_; - - stack_node() - : type_(stack_empty), - inst_(nullptr), - idx_(-1), - inv_(nullptr), - aggregate_elem_type_(nullptr) {} - - public: - static stack_node instance(const std::string& id, IfcUtil::IfcBaseClass* inst) { - stack_node node; - node.type_ = node_instance; - node.inst_ = inst; - node.id_in_file_ = id; - return node; - } - - static stack_node instance_attribute(IfcUtil::IfcBaseClass* inst, int idx) { - stack_node node; - node.type_ = node_instance_attribute; - node.inst_ = inst; - node.idx_ = idx; - return node; - } - - static stack_node aggregate(IfcUtil::IfcBaseClass* inst, int idx) { - stack_node node; - node.type_ = node_aggregate; - node.inst_ = inst; - node.idx_ = idx; - return node; - } - - static stack_node aggregate_element(const IfcParse::parameter_type* aggregate_elem_type, int idx) { - stack_node node; - node.type_ = node_aggregate_element; - node.idx_ = idx; - node.aggregate_elem_type_ = aggregate_elem_type; - return node; - } - - static stack_node inverse(IfcUtil::IfcBaseClass* inst, const IfcParse::inverse_attribute* inv) { - stack_node node; - node.type_ = node_inverse; - node.inst_ = inst; - node.inv_ = inv; - return node; - } - - static stack_node select(IfcUtil::IfcBaseClass* inst, int idx) { - stack_node node; - node.type_ = node_select; - node.inst_ = inst; - node.idx_ = idx; - return node; - } - - static stack_node header() { - stack_node node; - node.type_ = node_header; - return node; - }; - - static stack_node header_entry(const std::string& tagname) { - stack_node node; - node.type_ = node_header_entry; - node.tagname_ = tagname; - return node; - }; - - node_type ntype() const { return type_; } - - IfcUtil::IfcBaseClass* inst() const { return inst_; } - int idx() const { return idx_; } - const IfcParse::inverse_attribute* inv_attr() const { return inv_; } - const std::string& tagname() const { return tagname_; } - const std::string& id() const { return id_in_file_; } - const IfcParse::parameter_type* aggregate_elem_type() const { return aggregate_elem_type_; } - - std::string repr() const { - std::stringstream stream; - static const char* const node_type_names[] = {"empty", "inst", "attr", "aggr", "agelem", "inv", "sel", "head", "hdentry"}; - stream << "[" << node_type_names[type_] << "] "; - if (inst_ != nullptr) { - stream << inst_->declaration().name() << " "; - } - if (type_ == node_aggregate) { - stream << "{" << aggregate_elements.size() << " elems} "; - } - if (idx_ != -1) { - stream << idx_ << " "; - } - return stream.str(); - } -}; - -struct ifcxml_parse_state { - IfcParse::IfcFile* file; - std::vector stack; - std::map idmap; - std::vector> forward_references; - ifcxml_dialect dialect; -}; - -// ifc4 allows for aggregates to be concatenated using whitespace. -template -std::vector split(const std::string& value) { - std::vector strs; - boost::split( - strs, value, [](char character) { return character == ' '; }, boost::token_compress_on); - std::vector r(strs.size()); - boost::copy(strs | boost::adaptors::transformed([](const std::string& s) { - return boost::lexical_cast(s); - }), - r.begin()); - return r; -} - -boost::any parse_attribute_value(const IfcParse::parameter_type* ty, const std::string& value) { - boost::any any; - auto cpp_type = IfcUtil::from_parameter_type(ty); - - if (cpp_type == IfcUtil::Argument_STRING) { - any = value; - } else if (cpp_type == IfcUtil::Argument_ENUMERATION) { - const auto* enum_type = ty->as_named_type()->declared_type()->as_enumeration_type(); - - std::vector::const_iterator iter = std::find( - enum_type->enumeration_items().begin(), - enum_type->enumeration_items().end(), - boost::to_upper_copy(value)); - - any = EnumerationReference(enum_type, std::distance(enum_type->enumeration_items().begin(), iter)); - } else if (cpp_type == IfcUtil::Argument_INT) { - any = boost::lexical_cast(value); - } else if (cpp_type == IfcUtil::Argument_DOUBLE) { - any = boost::lexical_cast(value); - } else if (cpp_type == IfcUtil::Argument_BOOL) { - any = boost::to_lower_copy(value) == "true"; - } else if (cpp_type == IfcUtil::Argument_AGGREGATE_OF_INT) { - any = split(value); - } else if (cpp_type == IfcUtil::Argument_AGGREGATE_OF_DOUBLE) { - any = split(value); - } - - if (any.empty()) { - Logger::Error("Attribute '" + value + "' not successfully parsed"); - } - - return any; -} - -static void end_element(void* user, const xmlChar* tag) { - ifcxml_parse_state* state = (ifcxml_parse_state*)user; - - if (state->file == nullptr) { - return; - } - - if (!state->stack.empty() && state->stack.back().ntype() == stack_node::node_aggregate) { - const auto& back = state->stack.back(); - auto& elems = state->stack.back().aggregate_elements; - /* - auto* list = new IfcParse::ArgumentList(elems.size()); - size_t i = 0; - for (auto& elem : elems) { - list->arguments()[i++] = elem; - } - */ - // @todo - // back.inst()->set_attribute_value(back.idx(), elems); - } - - if (state->dialect == ifcxml_dialect_ifc2x3 && state->stack.back().ntype() == stack_node::node_instance) { - if (state->stack.back().inst() != nullptr) { - state->idmap[state->stack.back().id()] = state->file->addEntity(state->stack.back().inst())->id(); - } - } - - const std::string tagname = (char*)tag; - - // ignore uos ex:iso_10303_28 (ifc2x3) and ifc:ifcXML (ifc4) - if (tagname != "uos" && tagname != "ex:iso_10303_28" && tagname != "ifc:ifcXML" && tagname != "ifcXML") { - if (state->stack.empty()) { - Logger::Error("Mismatch in parse stack due to previous errors"); - } else { - state->stack.pop_back(); - } - } -} - -static void process_characters(void* user, const xmlChar* character, int len) { - ifcxml_parse_state* state = (ifcxml_parse_state*)user; - - if (state->file == nullptr) { - return; - } - - std::string txt((char*)character, len); - - stack_node::node_type state_type = stack_node::stack_empty; - if (!state->stack.empty()) { - state_type = state->stack.back().ntype(); - } - - if (!state->stack.empty() && state->stack.back().inst() != nullptr && (state->stack.back().inst()->declaration().as_type_declaration() != nullptr)) { - const auto* pt = state->stack.back().inst()->declaration().as_type_declaration()->declared_type(); - boost::any val; - try { - val = parse_attribute_value(pt, txt); - } catch (const std::exception& e) { - Logger::Error(e, state->stack.back().inst()); - } - if (!val.empty()) { - // type declaration always at idx 0 - visit_any([&state](auto& v) { - state->stack.back().inst()->set_attribute_value(0, v); - }, val); - } - } else if (state_type == stack_node::node_header_entry) { - const std::string tagname = boost::replace_all_copy(state->stack.back().tagname(), "ex:", ""); - auto& header = state->file->header(); - if (tagname == "name") { - header.file_name()->setname(txt); - } else if (tagname == "time_stamp") { - header.file_name()->settime_stamp(txt); - } else if (tagname == "author") { - header.file_name()->setauthor({txt}); - } else if (tagname == "organization") { - header.file_name()->setorganization({txt}); - } else if (tagname == "preprocessor_version") { - header.file_name()->setpreprocessor_version(txt); - } else if (tagname == "originating_system") { - header.file_name()->setoriginating_system(txt); - } else if (tagname == "authorization") { - header.file_name()->setauthorization(txt); - } else if (tagname == "documentation") { - header.file_description()->setdescription({txt}); - } else { - Logger::Error("Unrecognized header entry " + tagname); - } - } else if (state_type == stack_node::node_instance_attribute) { - const auto* pt = state->stack.back().inst()->declaration().as_entity()->attribute_by_index(state->stack.back().idx())->type_of_attribute(); - auto cpp_type = IfcUtil::from_parameter_type(pt); - if (cpp_type != IfcUtil::Argument_ENTITY_INSTANCE) { - auto val = parse_attribute_value(pt, txt); - if (!val.empty()) { - visit_any([&state](auto& v) { - state->stack.back().inst()->set_attribute_value(state->stack.back().idx(), v); - }, val); - } - } - } else if (state_type == stack_node::node_aggregate_element) { - const auto* pt = state->stack.back().aggregate_elem_type(); - auto val = parse_attribute_value(pt, txt); - if (!val.empty()) { - (*(state->stack.rbegin() + 1)).aggregate_elements.push_back(val); - } - } -} - -static void start_element(void* user, const xmlChar* tag, const xmlChar** attrs) { - ifcxml_parse_state* state = (ifcxml_parse_state*)user; - std::string tagname = (char*)tag; - -#ifndef NDEBUG - std::cout << "stack:" << std::endl; - { - int i = 1; - for (auto& node : state->stack) { - std::cout << " " << (i++) << ":" << node.repr() << std::endl; - } - } - std::cout << std::string(state->stack.size(), ' ') << "<" << tagname << ">"; -#endif - - std::vector> attributes; - - if (attrs != nullptr) { - std::string attrname; - int i = 0; - while (attrs[i] != NULL) { - if ((i % 2) != 0) { - const std::string value = (char*)attrs[i]; -#ifndef NDEBUG - std::cout << " " << attrname << "='" << value << "'"; -#endif - attributes.push_back(std::make_pair(attrname, value)); - - if ((tagname == "ifc:ifcXML" || tagname == "ifcXML") && attrname == "xsi:schemaLocation" && - (boost::starts_with(value, "http://www.buildingsmart-tech.org/ifcXML/IFC4") || - boost::starts_with(value, "http://www.buildingsmart-tech.org/ifc/IFC4"))) { - // We're expecting a schemaLocation like "http://www.buildingsmart-tech.org/ifcXML/IFC4/Add2 IFC4_ADD2_TC1.xsd" - // With token compression this is split into: - // [0] http: - // [1] www.buildingsmart-tech.org - // [2] ifcXML - // [3] IFC4 - // [4] Add2 - // [5] IFC4_ADD2_TC1.xsd - // The hosstname will likely change though. - auto it = boost::algorithm::make_split_iterator(value, boost::algorithm::token_finder(boost::algorithm::is_any_of("/ "), boost::algorithm::token_compress_on)); - decltype(it) end; - for (int tok = 0; it != end && tok < 3; ++it, ++tok) { - } - if (it != end) { - std::string schema_name(&it->front(), it->size()); - boost::to_upper(schema_name); - state->file = new IfcParse::IfcFile(IfcParse::schema_by_name(schema_name)); - state->dialect = ifcxml_dialect_ifc4; - } - goto end; - } else if (tagname == "ex:iso_10303_28" && attrname == "xsi:schemaLocation" && boost::starts_with(value, "http://www.iai-tech.org/ifcXML/IFC2x3")) { - state->file = new IfcParse::IfcFile(IfcParse::schema_by_name("IFC2X3")); - state->dialect = ifcxml_dialect_ifc2x3; - goto end; - } - } else { - attrname = (char*)attrs[i]; - } - i++; - } - } - - if (state->file == nullptr) { - return; - } - - { - // ifcXML id attributes are commonly numeric identifiers prefixed with 'i' (as - // XML identifiers need to start with a alphabetic character). This convention - // is not always followed, so a mapping is kept from XML string attribute to - // numeric index into the IfcParse::IfcFile. - std::string id; - - // Create an attribute value from an instance. Potentially NULL in case it is a - // forward reference to an instance not yet encountered. - auto instance_to_attribute = [&state](const std::variant& inst_or_ref, size_t attribute_index, IfcUtil::IfcBaseClass*& inst) { - if (inst_or_ref.index() == 0) { - inst = nullptr; - // This attribute is NULL initially and after parsing the complete - // file populated in a subsequent step. - state->forward_references.push_back(std::make_tuple(inst->as(), attribute_index, std::get(inst_or_ref))); - } else { - inst = std::get(inst_or_ref); - inst->set_attribute_value(attribute_index, inst); - } - }; - - // Create or reference an instance from the file and set attributes based on XML attributes. - auto create_instance = [&state, &attributes](const IfcParse::declaration* decl) { - boost::optional id; - std::variant rv; - - for (auto& pair : attributes) { - if (pair.first == "id" || pair.first == "href" || pair.first == "ref") { - id = id = pair.second; - if (pair.first == "href" || pair.first == "ref") { - if (state->idmap.find(pair.second) == state->idmap.end()) { - rv = pair.second; - return rv; - } - rv = state->file->instance_by_id(state->idmap[pair.second]); - return rv; - } - } else if (pair.first == "xsi:type") { - decl = state->file->schema()->declaration_by_name(pair.second)->as_entity(); - } - } - - auto untyped = IfcEntityInstanceData(in_memory_attribute_storage(decl->as_entity() != nullptr ? decl->as_entity()->attribute_count() : 1)); - - const IfcParse::entity* entity = decl->as_entity(); - if (entity != nullptr) { - for (auto& pair : attributes) { - if (pair.first == "id" || pair.first == "xsi:type" || pair.first == "pos") { - continue; - } - - auto idx = entity->attribute_index(pair.first); - if (idx != -1) { - const auto* attr = entity->attribute_by_index(idx); - auto val = parse_attribute_value(attr->type_of_attribute(), pair.second); - if (!val.empty()) { - visit_any([&untyped, idx](auto& v) { - untyped.set_attribute_value(idx, v); - }, val); - } - } else { - Logger::Error("Unknown attribute '" + pair.first + "' on entity '" + entity->name() + "' with value '" + pair.second + "'"); - } - } - } - - IfcUtil::IfcBaseClass* newinst = state->file->schema()->instantiate(decl, std::move(untyped)); - - if (state->dialect == ifcxml_dialect_ifc4) { - // In IFC2X3 not added directly because attrs such as GlobalId are in - // subsequent child nodes - newinst = state->file->addEntity(newinst); - if (id) { - state->idmap[*id] = newinst->id(); - } - } - - rv = newinst; - return rv; - }; - - stack_node::node_type state_type = stack_node::stack_empty; - if (!state->stack.empty()) { - state_type = state->stack.back().ntype(); - } - - const std::string tagname_copy = boost::replace_all_copy(tagname, "-wrapper", ""); - - if (state_type == stack_node::node_select) { - const IfcParse::declaration* decl = state->file->schema()->declaration_by_name(tagname_copy); - // Argument* attr; - IfcUtil::IfcBaseClass* inst; - auto inst_ = create_instance(decl); - instance_to_attribute(inst_, state->stack.back().idx(), inst); - // state->stack.back().inst()->set_attribute_value(state->stack.back().idx(), attr); - state->stack.push_back(stack_node::instance(id, inst)); - } else if (state_type == stack_node::node_aggregate) { - - const IfcParse::parameter_type* attribute_type = state->stack.back().inst()->declaration().as_entity()->attribute_by_index(state->stack.back().idx())->type_of_attribute(); - follow_named(attribute_type); - const IfcParse::parameter_type* element_type = attribute_type->as_aggregation_type()->type_of_element(); - follow_named(element_type); - - int aggrpos = -1; - - /* - auto it = std::find_if(attributes.begin(), attributes.end(), [](const std::pair& p) { - return p.first == "pos"; - }); - boost::lexical_cast(it->second); - */ - - if (element_type->as_simple_type() != nullptr) { - state->stack.push_back(stack_node::aggregate_element(element_type, aggrpos)); - } else { - const IfcParse::declaration* decl = nullptr; - try { - decl = state->file->schema()->declaration_by_name(tagname_copy); - } catch (const std::exception& e) { - Logger::Error(e); - } - if (decl != nullptr) { - auto inst_or_ref = create_instance(decl); - IfcUtil::IfcBaseClass* inst; - // Argument* attr; - // @todo - // instance_to_attribute(inst_or_ref, attr, inst); - state->stack.back().aggregate_elements.push_back(boost::any{}); - state->stack.push_back(stack_node::instance(id, inst)); - } - } - } else if (state_type == stack_node::node_instance) { - const IfcParse::entity* current = state->stack.back().inst()->declaration().as_entity(); - if (current == nullptr) { - Logger::Error("'" + state->stack.back().inst()->declaration().name() + "' is not an entity, unable to set attribute '" + tagname + "'"); - // We need to push something on the stack. Likely there has been some extra indirection that is not understood. - state->stack.push_back(state->stack.back()); - } else { - auto idx = current->attribute_index(tagname); - if (idx == -1) { - auto inverses = current->all_inverse_attributes(); - auto found = std::find_if(inverses.begin(), inverses.end(), [&tagname](const IfcParse::inverse_attribute* attr) { - return attr->name() == tagname; - }); - if (found == inverses.end()) { - Logger::Error("Unknown attribute " + tagname); - state->stack.push_back(state->stack.back()); - } else { - if ((*found)->bound1() == 0 && (*found)->bound2() == 1) { - auto inst_or_ref = create_instance((*found)->entity_reference()); - IfcUtil::IfcBaseClass* inst; - instance_to_attribute(inst_or_ref, 0, inst); - if (inst != nullptr) { - int idx = (*found)->entity_reference()->attribute_index( - (*found)->attribute_reference()); - inst->set_attribute_value(idx, state->stack.back().inst()); - state->stack.push_back(stack_node::instance(id, inst)); - } else { - Logger::Error("Unknown attribute " + tagname); - state->stack.push_back(state->stack.back()); - } - } else { - state->stack.push_back(stack_node::inverse(state->stack.back().inst(), *found)); - } - } - } else { - const IfcParse::parameter_type* attribute_type = current->attribute_by_index(idx)->type_of_attribute(); - if (state->dialect == ifcxml_dialect_ifc2x3) { - follow_named(attribute_type); - if (attribute_type->as_aggregation_type() != nullptr) { - state->stack.push_back(stack_node::aggregate(state->stack.back().inst(), idx)); - } else { - state->stack.push_back(stack_node::instance_attribute(state->stack.back().inst(), idx)); - } - } else { - if (IfcUtil::from_parameter_type(attribute_type) == IfcUtil::Argument_ENTITY_INSTANCE) { - if (const auto* entity = attribute_type->as_named_type()->declared_type()->as_entity()) { - auto inst_or_reference = create_instance(entity); - IfcUtil::IfcBaseClass* inst; - instance_to_attribute(inst_or_reference, idx, inst); - // @todo - state->stack.back().inst(); - state->stack.push_back(stack_node::instance(id, std::get(inst_or_reference))); - } else if (attribute_type->as_named_type()->declared_type()->as_select_type() != nullptr) { - // Select types cause an additional indirection, so the current stack node is simply repeated - state->stack.push_back(stack_node::select(state->stack.back().inst(), idx)); - } - } else if (attribute_type->as_aggregation_type() != nullptr) { - state->stack.push_back(stack_node::aggregate(state->stack.back().inst(), idx)); - } - } - } - } - } else if (state->file != nullptr) { - if (state_type == stack_node::node_header) { - state->stack.push_back(stack_node::header_entry(tagname)); - } else if (tagname == "ex:iso_10303_28_header" || tagname == "header") { - state->stack.push_back(stack_node::header()); - } else if (tagname == "uos") { - // intentially empty, ignored in end_element() as well - } else { - const IfcParse::declaration* decl = nullptr; - try { - decl = state->file->schema()->declaration_by_name(tagname); - } catch (const std::exception& e) { - Logger::Error(e); - } - - if (decl == nullptr) { - goto end; - } - - const IfcParse::entity* entity = decl->as_entity(); - if ((entity == nullptr) && state_type != stack_node::node_instance_attribute) { - Logger::Error("Not an entity definition " + tagname); - goto end; - } - - auto inst_or_ref = create_instance(decl); - IfcUtil::IfcBaseClass* inst; - instance_to_attribute(inst_or_ref, state->stack.back().idx(), inst); - - if (state_type == stack_node::node_inverse) { - int idx = state->stack.back().inv_attr()->entity_reference()->attribute_index( - state->stack.back().inv_attr()->attribute_reference()); - if (inst != nullptr) { - inst->set_attribute_value(idx, state->stack.back().inst()); - } else { - Logger::Error("Internal error, inverse attribute not processed"); - } - } else if (state_type == stack_node::node_instance_attribute) { - state->stack.back().inst()->set_attribute_value(state->stack.back().idx(), inst); - } - - if (entity == nullptr) { - // Type declaration, immediately populate attr 0 - state->stack.push_back(stack_node::instance_attribute(inst, 0)); - } else { - state->stack.push_back(stack_node::instance(id, inst)); - } - } - } - } - -end: -#ifndef NDEBUG - std::cout << std::endl; -#endif - return; -} - -IFC_PARSE_API IfcParse::IfcFile* IfcParse::parse_ifcxml(const std::string& filename) { - throw std::runtime_error("IFC-XML import temporarily disabled"); - - ifcxml_parse_state state; - state.file = nullptr; - state.dialect = ifcxml_dialect_unknown; - - xmlSAXHandler handler; - memset(&handler, 0, sizeof(xmlSAXHandler)); - handler.startElement = start_element; - handler.endElement = end_element; - handler.characters = process_characters; - - xmlSAXUserParseFile(&handler, &state, filename.c_str()); - - for (const auto& pair : state.forward_references) { - /* - auto it = state.idmap.find(pair.second); - if (it == state.idmap.end()) { - Logger::Error("Instance with id '" + pair.second + "' not encountered"); - } else { - pair.first->set(state.file->instance_by_id(it->second)); - } - */ - } - - if (state.file != nullptr) { - // state.file->parsing_complete() = true; - state.file->build_inverses(); - } - - return state.file; -} - -#endif // WITH_IFCXML diff --git a/src/ifcparse/storage.h b/src/ifcparse/storage.h index 60378c982e..5bfd8e4c76 100644 --- a/src/ifcparse/storage.h +++ b/src/ifcparse/storage.h @@ -29,6 +29,7 @@ namespace rocksdb { #include #include #include +#include #ifndef SWIG @@ -110,6 +111,8 @@ private: #endif +class MutableAttributeValue; + namespace IfcParse { struct InstanceReference { @@ -120,7 +123,7 @@ namespace IfcParse { } }; - typedef std::variant reference_or_simple_type; + typedef std::variant reference_or_simple_type; typedef std::list, std::vector>>>> unresolved_references; class IfcFile; @@ -164,7 +167,7 @@ namespace IfcParse { struct parse_context { std::list< std::variant< - IfcUtil::IfcBaseClass*, + express::Base, Token, parse_context* >> tokens_; @@ -182,16 +185,16 @@ namespace IfcParse { void push(Token t); - void push(IfcUtil::IfcBaseClass* inst); + void push(const express::Base& inst); - IfcEntityInstanceData construct(boost::optional name, unresolved_references& references_to_resolve, const IfcParse::declaration* decl, boost::optional expected_size, int resolve_reference_index, bool coerce_attribute_count=true); + std::shared_ptr construct(IfcParse::IfcFile* owner, std::optional name, unresolved_references& references_to_resolve, const IfcParse::declaration* decl, std::optional expected_size, int resolve_reference_index, bool coerce_attribute_count=true); }; namespace impl { struct IFC_PARSE_API in_memory_file_storage { - std::vector> read_simple_type_instances; - std::vector> steal_instances() { - return std::move(read_simple_type_instances); + std::vector> read_simple_type_instances; + std::vector> steal_instances() { + return read_simple_type_instances; } IfcParse::IfcSpfLexer* tokens; @@ -203,10 +206,11 @@ namespace IfcParse { unresolved_references* references_to_resolve = nullptr; - typedef std::map entities_by_type_t; - typedef boost::unordered_map entity_instance_by_name_t; - typedef boost::unordered_map type_instance_by_name_t; - typedef std::map entity_instance_by_guid_t; + typedef std::map> entities_by_type_t; + typedef boost::unordered_map> entity_instance_by_name_storage_t; + typedef map_transformer)>> entity_instance_by_name_t; + typedef boost::unordered_map> type_instance_by_name_t; + typedef std::map entity_instance_by_guid_t; typedef std::tuple inverse_attr_record; enum INVERSE_ATTR { INSTANCE_ID, @@ -216,7 +220,7 @@ namespace IfcParse { typedef std::map> entities_by_ref_t; typedef entity_instance_by_name_t::iterator iterator; - in_memory_file_storage(IfcParse::IfcFile* f = nullptr) : tokens(nullptr), file(f), schema(nullptr) {} + in_memory_file_storage(IfcParse::IfcFile* f = nullptr) : tokens(nullptr), file(f), schema(nullptr), byid_read_(&byid_, [this](const std::shared_ptr& d) { return express::Base(d); }) {}; in_memory_file_storage(const in_memory_file_storage&) = delete; in_memory_file_storage(const in_memory_file_storage&&) = delete; @@ -254,54 +258,50 @@ namespace IfcParse { } }; - entity_instance_by_name_t byid_; + entity_instance_by_name_storage_t byid_; type_instance_by_name_t tbyid_; entities_by_type_t bytype_excl_; entities_by_ref_t byref_excl_; entity_instance_by_guid_t byguid_; + entity_instance_by_name_t byid_read_; - void load(boost::optional entity_instance_name, const IfcParse::entity* entity, parse_context&, int attribute_index = -1); + void load(std::optional entity_instance_name, const IfcParse::entity* entity, parse_context&, int attribute_index = -1); void try_read_semicolon() const; void register_inverse(unsigned, const IfcParse::entity* from_entity, int inst_id, int attribute_index); - void unregister_inverse(unsigned, const IfcParse::entity* from_entity, IfcUtil::IfcBaseClass*, int attribute_index); + void unregister_inverse(unsigned, const IfcParse::entity* from_entity, const express::Base&, int attribute_index); // @todo is this still used - IfcEntityInstanceData read(unsigned int index); + std::shared_ptr read(unsigned int index); void read_from_stream(IfcParse::FileReader* stream, const IfcParse::schema_definition*& schema, unsigned int& max_id, const std::set& typed_to_bypass); file_open_status good_ = file_open_status::SUCCESS; - IfcUtil::IfcBaseClass* instance_by_id(int id); + express::Base instance_by_id(int id); - void add_type_ref(IfcUtil::IfcBaseClass* new_entity) { - auto ty = new_entity->declaration().as_entity(); - if (ty) { - if (bytype_excl_.find(ty) == bytype_excl_.end()) { - bytype_excl_[ty].reset(new aggregate_of_instance()); - } - bytype_excl_[ty]->push(new_entity); + void add_type_ref(const express::Base& new_entity) { + if (auto* ty = new_entity.declaration().as_entity()) { + bytype_excl_[ty].push_back(new_entity); } } - void remove_type_ref(IfcUtil::IfcBaseClass* new_entity) { - auto ty = new_entity->declaration().as_entity(); - if (ty) { + void remove_type_ref(const express::Base& new_entity) { + if (auto* ty = new_entity.declaration().as_entity()) { auto it = bytype_excl_.find(ty); if (it != bytype_excl_.end()) { - it->second->remove(new_entity); - if (it->second->size() == 0) { + it->second.erase(std::remove(it->second.begin(), it->second.end(), new_entity), it->second.end()); + if (it->second.empty()) { bytype_excl_.erase(ty); } } } } - void process_deletion_inverse(IfcUtil::IfcBaseClass* inst); + void process_deletion_inverse(const express::Base& inst); template - T* create(); + T create(int id=-1); - IfcUtil::IfcBaseClass* create(const IfcParse::declaration* decl); + express::Base create(const IfcParse::declaration* decl, int id=-1); }; class IFC_PARSE_API rocks_db_file_storage { @@ -319,7 +319,7 @@ namespace IfcParse { // to make sure that instance pointer are constant during file lifetime // cache instances because we want stable pointers // @todo this is silly, but we cannot have the same type, this should be just a pointer then on the IfcFile side? - typedef std::map entity_by_iden_cache_t; + typedef std::map> entity_by_iden_cache_t; entity_by_iden_cache_t instance_cache_, type_instance_cache_; // @todo all these size_ts should probably be uint32_t for consistency with in-mem storage @@ -329,7 +329,7 @@ namespace IfcParse { // identity_by_id_t byid_; typedef rocksdb_set_view instance_name_view_t; instance_name_view_t instance_ids_; - typedef set_to_map_transformer> entity_instance_by_name_t; + typedef set_to_map_transformer> entity_instance_by_name_t; entity_instance_by_name_t instance_by_name_; // typedef map_transformer, std::function, std::function> entity_by_id_t; @@ -345,7 +345,7 @@ namespace IfcParse { instance_id_by_guid_str_t byguid_internal_; // guid -> id -> instance - typedef map_transformer, std::function, std::function< size_t(IfcUtil::IfcBaseClass*)>> entity_instance_by_guid_t; + typedef map_transformer, std::function, std::function> entity_instance_by_guid_t; entity_instance_by_guid_t byguid_; typedef std::tuple inverse_attr_record; @@ -363,83 +363,7 @@ namespace IfcParse { bool read_schema(const IfcParse::schema_definition*& schema); - IfcUtil::IfcBaseClass* assert_existance(size_t instanceId, instance_ref r); - - // @todo this could be another map_adapter? - /* - class rocksdb_instance_iterator { - private: - rocksdb::Iterator* state_; - rocks_db_file_storage* storage_; - - static constexpr char prefix_[] = "i|"; - - boost::optional read_id_() const { - auto sv = state_->key().ToStringView(); - auto ii = sv.find("|", 2); - if (ii != decltype(sv)::npos) { - char* pEnd; - long result = strtol(sv.data() + 2, &pEnd, 10); - if (*pEnd == '|') { - return (size_t)result; - } - } - return boost::none; - } - public: - rocksdb_instance_iterator() - : state_(nullptr) - , storage_(nullptr) - {} - rocksdb_instance_iterator(rocks_db_file_storage* fs) - : storage_(fs) - { - state_ = fs->db->NewIterator(rocksdb::ReadOptions()); - state_->Seek(prefix_); - if (!state_->Valid() || !state_->key().starts_with(prefix_)) { - delete state_; - state_ = nullptr; - } - } - rocksdb_instance_iterator& operator++() { - if (!state_) { - return *this; - } - auto last_id = read_id_(); - while (state_->Valid()) { - state_->Next(); - // Stop if we've left the prefix range. - if (!state_->Valid() || !state_->key().starts_with(prefix_)) { - delete state_; - state_ = nullptr; - break; - } - if (read_id_() != last_id) { - break; - } - } - return *this; - } - rocksdb_instance_iterator operator++(int) { - rocksdb_instance_iterator temp = *this; - ++(*this); - return temp; - } - bool operator==(const rocksdb_instance_iterator& other) const { - if (state_ == nullptr && other.state_ == nullptr) { - return true; - } else { - return read_id_() == other.read_id_(); - } - } - - bool operator!=(const rocksdb_instance_iterator& other) const { - return !(*this == other); - } - - IfcUtil::IfcBaseClass* operator*() const; - }; - */ + express::Base assert_existance(size_t instanceId, instance_ref r); // @todo merge iterators (template?) class IFC_PARSE_API rocksdb_types_iterator { @@ -449,7 +373,7 @@ namespace IfcParse { static constexpr char prefix_[] = "t|"; - boost::optional read_id_() const { + std::optional read_id_() const { #ifdef IFOPSH_WITH_ROCKSDB auto sv = state_->key().ToStringView(); auto ii = sv.find("|", 2); @@ -461,7 +385,7 @@ namespace IfcParse { } } #endif - return boost::none; + return std::nullopt; } public: using iterator_category = std::forward_iterator_tag; @@ -541,20 +465,20 @@ namespace IfcParse { using const_iterator = entity_instance_by_name_t::iterator; void register_inverse(unsigned, const IfcParse::entity* from_entity, int inst_id, int attribute_index); - void unregister_inverse(unsigned, const IfcParse::entity* from_entity, IfcUtil::IfcBaseClass*, int attribute_index); + void unregister_inverse(unsigned, const IfcParse::entity* from_entity, const express::Base&, int attribute_index); // @todo a bit hard as a map because of value_type being an aggregate - void add_type_ref(IfcUtil::IfcBaseClass* new_entity); - void remove_type_ref(IfcUtil::IfcBaseClass* new_entity); + void add_type_ref(const express::Base& new_entity); + void remove_type_ref(const express::Base& new_entity); - IfcUtil::IfcBaseClass* instance_by_id(int id); + express::Base instance_by_id(int id); - void process_deletion_inverse(IfcUtil::IfcBaseClass* inst); + void process_deletion_inverse(const express::Base& inst); template - T* create(); + T create(int id=-1); - IfcUtil::IfcBaseClass* create(const IfcParse::declaration* decl); + express::Base create(const IfcParse::declaration* decl, int id=-1); }; } } diff --git a/src/ifcwrap/IfcGeomWrapper.i b/src/ifcwrap/IfcGeomWrapper.i index e155c2837e..793b95ea2f 100644 --- a/src/ifcwrap/IfcGeomWrapper.i +++ b/src/ifcwrap/IfcGeomWrapper.i @@ -104,18 +104,18 @@ std::pair vector_to_buffer(const T& t) { %ignore ifcopenshell::geometry::taxonomy::item::print; -%typemap(out) boost::variant { - if ($1.which() == 0) { +%typemap(out) std::variant { + if ($1.index() == 0) { Py_INCREF(Py_None); return Py_None; - } else if ($1.which() == 1) { - return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr(boost::get($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__point3_t, 0 | SWIG_POINTER_OWN); + } else if ($1.index() == 1) { + return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr(std::get($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__point3_t, 0 | SWIG_POINTER_OWN); } else { - return PyFloat_FromDouble(boost::get($1)); + return PyFloat_FromDouble(std::get($1)); } } -%typemap(out) boost::optional { +%typemap(out) std::optional { if ($1) { $result = PyBool_FromLong(*$1 ? 1 : 0); } else { @@ -279,14 +279,10 @@ namespace { %extend ifcopenshell::geometry::taxonomy::style { size_t instance_id() const { - if (self->instance == nullptr) { + if (!self->instance) { return 0; } - const IfcUtil::IfcBaseEntity* ent; - if ((ent = self->instance->as()) == nullptr) { - return 0; - } - return ent->id(); + return self->instance.id(); } } @@ -451,63 +447,47 @@ assign_matrix_access(revolve); %extend IfcGeom::tree { - static aggregate_of_instance::ptr vector_to_list(const std::vector& ps) { - aggregate_of_instance::ptr r(new aggregate_of_instance); - for (auto it = ps.begin(); it != ps.end(); ++it) { - // @todo - r->push(const_cast(*it)); - } - return r; - } - - aggregate_of_instance::ptr select_box(IfcUtil::IfcBaseClass* e, bool completely_within = false, double extend=-1.e-5) const { - if (!e->declaration().is("IfcProduct")) { + std::vector select_box(const express::Base& e, bool completely_within = false, double extend=-1.e-5) const { + if (!e.declaration().is("IfcProduct")) { throw IfcParse::IfcException("Instance should be an IfcProduct"); } - std::vector ps = $self->select_box((IfcUtil::IfcBaseEntity*)e, completely_within, extend); - return IfcGeom_tree_vector_to_list(ps); + return cast_vector($self->select_box(e.as(), completely_within, extend)); } - aggregate_of_instance::ptr select_box(const gp_Pnt& p) const { - std::vector ps = $self->select_box(p); - return IfcGeom_tree_vector_to_list(ps); + std::vector select_box(const gp_Pnt& p) const { + return cast_vector($self->select_box(p)); } - aggregate_of_instance::ptr select_box(const Bnd_Box& b, bool completely_within = false) const { - std::vector ps = $self->select_box(b, completely_within); - return IfcGeom_tree_vector_to_list(ps); + std::vector select_box(const Bnd_Box& b, bool completely_within = false) const { + return cast_vector($self->select_box(b, completely_within)); } - aggregate_of_instance::ptr select(IfcUtil::IfcBaseClass* e, bool completely_within = false, double extend = 0.0) const { - if (!e->declaration().is("IfcProduct")) { + std::vector select(const express::Base& e, bool completely_within = false, double extend = 0.0) const { + if (!e.declaration().is("IfcProduct")) { throw IfcParse::IfcException("Instance should be an IfcProduct"); } - std::vector ps = $self->select((IfcUtil::IfcBaseEntity*)e, completely_within, extend); - return IfcGeom_tree_vector_to_list(ps); + return cast_vector($self->select(e.as(), completely_within, extend)); } - aggregate_of_instance::ptr select(const gp_Pnt& p, double extend=0.0) const { - std::vector ps = $self->select(p, extend); - return IfcGeom_tree_vector_to_list(ps); + std::vector select(const gp_Pnt& p, double extend=0.0) const { + return cast_vector($self->select(p, extend)); } - aggregate_of_instance::ptr select(const std::string& shape_serialization, bool completely_within = false, double extend = -1.e-5) const { + std::vector select(const std::string& shape_serialization, bool completely_within = false, double extend = -1.e-5) const { std::stringstream stream(shape_serialization); BRepTools_ShapeSet shapes; shapes.Read(stream); const TopoDS_Shape& shp = shapes.Shape(shapes.NbShapes()); - std::vector ps = $self->select(shp, completely_within, extend); - return IfcGeom_tree_vector_to_list(ps); + return cast_vector($self->select(shp, completely_within, extend)); } - aggregate_of_instance::ptr select(const IfcGeom::BRepElement* elem, bool completely_within = false, double extend = -1.e-5) const { - std::vector ps = $self->select(elem, completely_within, extend); - return IfcGeom_tree_vector_to_list(ps); + std::vector select(const IfcGeom::BRepElement* elem, bool completely_within = false, double extend = -1.e-5) const { + return cast_vector($self->select(elem, completely_within, extend)); } - - %typemap(in) const std::vector& (std::vector temp) { + /* + %typemap(in) const std::vector& (std::vector temp) { if (!PyList_Check($input)) { PyErr_SetString(PyExc_TypeError, "Expected a list."); return NULL; @@ -517,65 +497,66 @@ assign_matrix_access(revolve); for (Py_ssize_t i = 0; i < PyList_Size($input); ++i) { PyObject* pyObj = PyList_GetItem($input, i); void* ptr = 0; - int res = SWIG_ConvertPtr(pyObj, &ptr, SWIGTYPE_p_IfcUtil__IfcBaseClass, 0); + int res = SWIG_ConvertPtr(pyObj, &ptr, SWIGTYPE_p_express__Base, 0); if (!SWIG_IsOK(res)) { PyErr_SetString(PyExc_TypeError, "List item is not of type IfcBaseClass."); return NULL; } - temp.push_back(reinterpret_cast(ptr)); + temp.push_back(reinterpret_cast(ptr)); } } + */ - std::vector clash_intersection_many(const std::vector& set_a, const std::vector& set_b, double tolerance, bool check_all) const { - std::vector set_a_entities; - std::vector set_b_entities; - for (auto* e : set_a) { - if (!e->declaration().is("IfcProduct")) { + std::vector clash_intersection_many(const std::vector& set_a, const std::vector& set_b, double tolerance, bool check_all) const { + std::vector set_a_entities; + std::vector set_b_entities; + for (auto& e : set_a) { + if (!e.declaration().is("IfcProduct")) { throw IfcParse::IfcException("All instances should be of type IfcProduct"); } - set_a_entities.push_back(static_cast(e)); + set_a_entities.push_back(e.as()); } - for (auto* e : set_b) { - if (!e->declaration().is("IfcProduct")) { + for (auto& e : set_b) { + if (!e.declaration().is("IfcProduct")) { throw IfcParse::IfcException("All instances should be of type IfcProduct"); } - set_b_entities.push_back(static_cast(e)); + set_b_entities.push_back(e.as()); } return $self->clash_intersection_many(set_a_entities, set_b_entities, tolerance, check_all); } - std::vector clash_collision_many(const std::vector& set_a, const std::vector& set_b, bool allow_touching) const { - std::vector set_a_entities; - std::vector set_b_entities; - for (auto* e : set_a) { - if (!e->declaration().is("IfcProduct")) { + std::vector clash_collision_many(const std::vector& set_a, const std::vector& set_b, bool allow_touching) const { + std::vector set_a_entities; + std::vector set_b_entities; + for (auto& e : set_a) { + if (!e.declaration().is("IfcProduct")) { throw IfcParse::IfcException("All instances should be of type IfcProduct"); } - set_a_entities.push_back(static_cast(e)); + set_a_entities.push_back(e.as()); } - for (auto* e : set_b) { - if (!e->declaration().is("IfcProduct")) { + for (auto& e : set_b) { + if (!e.declaration().is("IfcProduct")) { throw IfcParse::IfcException("All instances should be of type IfcProduct"); } - set_b_entities.push_back(static_cast(e)); + set_b_entities.push_back(e.as()); } return $self->clash_collision_many(set_a_entities, set_b_entities, allow_touching); } - std::vector clash_clearance_many(const std::vector& set_a, const std::vector& set_b, double clearance, bool check_all) const { - std::vector set_a_entities; - std::vector set_b_entities; - for (auto* e : set_a) { - if (!e->declaration().is("IfcProduct")) { + std::vector clash_clearance_many(const std::vector& set_a, const std::vector& set_b, double clearance, bool check_all) const { + std::vector set_a_entities; + std::vector set_b_entities; + for (auto& e : set_a) { + if (!e.declaration().is("IfcProduct")) { throw IfcParse::IfcException("All instances should be of type IfcProduct"); } - set_a_entities.push_back(static_cast(e)); + set_a_entities.push_back(e.as()); } - for (auto* e : set_b) { - if (!e->declaration().is("IfcProduct")) { + for (auto& e : set_b) { + if (!e.declaration().is("IfcProduct")) { throw IfcParse::IfcException("All instances should be of type IfcProduct"); } - set_b_entities.push_back(static_cast(e)); + set_b_entities.push_back(e.as()); } return $self->clash_clearance_many(set_a_entities, set_b_entities, clearance, check_all); } @@ -624,9 +605,9 @@ struct ShapeRTTI : public boost::static_visitor %} // Note that these elements ARE to be owned by SWIG/Python -%typemap(out) boost::variant { +%typemap(out) std::variant { // See which type is set and return appropriate - $result = boost::apply_visitor(ShapeRTTI(), (boost::variant) $1); + $result = std::visit(ShapeRTTI(), (std::variant) $1); } %newobject construct_iterator; @@ -773,7 +754,7 @@ struct ShapeRTTI : public boost::static_visitor return { reinterpret_cast(data), 16 * sizeof(double) }; } - const IfcUtil::IfcBaseClass* product_() const { + const express::Base product_() const { return $self->product(); } @@ -882,40 +863,39 @@ struct ShapeRTTI : public boost::static_visitor } template - static boost::variant helper_fn_create_shape(const std::string& geometry_library, ifcopenshell::geometry::Settings& st, IfcUtil::IfcBaseClass* instance, IfcUtil::IfcBaseClass* representation = 0) { - IfcParse::IfcFile* file = instance->file_; + static std::variant helper_fn_create_shape(const std::string& geometry_library, ifcopenshell::geometry::Settings& st, const express::Base& instance, const express::Base& representation = express::Base()) { + IfcParse::IfcFile* file = instance.data()->file(); ifcopenshell::geometry::Converter kernel(ifcopenshell::geometry::kernels::construct(file, geometry_library, st), file, st); - if (typename Schema::IfcProduct* product = instance->as()) { + if (auto product = instance.as()) { if (representation) { - if (!representation->declaration().is(Schema::IfcRepresentation::Class())) { + if (!representation.declaration().is(Schema::IfcRepresentation::Class())) { throw IfcParse::IfcException("Supplied representation not of type IfcRepresentation"); } } - if (!representation && !product->Representation()) { + if (!representation && !product.Representation()) { throw IfcParse::IfcException("Representation is NULL"); } - typename Schema::IfcProductRepresentation* prodrep = product->Representation(); - typename Schema::IfcRepresentation::list::ptr reps = prodrep->Representations(); - typename Schema::IfcRepresentation* ifc_representation = representation ? representation->as() : nullptr; + auto prodrep = product.Representation(); + auto reps = prodrep.Representations(); + auto ifc_representation = representation ? representation.as() : Schema::IfcRepresentation(); if (!ifc_representation) { // First, try to find a representation based on the settings - for (typename Schema::IfcRepresentation::list::it it = reps->begin(); it != reps->end(); ++it) { - typename Schema::IfcRepresentation* rep = *it; - if (!rep->RepresentationIdentifier()) { + for (auto& rep : reps) { + if (!rep.RepresentationIdentifier()) { continue; } if (st.get().get() != ifcopenshell::geometry::settings::CURVES) { - if (*rep->RepresentationIdentifier() == "Body" || *rep->RepresentationIdentifier() == "Facetation") { + if (*rep.RepresentationIdentifier() == "Body" || *rep.RepresentationIdentifier() == "Facetation") { ifc_representation = rep; break; } } else { - if (*rep->RepresentationIdentifier() == "Plan" || *rep->RepresentationIdentifier() == "Axis") { + if (*rep.RepresentationIdentifier() == "Plan" || *rep.RepresentationIdentifier() == "Axis") { ifc_representation = rep; break; } @@ -925,12 +905,11 @@ struct ShapeRTTI : public boost::static_visitor // Otherwise, find a representation within the 'Model' or 'Plan' context if (!ifc_representation) { - for (typename Schema::IfcRepresentation::list::it it = reps->begin(); it != reps->end(); ++it) { - typename Schema::IfcRepresentation* rep = *it; - typename Schema::IfcRepresentationContext* context = rep->ContextOfItems(); + for (auto& rep : reps) { + auto context = rep.ContextOfItems(); // TODO: Remove redundancy with IfcGeomIterator.h - if (context->ContextType()) { + if (context.ContextType()) { std::set context_types; if (st.get().get() != ifcopenshell::geometry::settings::CURVES) { context_types.insert("model"); @@ -941,7 +920,7 @@ struct ShapeRTTI : public boost::static_visitor context_types.insert("plan"); } - std::string context_type_lc = *context->ContextType(); + std::string context_type_lc = *context.ContextType(); for (std::string::iterator c = context_type_lc.begin(); c != context_type_lc.end(); ++c) { *c = tolower(*c); } @@ -953,9 +932,9 @@ struct ShapeRTTI : public boost::static_visitor } if (!ifc_representation) { - if (reps->size()) { + if (reps.size()) { // Return a random representation - ifc_representation = *reps->begin(); + ifc_representation = reps.front(); } else { throw IfcParse::IfcException("No suitable IfcRepresentation found"); } @@ -964,8 +943,8 @@ struct ShapeRTTI : public boost::static_visitor IfcGeom::BRepElement* brep = kernel.create_brep_for_representation_and_product(ifc_representation, product); if (!brep) { std::ostringstream oss_repr, oss_product; - ifc_representation->toString(oss_repr); - product->toString(oss_product); + ifc_representation.toString(oss_repr); + product.toString(oss_product); throw IfcParse::IfcException("Failed to process shape. Product: " + oss_product.str() + ", representation: " + oss_repr.str()); } if (st.get().get() == ifcopenshell::geometry::settings::SERIALIZED) { @@ -979,7 +958,7 @@ struct ShapeRTTI : public boost::static_visitor } else { return brep; } - } else if (instance->as() != nullptr || instance->as()) { + } else if (instance.as() || instance.as()) { auto item = ifcopenshell::geometry::taxonomy::cast(kernel.mapping()->map(instance)); if (item == nullptr) { throw IfcParse::IfcException("Failed to convert placement"); @@ -993,21 +972,21 @@ struct ShapeRTTI : public boost::static_visitor return new IfcGeom::Transformation(kernel.settings(), item); } else { if (!representation) { - if (instance->declaration().is(Schema::IfcRepresentationItem::Class()) || - instance->declaration().is(Schema::IfcRepresentation::Class()) || + if (instance.declaration().is(Schema::IfcRepresentationItem::Class()) || + instance.declaration().is(Schema::IfcRepresentation::Class()) || // https://github.com/IfcOpenShell/IfcOpenShell/issues/1649 - instance->declaration().is(Schema::IfcProfileDef::Class()) + instance.declaration().is(Schema::IfcProfileDef::Class()) ) { IfcGeom::ConversionResults shapes; try { shapes = kernel.convert(instance); } catch (...) { std::ostringstream oss; - instance->toString(oss); + instance.toString(oss); throw IfcParse::IfcException("Failed to process shape. Instance: " + oss.str()); } - IfcGeom::Representation::BRep brep(kernel.settings(), instance->declaration().name(), to_locale_invariant_string(instance->as()->id()), shapes); + IfcGeom::Representation::BRep brep(kernel.settings(), instance.declaration().name(), to_locale_invariant_string(instance.id()), shapes); try { if (st.get().get() == ifcopenshell::geometry::settings::SERIALIZED) { return new IfcGeom::Representation::Serialization(brep); @@ -1022,7 +1001,7 @@ struct ShapeRTTI : public boost::static_visitor throw IfcParse::IfcException("Invalid additional representation specified"); } } - return boost::variant(); + return std::variant(); } %} @@ -1054,18 +1033,15 @@ ifcopenshell::geometry::taxonomy::item::ptr try_upcast(PyObject* obj0, swig_type %} %inline %{ - ifcopenshell::geometry::taxonomy::item::ptr map_shape(ifcopenshell::geometry::Settings& settings, IfcUtil::IfcBaseClass* instance) { - if (instance->file_ == nullptr) { - throw std::runtime_error("Unable to map instance without file"); - } - std::unique_ptr mapping(ifcopenshell::geometry::impl::mapping_implementations().construct(instance->file_, settings)); + ifcopenshell::geometry::taxonomy::item::ptr map_shape(ifcopenshell::geometry::Settings& settings, const express::Base& instance) { + std::unique_ptr mapping(ifcopenshell::geometry::impl::mapping_implementations().construct(instance.data()->file(), settings)); return mapping->map(instance); } %} %inline %{ - static boost::variant create_shape(ifcopenshell::geometry::Settings& settings, IfcUtil::IfcBaseClass* instance, IfcUtil::IfcBaseClass* representation = 0, const char* const geometry_library="opencascade") { - const std::string& schema_name = instance->declaration().schema()->name(); + static std::variant create_shape(ifcopenshell::geometry::Settings& settings, const express::Base& instance, const express::Base& representation = express::Base(), const char* const geometry_library="opencascade") { + const std::string& schema_name = instance.declaration().schema()->name(); #ifdef HAS_SCHEMA_2x3 if (schema_name == "IFC2X3") { @@ -1135,22 +1111,22 @@ ifcopenshell::geometry::taxonomy::item::ptr try_upcast(PyObject* obj0, swig_type #ifdef IFOPSH_WITH_OPENCASCADE %inline %{ - IfcUtil::IfcBaseClass* serialise(const std::string& schema_name, const std::string& shape_str, bool advanced=true) { + express::Base serialise(IfcParse::IfcFile& f, const std::string& shape_str, bool advanced=true) { std::stringstream stream(shape_str); BRepTools_ShapeSet shapes; shapes.Read(stream); const TopoDS_Shape& shp = shapes.Shape(shapes.NbShapes()); - return IfcGeom::serialise(schema_name, shp, advanced); + return IfcGeom::serialise(f, shp, advanced); } - IfcUtil::IfcBaseClass* tesselate(const std::string& schema_name, const std::string& shape_str, double d) { + express::Base tesselate(IfcParse::IfcFile& f, const std::string& shape_str, double d) { std::stringstream stream(shape_str); BRepTools_ShapeSet shapes; shapes.Read(stream); const TopoDS_Shape& shp = shapes.Shape(shapes.NbShapes()); - return IfcGeom::tesselate(schema_name, shp, d); + return IfcGeom::tesselate(f, shp, d); } %} @@ -1260,7 +1236,7 @@ ifcopenshell::geometry::taxonomy::item::ptr try_upcast(PyObject* obj0, swig_type %include "../svgfill/src/svgfill.h" %inline %{ - std::vector> svg_to_line_segments(const std::string& data, const boost::optional& class_name) { + std::vector> svg_to_line_segments(const std::string& data, const std::optional& class_name) { std::vector> r; if (svgfill::svg_to_line_segments(data, class_name, r)) { return r; @@ -1278,7 +1254,7 @@ ifcopenshell::geometry::taxonomy::item::ptr try_upcast(PyObject* obj0, swig_type } } - std::vector svg_to_polygons(const std::string& data, const boost::optional& class_name) { + std::vector svg_to_polygons(const std::string& data, const std::optional& class_name) { std::vector r; if (svgfill::svg_to_polygons(data, class_name, r)) { return r; diff --git a/src/ifcwrap/IfcParseWrapper.i b/src/ifcwrap/IfcParseWrapper.i index 1bc43b422c..312433db57 100644 --- a/src/ifcwrap/IfcParseWrapper.i +++ b/src/ifcwrap/IfcParseWrapper.i @@ -17,13 +17,6 @@ * * ********************************************************************************/ -// A class declaration to silence SWIG warning about base classes being -// undefined, the constructor is private so that SWIG does not wrap them -class IfcEntityInstanceData { -private: - IfcEntityInstanceData(); -}; - %ignore IfcParse::IfcFile::register_inverse; %ignore IfcParse::IfcFile::unregister_inverse; %ignore IfcParse::IfcFile::schema; @@ -43,6 +36,10 @@ private: %ignore IfcParse::InstanceStreamer::readInstance; %ignore IfcParse::InstanceStreamer::stealInstances; +%ignore express::Entity; +%ignore express::Select; +%ignore express::DeclaredType; + %ignore in_memory_file_storage; %ignore rocks_db_file_storage; // Available as get_inverse(). @@ -68,17 +65,18 @@ private: %ignore IfcParse::IfcFile::type_iterator; -%ignore IfcUtil::IfcBaseClass::is; +%ignore express::Base::is; %rename("by_id") instance_by_id; %rename("by_guid") instance_by_guid; -%rename("by_type") instances_by_type; -%rename("by_type_excl_subtypes") instances_by_type_excl_subtypes; +%rename("_by_type") instances_by_type; +%rename("_by_type_excl_subtypes") instances_by_type_excl_subtypes; %rename("get_inverses_by_declaration") getInverse; %rename("get_total_inverses_by_id") getTotalInverses; -%rename("entity_instance") IfcBaseClass; +%rename("entity_instance") express::Base; %rename("file") IfcFile; -%rename("add") addEntity; +// _add() because mixin defined add which adds transaction logic +%rename("_add") addEntity; %rename("remove") removeEntity; class attribute_value_derived {}; @@ -120,16 +118,17 @@ static const std::string& helper_fn_declaration_get_name(const IfcParse::declara return decl->name(); } -static IfcUtil::ArgumentType helper_fn_attribute_type(const IfcUtil::IfcBaseClass* inst, unsigned i) { +static IfcUtil::ArgumentType helper_fn_attribute_type(const express::Base* instp, unsigned i) { + const auto& inst = *instp; const IfcParse::parameter_type* pt = 0; - if (inst->declaration().as_entity()) { - pt = inst->declaration().as_entity()->attribute_by_index(i)->type_of_attribute(); - if (inst->declaration().as_entity()->derived()[i]) { + if (inst.declaration().as_entity()) { + pt = inst.declaration().as_entity()->attribute_by_index(i)->type_of_attribute(); + if (inst.declaration().as_entity()->derived()[i]) { return IfcUtil::Argument_DERIVED; } - } else if (inst->declaration().as_type_declaration() && i == 0) { - pt = inst->declaration().as_type_declaration()->declared_type(); - } else if (inst->declaration().as_enumeration_type() && i == 0) { + } else if (inst.declaration().as_type_declaration() && i == 0) { + pt = inst.declaration().as_type_declaration()->declared_type(); + } else if (inst.declaration().as_enumeration_type() && i == 0) { // Enumeration is always from string in Python return IfcUtil::Argument_STRING; } @@ -190,31 +189,54 @@ private: %newobject IfcParse::IfcFile::key_value_store_iter; %extend IfcParse::IfcFile { + /* // Use to correlate to entity_instance.file_pointer, so that we // can trace file ownership of instances on the python side. size_t file_pointer() const { return reinterpret_cast($self); } + */ - aggregate_of_instance::ptr get_inverse(IfcUtil::IfcBaseClass* e) { - if (auto e_ = e->as()) { - return $self->getInverse(e_->id(), 0, -1); - } - throw IfcParse::IfcException("Only entities with ids are supported for get_inverse. Provided entity: '" + e->declaration().name() + "'."); + IfcFile(const std::string& schema = "IFC4") { + auto resolved_schema = schema; + if (resolved_schema == "IFC4X3") { + resolved_schema = "IFC4X3_ADD2"; + } + return new IfcParse::IfcFile(IfcParse::schema_by_name(resolved_schema)); } - std::vector get_inverse_indices(IfcUtil::IfcBaseClass* e) { - if (auto e_ = e->as()) { - return $self->get_inverse_indices(e_->id()); - } - throw IfcParse::IfcException("Only entities with ids are supported for get_inverse_indices. Provided entity: '" + e->declaration().name() + "'."); + IfcFile(const std::vector& schema_version) { + static const char* prefixes[] = { "IFC", "X", "_ADD", "_TC" }; + + std::string resolved_schema; + for (size_t i = 0; i < schema_version.size() && i < 4; ++i) { + if (schema_version[i] != 0) { + resolved_schema += prefixes[i]; + resolved_schema += std::to_string(schema_version[i]); + } + } + return new IfcParse::IfcFile(IfcParse::schema_by_name(resolved_schema)); } - int get_total_inverses(IfcUtil::IfcBaseClass* e) { - if (auto e_ = e->as()) { - return $self->getTotalInverses(e_->id()); + std::vector get_inverse(const express::Base& e) { + if (auto e_ = e.as()) { + return cast_vector($self->getInverse(e_.id(), 0, -1)); } - throw IfcParse::IfcException("Only entities with ids are supported for get_total_inverses. Provided entity: '" + e->declaration().name() + "'."); + throw IfcParse::IfcException("Only entities with ids are supported for get_inverse. Provided entity: '" + e.declaration().name() + "'."); + } + + std::vector get_inverse_indices(const express::Base& e) { + if (auto e_ = e.as()) { + return $self->get_inverse_indices(e_.id()); + } + throw IfcParse::IfcException("Only entities with ids are supported for get_inverse_indices. Provided entity: '" + e.declaration().name() + "'."); + } + + int get_total_inverses(const express::Base& e) { + if (auto e_ = e.as()) { + return $self->getTotalInverses(e_.id()); + } + throw IfcParse::IfcException("Only entities with ids are supported for get_total_inverses. Provided entity: '" + e.declaration().name() + "'."); } void write(const std::string& fn) { @@ -231,6 +253,14 @@ private: return s.str(); } + express::Base create(const std::string& entity_name) { + const IfcParse::declaration* decl = $self->schema()->declaration_by_name(entity_name); + if (!decl || !decl->as_entity()) { + throw IfcParse::IfcException("No such entity declaration: '" + entity_name + "' in schema '" + $self->schema()->name()); + } + return $self->create(decl); + } + std::vector entity_names() const { std::vector keys; keys.reserve(std::distance($self->begin(), $self->end())); @@ -312,19 +342,28 @@ private: %pythoncode %{ schema = property(schema_name) + + old_init = __init__ + def __init__(self, schema=None, schema_version=None): + self.old_init(*filter(None, (schema, schema_version))) + self.post_init() %} } -%extend IfcUtil::IfcBaseClass { +%extend express::Base { %pythoncode %{ # Will be assigned when `ifcopenshell.entity_instance` is created. file = None %} + // 0 = not found + // 1 = regular forward attribute + // 2 = inverse attribute + // 3 = derived attribute (redeclared in subtype as derived) int get_attribute_category(const std::string& name) const { if (!$self->declaration().as_entity()) { - return name == "wrappedValue"; + return name == "wrappedValue" ? 1 : 0; } { @@ -332,7 +371,11 @@ private: std::vector::const_iterator it = attrs.begin(); for (; it != attrs.end(); ++it) { if ((*it)->name() == name) { - return 1; + if ($self->declaration().as_entity()->derived()[std::distance(attrs.begin(), it)]) { + return 3; + } else { + return 1; + } } } } @@ -350,14 +393,18 @@ private: return 0; } + /* + @todo determine if we want to reinstante id() availability only on Entity instances. + // id() is defined on IfcBaseEntity and not on IfcBaseClass, in order // to expose it to the Python wrapper it is simply duplicated here. // Same applies to the two methods reimplemented below. int id() const { - return $self->as() != nullptr - ? $self->as()->id() + return $self->as() != nullptr + ? $self->as()->id() : 0; } + */ int __len__() const { if ($self->declaration().as_entity()) { @@ -427,8 +474,8 @@ private: return $self->get_attribute_value((unsigned)i); } - bool __eq__(IfcUtil::IfcBaseClass* other) const { - return $self->identity() == other->identity(); + bool __eq__(const express::Base& other) const { + return $self->identity() == other.identity(); } std::string __repr__() const { @@ -443,10 +490,12 @@ private: return oss.str(); } + /* // Just something to have a somewhat sensible value to hash size_t file_pointer() const { return reinterpret_cast($self->file_); } + */ unsigned get_argument_index(const std::string& a) const { if ($self->declaration().as_entity()) { @@ -458,9 +507,9 @@ private: } } - aggregate_of_instance::ptr get_inverse(const std::string& a) { + std::vector get_inverse(const std::string& a) { if ($self->declaration().as_entity()) { - return ((IfcUtil::IfcBaseEntity*)$self)->get_inverse(a); + return cast_vector($self->as().get_inverse(a)); } else { throw IfcParse::IfcException(a + " not found on " + $self->declaration().name()); } @@ -481,153 +530,293 @@ private: } } - void setArgumentAsNull(unsigned int i) { - bool is_optional = $self->declaration().as_entity()->attribute_by_index(i)->optional(); - if (is_optional) { + void set_attribute_value_py(unsigned int i, PyObject* value) { + if (value == Py_None) { + // @nb we don't check anymore if the attribute is optional here, because it should be + // possible to go back to the state at construction time. + // bool is_optional = $self->declaration().as_entity()->attribute_by_index(i)->optional(); self->set_attribute_value(i, Blank{}); - } else { - throw IfcParse::IfcException("Attribute not set"); + return; } - } - void setArgumentAsInt(unsigned int i, int v) { - IfcUtil::ArgumentType arg_type = helper_fn_attribute_type($self, i); - if (arg_type == IfcUtil::Argument_INT) { - self->set_attribute_value(i, v); - } else if ( (arg_type == IfcUtil::Argument_BOOL) && ( (v == 0) || (v == 1) ) ) { - self->set_attribute_value(i, v); - } else { - throw IfcParse::IfcException("Attribute not set"); - } - } - - void setArgumentAsBool(unsigned int i, bool v) { - IfcUtil::ArgumentType arg_type = helper_fn_attribute_type($self, i); - if (arg_type == IfcUtil::Argument_BOOL) { - self->set_attribute_value(i, v); - } else { - throw IfcParse::IfcException("Attribute not set"); - } - } - - void setArgumentAsLogical(unsigned int i, boost::logic::tribool v) { - IfcUtil::ArgumentType arg_type = helper_fn_attribute_type($self, i); - if (arg_type == IfcUtil::Argument_LOGICAL) { - self->set_attribute_value(i, v); - } else { - throw IfcParse::IfcException("Attribute not set"); - } - } - - void setArgumentAsDouble(unsigned int i, double v) { - IfcUtil::ArgumentType arg_type = helper_fn_attribute_type($self, i); - if (arg_type == IfcUtil::Argument_DOUBLE) { - self->set_attribute_value(i, v); - } else { - throw IfcParse::IfcException("Attribute not set"); - } - } - - void setArgumentAsString(unsigned int i, const std::string& a) { - IfcUtil::ArgumentType arg_type = helper_fn_attribute_type($self, i); - if (arg_type == IfcUtil::Argument_STRING) { - self->set_attribute_value(i, a); - } else if (arg_type == IfcUtil::Argument_ENUMERATION) { - const IfcParse::enumeration_type* enum_type = $self->declaration().schema()->declaration_by_name($self->declaration().type())->as_entity()-> - attribute_by_index(i)->type_of_attribute()->as_named_type()->declared_type()->as_enumeration_type(); - self->set_attribute_value(i, EnumerationReference(enum_type, enum_type->lookup_enum_offset(a))); - } else if (arg_type == IfcUtil::Argument_BINARY) { - if (IfcUtil::valid_binary_string(a)) { - boost::dynamic_bitset<> bits(a); - self->set_attribute_value(i, bits); - } else { - throw IfcParse::IfcException("String not a valid binary representation"); + auto to_index_long = [&](PyObject* o) -> long { + PyObject* idx = PyNumber_Index(o); // accepts numpy ints, bools, etc. + if (!idx) { + PyErr_Clear(); + throw IfcParse::IfcException("Attribute not set"); } - } else { - throw IfcParse::IfcException("Attribute not set"); - } - } + long v = PyLong_AsLong(idx); + Py_DECREF(idx); + if (PyErr_Occurred()) { + PyErr_Clear(); + throw IfcParse::IfcException("Attribute not set"); + } + return v; + }; - void setArgumentAsAggregateOfInt(unsigned int i, const std::vector& v) { - IfcUtil::ArgumentType arg_type = helper_fn_attribute_type($self, i); - if (arg_type == IfcUtil::Argument_AGGREGATE_OF_INT) { - self->set_attribute_value(i, v); - } else { - throw IfcParse::IfcException("Attribute not set"); - } - } + auto to_double = [&](PyObject* o) -> double { + double v = PyFloat_AsDouble(o); // accepts ints and float-like objects + if (PyErr_Occurred()) { + PyErr_Clear(); + throw IfcParse::IfcException("Attribute not set"); + } + return v; + }; - void setArgumentAsAggregateOfDouble(unsigned int i, const std::vector& v) { - IfcUtil::ArgumentType arg_type = helper_fn_attribute_type($self, i); - if (arg_type == IfcUtil::Argument_AGGREGATE_OF_DOUBLE) { - self->set_attribute_value(i, v); - } else { + auto to_string = [&](PyObject* o) -> std::string { + if (PyUnicode_Check(o)) { + Py_ssize_t n = 0; + const char* s = PyUnicode_AsUTF8AndSize(o, &n); + if (!s) { + PyErr_Clear(); + throw IfcParse::IfcException("Attribute not set"); + } + return std::string(s, static_cast(n)); + } + if (PyBytes_Check(o)) { + char* s = nullptr; + Py_ssize_t n = 0; + if (PyBytes_AsStringAndSize(o, &s, &n) == -1) { + PyErr_Clear(); + throw IfcParse::IfcException("Attribute not set"); + } + return std::string(s, static_cast(n)); + } throw IfcParse::IfcException("Attribute not set"); - } - } + }; - void setArgumentAsAggregateOfString(unsigned int i, const std::vector& v) { + auto seq_fast = [&](PyObject* o) -> PyObject* { + PyObject* fast = PySequence_Fast(o, "expected a sequence"); + if (!fast) { + PyErr_Clear(); + throw IfcParse::IfcException("Attribute not set"); + } + return fast; // new ref + }; + + auto to_vec_int = [&](PyObject* o) -> std::vector { + PyObject* fast = seq_fast(o); + Py_ssize_t n = PySequence_Fast_GET_SIZE(fast); + PyObject** items = PySequence_Fast_ITEMS(fast); + + std::vector out; + out.reserve(static_cast(n)); + for (Py_ssize_t k = 0; k < n; ++k) { + out.push_back(static_cast(to_index_long(items[k]))); + } + + Py_DECREF(fast); + return out; + }; + + auto to_vec_double = [&](PyObject* o) -> std::vector { + PyObject* fast = seq_fast(o); + Py_ssize_t n = PySequence_Fast_GET_SIZE(fast); + PyObject** items = PySequence_Fast_ITEMS(fast); + + std::vector out; + out.reserve(static_cast(n)); + for (Py_ssize_t k = 0; k < n; ++k) { + out.push_back(to_double(items[k])); + } + + Py_DECREF(fast); + return out; + }; + + auto to_vec_string = [&](PyObject* o) -> std::vector { + PyObject* fast = seq_fast(o); + Py_ssize_t n = PySequence_Fast_GET_SIZE(fast); + PyObject** items = PySequence_Fast_ITEMS(fast); + + std::vector out; + out.reserve(static_cast(n)); + for (Py_ssize_t k = 0; k < n; ++k) { + out.push_back(to_string(items[k])); + } + + Py_DECREF(fast); + return out; + }; + + auto to_base = [&](PyObject* o) -> express::Base { + void* vp = nullptr; + + // Try non-const pointer first + if (swig_type_info* ti = SWIG_TypeQuery("express::Base *")) { + int res = SWIG_ConvertPtr(o, &vp, ti, 0); + if (res >= 0 && vp) { + return *static_cast(vp); + } + } + + // Then try const pointer + vp = nullptr; + if (swig_type_info* ti = SWIG_TypeQuery("express::Base const *")) { + int res = SWIG_ConvertPtr(o, &vp, ti, 0); + if (res >= 0 && vp) { + return *static_cast(vp); + } + } + + throw IfcParse::IfcException("Attribute not set"); + }; + + auto to_vec_base = [&](PyObject* o) -> std::vector { + PyObject* fast = seq_fast(o); + Py_ssize_t n = PySequence_Fast_GET_SIZE(fast); + PyObject** items = PySequence_Fast_ITEMS(fast); + + std::vector out; + out.reserve(static_cast(n)); + for (Py_ssize_t k = 0; k < n; ++k) { + out.push_back(to_base(items[k])); + } + + Py_DECREF(fast); + return out; + }; + + auto to_vec_vec_int = [&](PyObject* o) -> std::vector> { + PyObject* fast = seq_fast(o); + Py_ssize_t n = PySequence_Fast_GET_SIZE(fast); + PyObject** items = PySequence_Fast_ITEMS(fast); + + std::vector> out; + out.reserve(static_cast(n)); + for (Py_ssize_t k = 0; k < n; ++k) { + out.push_back(to_vec_int(items[k])); + } + + Py_DECREF(fast); + return out; + }; + + auto to_vec_vec_double = [&](PyObject* o) -> std::vector> { + PyObject* fast = seq_fast(o); + Py_ssize_t n = PySequence_Fast_GET_SIZE(fast); + PyObject** items = PySequence_Fast_ITEMS(fast); + + std::vector> out; + out.reserve(static_cast(n)); + for (Py_ssize_t k = 0; k < n; ++k) { + out.push_back(to_vec_double(items[k])); + } + + Py_DECREF(fast); + return out; + }; + + auto to_vec_vec_base = [&](PyObject* o) -> std::vector> { + PyObject* fast = seq_fast(o); + Py_ssize_t n = PySequence_Fast_GET_SIZE(fast); + PyObject** items = PySequence_Fast_ITEMS(fast); + + std::vector> out; + out.reserve(static_cast(n)); + for (Py_ssize_t k = 0; k < n; ++k) { + out.push_back(to_vec_base(items[k])); + } + + Py_DECREF(fast); + return out; + }; + + // Dispatch based on the IFC argument type (same decision Python was making before) IfcUtil::ArgumentType arg_type = helper_fn_attribute_type($self, i); - if (arg_type == IfcUtil::Argument_AGGREGATE_OF_STRING) { - self->set_attribute_value(i, v); - } else if (arg_type == IfcUtil::Argument_AGGREGATE_OF_BINARY) { - std::vector< boost::dynamic_bitset<> > bits; - bits.reserve(v.size()); - for (std::vector::const_iterator it = v.begin(); it != v.end(); ++it) { - if (IfcUtil::valid_binary_string(*it)) { - bits.push_back(boost::dynamic_bitset<>(*it)); + + switch (arg_type) { + case IfcUtil::Argument_INT: { + self->set_attribute_value(i, static_cast(to_index_long(value))); + return; + } + case IfcUtil::Argument_BOOL: { + if (PyBool_Check(value)) { + self->set_attribute_value(i, value == Py_True); + } + return; + } + case IfcUtil::Argument_LOGICAL: { + boost::logic::tribool t(boost::logic::indeterminate); + if (PyBool_Check(value)) { + t = (value == Py_True); } else { - throw IfcParse::IfcException("String not a valid binary representation"); - } + long v = to_index_long(value); + if (v == 0) t = false; + else if (v == 1) t = true; + else if (v == -1 || v == 2) t = boost::logic::tribool(boost::logic::indeterminate); + else throw IfcParse::IfcException("Attribute not set"); + } + self->set_attribute_value(i, t); + return; } - self->set_attribute_value(i, bits); - } else { - throw IfcParse::IfcException("Attribute not set"); - } - } - - void setArgumentAsEntityInstance(unsigned int i, IfcUtil::IfcBaseClass* v) { - IfcUtil::ArgumentType arg_type = helper_fn_attribute_type($self, i); - if (arg_type == IfcUtil::Argument_ENTITY_INSTANCE) { - self->set_attribute_value(i, v); - } else { - throw IfcParse::IfcException("Attribute not set"); - } - } - - void setArgumentAsAggregateOfEntityInstance(unsigned int i, aggregate_of_instance::ptr v) { - IfcUtil::ArgumentType arg_type = helper_fn_attribute_type($self, i); - if (arg_type == IfcUtil::Argument_AGGREGATE_OF_ENTITY_INSTANCE) { - self->set_attribute_value(i, v); - } else { - throw IfcParse::IfcException("Attribute not set"); - } - } - - void setArgumentAsAggregateOfAggregateOfInt(unsigned int i, const std::vector< std::vector >& v) { - IfcUtil::ArgumentType arg_type = helper_fn_attribute_type($self, i); - if (arg_type == IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_INT) { - self->set_attribute_value(i, v); - } else { - throw IfcParse::IfcException("Attribute not set"); - } - } - - void setArgumentAsAggregateOfAggregateOfDouble(unsigned int i, const std::vector< std::vector >& v) { - IfcUtil::ArgumentType arg_type = helper_fn_attribute_type($self, i); - if (arg_type == IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_DOUBLE) { - self->set_attribute_value(i, v); - } else { - throw IfcParse::IfcException("Attribute not set"); - } - } - - void setArgumentAsAggregateOfAggregateOfEntityInstance(unsigned int i, aggregate_of_aggregate_of_instance::ptr v) { - IfcUtil::ArgumentType arg_type = helper_fn_attribute_type($self, i); - if (arg_type == IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_ENTITY_INSTANCE) { - self->set_attribute_value(i, v); - } else { - throw IfcParse::IfcException("Attribute not set"); + case IfcUtil::Argument_DOUBLE: { + self->set_attribute_value(i, to_double(value)); + return; + } + case IfcUtil::Argument_STRING: + self->set_attribute_value(i, to_string(value)); + return; + case IfcUtil::Argument_ENUMERATION: { + const IfcParse::enumeration_type* enum_type = $self->declaration().schema()->declaration_by_name($self->declaration().type())->as_entity()-> + attribute_by_index(i)->type_of_attribute()->as_named_type()->declared_type()->as_enumeration_type(); + self->set_attribute_value(i, EnumerationReference(enum_type, enum_type->lookup_enum_offset(to_string(value)))); + return; + } case IfcUtil::Argument_BINARY: { + std::string s = to_string(value); + if (IfcUtil::valid_binary_string(s)) { + boost::dynamic_bitset<> bits(s); + self->set_attribute_value(i, bits); + } + return; + } + case IfcUtil::Argument_AGGREGATE_OF_INT: { + self->set_attribute_value(i, to_vec_int(value)); + return; + } + case IfcUtil::Argument_AGGREGATE_OF_DOUBLE: { + self->set_attribute_value(i, to_vec_double(value)); + return; + } + case IfcUtil::Argument_AGGREGATE_OF_STRING: + self->set_attribute_value(i, to_vec_string(value)); + return; + case IfcUtil::Argument_AGGREGATE_OF_BINARY: { + auto vs = to_vec_string(value); + std::vector< boost::dynamic_bitset<> > bits; + bits.reserve(vs.size()); + for (auto& v : vs) { + if (IfcUtil::valid_binary_string(v)) { + bits.push_back(boost::dynamic_bitset<>(v)); + } else { + throw IfcParse::IfcException("String not a valid binary representation"); + } + } + self->set_attribute_value(i, bits); + return; + } + case IfcUtil::Argument_ENTITY_INSTANCE: { + self->set_attribute_value(i, to_base(value)); + return; + } + case IfcUtil::Argument_AGGREGATE_OF_ENTITY_INSTANCE: { + self->set_attribute_value(i, to_vec_base(value)); + return; + } + case IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_INT: { + self->set_attribute_value(i, to_vec_vec_int(value)); + return; + } + case IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_DOUBLE: { + self->set_attribute_value(i, to_vec_vec_double(value)); + return; + } + case IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_ENTITY_INSTANCE: { + self->set_attribute_value(i, to_vec_vec_base(value)); + return; + } + default: + throw IfcParse::IfcException("Attribute not set"); } } } @@ -657,13 +846,13 @@ private: // it has no idea about the schema definitions. // The code to access these methods as attributes // is in file.py - IfcUtil::IfcBaseClass* file_description_py() { + express::Base file_description_py() { return $self->file_description(); } - IfcUtil::IfcBaseClass* file_name_py() { + express::Base file_name_py() { return $self->file_name(); } - IfcUtil::IfcBaseClass* file_schema_py() { + express::Base file_schema_py() { return $self->file_schema(); } }; @@ -697,9 +886,45 @@ private: %include "../ifcparse/ifc_parse_api.h" %include "../ifcparse/IfcSpfHeader.h" + +%pythoncode %{ +### hack hack hack +### we trick swig into inheriting from our own extension class +### that way we do not constantly need to decorate/undecorate +# @todo is there no official way to do this? +_old_object = object +from .file import file_mixin as custom_base +object = custom_base +%} + %include "../ifcparse/IfcFile.h" + +%pythoncode %{ +### hack hack hack +### restore +object = _old_object +%} + %include "../ifcparse/file_open_status.h" -%include "../ifcparse/IfcBaseClass.h" + +%pythoncode %{ +### hack hack hack +### we trick swig into inheriting from our own extension class +### that way we do not constantly need to decorate/undecorate +# @todo is there no official way to do this? +_old_object = object +from .entity_instance import entity_instance_mixin as custom_base +object = custom_base +%} + +%include "../ifcparse/express.h" + +%pythoncode %{ +### hack hack hack +### restore +object = _old_object +%} + %include "../ifcparse/IfcSchema.h" %include "../serializers/RocksDbSerializer.h" @@ -738,15 +963,8 @@ private: return IFCOPENSHELL_VERSION; } - IfcUtil::IfcBaseClass* new_IfcBaseClass(const std::string& schema_identifier, const std::string& name) { - const IfcParse::schema_definition* schema = IfcParse::schema_by_name(schema_identifier); - const IfcParse::declaration* decl = schema->declaration_by_name(name); - IfcEntityInstanceData data(in_memory_attribute_storage(decl->as_entity() ? decl->as_entity()->attribute_count() : 1)); - auto inst = schema->instantiate(decl, std::move(data)); - if (auto entinst = inst->as()) { - entinst->populate_derived(); - } - return inst; + express::Base new_IfcBaseClass(IfcParse::IfcFile* file, const std::string& name) { + return file->create(file->schema()->declaration_by_name(name)); } %} @@ -905,12 +1123,12 @@ private: %} %{ - PyObject* get_info_cpp(IfcUtil::IfcBaseClass* v, bool include_identifier); + PyObject* get_info_cpp(const express::Base& v, bool include_identifier); // @todo refactor this to remove duplication with the typemap. // except this is calls the above function in case of instances. - PyObject* convert_cpp_attribute_to_python(IfcUtil::IfcBaseClass* instance, size_t attribute_index, bool include_identifier = true) { - return instance->get_attribute_value(attribute_index).apply_visitor([include_identifier](const auto& v){ + PyObject* convert_cpp_attribute_to_python(const express::Base& instance, size_t attribute_index, bool include_identifier = true) { + return instance.get_attribute_value(attribute_index).apply_visitor([include_identifier](const auto& v){ using U = std::decay_t; if constexpr (is_std_vector_v) { return pythonize_vector(v); @@ -923,25 +1141,8 @@ private: Py_INCREF(Py_None); return static_cast(Py_None); } - } else if constexpr (std::is_same_v) { + } else if constexpr (std::is_same_v) { return get_info_cpp(v, include_identifier); - } else if constexpr (std::is_same_v) { - auto r = PyTuple_New(v->size()); - for (unsigned i = 0; i < v->size(); ++i) { - PyTuple_SetItem(r, i, get_info_cpp((*v)[i], include_identifier)); - } - return r; - } else if constexpr (std::is_same_v) { - auto rs = PyTuple_New(v->size()); - for (auto it = v->begin(); it != v->end(); ++it) { - auto v_i = it; - auto r = PyTuple_New(v_i->size()); - for (unsigned i = 0; i < v_i->size(); ++i) { - PyTuple_SetItem(r, i, get_info_cpp((*v_i)[i], include_identifier)); - } - PyTuple_SetItem(rs, std::distance(v->begin(), it), r); - } - return rs; } else if constexpr (std::is_same_v || std::is_same_v || std::is_same_v) { Py_INCREF(Py_None); return static_cast(Py_None); @@ -952,13 +1153,13 @@ private: } %} %inline %{ - PyObject* get_info_cpp(IfcUtil::IfcBaseClass* v, bool include_identifier = true) { + PyObject* get_info_cpp(const express::Base& v, bool include_identifier = true) { PyObject *d = PyDict_New(); - if (v->declaration().as_entity()) { - const std::vector attrs = v->declaration().as_entity()->all_attributes(); + if (v.declaration().as_entity()) { + const std::vector attrs = v.declaration().as_entity()->all_attributes(); std::vector::const_iterator it = attrs.begin(); - auto dit = v->declaration().as_entity()->derived().begin(); + auto dit = v.declaration().as_entity()->derived().begin(); for (; it != attrs.end(); ++it, ++dit) { const std::string& name_cpp = (*it)->name(); auto name_py = pythonize(name_cpp); @@ -973,7 +1174,7 @@ private: if (include_identifier) { const std::string& id_cpp = "id"; auto id_py = pythonize(id_cpp); - auto id_v_py = pythonize(v->as()->id()); + auto id_v_py = pythonize(v.id()); PyDict_SetItem(d, id_py, id_v_py); Py_DECREF(id_py); Py_DECREF(id_v_py); @@ -990,7 +1191,7 @@ private: // @todo type and id can be static? const std::string& type_cpp = "type"; auto type_py = pythonize(type_cpp); - const std::string& type_v_cpp = v->declaration().name(); + const std::string& type_v_cpp = v.declaration().name(); auto type_v_py = pythonize(type_v_cpp); PyDict_SetItem(d, type_py, type_v_py); Py_DECREF(type_py); @@ -1002,9 +1203,9 @@ private: %extend IfcParse::InstanceStreamer { PyObject* readInstancePy(bool type_as_declaration_instance=false) { - auto simply_type_to_dictionary = [&](IfcUtil::IfcBaseClass* t) -> PyObject* { - const auto& nm = t->declaration().name(); - auto ifc_val = t->get_attribute_value(0); + auto simply_type_to_dictionary = [&](const express::Base& t) -> PyObject* { + const auto& nm = t.declaration().name(); + auto ifc_val = t.get_attribute_value(0); auto attribute_val_py = ifc_val.apply_visitor([&](const auto& t) { using U = std::decay_t; @@ -1019,14 +1220,6 @@ private: Py_INCREF(Py_None); return static_cast(Py_None); } - } else if constexpr (std::is_same_v) { - // cannot occur in streaming mode - Py_INCREF(Py_None); - return static_cast(Py_None); - } else if constexpr (std::is_same_v) { - // cannot occur in streaming mode - Py_INCREF(Py_None); - return static_cast(Py_None); } else if constexpr (std::is_same_v || std::is_same_v || std::is_same_v) { Py_INCREF(Py_None); return static_cast(Py_None); @@ -1103,13 +1296,13 @@ private: const auto& data = std::get<2>(*inst); for (size_t i = 0; i < decl->as_entity()->attribute_count(); i++) { - auto val = data.get_attribute_value(nullptr, decl, 0, i); + auto val = data->get_attribute_value(i); // sets dict member, returns void val.apply_visitor([&](const auto& t) -> void { using T = std::decay_t; PyObject* attribute_val_py; - if constexpr (std::is_same_v) { + if constexpr (std::is_same_v) { attribute_val_py = simply_type_to_dictionary(t); } else { using U = std::decay_t; @@ -1125,14 +1318,6 @@ private: Py_INCREF(Py_None); attribute_val_py = static_cast(Py_None); } - } else if constexpr (std::is_same_v) { - // cannot occur in streaming mode - Py_INCREF(Py_None); - attribute_val_py = static_cast(Py_None); - } else if constexpr (std::is_same_v) { - // cannot occur in streaming mode - Py_INCREF(Py_None); - attribute_val_py = static_cast(Py_None); } else if constexpr (std::is_same_v || std::is_same_v || std::is_same_v) { Py_INCREF(Py_None); attribute_val_py = static_cast(Py_None); @@ -1159,7 +1344,7 @@ private: using T = std::decay_t; if constexpr (std::is_same_v) { - if (auto* inst = std::get_if(&v)) { + if (auto* inst = std::get_if(&v)) { // So this never happens? } else if (auto* name = std::get_if(&v)) { attribute_val_py = instance_reference_to_dict(*name); @@ -1168,7 +1353,7 @@ private: attribute_val_py = PyTuple_New(v.size()); size_t idx = 0; for (auto const& inner : v) { - if (auto* inst = std::get_if(&inner)) { + if (auto* inst = std::get_if(&inner)) { PyTuple_SetItem(attribute_val_py, idx++, simply_type_to_dictionary(*inst)); } else if (auto* name = std::get_if(&inner)) { PyTuple_SetItem(attribute_val_py, idx++, instance_reference_to_dict(*name)); @@ -1181,7 +1366,7 @@ private: PyObject* inner_py = PyTuple_New(inner.size()); size_t idx = 0; for (auto const& innermost : inner) { - if (auto* inst = std::get_if(&innermost)) { + if (auto* inst = std::get_if(&innermost)) { PyTuple_SetItem(inner_py, idx++, simply_type_to_dictionary(*inst)); } else if (auto* name = std::get_if(&innermost)) { PyTuple_SetItem(inner_py, idx++, instance_reference_to_dict(*name)); diff --git a/src/ifcwrap/IfcPython.i b/src/ifcwrap/IfcPython.i index db772ba26e..c96036ea4f 100644 --- a/src/ifcwrap/IfcPython.i +++ b/src/ifcwrap/IfcPython.i @@ -69,8 +69,7 @@ %ignore instance_factory; // Not relevant for python usage -%ignore IfcBaseInterface; -%ignore IfcBaseClass::data; +%ignore express::Base::data; %ignore *::references_to_resolve; // SVG serializer internal @@ -248,7 +247,7 @@ #include "../ifcparse/Ifc4x3_add2.h" #endif - #include "../ifcparse/IfcBaseClass.h" + #include "../ifcparse/express.h" #include "../ifcparse/IfcFile.h" #include "../ifcparse/IfcSchema.h" #include "../ifcparse/utils.h" @@ -351,7 +350,7 @@ constexpr bool is_std_vector_vector_v = is_std_vector_vector::value; #include "../ifcparse/Ifc4x3_add2.h" #endif - #include "../ifcparse/IfcBaseClass.h" + #include "../ifcparse/express.h" #include "../ifcparse/IfcFile.h" #include "../ifcparse/IfcSchema.h" #include "../ifcparse/utils.h" diff --git a/src/ifcwrap/utils/type_conversion.i b/src/ifcwrap/utils/type_conversion.i index 292a2e0c11..0fca5f22f2 100644 --- a/src/ifcwrap/utils/type_conversion.i +++ b/src/ifcwrap/utils/type_conversion.i @@ -86,10 +86,10 @@ } template <> - IfcUtil::IfcBaseClass* cast_pyobject(PyObject* element) { + express::Base cast_pyobject(PyObject* element) { void *arg = 0; - int res = SWIG_ConvertPtr(element, &arg, SWIGTYPE_p_IfcUtil__IfcBaseClass, 0); - return static_cast(SWIG_IsOK(res) ? arg : 0); + int res = SWIG_ConvertPtr(element, &arg, SWIGTYPE_p_express__Base, 0); + return SWIG_IsOK(res) ? *reinterpret_cast(arg) : express::Base{}; } template @@ -162,7 +162,7 @@ PyObject* pythonize(const boost::logic::tribool& t) { return boost::logic::indeterminate(t) ? PyUnicode_FromString("UNKNOWN") : PyBool_FromLong((bool)t) ;} PyObject* pythonize(const double& t) { return PyFloat_FromDouble(t); } PyObject* pythonize(const std::string& t) { return PyUnicode_FromString(t.c_str()); } - PyObject* pythonize(const IfcUtil::IfcBaseClass* t) { return SWIG_NewPointerObj(SWIG_as_voidptr(t), SWIGTYPE_p_IfcUtil__IfcBaseClass, 0); } + PyObject* pythonize(const express::Base& t) { return SWIG_NewPointerObj(SWIG_as_voidptr(new express::Base(t)), SWIGTYPE_p_express__Base, SWIG_POINTER_OWN); } PyObject* pythonize(const IfcParse::attribute* t) { return SWIG_NewPointerObj(SWIG_as_voidptr(t), SWIGTYPE_p_IfcParse__attribute, 0); } PyObject* pythonize(const IfcParse::inverse_attribute* t) { return SWIG_NewPointerObj(SWIG_as_voidptr(t), SWIGTYPE_p_IfcParse__inverse_attribute, 0); } PyObject* pythonize(const IfcParse::entity* t) { return SWIG_NewPointerObj(SWIG_as_voidptr(t), SWIGTYPE_p_IfcParse__entity, 0); } @@ -179,15 +179,6 @@ return pythonize(bitstring); } - PyObject* pythonize(const aggregate_of_instance::ptr& t) { - unsigned int i = 0; - PyObject* pyobj = PyTuple_New(t->size()); - for (aggregate_of_instance::it it = t->begin(); it != t->end(); ++it, ++i) { - PyTuple_SetItem(pyobj, i, pythonize(*it)); - } - return pyobj; - } - template PyObject* pythonize_vector(const T& v) { const size_t size = v.size(); @@ -202,15 +193,6 @@ return pyobj; } - PyObject* pythonize(const aggregate_of_aggregate_of_instance::ptr& t) { - unsigned int i = 0; - PyObject* pyobj = PyTuple_New(t->size()); - for (aggregate_of_aggregate_of_instance::outer_it it = t->begin(); it != t->end(); ++it, ++i) { - PyTuple_SetItem(pyobj, i, pythonize_vector(*it)); - } - return pyobj; - } - struct pythonizing_visitor { typedef PyObject* result_type; diff --git a/src/ifcwrap/utils/typemaps_in.i b/src/ifcwrap/utils/typemaps_in.i index 86de15a28d..4a884f4c61 100644 --- a/src/ifcwrap/utils/typemaps_in.i +++ b/src/ifcwrap/utils/typemaps_in.i @@ -171,7 +171,7 @@ CREATE_VECTOR_TYPEMAP_IN(std::string, STRING, str) $1 = aggregate_of_instance::ptr(new aggregate_of_instance()); for(Py_ssize_t i = 0; i < PySequence_Size($input); ++i) { PyObject* element = PySequence_GetItem($input, i); - IfcUtil::IfcBaseClass* inst = cast_pyobject(element); + express::Base inst = cast_pyobject(element); Py_DECREF(element); if (inst) { $1->push(inst); @@ -192,11 +192,11 @@ CREATE_VECTOR_TYPEMAP_IN(std::string, STRING, str) bool b = false; if (PySequence_Check(element)) { b = true; - std::vector vector; + std::vector vector; vector.reserve(PySequence_Size(element)); for(Py_ssize_t j = 0; j < PySequence_Size(element); ++j) { PyObject* element_element = PySequence_GetItem(element, j); - IfcUtil::IfcBaseClass* inst = cast_pyobject(element_element); + express::Base inst = cast_pyobject(element_element); Py_DECREF(element_element); if (inst) { vector.push_back(inst); @@ -291,9 +291,9 @@ CREATE_VECTOR_TYPEMAP_IN(std::string, STRING, str) %define CREATE_OPTIONAL_TYPEMAP_IN(template_type, express_name, python_name) - %typemap(in) const boost::optional& { + %typemap(in) const std::optional& { if ($input == Py_None) { - (*$1) = boost::none; + (*$1) = std::nullopt; } else if ($input->ob_type != get_python_type()) { SWIG_exception(SWIG_TypeError, "Optional " #express_name " needs a " #python_name " or None"); } else { @@ -301,15 +301,15 @@ CREATE_VECTOR_TYPEMAP_IN(std::string, STRING, str) } } - %typemap(typecheck,precedence=SWIG_TYPECHECK_INTEGER) const boost::optional& { + %typemap(typecheck,precedence=SWIG_TYPECHECK_INTEGER) const std::optional& { $1 = ($input == Py_None || $input->ob_type == get_python_type()) ? 1 : 0; } - %typemap(arginit) const boost::optional& { - $1 = new boost::optional(); + %typemap(arginit) const std::optional& { + $1 = new std::optional(); } - %typemap(freearg) const boost::optional& { + %typemap(freearg) const std::optional& { delete $1; } diff --git a/src/ifcwrap/utils/typemaps_out.i b/src/ifcwrap/utils/typemaps_out.i index 111e74a2cb..235e59dc24 100644 --- a/src/ifcwrap/utils/typemaps_out.i +++ b/src/ifcwrap/utils/typemaps_out.i @@ -111,12 +111,12 @@ CREATE_VECTOR_TYPEMAP_OUT(IfcGeom::ConversionResultShape *) %typemap(out) ifcopenshell::geometry::Settings::value_variant_t { pythonizing_visitor vis; - $result = $1.apply_visitor(vis); + $result = std::visit(vis, $1); } %typemap(out) ifcopenshell::geometry::SerializerSettings::value_variant_t { pythonizing_visitor vis; - $result = $1.apply_visitor(vis); + $result = std::visit(vis, $1); } %typemap(out) std::pair { diff --git a/src/serializers/GltfSerializer.cpp b/src/serializers/GltfSerializer.cpp index 3627106f42..565d33ea47 100644 --- a/src/serializers/GltfSerializer.cpp +++ b/src/serializers/GltfSerializer.cpp @@ -526,44 +526,42 @@ void GltfSerializer::setFile(IfcParse::IfcFile* f) { return; } - boost::optional crs_epsg; - boost::optional> crs_x_axis; - boost::optional> eastings_northings_elevation; + std::optional crs_epsg; + std::optional> crs_x_axis; + std::optional> eastings_northings_elevation; - aggregate_of_instance::ptr coordops; + std::vector coordops; try { coordops = f->instances_by_type("IfcCoordinateOperation"); } catch (IfcParse::IfcException&) { // Ignored. Schema likely doesn't support IfcCoordinateOperation. } - if (coordops) { - for (auto& coordop : *coordops) { - IfcUtil::IfcBaseClass* source_crs = coordop->as()->get("SourceCRS"); - if (source_crs->declaration().is("IfcGeometricRepresentationContext")) { - IfcUtil::IfcBaseClass* target_crs = coordop->as()->get("TargetCRS"); - auto name_attr = target_crs->as()->get("Name"); - if (coordop->declaration().is("IfcMapConversion")) { + for (auto& coordop : coordops) { + express::Base source_crs = coordop.as().get("SourceCRS"); + if (source_crs.declaration().is("IfcGeometricRepresentationContext")) { + express::Base target_crs = coordop.as().get("TargetCRS"); + auto name_attr = target_crs.as().get("Name"); + if (coordop.declaration().is("IfcMapConversion")) { - if (!name_attr.isNull()) { - std::string epsg_code = name_attr; - crs_epsg = epsg_code; + if (!name_attr.isNull()) { + std::string epsg_code = name_attr; + crs_epsg = epsg_code; - // @todo in which unit are these? - double eastings = coordop->as()->get("Eastings"); - double northings = coordop->as()->get("Northings"); - double height = coordop->as()->get("OrthogonalHeight"); - height = 0.; + // @todo in which unit are these? + double eastings = coordop.as().get("Eastings"); + double northings = coordop.as().get("Northings"); + double height = coordop.as().get("OrthogonalHeight"); + height = 0.; - eastings_northings_elevation = { { eastings, northings, height} }; + eastings_northings_elevation = { { eastings, northings, height} }; - auto xaxis_attr = coordop->as()->get("XAxisAbscissa"); - auto yaxis_attr = coordop->as()->get("XAxisOrdinate"); - if (!xaxis_attr.isNull() && !yaxis_attr.isNull()) { - double xaxis = xaxis_attr; - double yaxis = yaxis_attr; + auto xaxis_attr = coordop.as().get("XAxisAbscissa"); + auto yaxis_attr = coordop.as().get("XAxisOrdinate"); + if (!xaxis_attr.isNull() && !yaxis_attr.isNull()) { + double xaxis = xaxis_attr; + double yaxis = yaxis_attr; - crs_x_axis = { { xaxis, yaxis, 0. } }; - } + crs_x_axis = { { xaxis, yaxis, 0. } }; } } } @@ -573,9 +571,9 @@ void GltfSerializer::setFile(IfcParse::IfcFile* f) { if (!crs_epsg) { auto sites = f->instances_by_type("IfcSite"); - if (sites && sites->size() == 1) { - auto lat_attr = (*sites->begin())->as()->get("RefLatitude"); - auto lon_attr = (*sites->begin())->as()->get("RefLongitude"); + if (sites.size() == 1) { + auto lat_attr = sites.front().as().get("RefLatitude"); + auto lon_attr = sites.front().as().get("RefLongitude"); if (!lat_attr.isNull() && !lon_attr.isNull()) { std::vector lat_dms = lat_attr; @@ -594,13 +592,13 @@ void GltfSerializer::setFile(IfcParse::IfcFile* f) { double elev = 0.; /* - auto elev_attr = (*sites->begin())->as()->get("RefElevation"); + auto elev_attr = (*sites->begin()).as().get("RefElevation"); if (!elev_attr->isNull()) { elev = *elev_attr; } */ - crs_epsg.reset("EPSG:4326"); + crs_epsg.emplace("EPSG:4326"); eastings_northings_elevation = { { lat, lon, elev } }; } } @@ -608,13 +606,13 @@ void GltfSerializer::setFile(IfcParse::IfcFile* f) { auto contexts = f->instances_by_type_excl_subtypes("IfcGeometricRepresentationContext"); - if (contexts && contexts->size() > 0) { - auto context = (*contexts->begin())->as(); - auto north_attr = context->get("TrueNorth"); + if (!contexts.empty()) { + auto context = contexts.front().as(); + auto north_attr = context.get("TrueNorth"); if (!north_attr.isNull()) { - IfcUtil::IfcBaseClass* north = north_attr; - if (north->declaration().is("IfcDirection")) { - std::vector ratios = north->as()->get("DirectionRatios"); + express::Base north = north_attr; + if (north.declaration().is("IfcDirection")) { + std::vector ratios = north.as().get("DirectionRatios"); crs_x_axis = { { ratios[1], -ratios[0], 0. } }; } } diff --git a/src/serializers/GltfSerializer.h b/src/serializers/GltfSerializer.h index d3754d90a0..33c25dea54 100644 --- a/src/serializers/GltfSerializer.h +++ b/src/serializers/GltfSerializer.h @@ -36,9 +36,9 @@ private: std::ofstream fstream_, tmp_fstream1_, tmp_fstream2_; std::map materials_, meshes_; json json_, node_array_; - boost::optional ecef_transform_, north_rotation_, z_up_transform_; + std::optional ecef_transform_, north_rotation_, z_up_transform_; int bufferViewId; - std::map node_indices_; + std::map node_indices_; std::vector roots_; int writeMaterial(const ifcopenshell::geometry::taxonomy::style::ptr style); diff --git a/src/serializers/RocksDbSerializer.cpp b/src/serializers/RocksDbSerializer.cpp index f5e95e7a3b..69d57a3a78 100644 --- a/src/serializers/RocksDbSerializer.cpp +++ b/src/serializers/RocksDbSerializer.cpp @@ -30,7 +30,7 @@ RocksDbSerializer::RocksDbSerializer(const std::string& input_filename, const st } namespace { - // @nb copied from IfcEntityInstanceData.cpp but operating on unresolved instances + // @nb copied from InstanceData.cpp but operating on unresolved instances bool serialize(std::string& val, const IfcParse::reference_or_simple_type& t) { auto s = sizeof(size_t); diff --git a/src/serializers/SvgSerializer.cpp b/src/serializers/SvgSerializer.cpp index d5c65b1d12..c19bd4965f 100644 --- a/src/serializers/SvgSerializer.cpp +++ b/src/serializers/SvgSerializer.cpp @@ -97,7 +97,7 @@ bool SvgSerializer::ready() { return true; } -void SvgSerializer::write(path_object& p, const TopoDS_Shape& comp_or_wire, boost::optional> dash_array) { +void SvgSerializer::write(path_object& p, const TopoDS_Shape& comp_or_wire, std::optional> dash_array) { /* ShapeFix_Wire fix; Handle(ShapeExtend_WireData) data = new ShapeExtend_WireData; for (TopExp_Explorer edges(result, TopAbs_EDGE); edges.More(); edges.Next()) { @@ -361,7 +361,7 @@ void SvgSerializer::write(path_object& p, const TopoDS_Shape& comp_or_wire, boos } } -SvgSerializer::path_object& SvgSerializer::start_path(const gp_Pln& pln, const IfcUtil::IfcBaseEntity* storey, const std::string& id) { +SvgSerializer::path_object& SvgSerializer::start_path(const gp_Pln& pln, const express::Base& storey, const std::string& id) { auto key = std::make_pair(std::make_pair(storey, ""), path_object()); SvgSerializer::path_object& p = paths.insert(key)->second; drawing_metadata[key.first].pln_3d = pln; @@ -370,7 +370,7 @@ SvgSerializer::path_object& SvgSerializer::start_path(const gp_Pln& pln, const I } SvgSerializer::path_object& SvgSerializer::start_path(const gp_Pln& pln, const std::string& drawing_name, const std::string& id) { - auto key = std::make_pair(std::make_pair(nullptr, drawing_name), path_object()); + auto key = std::make_pair(std::make_pair(express::Base{}, drawing_name), path_object()); SvgSerializer::path_object& p = paths.insert(key)->second; drawing_metadata[key.first].pln_3d = pln; p.first = id; @@ -378,11 +378,11 @@ SvgSerializer::path_object& SvgSerializer::start_path(const gp_Pln& pln, const s } namespace { - boost::optional> storey_elevation_from_element(const IfcGeom::BRepElement* o) { + std::optional> storey_elevation_from_element(const IfcGeom::BRepElement* o) { for (const auto& p : o->parents()) { if (p->type() == "IfcBuildingStorey") { try { - double e = p->product()->get("Elevation"); + double e = p->product().get("Elevation"); double storey_elevation = e * o->geometry().settings().get().get(); return std::make_pair(p->product(), storey_elevation); } catch (...) { @@ -391,12 +391,12 @@ namespace { break; } } - return boost::none; + return std::nullopt; } typedef std::pair, std::array> box_t; - boost::optional edge_from_compound(TopoDS_Shape& compound) { + std::optional edge_from_compound(TopoDS_Shape& compound) { TopoDS_Iterator it(compound); if (it.More()) { TopoDS_Shape wire = it.Value(); @@ -412,7 +412,7 @@ namespace { } } } - return boost::none; + return std::nullopt; } class almost { @@ -433,7 +433,7 @@ namespace { } }; - boost::optional box_from_compound(TopoDS_Shape& compound) { + std::optional box_from_compound(TopoDS_Shape& compound) { /* // in v0.8 apparently we don't get a solid/shell anymore because // we no longer use PrimAPI, but rather resolve the box to an @@ -446,17 +446,17 @@ namespace { shell = TopoDS::Shell(exp.Current()); exp.Next(); if (exp.More()) { - return boost::none; + return std::nullopt; } } else { - return boost::none; + return std::nullopt; } */ auto& shell = compound; if (IfcGeom::util::count(shell, TopAbs_FACE) != 6) { - return boost::none; + return std::nullopt; } TopExp_Explorer it(shell, TopAbs_FACE); @@ -464,16 +464,16 @@ namespace { const auto& face = TopoDS::Face(it.Current()); auto surf = BRep_Tool::Surface(face); if (surf->DynamicType() != STANDARD_TYPE(Geom_Plane)) { - return boost::none; + return std::nullopt; } auto pln = Handle(Geom_Plane)::DownCast(surf); auto dz = std::abs(pln->Position().Direction().Z()); if (almost(0.) != dz && almost(1.) != dz) { - return boost::none; + return std::nullopt; } auto dy = std::abs(pln->Position().Direction().Y()); if (almost(0.) != dy && almost(1.) != dy) { - return boost::none; + return std::nullopt; } } @@ -491,27 +491,27 @@ namespace { }; template - void enumerate_string_properties(const IfcUtil::IfcBaseEntity* product, It output_it) { - auto rels = product->get_inverse("IsDefinedBy"); - for (auto& rel : *rels) { - if (rel->declaration().is("IfcRelDefinesByProperties")) { - auto pset = ((IfcUtil::IfcBaseClass*) ((IfcUtil::IfcBaseEntity*) rel)->get("RelatingPropertyDefinition"))->as(); - if (!pset->declaration().is("IfcPropertySet")) { + void enumerate_string_properties(const express::Base& product, It output_it) { + auto rels = product.as().get_inverse("IsDefinedBy"); + for (auto& rel : rels) { + if (rel.declaration().is("IfcRelDefinesByProperties")) { + auto pset = ((express::Base)rel.get("RelatingPropertyDefinition")).as(); + if (!pset.declaration().is("IfcPropertySet")) { continue; } std::string pset_name; - if (!pset->get("Name").isNull()) { - pset_name = (std::string) pset->get("Name"); + if (!pset.get("Name").isNull()) { + pset_name = (std::string) pset.get("Name"); } - aggregate_of_instance::ptr props = pset->get("HasProperties"); - for (auto& prop : *props) { - if (prop->declaration().is("IfcPropertySingleValue")) { - std::string name = ((IfcUtil::IfcBaseEntity*) prop)->get("Name"); - if (((IfcUtil::IfcBaseEntity*) prop)->get("NominalValue").isNull()) { + std::vector props = pset.get("HasProperties"); + for (auto& prop : props) { + if (prop.declaration().is("IfcPropertySingleValue")) { + std::string name = prop.as().get("Name"); + if (prop.as().get("NominalValue").isNull()) { continue; } - IfcUtil::IfcBaseClass* v = ((IfcUtil::IfcBaseEntity*) prop)->get("NominalValue"); - auto value = v->get_attribute_value(0); + express::Base v = prop.as().get("NominalValue"); + auto value = v.get_attribute_value(0); if (value.type() == IfcUtil::Argument_STRING) { std::string v_str = value; *output_it++ = string_property{ pset_name, name, v_str }; @@ -524,25 +524,24 @@ namespace { } namespace { - boost::optional get_curve_style_name(IfcUtil::IfcBaseEntity* item) { - auto refs = item->get_inverse("StyledByItem"); - for (auto& ref : *refs) { - if (ref->declaration().is("IfcStyledItem")) { - aggregate_of_instance::ptr styles = ((IfcUtil::IfcBaseEntity*)ref)->get("Styles"); - for (auto& s_ : *styles) { - auto s = (IfcUtil::IfcBaseEntity*) s_; - std::vector pss; - if (s->declaration().is("IfcPresentationStyleAssignment")) { - aggregate_of_instance::ptr pstyles = s->get("Styles"); - for (auto& ssss : *pstyles) { - pss.push_back((IfcUtil::IfcBaseEntity*) ssss); + std::optional get_curve_style_name(const express::Base& item) { + auto refs = item.as().get_inverse("StyledByItem"); + for (auto& ref : refs) { + if (ref.declaration().is("IfcStyledItem")) { + std::vector styles = ref.as().get("Styles"); + for (auto& s : styles) { + std::vector pss; + if (s.declaration().is("IfcPresentationStyleAssignment")) { + std::vector pstyles = s.as().get("Styles"); + for (auto& ssss : pstyles) { + pss.push_back(ssss.as()); } } else { - pss.push_back(s); + pss.push_back(s.as()); } for (auto& ps : pss) { - if (ps->declaration().is("IfcCurveStyle")) { - auto arg = ps->get("Name"); + if (ps.declaration().is("IfcCurveStyle")) { + auto arg = ps.get("Name"); if (!arg.isNull()) { return (std::string) arg; } @@ -551,18 +550,18 @@ namespace { } } } - return boost::none; + return std::nullopt; } } void SvgSerializer::write(const IfcGeom::BRepElement* brep_obj) { - boost::optional object_type; - if (!brep_obj->product()->get("ObjectType").isNull()) { - object_type = static_cast(brep_obj->product()->get("ObjectType")); + std::optional object_type; + if (!brep_obj->product().get("ObjectType").isNull()) { + object_type = static_cast(brep_obj->product().get("ObjectType")); } - std::vector>> dash_arrays; + std::vector>> dash_arrays; auto itm = brep_obj->geometry().as_compound(); TopoDS_Shape compound_local = ((ifcopenshell::geometry::OpenCascadeShape*)itm)->shape(); @@ -571,9 +570,9 @@ void SvgSerializer::write(const IfcGeom::BRepElement* brep_obj) { for (auto& x : brep_obj->geometry()) { dash_arrays.emplace_back(); - boost::optional curve_style_name; + std::optional curve_style_name; if (file) { - auto item = (IfcUtil::IfcBaseEntity*) this->file->instance_by_id(x.ItemId()); + auto item = this->file->instance_by_id(x.ItemId()); curve_style_name = get_curve_style_name(item); } @@ -621,11 +620,11 @@ void SvgSerializer::write(const IfcGeom::BRepElement* brep_obj) { auto compound_unmirrored = make_transform_global.Shape(); if (is_section || is_elevation) { - boost::optional scale; - boost::optional> size; + std::optional scale; + std::optional> size; auto e = edge_from_compound(compound_unmirrored); - boost::optional pln; + std::optional pln; if (e) { TopoDS_Edge global_edge = TopoDS::Edge(e->Moved(trsf)); double u0, u1; @@ -638,7 +637,7 @@ void SvgSerializer::write(const IfcGeom::BRepElement* brep_obj) { pln = gp_Pln(gp_Ax3(P, N, V)); } } - else if (boost::optional b = box_from_compound(compound_local)) { + else if (std::optional b = box_from_compound(compound_local)) { pln = gp_Pln().Transformed(trsf); size = std::make_pair( b->second[0] - b->first[0], @@ -726,7 +725,7 @@ void SvgSerializer::write(const IfcGeom::BRepElement* brep_obj) { } auto p = storey_elevation_from_element(brep_obj); - const IfcUtil::IfcBaseEntity* storey = p ? p->first : nullptr; + auto storey = p ? p->first : express::Base{}; double elev = p ? p->second : std::numeric_limits::quiet_NaN(); // @todo is it correct to call nameElement() here with a single storey (what if this element spans multiple?) @@ -792,7 +791,7 @@ void SvgSerializer::write(const geometry_data& data) { const std::vector* section_heights_used = §ion_heights_storage; if (section_data_) { - section_heights_used = section_data_.get_ptr(); + section_heights_used = section_data_ ? std::addressof(*section_data_) : nullptr; } else { if (data.storey) { section_heights_storage.push_back(horizontal_plan{ data.storey, data.storey_elevation, +1. }); @@ -836,25 +835,25 @@ void SvgSerializer::write(const geometry_data& data) { TopoDS_Wire annotation; - if (is_floor_plan_ && draw_door_arcs_ && data.product->declaration().is("IfcDoor")) { + if (is_floor_plan_ && draw_door_arcs_ && data.product.declaration().is("IfcDoor")) { - boost::optional operation_type; + std::optional operation_type; try { - aggregate_of_instance::ptr rels; - if (data.product->declaration().schema()->name() == "IFC2X3") { - rels = data.product->get_inverse("IsDefinedBy"); + std::vector rels; + if (data.product.declaration().schema()->name() == "IFC2X3") { + rels = data.product.as().get_inverse("IsDefinedBy"); } else { // Damn you, IFC - rels = data.product->get_inverse("IsTypedBy"); + rels = data.product.as().get_inverse("IsTypedBy"); } - for (auto& rel : *rels) { - if (rel->declaration().name() == "IfcRelDefinesByType") { - IfcUtil::IfcBaseClass* ty = ((IfcUtil::IfcBaseEntity*)rel)->get("RelatingType"); - const std::string& ty_entity_name = ty->declaration().name(); + for (auto& rel : rels) { + if (rel.declaration().name() == "IfcRelDefinesByType") { + express::Base ty = rel.as().get("RelatingType"); + const std::string& ty_entity_name = ty.declaration().name(); // Damn you, IFC if (ty_entity_name == "IfcDoorStyle" || ty_entity_name == "IfcDoorType") { - operation_type = (std::string)((IfcUtil::IfcBaseEntity*)ty)->get("OperationType"); + operation_type = ty.as().get("OperationType"); } } } @@ -936,7 +935,7 @@ void SvgSerializer::write(const geometry_data& data) { gp_Vec projection_direction; gp_Pln projection_plane; - const IfcUtil::IfcBaseEntity* storey = nullptr; + express::Base storey; std::string drawing_name; bool use_hlr = always_project_; @@ -996,7 +995,7 @@ void SvgSerializer::write(const geometry_data& data) { } // Exclude annotations, spaces and grids from HLR - if (any_in_front && !data.product->declaration().is("IfcAnnotation") && !data.product->declaration().is("IfcSpace") && !data.product->declaration().is("IfcGrid")) { + if (any_in_front && !data.product.declaration().is("IfcAnnotation") && !data.product.declaration().is("IfcSpace") && !data.product.declaration().is("IfcGrid")) { TopoDS_Shape* compound_to_hlr = &compound_to_use; TopoDS_Shape subtracted_shape; @@ -1004,9 +1003,9 @@ void SvgSerializer::write(const geometry_data& data) { bool should_subtract = false; if (subtraction_settings_ == ON_SLABS_AT_FLOORPLANS) { - should_subtract = data.product->declaration().is("IfcSlab") && is_floor_plan_; + should_subtract = data.product.declaration().is("IfcSlab") && is_floor_plan_; } else if (subtraction_settings_ == ON_SLABS_AND_WALLS) { - should_subtract = data.product->declaration().is("IfcSlab") || data.product->declaration().is("IfcWall"); + should_subtract = data.product.declaration().is("IfcSlab") || data.product.declaration().is("IfcWall"); } else if (subtraction_settings_ == ALWAYS) { should_subtract = true; } @@ -1118,7 +1117,7 @@ void SvgSerializer::write(const geometry_data& data) { } TopoDS_Compound profile_edges; - if (profile_threshold_ != -1 && !(data.product->declaration().is("IfcWall") || data.product->declaration().is("IfcSlab"))) { + if (profile_threshold_ != -1 && !(data.product.declaration().is("IfcWall") || data.product.declaration().is("IfcSlab"))) { TopTools_IndexedDataMapOfShapeListOfShape map; TopExp::MapShapesAndAncestors(*compound_to_hlr, TopAbs_EDGE, TopAbs_FACE, map); if (map.Extent() > profile_threshold_) { @@ -1277,7 +1276,7 @@ void SvgSerializer::write(const geometry_data& data) { auto proj = projection_direction ^ bbdif ^ projection_direction; std::string object_type; - auto ot_arg = data.product->get("ObjectType"); + auto ot_arg = data.product.as().get("ObjectType"); if (!ot_arg.isNull()) { object_type = (std::string) ot_arg; object_type.erase(std::remove_if(object_type.begin(), object_type.end(), [](char c) { return !std::isalnum(c); }), object_type.end()); @@ -1287,7 +1286,7 @@ void SvgSerializer::write(const geometry_data& data) { auto xyz_global = gp_Pnt().Transformed(data.trsf); int state = infront_or_behind(projection_plane, xyz_global); - if (data.product->declaration().is("IfcAnnotation") && // is an Annotation + if (data.product.declaration().is("IfcAnnotation") && // is an Annotation (proj.Magnitude() > 1.e-5) && // when projected onto the view has a length (is_floor_plan_ ? (zmin >= range.first && zmin < (range.second - 1.e-5)) // the Z-coords are within the range of the building storey, @@ -1457,7 +1456,7 @@ void SvgSerializer::write(const geometry_data& data) { TopoDS_Wire wire = TopoDS::Wire(wires->Value(i)); - if (wire.Closed() && (print_space_names_ || print_space_areas_) && data.product->declaration().is("IfcSpace")) { + if (wire.Closed() && (print_space_names_ || print_space_areas_) && data.product.declaration().is("IfcSpace")) { // we explicitly specify the surface here, to later on // simplify the projection from {x,y,z} to {u, v} because // we know we can simply discard z. @@ -1475,12 +1474,12 @@ void SvgSerializer::write(const geometry_data& data) { } - if (file && data.product->declaration().is("IfcBuildingStorey") && storey_height_display_ != SH_NONE && wires->Length() == 1 && IfcGeom::util::count(wire, TopAbs_EDGE) == 1) { + if (file && data.product.declaration().is("IfcBuildingStorey") && storey_height_display_ != SH_NONE && wires->Length() == 1 && IfcGeom::util::count(wire, TopAbs_EDGE) == 1) { std::string elev_str; const double lu = file->getUnit("LENGTHUNIT").second; - auto a = data.product->get("Elevation"); + auto a = data.product.as().get("Elevation"); if (!a.isNull()) { double elev = a; @@ -1523,7 +1522,7 @@ void SvgSerializer::write(const geometry_data& data) { auto d = (p1.XYZ() - p0.XYZ()); d.Normalize(); - const double shll = storey_height_line_length_.get_value_or(2.); + const double shll = storey_height_line_length_.value_or(2.); d *= shll; gp_Pnt p1x(p0.XYZ() + d); @@ -1579,7 +1578,7 @@ void SvgSerializer::write(const geometry_data& data) { std::pair furthest_points = { nullptr, nullptr }; double furthest_points_distance = 0.; - boost::optional center_point; + std::optional center_point; BRepTopAdaptor_FClass2d fcls(largest_closed_wire_face, BRep_Tool::Tolerance(largest_closed_wire_face)); @@ -1625,8 +1624,8 @@ void SvgSerializer::write(const geometry_data& data) { if (print_space_names_) { labels.push_back(data.ifc_name); } - if (print_space_names_ && data.product->declaration().is("IfcSpace")) { - auto attr = data.product->get("LongName"); + if (print_space_names_ && data.product.declaration().is("IfcSpace")) { + auto attr = data.product.as().get("LongName"); if (!attr.isNull()) { std::string long_name = attr; if (!long_name.empty()) { @@ -1708,8 +1707,8 @@ std::array, 3> SvgSerializer::resize() { cy = offset_2d_->second; } else if (scale_) { sc = (*scale_) * 1000; - cx = (xmax + xmin) / 2. * sc - size_->first * center_x_.get_value_or(0.5); - cy = (ymax + ymin) / 2. * sc - size_->second * center_y_.get_value_or(0.5); + cx = (xmax + xmin) / 2. * sc - size_->first * center_x_.value_or(0.5); + cy = (ymax + ymin) / 2. * sc - size_->second * center_y_.value_or(0.5); } else { if (calculated_scale_) { sc = *calculated_scale_; @@ -1772,7 +1771,7 @@ void SvgSerializer::draw_hlr(const gp_Pln& pln, const drawing_key& drawing_name) // not on the TopoDS_Shape input. TopoDS_Shape hlr_compound; - if (drawing_name.first == nullptr) { + if (!drawing_name.first) { gp_Trsf trsf_mirror; if (!mirror_y_) { trsf_mirror.SetMirror(gp_Ax2(gp::Origin(), gp::DY())); @@ -1830,7 +1829,7 @@ void SvgSerializer::resetScale() { void SvgSerializer::addTextAnnotations(const drawing_key& k) { auto& meta = drawing_metadata[k]; - boost::optional> range; + std::optional> range; if (k.first && section_data_) { for (auto& sd : *section_data_) { @@ -1843,130 +1842,128 @@ void SvgSerializer::addTextAnnotations(const drawing_key& k) { } } - aggregate_of_instance::ptr annotations; + std::vector annotations; if (file) { annotations = file->instances_by_type("IfcAnnotation"); } - if (annotations) { - for (auto& ann_ : *annotations) { - auto ann = (IfcUtil::IfcBaseEntity*) ann_; + for (auto& ann_ : annotations) { + auto ann = ann_.as(); - auto ot = ann->get("ObjectType"); - auto nm = ann->get("Name"); - auto ds = ann->get("Description"); - auto pl = ann->get("ObjectPlacement"); + auto ot = ann.get("ObjectType"); + auto nm = ann.get("Name"); + auto ds = ann.get("Description"); + auto pl = ann.get("ObjectPlacement"); - if (!ot.isNull() && !nm.isNull() && !ds.isNull() && !pl.isNull()) { - auto object_type = (std::string) ot; - auto name = (std::string) nm; - auto desc = (std::string) ds; + if (!ot.isNull() && !nm.isNull() && !ds.isNull() && !pl.isNull()) { + auto object_type = (std::string) ot; + auto name = (std::string) nm; + auto desc = (std::string) ds; - if (object_type == "Text") { - auto mapping = ifcopenshell::geometry::impl::mapping_implementations().construct(file, geometry_settings_); - auto item = mapping->map(pl); - auto matrix = ifcopenshell::geometry::taxonomy::cast(item); - delete mapping; - if (item) { - gp_Trsf trsf; - auto& m = matrix->ccomponents(); - trsf.SetValues( - m(0, 0), m(0, 1), m(0, 2), m(0, 3), - m(1, 0), m(1, 1), m(1, 2), m(1, 3), - m(2, 0), m(2, 1), m(2, 2), m(2, 3) - ); + if (object_type == "Text") { + auto mapping = ifcopenshell::geometry::impl::mapping_implementations().construct(file, geometry_settings_); + auto item = mapping->map(pl); + auto matrix = ifcopenshell::geometry::taxonomy::cast(item); + delete mapping; + if (item) { + gp_Trsf trsf; + auto& m = matrix->ccomponents(); + trsf.SetValues( + m(0, 0), m(0, 1), m(0, 2), m(0, 3), + m(1, 0), m(1, 1), m(1, 2), m(1, 3), + m(2, 0), m(2, 1), m(2, 2), m(2, 3) + ); #ifdef TAXONOMY_USE_NAKED_PTR - delete matrix; + delete matrix; #endif - auto v = gp_Pnt(trsf.TranslationPart()); + auto v = gp_Pnt(trsf.TranslationPart()); - auto z_local = gp::DZ().Transformed(trsf); - auto view_dir = z_local.Dot(meta.pln_3d.Axis().Direction()); + auto z_local = gp::DZ().Transformed(trsf); + auto view_dir = z_local.Dot(meta.pln_3d.Axis().Direction()); - if ((!range || (v.Z() >= range->first && v.Z() < range->second)) && view_dir > 0.99) { + if ((!range || (v.Z() >= range->first && v.Z() < range->second)) && view_dir > 0.99) { - gp_Trsf trsf_view; - trsf_view.SetTransformation(gp::XOY(), meta.pln_3d.Position()); - v.Transform(trsf_view); + gp_Trsf trsf_view; + trsf_view.SetTransformation(gp::XOY(), meta.pln_3d.Position()); + v.Transform(trsf_view); - auto svg_name = nameElement(ann); + auto svg_name = nameElement(ann); - if (object_type.size()) { - // postfix the object_type for CSS matching - boost::replace_all(svg_name, "class=\"IfcAnnotation\"", "class=\"IfcAnnotation " + object_type + "\""); - } - - path_object* po; - if (k.first) { - po = &start_path(meta.pln_3d, k.first, svg_name); - } else { - po = &start_path(meta.pln_3d, k.second, svg_name); - } - - boost::optional font_size; - std::vector tokens; - boost::split(tokens, name, boost::is_any_of("_")); - if (tokens.size() == 2) { - try { - font_size = boost::lexical_cast(tokens.back()); - } - catch (...) {} - } - - // @todo column or row? - double z_rotation = gp::DX().Transformed(trsf).AngleWithRef( - meta.pln_3d.Position().XDirection(), - meta.pln_3d.Position().Direction() - ); - z_rotation *= 180. / M_PI; - - auto y = -v.Y(); - - util::string_buffer path; - // dominant-baseline="central" is not well supported in IE. - // so we add a 0.35 offset to the dy of the tspans - path.add(" "); - - std::vector labels{ desc }; - - for (auto lit = labels.begin(); lit != labels.end(); ++lit) { - auto l = *lit; - IfcUtil::escape_xml(l); - double dy = labels.begin() == lit - ? 0.0 // align bottom - : 1.0; // <- dy is relative to the previous text element, so - // always 1 for successive spans. - path.add("(dy)); - path.add("em\">"); - path.add(l); - path.add(""); - } - - path.add(""); - - po->second.push_back(path); + if (object_type.size()) { + // postfix the object_type for CSS matching + boost::replace_all(svg_name, "class=\"IfcAnnotation\"", "class=\"IfcAnnotation " + object_type + "\""); } + + path_object* po; + if (k.first) { + po = &start_path(meta.pln_3d, k.first, svg_name); + } else { + po = &start_path(meta.pln_3d, k.second, svg_name); + } + + std::optional font_size; + std::vector tokens; + boost::split(tokens, name, boost::is_any_of("_")); + if (tokens.size() == 2) { + try { + font_size = boost::lexical_cast(tokens.back()); + } + catch (...) {} + } + + // @todo column or row? + double z_rotation = gp::DX().Transformed(trsf).AngleWithRef( + meta.pln_3d.Position().XDirection(), + meta.pln_3d.Position().Direction() + ); + z_rotation *= 180. / M_PI; + + auto y = -v.Y(); + + util::string_buffer path; + // dominant-baseline="central" is not well supported in IE. + // so we add a 0.35 offset to the dy of the tspans + path.add(" "); + + std::vector labels{ desc }; + + for (auto lit = labels.begin(); lit != labels.end(); ++lit) { + auto l = *lit; + IfcUtil::escape_xml(l); + double dy = labels.begin() == lit + ? 0.0 // align bottom + : 1.0; // <- dy is relative to the previous text element, so + // always 1 for successive spans. + path.add("(dy)); + path.add("em\">"); + path.add(l); + path.add(""); + } + + path.add(""); + + po->second.push_back(path); } } } @@ -1992,7 +1989,7 @@ void SvgSerializer::finalize() { drawing_metadata[p.first].matrix_3 = m; } - if (!deferred_section_data_.is_initialized() && (auto_section_ || auto_elevation_)) { + if (!deferred_section_data_ && (auto_section_ || auto_elevation_)) { deferred_section_data_.emplace(); } @@ -2078,64 +2075,62 @@ void SvgSerializer::finalize() { const auto& section = boost::get(sd); const auto& ax = section.plane.Position(); - draw_hlr(ax, { nullptr, drawing_name }); + draw_hlr(ax, { express::Base{}, drawing_name }); } - addTextAnnotations({ nullptr, drawing_name }); + addTextAnnotations({express::Base{}, drawing_name}); if (file && storey_height_display_ != SH_NONE && pln && std::abs(pln->Position().Direction().Z()) < 1.e-5) { auto storeys = file->instances_by_type("IfcBuildingStorey"); - if (storeys) { - const double lu = file->getUnit("LENGTHUNIT").second; - for (auto& s : *storeys) { - auto storey = (IfcUtil::IfcBaseEntity*) s; - auto a = storey->get("Elevation"); - if (!a.isNull()) { - double elev = a; - elev *= lu; - auto svg_name = nameElement(storey); + const double lu = file->getUnit("LENGTHUNIT").second; + for (auto& s : storeys) { + auto storey = s.as(); + auto a = storey.get("Elevation"); + if (!a.isNull()) { + double elev = a; + elev *= lu; + auto svg_name = nameElement(storey); - gp_Pln elev_pln(gp_Ax3(gp_Pnt(0, 0, elev), gp::DZ(), gp::DX())); - //, pln->Position().XDirection())); - // auto ref_y = pln->Position().YDirection().XYZ().Dot(pln->Position().Location().XYZ()); + gp_Pln elev_pln(gp_Ax3(gp_Pnt(0, 0, elev), gp::DZ(), gp::DX())); + //, pln->Position().XDirection())); + // auto ref_y = pln->Position().YDirection().XYZ().Dot(pln->Position().Location().XYZ()); - double x0, y0, z0, x1, y1, z1; - bnd_.Get(x0, y0, z0, x1, y1, z1); + double x0, y0, z0, x1, y1, z1; + bnd_.Get(x0, y0, z0, x1, y1, z1); - // @todo this is a hack in order to get the auto elevations (which are 0.1 offset from - // the global bounding box) to include the storey height symbols. - x0 -= 0.2; - y0 -= 0.2; - z0 -= 0.2; + // @todo this is a hack in order to get the auto elevations (which are 0.1 offset from + // the global bounding box) to include the storey height symbols. + x0 -= 0.2; + y0 -= 0.2; + z0 -= 0.2; - x1 += 0.2; - y1 += 0.2; - z1 += 0.2; + x1 += 0.2; + y1 += 0.2; + z1 += 0.2; - const double shll = storey_height_line_length_.get_value_or(2.); + const double shll = storey_height_line_length_.value_or(2.); - BRepBuilderAPI_MakeFace mf(elev_pln, x0 - shll, x1 + shll, y0 - shll, y1 + shll); - gp_Trsf trsf; - TopoDS_Compound C; - BRep_Builder B; - B.MakeCompound(C); - B.Add(C, mf.Face()); - std::string name; - auto a2 = storey->get("Name"); - if (!a2.isNull()) { - name = (std::string) a2; - } - write(geometry_data{ - C,{boost::none},trsf,storey,storey,elev,name,nameElement(storey) - }); + BRepBuilderAPI_MakeFace mf(elev_pln, x0 - shll, x1 + shll, y0 - shll, y1 + shll); + gp_Trsf trsf; + TopoDS_Compound C; + BRep_Builder B; + B.MakeCompound(C); + B.Add(C, mf.Face()); + std::string name; + auto a2 = storey.get("Name"); + if (!a2.isNull()) { + name = (std::string) a2; } + write(geometry_data{ + C,{std::nullopt},trsf,storey,storey,elev,name,nameElement(storey) + }); } } } auto m3 = resize(); - auto k = std::make_pair(nullptr, drawing_name); + auto k = std::make_pair(express::Base{}, drawing_name); drawing_metadata[k].matrix_3 = m3; resetScale(); @@ -2146,7 +2141,7 @@ void SvgSerializer::finalize() { std::multimap::const_iterator it; - boost::optional previous; + std::optional previous; for (it = paths.begin(); it != paths.end(); ++it) { if (!previous || it->first != *previous) { if (previous) { @@ -2269,7 +2264,7 @@ return oss.str(); } } -std::string SvgSerializer::nameElement(const IfcUtil::IfcBaseEntity* storey, const IfcGeom::Element* elem) { +std::string SvgSerializer::nameElement(express::Base storey, const IfcGeom::Element* elem) { auto n = elem->name(); IfcUtil::escape_xml(n); @@ -2281,26 +2276,28 @@ std::string SvgSerializer::nameElement(const IfcUtil::IfcBaseEntity* storey, con }); } -std::string SvgSerializer::idElement(const IfcUtil::IfcBaseEntity* elem) { - const std::string type = elem->declaration().is("IfcBuildingStorey") ? "storey" : "product"; +std::string SvgSerializer::idElement(express::Base elem_) { + auto elem = elem_.as(); + const std::string type = elem.declaration().is("IfcBuildingStorey") ? "storey" : "product"; const std::string name = (settings().get().get() - ? static_cast(elem->get("GlobalId")) - : ((settings().get().get() && !elem->get("Name").isNull())) - ? static_cast(elem->get("Name")) + ? static_cast(elem.get("GlobalId")) + : ((settings().get().get() && !elem.get("Name").isNull())) + ? static_cast(elem.get("Name")) : (settings().get().get()) - ? ("id-" + boost::lexical_cast(elem->id())) - : IfcParse::IfcGlobalId(elem->get("GlobalId")).formatted()); + ? ("id-" + boost::lexical_cast(elem.id())) + : IfcParse::IfcGlobalId(elem.get("GlobalId")).formatted()); return type + "-" + name; } -std::string SvgSerializer::nameElement(const IfcUtil::IfcBaseEntity* elem) { - if (elem == 0) { return ""; } +std::string SvgSerializer::nameElement(express::Base elem_) { + auto elem = elem_.as(); + if (!elem) { return ""; } - const std::string& entity = elem->declaration().name(); + const std::string& entity = elem.declaration().name(); std::string ifc_name; - if (!elem->get("Name").isNull()) { - ifc_name = (std::string) elem->get("Name"); + if (!elem.get("Name").isNull()) { + ifc_name = (std::string) elem.get("Name"); IfcUtil::escape_xml(ifc_name); } @@ -2308,7 +2305,7 @@ std::string SvgSerializer::nameElement(const IfcUtil::IfcBaseEntity* elem) { {"id", idElement(elem)}, {"class", entity}, {namespace_prefix_ + "name", ifc_name}, - {namespace_prefix_ + "guid", elem->get("GlobalId")} + {namespace_prefix_ + "guid", elem.get("GlobalId")} }); } @@ -2316,30 +2313,28 @@ void SvgSerializer::setFile(IfcParse::IfcFile* f) { file = f; auto storeys = f->instances_by_type("IfcBuildingStorey"); - if (!storeys || storeys->size() == 0) { + if (storeys.empty()) { auto mapping = ifcopenshell::geometry::impl::mapping_implementations().construct(file, geometry_settings_); std::vector to_derive_from; to_derive_from.push_back(f->schema()->declaration_by_name("IfcBuilding")); to_derive_from.push_back(f->schema()->declaration_by_name("IfcSite")); for (auto it = to_derive_from.begin(); it != to_derive_from.end(); ++it) { - aggregate_of_instance::ptr insts = f->instances_by_type(*it); - if (insts) { - for (auto jt = insts->begin(); jt != insts->end(); ++jt) { - IfcUtil::IfcBaseEntity* product = (IfcUtil::IfcBaseEntity*) *jt; - if (!product->get("ObjectPlacement").isNull()) { - auto item = mapping->map(product->get("ObjectPlacement")); - auto matrix = ifcopenshell::geometry::taxonomy::cast(item); - gp_Trsf trsf; - if (matrix) { - // @todo shouldn't this take into account configurable section height? - setSectionHeight(matrix->translation_part()(2) + 1.); + auto insts = f->instances_by_type(*it); + for (auto& inst : insts) { + auto product = inst.as(); + if (!product.get("ObjectPlacement").isNull()) { + auto item = mapping->map(product.get("ObjectPlacement")); + auto matrix = ifcopenshell::geometry::taxonomy::cast(item); + gp_Trsf trsf; + if (matrix) { + // @todo shouldn't this take into account configurable section height? + setSectionHeight(matrix->translation_part()(2) + 1.); #ifdef TAXONOMY_USE_NAKED_PTR - delete matrix; + delete matrix; #endif - Logger::Warning("No building storeys encountered, used for reference:", product); - return; - } + Logger::Warning("No building storeys encountered, used for reference:", product); + return; } } } @@ -2351,7 +2346,7 @@ void SvgSerializer::setFile(IfcParse::IfcFile* f) { } } -void SvgSerializer::setSectionHeight(double h, const IfcUtil::IfcBaseEntity* storey) { +void SvgSerializer::setSectionHeight(double h, express::Base storey) { section_data_.emplace(); section_data_->push_back(horizontal_plan{ storey, h, 0., std::numeric_limits::infinity() }); } @@ -2365,23 +2360,23 @@ void SvgSerializer::setSectionHeightsFromStoreys(double offset) { section_data_.emplace(); auto storeys = file->instances_by_type("IfcBuildingStorey"); const double lu = file->getUnit("LENGTHUNIT").second; - if (storeys && storeys->size() > 0) { - for (auto& s : *storeys) { - auto attr_value = ((IfcUtil::IfcBaseEntity*)s)->get("Elevation"); - if (!attr_value.isNull()) { - double elev; - try { - elev = attr_value; - } catch (std::exception& e) { - Logger::Error(e); - continue; - } - if (!section_data_->empty()) { - boost::get(section_data_->back()).next_elevation = elev * lu; - } - section_data_->push_back(horizontal_plan{ (IfcUtil::IfcBaseEntity*)s, elev * lu, offset, std::numeric_limits::infinity() }); - } - } + if (!storeys.empty()) { + for (auto& s : storeys) { + auto attr_value = s.as().get("Elevation"); + if (!attr_value.isNull()) { + double elev; + try { + elev = attr_value; + } catch (std::exception& e) { + Logger::Error(e); + continue; + } + if (!section_data_->empty()) { + boost::get(section_data_->back()).next_elevation = elev * lu; + } + section_data_->push_back(horizontal_plan{s, elev * lu, offset, std::numeric_limits::infinity()}); + } + } } else { section_data_->push_back(horizontal_plan_at_element{}); } diff --git a/src/serializers/SvgSerializer.h b/src/serializers/SvgSerializer.h index 4faa2715d0..d907dd4cfe 100644 --- a/src/serializers/SvgSerializer.h +++ b/src/serializers/SvgSerializer.h @@ -57,56 +57,56 @@ #include #include -typedef std::pair drawing_key; +typedef std::pair drawing_key; struct storey_sorter { bool operator()(const drawing_key& ad, const drawing_key& bd) const { - if (ad.first == nullptr && bd.first != nullptr) { + if (!ad.first && bd.first) { return false; - } else if (bd.first == nullptr && ad.first != nullptr) { + } else if (!bd.first && ad.first) { return true; - } else if (ad.first == nullptr && bd.first == nullptr) { + } else if (!ad.first && !bd.first) { return std::less()(ad.second, bd.second); } auto a = ad.first; auto b = bd.first; - const bool a_is_storey = a->declaration().is("IfcBuildingStorey"); - const bool b_is_storey = b->declaration().is("IfcBuildingStorey"); + const bool a_is_storey = a.declaration().is("IfcBuildingStorey"); + const bool b_is_storey = b.declaration().is("IfcBuildingStorey"); if (a_is_storey && b_is_storey) { - boost::optional a_elev, b_elev; + std::optional a_elev, b_elev; try { - a_elev = static_cast(a->get("Elevation")); - b_elev = static_cast(b->get("Elevation")); + a_elev = static_cast(a.as().get("Elevation")); + b_elev = static_cast(b.as().get("Elevation")); } catch (...) {}; if (a_elev && b_elev) { if (std::equal_to()(*a_elev, *b_elev)) { - return std::less()(a->id(), b->id()); + return std::less()(a.id(), b.id()); } else { return std::less()(*a_elev, *b_elev); } } - boost::optional a_name, b_name; + std::optional a_name, b_name; try { - a_name = static_cast(a->get("Name")); - b_name = static_cast(b->get("Name")); + a_name = static_cast(a.as().get("Name")); + b_name = static_cast(b.as().get("Name")); } catch (...) {}; if (a_name && b_name) { if (std::equal_to()(*a_name, *b_name)) { - return std::less()(a->id(), b->id()); + return std::less()(a.id(), b.id()); } else { return std::less()(*a_name, *b_name); } } } - return std::less()(a, b); + return std::less()(a, b); } }; struct horizontal_plan { - const IfcUtil::IfcBaseEntity* storey; + express::Base storey; double elevation, offset, next_elevation; }; @@ -116,18 +116,18 @@ struct vertical_section { gp_Pln plane; std::string name; bool with_projection; - boost::optional scale; - boost::optional> size; + std::optional scale; + std::optional> size; }; typedef boost::variant section_data; struct geometry_data { TopoDS_Shape compound_local; - std::vector>> dash_arrays; + std::vector>> dash_arrays; gp_Trsf trsf; - const IfcUtil::IfcBaseEntity* product; - const IfcUtil::IfcBaseEntity* storey; + express::Base product; + express::Base storey; double storey_elevation; std::string ifc_name, svg_name; }; @@ -211,15 +211,15 @@ namespace { class hlr_calc { private: const HLRAlgo_Projector& projector_; - const std::list>* product_shapes_ = nullptr; + const std::list>* product_shapes_ = nullptr; public: - typedef std::list> result_type; + typedef std::list> result_type; hlr_calc(const HLRAlgo_Projector& projector) : projector_(projector) {} - void set_product_shape(const std::list>* product_shapes) { + void set_product_shape(const std::list>* product_shapes) { product_shapes_ = product_shapes; } @@ -233,13 +233,13 @@ namespace { algo->Hide(); HLRBRep_HLRToShape hlr_shapes(algo); if (product_shapes_) { - std::list> r; + std::list> r; for (auto& p : *product_shapes_) { r.push_back({ p.first, occt_join(hlr_shapes.OutLineVCompound(p.second), hlr_shapes.VCompound(p.second)) }); } return r; } else { - return { {nullptr, occt_join(hlr_shapes.OutLineVCompound(), hlr_shapes.VCompound())}}; + return {{express::Base{}, occt_join(hlr_shapes.OutLineVCompound(), hlr_shapes.VCompound())}}; } } @@ -249,13 +249,13 @@ namespace { HLRBRep_PolyHLRToShape hlr_shapes; hlr_shapes.Update(algo); if (product_shapes_) { - std::list> r; + std::list> r; for (auto& p : *product_shapes_) { r.push_back({ p.first, occt_join(hlr_shapes.OutLineVCompound(p.second), hlr_shapes.VCompound(p.second)) }); } return r; } else { - return { {nullptr, occt_join(hlr_shapes.OutLineVCompound(), hlr_shapes.VCompound()) } }; + return {{express::Base{}, occt_join(hlr_shapes.OutLineVCompound(), hlr_shapes.VCompound())}}; } } }; @@ -366,7 +366,7 @@ namespace { HLRAlgo_Projector projector_; std::multimap large_ortho_faces_; - std::list> items_; + std::list> items_; public: @@ -429,7 +429,7 @@ namespace { return false; } - void add(const TopoDS_Shape& s, const IfcUtil::IfcBaseEntity* product) { + void add(const TopoDS_Shape& s, express::Base product) { if (!use_prefiltering_) { items_.insert(items_.end(), {product, s}); return; @@ -507,7 +507,7 @@ namespace { } } - std::list> build() { + std::list> build() { size_t n_included = 0; for (auto it = items_.begin(); it != items_.end(); ++it) { if (!use_prefiltering_ || !is_obscured_(&it->second)) { @@ -541,15 +541,15 @@ public: protected: stream_or_filename svg_file; double xmin, ymin, xmax, ymax; - boost::optional> section_data_; - boost::optional> deferred_section_data_; - boost::optional scale_, calculated_scale_, center_x_, center_y_; - boost::optional storey_height_line_length_; - boost::optional> size_, offset_2d_; - boost::optional space_name_transform_; + std::optional> section_data_; + std::optional> deferred_section_data_; + std::optional scale_, calculated_scale_, center_x_, center_y_; + std::optional storey_height_line_length_; + std::optional> size_, offset_2d_; + std::optional space_name_transform_; #if OCC_VERSION_HEX >= 0x70300 - boost::optional view_box_3d_; + std::optional view_box_3d_; #endif @@ -568,15 +568,15 @@ protected: int profile_threshold_; IfcParse::IfcFile* file; - const IfcUtil::IfcBaseEntity* storey_; + express::Base storey_; std::multimap paths; std::map drawing_metadata; - std::map storey_hlr; + std::map storey_hlr; float_item_list xcoords, ycoords, radii; size_t xcoords_begin, ycoords_begin, radii_begin; - boost::optional section_ref_, elevation_ref_, elevation_ref_guid_; + std::optional section_ref_, elevation_ref_, elevation_ref_guid_; std::list element_buffer_; @@ -621,7 +621,6 @@ public: , unify_inputs_(false) , profile_threshold_(-1) , file(0) - , storey_(0) , xcoords_begin(0) , ycoords_begin(0) , radii_begin(0) @@ -638,16 +637,16 @@ public: bool ready(); void write(const IfcGeom::TriangulationElement* /*o*/) {} void write(const IfcGeom::BRepElement* o); - void write(path_object& p, const TopoDS_Shape& wire, boost::optional> dash_array=boost::none); + void write(path_object& p, const TopoDS_Shape& wire, std::optional> dash_array=std::nullopt); void write(const geometry_data& data); - path_object& start_path(const gp_Pln& p, const IfcUtil::IfcBaseEntity* storey, const std::string& id); + path_object& start_path(const gp_Pln& p, const express::Base& storey, const std::string& id); path_object& start_path(const gp_Pln& p, const std::string& drawing_name, const std::string& id); bool isTesselated() const { return false; } void finalize(); void setUnitNameAndMagnitude(const std::string& /*name*/, float /*magnitude*/) {} void setFile(IfcParse::IfcFile* f); void setBoundingRectangle(double width, double height); - void setSectionHeight(double h, const IfcUtil::IfcBaseEntity* storey = 0); + void setSectionHeight(double h, express::Base storey = express::Base()); void setSectionHeightsFromStoreys(double offset=1.2); void setPrintSpaceNames(bool b) { print_space_names_ = b; } void setPrintSpaceAreas(bool b) { print_space_areas_ = b; } @@ -660,17 +659,17 @@ public: std::array, 3> resize(); void resetScale(); - void setSectionRef(const boost::optional& s) { + void setSectionRef(const std::optional& s) { section_ref_ = s; } - void setElevationRef(const boost::optional& s) { + void setElevationRef(const std::optional& s) { elevation_ref_ = s; - elevation_ref_guid_ = boost::none; + elevation_ref_guid_ = std::nullopt; } - void setElevationRefGuid(const boost::optional& s) { - elevation_ref_ = boost::none; + void setElevationRefGuid(const std::optional& s) { + elevation_ref_ = std::nullopt; elevation_ref_guid_ = s; } @@ -743,10 +742,10 @@ public: void setDrawingCenter(double x, double y) { center_x_ = x; center_y_ = y; } - std::string nameElement(const IfcUtil::IfcBaseEntity* storey, const IfcGeom::Element* elem); - std::string nameElement(const IfcUtil::IfcBaseEntity* elem); - std::string idElement(const IfcUtil::IfcBaseEntity* elem); - std::string object_id(const IfcUtil::IfcBaseEntity* storey, const IfcGeom::Element* o) { + std::string nameElement(express::Base storey, const IfcGeom::Element* elem); + std::string nameElement(express::Base elem); + std::string idElement(express::Base elem); + std::string object_id(express::Base storey, const IfcGeom::Element* o) { if (storey) { return idElement(storey) + "-" + GeometrySerializer::object_id(o); } else { diff --git a/src/serializers/TtlWktSerializer.cpp b/src/serializers/TtlWktSerializer.cpp index aa665ca190..dc3c40035e 100644 --- a/src/serializers/TtlWktSerializer.cpp +++ b/src/serializers/TtlWktSerializer.cpp @@ -284,7 +284,7 @@ void TtlWktSerializer::write(const IfcGeom::TriangulationElement* o) Eigen::Map> vertex_map(o->geometry().verts().data(), 3, o->geometry().verts().size() / 3); - boost::optional>::const_iterator> lowest_face; + std::optional>::const_iterator> lowest_face; double lowest_z = std::numeric_limits::infinity(); for (const auto& f : o->geometry().polyhedral_faces_with_holes()) { diff --git a/src/serializers/schema_dependent/JsonSerializer.cpp b/src/serializers/schema_dependent/JsonSerializer.cpp index 7c7ee890d9..c275d6c79a 100644 --- a/src/serializers/schema_dependent/JsonSerializer.cpp +++ b/src/serializers/schema_dependent/JsonSerializer.cpp @@ -54,7 +54,7 @@ class format_value_visitor : public boost::static_visitor { public: template json operator()(const T& t) const { - if constexpr (std::is_same_v, Derived> || std::is_same_v, boost::dynamic_bitset<>> || std::is_same_v, IfcUtil::IfcBaseClass*> || std::is_same_v, std::vector> || std::is_same_v, std::vector> || std::is_same_v, std::vector> || std::is_same_v, std::vector>> || std::is_same_v, aggregate_of_instance::ptr> || std::is_same_v, aggregate_of_aggregate_of_instance::ptr> || std::is_same_v, std::vector>> || std::is_same_v, std::vector>> || std::is_same_v, empty_aggregate_t> || std::is_same_v, empty_aggregate_of_aggregate_t> || std::is_same_v, Blank>) { + if constexpr (std::is_same_v, Derived> || std::is_same_v, boost::dynamic_bitset<>> || std::is_same_v, express::Base> || std::is_same_v, std::vector> || std::is_same_v, std::vector> || std::is_same_v, std::vector> || std::is_same_v, std::vector>> || std::is_same_v, std::vector> || std::is_same_v, std::vector>> || std::is_same_v, std::vector>> || std::is_same_v, std::vector>> || std::is_same_v, empty_aggregate_t> || std::is_same_v, empty_aggregate_of_aggregate_t> || std::is_same_v, Blank>) { return ""; } else if constexpr (std::is_same_v, boost::logic::tribool>) { // @todo handle indeterminate @@ -81,13 +81,27 @@ class get_type_visitor : public boost::static_visitor { // Returns related entity instances using IFC's objectified relationship // model. The second and third argument require a member function pointer. template -auto get_related(T* t, F f, G g) { - typename U::list::ptr li = (*t.*f)()->template as(); - typename aggregate_of::ptr acc(new aggregate_of); - for (typename U::list::it it = li->begin(); it != li->end(); ++it) { - U* u = *it; +auto get_related(T t, F f, G g) { + auto li = (t.*f)(); + std::vector acc; + for (auto& u : li) { try { - acc->push((*u.*g)()->template as()); + auto vs = (u.as().*g)(); + if constexpr (std::is_base_of_v) { + if (auto vv = vs.as()) { + acc.push_back(vv); + } + } else if constexpr (std::is_base_of_v) { + if (auto vv = vs.concrete().as()) { + acc.push_back(vv); + } + } else { + for (auto& v : vs) { + if (auto vv = v.as()) { + acc.push_back(vv); + } + } + } } catch (IfcParse::IfcException& e) { Logger::Error(e); } @@ -95,7 +109,7 @@ auto get_related(T* t, F f, G g) { return acc; } -void format_entity_instance(IfcUtil::IfcBaseEntity* instance, json& tree, IfcUtil::IfcBaseEntity* parent = nullptr) { +void format_entity_instance(express::Base instance, json& tree, express::Base parent = express::Base()) { /* { "id" : string, // Element GUID (IFC GloballyUniqueId) @@ -119,7 +133,7 @@ void format_entity_instance(IfcUtil::IfcBaseEntity* instance, json& tree, IfcUti auto write_to_json = [&](const std::string& keyJson, const std::string& keyIfc) { AttributeValue val; try { - val = instance->get(keyIfc); + val = instance.as().get(keyIfc); } catch (const IfcParse::IfcException&) { // simply laziness like no attribute Tag on IfcProject return; @@ -132,29 +146,28 @@ void format_entity_instance(IfcUtil::IfcBaseEntity* instance, json& tree, IfcUti write_to_json("id", "GlobalId"); write_to_json("name", "Name"); write_to_json("longName", "LongName"); - child["type"] = instance->declaration().name(); + child["type"] = instance.declaration().name(); if (parent) { - if (auto* rt = parent->as()) { - child["parent"] = rt->GlobalId(); + if (auto rt = parent.as()) { + child["parent"] = rt.GlobalId(); } } // @todo groups write_to_json("ObjectType", "ObjectType"); write_to_json("tag", "Tag"); - if (auto* storey = instance->as()) { - auto elevation = storey->Elevation(); + if (auto storey = instance.as()) { + auto elevation = storey.Elevation(); if (elevation) { child["attributes"] = json::object({{"elevation", *elevation}}); } } - if (auto* obj = instance->as()) { - IfcSchema::IfcPropertySetDefinition::list::ptr property_sets = get_related(obj, &IfcSchema::IfcObject::IsDefinedBy, &IfcSchema::IfcRelDefinesByProperties::RelatingPropertyDefinition); - if (!property_sets && property_sets->size()) { + if (auto obj = instance.as()) { + auto property_sets = get_related(obj, &IfcSchema::IfcObject::IsDefinedBy, &IfcSchema::IfcRelDefinesByProperties::RelatingPropertyDefinition); + if (!property_sets.empty()) { child["propertySetIds"] = json::array(); - for (IfcSchema::IfcPropertySetDefinition::list::it it = property_sets->begin(); it != property_sets->end(); ++it) { - IfcSchema::IfcPropertySetDefinition* pset = *it; - child["propertySetIds"].push_back(pset->GlobalId()); + for (auto& pset : property_sets) { + child["propertySetIds"].push_back(pset.GlobalId()); } } } @@ -166,9 +179,9 @@ void format_entity_instance(IfcUtil::IfcBaseEntity* instance, json& tree, IfcUti // A function to be called recursively. Template specialization is used // to descend into decomposition, containment and property relationships. template -void descend(A* instance, json& tree, IfcUtil::IfcBaseEntity* parent = nullptr) { - if (instance->declaration().is(IfcSchema::IfcObjectDefinition::Class())) { - descend(instance->template as(), tree, parent); +void descend(A instance, json& tree, express::Base parent = express::Base()) { + if (instance.declaration().is(IfcSchema::IfcObjectDefinition::Class())) { + descend(instance.template as(), tree, parent); } else { format_entity_instance(instance, tree); } @@ -179,10 +192,10 @@ void descend(A* instance, json& tree, IfcUtil::IfcBaseEntity* parent = nullptr) // Descends into the tree by recursing into IfcRelContainedInSpatialStructure, // IfcRelDecomposes, IfcRelDefinesByType, IfcRelDefinesByProperties relations. template <> -void descend(IfcSchema::IfcObjectDefinition* product, json& tree, IfcUtil::IfcBaseEntity* parent) { - if (product->declaration().is(IfcSchema::IfcElement::Class())) { - auto voids = product->as()->FillsVoids(); - if (voids && voids->size() == 1 && (*voids->begin())->RelatingOpeningElement() != parent) { +void descend(IfcSchema::IfcObjectDefinition product, json& tree, express::Base parent) { + if (product.declaration().is(IfcSchema::IfcElement::Class())) { + auto voids = product.as().FillsVoids(); + if (voids.size() == 1 && voids.front().RelatingOpeningElement() != parent) { // Fills are placed under their corresponding opening, return early to avoid duplication. return; } @@ -190,46 +203,43 @@ void descend(IfcSchema::IfcObjectDefinition* product, json& tree, IfcUtil::IfcBa format_entity_instance(product, tree, parent); - if (product->declaration().is(IfcSchema::IfcOpeningElement::Class())) { - IfcSchema::IfcOpeningElement* opening = product->as(); - IfcSchema::IfcElement::list::ptr fills = get_related( + if (auto opening = product.as()) { + auto fills = get_related( opening, &IfcSchema::IfcOpeningElement::HasFillings, &IfcSchema::IfcRelFillsElement::RelatedBuildingElement); - for (IfcSchema::IfcElement::list::it it = fills->begin(); it != fills->end(); ++it) { - descend(*it, tree, product); + for (auto& f : fills) { + descend(f, tree, product); } } - if (product->declaration().is(IfcSchema::IfcSpatialStructureElement::Class())) { - IfcSchema::IfcSpatialStructureElement* structure = product->as(); + if (auto structure = product.as()) { + auto elements = get_related(structure, &IfcSchema::IfcSpatialStructureElement::ContainsElements, &IfcSchema::IfcRelContainedInSpatialStructure::RelatedElements); - IfcSchema::IfcObjectDefinition::list::ptr elements = get_related(structure, &IfcSchema::IfcSpatialStructureElement::ContainsElements, &IfcSchema::IfcRelContainedInSpatialStructure::RelatedElements); - - for (IfcSchema::IfcObjectDefinition::list::it it = elements->begin(); it != elements->end(); ++it) { - descend(*it, tree, product); + for (auto& el : elements) { + descend(el, tree, product); } } - if (product->declaration().is(IfcSchema::IfcElement::Class())) { - IfcSchema::IfcElement* element = static_cast(product); - IfcSchema::IfcOpeningElement::list::ptr openings = get_related( + if (auto element = product.as()) { + auto openings = get_related( element, &IfcSchema::IfcElement::HasOpenings, &IfcSchema::IfcRelVoidsElement::RelatedOpeningElement); - for (IfcSchema::IfcOpeningElement::list::it it = openings->begin(); it != openings->end(); ++it) { - descend(*it, tree, product); + for (auto& op : openings) { + descend(op, tree, product); } } #ifdef SCHEMA_IfcRelDecomposes_HAS_RelatedObjects - IfcSchema::IfcObjectDefinition::list::ptr structures = get_related(product, &IfcSchema::IfcObjectDefinition::IsDecomposedBy, &IfcSchema::IfcRelDecomposes::RelatedObjects); + auto structures = get_related(product, &IfcSchema::IfcObjectDefinition::IsDecomposedBy, &IfcSchema::IfcRelDecomposes::RelatedObjects); #else - IfcSchema::IfcObjectDefinition::list::ptr structures = get_related(product, &IfcSchema::IfcObjectDefinition::IsDecomposedBy, &IfcSchema::IfcRelAggregates::RelatedObjects); + auto structures = get_related(product, &IfcSchema::IfcObjectDefinition::IsDecomposedBy, &IfcSchema::IfcRelAggregates::RelatedObjects); - structures->push(get_related(product, &IfcSchema::IfcObjectDefinition::IsNestedBy, &IfcSchema::IfcRelNests::RelatedObjects)); + auto nested = get_related(product, &IfcSchema::IfcObjectDefinition::IsNestedBy, &IfcSchema::IfcRelNests::RelatedObjects); + + structures.insert(structures.end(), nested.begin(), nested.end()); #endif - for (IfcSchema::IfcObjectDefinition::list::it it = structures->begin(); it != structures->end(); ++it) { - IfcSchema::IfcObjectDefinition* ob = *it; + for (auto& ob : structures) { descend(ob, tree, product); } @@ -237,24 +247,24 @@ void descend(IfcSchema::IfcObjectDefinition* product, json& tree, IfcUtil::IfcBa // all other relationships are not needed in JSON output } -IfcSchema::IfcValue* get_value_from_prop(const IfcSchema::IfcProperty* prop) { - if (auto* psv = prop->as()) { - if (auto* nv = psv->NominalValue()) { +IfcSchema::IfcValue get_value_from_prop(IfcSchema::IfcProperty& prop) { + if (auto psv = prop.as()) { + if (auto nv = psv.NominalValue()) { return nv; } } - // @todo other unit typs - return nullptr; + // @todo other unit types + return IfcSchema::IfcValue{}; } -IfcSchema::IfcUnit* get_unit_from_prop(const IfcSchema::IfcProperty* prop) { - if (auto* psv = prop->as()) { - if (auto* un = psv->Unit()) { +IfcSchema::IfcUnit get_unit_from_prop(IfcSchema::IfcProperty& prop) { + if (auto psv = prop.as()) { + if (auto un = psv.Unit()) { return un; } } - // @todo other unit typs - return nullptr; + // @todo other unit types + return IfcSchema::IfcUnit{}; } } // namespace @@ -262,12 +272,12 @@ IfcSchema::IfcUnit* get_unit_from_prop(const IfcSchema::IfcProperty* prop) { void POSTFIX_SCHEMA(JsonSerializer)::finalize() { json output; - IfcSchema::IfcProject::list::ptr projects = file->instances_by_type(); - if (projects->size() != 1) { + auto projects = file->instances_by_type(); + if (projects.size() != 1) { Logger::Message(Logger::LOG_ERROR, "Expected a single IfcProject"); return; } - IfcSchema::IfcProject* project = *projects->begin(); + IfcSchema::IfcProject project = projects.front(); auto catch_exceptions = [this](const auto& fn) { try { @@ -279,12 +289,12 @@ void POSTFIX_SCHEMA(JsonSerializer)::finalize() { } }; - output["id"] = catch_exceptions([&]() { return file->header().file_name()->name(); }); - output["projectId"] = catch_exceptions([&]() { return project->GlobalId(); }); - output["author"] = catch_exceptions([&]() { return file->header().file_name()->author().empty() ? "unknown" : file->header().file_name()->author().front(); }); - output["createdAt"] = catch_exceptions([&]() { return file->header().file_name()->time_stamp(); }); - output["schema"] = catch_exceptions([&]() { return file->header().file_schema()->schema_identifiers().front(); }); // without schema we would not be here - output["creatingApplication"] = catch_exceptions([&]() { return file->header().file_name()->originating_system(); }); + output["id"] = catch_exceptions([&]() { return file->header().file_name().name(); }); + output["projectId"] = catch_exceptions([&]() { return project.GlobalId(); }); + output["author"] = catch_exceptions([&]() { return file->header().file_name().author().empty() ? "unknown" : file->header().file_name().author().front(); }); + output["createdAt"] = catch_exceptions([&]() { return file->header().file_name().time_stamp(); }); + output["schema"] = catch_exceptions([&]() { return file->header().file_schema().schema_identifiers().front(); }); // without schema we would not be here + output["creatingApplication"] = catch_exceptions([&]() { return file->header().file_name().originating_system(); }); output["properties"] = json::array(); output["propertySets"] = json::array(); output["units"] = json::array(); @@ -293,18 +303,33 @@ void POSTFIX_SCHEMA(JsonSerializer)::finalize() { output["groups"] = json::array(); // Maps for deduplication of properties and quantities - std::map property_to_index; + std::map property_to_index; std::unordered_map json_to_index; // Obtain sequence of units because properties, quantities reference them by index. // IfcUnit is a select of IfcDerivedUnit, IfcMonetaryUnit and IfcNamedUnit. // Unfortunately, instances_by_type() does not support select types directly (even though there isn't a real reason for that). - IfcSchema::IfcUnit::list::ptr units(new IfcSchema::IfcUnit::list); - units->push(file->instances_by_type()->as()); - units->push(file->instances_by_type()->as()); - units->push(file->instances_by_type()->as()); + std::vector units; + { + auto vs = file->instances_by_type(); + for (auto& v : vs) { + units.push_back(v); + } + } + { + auto vs = file->instances_by_type(); + for (auto& v : vs) { + units.push_back(v); + } + } + { + auto vs = file->instances_by_type(); + for (auto& v : vs) { + units.push_back(v); + } + } - auto format_property = [&](const IfcUtil::IfcBaseEntity* prop_) { + auto format_property = [&](const express::Entity& prop_) { json jprop; /* { @@ -315,23 +340,23 @@ void POSTFIX_SCHEMA(JsonSerializer)::finalize() { "valueType": "boolean" }, */ - if (auto* prop = prop_->as()) { - jprop["name"] = prop->Name(); - jprop["ifcPropertyType"] = prop->declaration().name(); - if (auto* val = get_value_from_prop(prop)) { - jprop["ifcValueType"] = val->declaration().name(); - jprop["value"] = val->data().get_attribute_value(nullptr, nullptr, 0, 0).apply_visitor(format_value_visitor{}); - jprop["valueType"] = val->data().get_attribute_value(nullptr, nullptr, 0, 0).apply_visitor(get_type_visitor{}); + if (auto prop = prop_.as()) { + jprop["name"] = prop.Name(); + jprop["ifcPropertyType"] = prop.declaration().name(); + if (auto val = get_value_from_prop(prop)) { + jprop["ifcValueType"] = val.concrete().declaration().name(); + jprop["value"] = val.concrete().data()->get_attribute_value(0).apply_visitor(format_value_visitor{}); + jprop["valueType"] = val.concrete().data()->get_attribute_value(0).apply_visitor(get_type_visitor{}); } - if (auto* unit = get_unit_from_prop(prop)) { - jprop["unit"] = std::distance(units->begin(), std::find(units->begin(), units->end(), unit)); + if (auto unit = get_unit_from_prop(prop)) { + jprop["unit"] = std::distance(units.begin(), std::find(units.begin(), units.end(), unit)); } } return jprop; }; - auto format_quantity = [&](const IfcUtil::IfcBaseEntity* qto_) { + auto format_quantity = [&](const express::Entity& qto_) { json jprop; /* { @@ -342,15 +367,15 @@ void POSTFIX_SCHEMA(JsonSerializer)::finalize() { "unit": 3 } */ - if (auto* qto = qto_->as()) { - jprop["name"] = qto->Name(); - jprop["ifcPropertyType"] = qto->declaration().name(); - if (auto* prop = qto->as()) { - jprop["ifcValueType"] = prop->declaration().attributes()[0]->name(); - jprop["value"] = prop->data().get_attribute_value(nullptr, nullptr, 0, 3).apply_visitor(format_value_visitor{}); + if (auto qto = qto_.as()) { + jprop["name"] = qto.Name(); + jprop["ifcPropertyType"] = qto.declaration().name(); + if (auto prop = qto.as()) { + jprop["ifcValueType"] = prop.declaration().as_entity()->attributes()[0]->name(); + jprop["value"] = prop.data()->get_attribute_value(3).apply_visitor(format_value_visitor{}); jprop["valueType"] = "number"; - if (auto* unit = prop->Unit()) { - jprop["unit"] = std::distance(units->begin(), std::find(units->begin(), units->end(), unit)); + if (auto unit = prop.Unit()) { + jprop["unit"] = std::distance(units.begin(), std::find(units.begin(), units.end(), unit)); } } } @@ -358,7 +383,7 @@ void POSTFIX_SCHEMA(JsonSerializer)::finalize() { }; auto deduplicate = [&](auto base_formatter) { - return [&, base_formatter](const IfcUtil::IfcBaseEntity* prop) mutable -> std::size_t { + return [&, base_formatter](const express::Entity& prop) mutable -> std::size_t { if (auto it = property_to_index.find(prop); it != property_to_index.end()) { return it->second; } @@ -382,23 +407,23 @@ void POSTFIX_SCHEMA(JsonSerializer)::finalize() { auto quantity_index_for = deduplicate(format_quantity); auto pset_predef_or_qsets = file->instances_by_type(); - for (auto& inst : *pset_predef_or_qsets) { + for (auto& inst : pset_predef_or_qsets) { std::vector property_indices; - if (auto* pset = inst->as()) { - auto props = pset->HasProperties(); - for (auto& prop : *props) { + if (auto pset = inst.as()) { + auto props = pset.HasProperties(); + for (auto& prop : props) { std::size_t index = property_index_for(prop); property_indices.push_back(index); } - } else if (auto* qset = inst->as()) { - auto qtos = qset->Quantities(); - for (auto& qto : *qtos) { + } else if (auto qset = inst.as()) { + auto qtos = qset.Quantities(); + for (auto& qto : qtos) { std::size_t index = quantity_index_for(qto); property_indices.push_back(index); } #ifdef SCHEMA_HAS_IfcPreDefinedPropertySet // ifc2x3 does not have this type yet, just inherits from IfcPropertySetDefinition - } else if (auto* pset = inst->as()) { + } else if (auto pset = inst.as()) { #else } else { #endif @@ -424,13 +449,13 @@ void POSTFIX_SCHEMA(JsonSerializer)::finalize() { "properties" : [ 0, 1, 2 ] }, */ - output["propertySets"].push_back(json::object({{"id", inst->GlobalId()}, - {"name", *inst->Name()}, // @todo optional - {"type", inst->declaration().name()}, + output["propertySets"].push_back(json::object({{"id", inst.GlobalId()}, + {"name", *inst.Name()}, // @todo optional + {"type", inst.declaration().name()}, {"properties", property_indices}})); } - for (auto& unit : *units) { + for (auto& unit : units) { /* { "name": string, // Unit symbol/name @@ -465,67 +490,67 @@ void POSTFIX_SCHEMA(JsonSerializer)::finalize() { } */ json junit; - junit["className"] = unit->declaration().name(); - if (auto* siunit = unit->as()) { + junit["className"] = unit.concrete().declaration().name(); + if (auto siunit = unit.concrete().as()) { // @todo figure out how to encode name for si units std::string unit_name = ""; - junit["unitEnum"] = IfcSchema::IfcUnitEnum::ToString(siunit->UnitType()); - if (siunit->Prefix()) { - junit["prefix"] = IfcSchema::IfcSIPrefix::ToString(*siunit->Prefix()); - unit_name.push_back(IfcSchema::IfcSIPrefix::ToString(*siunit->Prefix())[0]); + junit["unitEnum"] = IfcSchema::IfcUnitEnum::ToString(siunit.UnitType()); + if (siunit.Prefix()) { + junit["prefix"] = IfcSchema::IfcSIPrefix::ToString(*siunit.Prefix()); + unit_name.push_back(IfcSchema::IfcSIPrefix::ToString(*siunit.Prefix())[0]); } - unit_name.push_back(IfcSchema::IfcSIUnitName::ToString(siunit->Name())[0]); + unit_name.push_back(IfcSchema::IfcSIUnitName::ToString(siunit.Name())[0]); boost::to_lower(unit_name); junit["name"] = unit_name; - } else if (auto* convunit = unit->as()) { - junit["name"] = convunit->Name(); - junit["unitEnum"] = IfcSchema::IfcUnitEnum::ToString(convunit->UnitType()); - if (convunit->ConversionFactor()) { + } else if (auto convunit = unit.concrete().as()) { + junit["name"] = convunit.Name(); + junit["unitEnum"] = IfcSchema::IfcUnitEnum::ToString(convunit.UnitType()); + if (convunit.ConversionFactor()) { json jconv; - auto val = convunit->ConversionFactor()->ValueComponent(); + auto val = convunit.ConversionFactor().ValueComponent(); jconv["valueComponent"] = { - {"value", val->data().get_attribute_value(nullptr, nullptr, 0, 0).apply_visitor(format_value_visitor{})}, - {"valueType", val->data().get_attribute_value(nullptr, nullptr, 0, 0).apply_visitor(get_type_visitor{})} + {"value", val.concrete().data()->get_attribute_value(0).apply_visitor(format_value_visitor{})}, + {"valueType", val.concrete().data()->get_attribute_value(0).apply_visitor(get_type_visitor{})} }; - jconv["unitComponent"] = std::distance(units->begin(), std::find(units->begin(), units->end(), convunit->ConversionFactor()->UnitComponent())); + jconv["unitComponent"] = std::distance(units.begin(), std::find(units.begin(), units.end(), convunit.ConversionFactor().UnitComponent())); junit["conversionFactor"] = jconv; } - } else if (auto* derunit = unit->as()) { + } else if (auto derunit = unit.concrete().as()) { #ifdef SCHEMA_IfcDerivedUnit_HAS_Name // 4.3 onwards - if (derunit->Name()) { - junit["name"] = *derunit->Name(); + if (derunit.Name()) { + junit["name"] = *derunit.Name(); } #endif json jelements = json::array(); - auto elements = derunit->Elements(); - for (auto& elem : *elements) { + auto elements = derunit.Elements(); + for (auto& elem : elements) { jelements.push_back({ - {"unit", std::distance(units->begin(), std::find(units->begin(), units->end(), elem->Unit()))}, - {"exponent", elem->Exponent()} + {"unit", std::distance(units.begin(), std::find(units.begin(), units.end(), elem.Unit()))}, + {"exponent", elem.Exponent()} }); } junit["elements"] = jelements; } - if (auto* namedunit = unit->as()) { + if (auto namedunit = unit.concrete().as()) { // support for derived attributes is only available in python - if (namedunit->as() == nullptr) { - if (auto* dimexp = namedunit->Dimensions()) { + if (!namedunit.as()) { + if (auto dimexp = namedunit.Dimensions()) { junit["dimensions"] = { - {"LengthExponent", dimexp->LengthExponent()}, - {"MassExponent", dimexp->MassExponent()}, - {"TimeExponent", dimexp->TimeExponent()}, - {"ElectricCurrentExponent", dimexp->ElectricCurrentExponent()}, - {"ThermodynamicTemperatureExponent", dimexp->ThermodynamicTemperatureExponent()}, - {"AmountOfSubstanceExponent", dimexp->AmountOfSubstanceExponent()}, - {"LuminousIntensityExponent", dimexp->LuminousIntensityExponent()}}; + {"LengthExponent", dimexp.LengthExponent()}, + {"MassExponent", dimexp.MassExponent()}, + {"TimeExponent", dimexp.TimeExponent()}, + {"ElectricCurrentExponent", dimexp.ElectricCurrentExponent()}, + {"ThermodynamicTemperatureExponent", dimexp.ThermodynamicTemperatureExponent()}, + {"AmountOfSubstanceExponent", dimexp.AmountOfSubstanceExponent()}, + {"LuminousIntensityExponent", dimexp.LuminousIntensityExponent()}}; } } } output["units"].push_back(junit); } - auto project_units = project->UnitsInContext()->Units(); + auto project_units = project.UnitsInContext().Units(); /* { "LENGTHUNIT": number, @@ -536,11 +561,11 @@ void POSTFIX_SCHEMA(JsonSerializer)::finalize() { "TIMEUNIT": number, // ... other unit types }*/ - for (auto* pu : *project_units) { - auto it = std::find(units->begin(), units->end(), pu); - if (auto* nu = pu->as()) { - if (it != units->end()) { - output["projectUnits"][IfcSchema::IfcUnitEnum::ToString(nu->UnitType())] = std::distance(units->begin(), it); + for (auto pu : project_units) { + auto it = std::find(units.begin(), units.end(), pu); + if (auto nu = pu.as()) { + if (it != units.end()) { + output["projectUnits"][IfcSchema::IfcUnitEnum::ToString(nu.UnitType())] = std::distance(units.begin(), it); } } } @@ -569,294 +594,4 @@ void POSTFIX_SCHEMA(JsonSerializer)::finalize() { f << output.dump(4); } - /* - - ptree root, header, units, decomposition, properties, quantities, types, layers, materials, work, calendars, connections, groups; - - - // Write the SPF header as XML nodes. - BOOST_FOREACH (const std::string& s, catch_exceptions([this]() { return file->header().file_description()->description(); })) { - header.add_child("file_description.description", ptree(s)); - } - BOOST_FOREACH (const std::string& s, catch_exceptions([this]() { return file->header().file_name()->author(); })) { - header.add_child("file_name.author", ptree(s)); - } - BOOST_FOREACH (const std::string& s, catch_exceptions([this]() { return file->header().file_name()->organization(); })) { - header.add_child("file_name.organization", ptree(s)); - } - BOOST_FOREACH (const std::string& s, catch_exceptions([this]() { return file->header().file_schema()->schema_identifiers(); })) { - header.add_child("file_schema.schema_identifiers", ptree(s)); - } - try { - header.put("file_description.implementation_level", file->header().file_description()->implementation_level()); - } catch (const IfcParse::IfcException& ex) { - std::stringstream ss; - ss << "Failed to get ifc file header file_description implementation_level, error: '" << ex.what() << "'"; - Logger::Message(Logger::LOG_ERROR, ss.str()); - } - try { - header.put("file_name.name", file->header().file_name()->name()); - } catch (const IfcParse::IfcException& ex) { - std::stringstream ss; - ss << "Failed to get ifc file header file_name name, error: '" << ex.what() << "'"; - Logger::Message(Logger::LOG_ERROR, ss.str()); - } - try { - header.put("file_name.time_stamp", file->header().file_name()->time_stamp()); - } catch (const IfcParse::IfcException& ex) { - std::stringstream ss; - ss << "Failed to get ifc file header file_name time_stamp, error: '" << ex.what() << "'"; - Logger::Message(Logger::LOG_ERROR, ss.str()); - } - try { - header.put("file_name.preprocessor_version", file->header().file_name()->preprocessor_version()); - } catch (const IfcParse::IfcException& ex) { - std::stringstream ss; - ss << "Failed to get ifc file header file_name preprocessor_version, error: '" << ex.what() << "'"; - Logger::Message(Logger::LOG_ERROR, ss.str()); - } - try { - header.put("file_name.originating_system", file->header().file_name()->originating_system()); - } catch (const IfcParse::IfcException& ex) { - std::stringstream ss; - ss << "Failed to get ifc file header file_name originating_system, error: '" << ex.what() << "'"; - Logger::Message(Logger::LOG_ERROR, ss.str()); - } - try { - // @nb inconsistent spelling - header.put("file_name.authorization", file->header().file_name()->authorization()); - } catch (const IfcParse::IfcException& ex) { - std::stringstream ss; - ss << "Failed to get ifc file header file_name authorization, error: '" << ex.what() << "'"; - Logger::Message(Logger::LOG_ERROR, ss.str()); - } - - // Descend into the decomposition structure of the IFC file. - descend(mapping_, project, decomposition); - - // Write all property sets and values as XML nodes. - IfcSchema::IfcPropertySet::list::ptr psets = file->instances_by_type(); - for (IfcSchema::IfcPropertySet::list::it it = psets->begin(); it != psets->end(); ++it) { - IfcSchema::IfcPropertySet* pset = *it; - ptree* node = format_entity_instance(mapping_, pset, properties); - if (node) { - format_properties(mapping_, pset->HasProperties(), *node); - } - } - - // Write all group sets and values as XML nodes. - IfcSchema::IfcGroup::list::ptr gsets = file->instances_by_type(); - std::set notRootGroups; //selfname, fathername - for (IfcSchema::IfcGroup::list::it it = gsets->begin(); it != gsets->end(); ++it) { - writeGroupToNode(mapping_, *it, groups, notRootGroups); - } - for (auto it = groups.begin(); it != groups.end();) { - if (notRootGroups.find(it->second.get(".Name")) != notRootGroups.end()) { - it = groups.erase(it); - } else { - it++; - } - } - - // Write all quantities and values as XML nodes. - IfcSchema::IfcElementQuantity::list::ptr qtosets = file->instances_by_type(); - for (IfcSchema::IfcElementQuantity::list::it it = qtosets->begin(); it != qtosets->end(); ++it) { - IfcSchema::IfcElementQuantity* qto = *it; - ptree* node = format_entity_instance(mapping_, qto, quantities); - if (node) { - format_quantities(mapping_, qto->Quantities(), *node); - } - } - - // Write all work schedules and values as XML nodes. - ptree pwork_schedules; - IfcSchema::IfcWorkSchedule::list::ptr pschedules = file->instances_by_type(); - for (IfcSchema::IfcWorkSchedule::list::it it = pschedules->begin(); it != pschedules->end(); ++it) { - IfcSchema::IfcWorkSchedule* schedule = *it; - ptree* nschedule = format_entity_instance(mapping_, schedule, pwork_schedules); - - if (nschedule) { - IfcSchema::IfcRelAssignsToControl::list::ptr controls = schedule->Controls(); - for (IfcSchema::IfcRelAssignsToControl::list::it it2 = controls->begin(); it2 != controls->end(); ++it2) { - IfcSchema::IfcRelAssignsToControl* control = *it2; - - IfcSchema::IfcObjectDefinition::list::ptr objects = control->RelatedObjects(); - for (IfcSchema::IfcObjectDefinition::list::it it3 = objects->begin(); it3 != objects->end(); ++it3) { - IfcSchema::IfcObjectDefinition* object = *it3; - - if (object && object->declaration().is(IfcSchema::IfcTask::Class())) { - IfcSchema::IfcTask* task = object->as(); - format_tasks(mapping_, task, *nschedule); - } - } - } - } - } - work.add_child("schedules", pwork_schedules); - - // Write all work plans and values as XML nodes. - ptree pwork_plans; - IfcSchema::IfcWorkPlan::list::ptr pplans = file->instances_by_type(); - for (IfcSchema::IfcWorkPlan::list::it it = pplans->begin(); it != pplans->end(); ++it) { - IfcSchema::IfcWorkPlan* plan = *it; - ptree* nschedule = format_entity_instance(mapping_, plan, pwork_plans); - - if (nschedule) { -#ifdef SCHEMA_IfcObjectDefinition_HAS_IsDecomposedBy - auto decomposed_by = plan->IsDecomposedBy(); - for (auto it2 = decomposed_by->begin(); it2 != decomposed_by->end(); ++it2) { - IfcSchema::IfcObjectDefinition::list::ptr related_objects = (*it2)->RelatedObjects(); - for (IfcSchema::IfcObjectDefinition::list::it it3 = related_objects->begin(); it3 != related_objects->end(); ++it3) { - IfcSchema::IfcObjectDefinition* work_schedule = *it3; - ptree pwork_schedule; - pwork_schedule.put(".id", work_schedule->GlobalId()); - nschedule->add_child("IfcWorkSchedule", pwork_schedule); - } - } -#endif - } - } - work.add_child("plans", pwork_plans); - - // Write all work calendars and values as XML nodes. -#ifdef SCHEMA_HAS_IfcWorkCalendar - IfcSchema::IfcWorkCalendar::list::ptr pcalendars = file->instances_by_type(); - for (IfcSchema::IfcWorkCalendar::list::it it = pcalendars->begin(); it != pcalendars->end(); ++it) { - IfcSchema::IfcWorkCalendar* calendar = *it; - ptree* ncalendar = format_entity_instance(mapping_, calendar, calendars); - - if (ncalendar) { - IfcSchema::IfcWorkTime::list::ptr working_times = calendar->WorkingTimes().value_or(nullptr); - if (working_times != nullptr) { - for (IfcSchema::IfcWorkTime::list::it it2 = working_times->begin(); it2 != working_times->end(); ++it2) { - IfcSchema::IfcWorkTime* working_time = *it2; - format_entity_instance(mapping_, working_time, *ncalendar); - } - } - } - } -#endif - - IfcSchema::IfcRelConnectsElements::list::ptr pconnections = file->instances_by_type(); - for (IfcSchema::IfcRelConnectsElements::list::it it = pconnections->begin(); it != pconnections->end(); ++it) { - IfcSchema::IfcRelConnectsElements* connection = *it; - - ptree* nconnection = format_entity_instance(mapping_, connection, connections); - - ptree nrelatedElement; - ptree nrelatingElement; - - format_entity_instance(mapping_, connection->RelatedElement(), nrelatedElement, true); - format_entity_instance(mapping_, connection->RelatingElement(), nrelatingElement, true); - - nconnection->add_child("RelatedElement", nrelatedElement); - nconnection->add_child("RelatingElement", nrelatingElement); - } - - // Write all type objects as XML nodes. - IfcSchema::IfcTypeObject::list::ptr type_objects = file->instances_by_type(); - for (IfcSchema::IfcTypeObject::list::it it = type_objects->begin(); it != type_objects->end(); ++it) { - IfcSchema::IfcTypeObject* type_object = *it; - ptree* node = descend(mapping_, type_object, types); - - if (node && type_object->HasPropertySets()) { - IfcSchema::IfcPropertySetDefinition::list::ptr property_sets = *type_object->HasPropertySets(); - for (IfcSchema::IfcPropertySetDefinition::list::it jt = property_sets->begin(); jt != property_sets->end(); ++jt) { - IfcSchema::IfcPropertySetDefinition* pset = *jt; - if (pset->declaration().is(IfcSchema::IfcPropertySet::Class())) { - format_entity_instance(mapping_, pset, *node, true); - } - } - } - } - - // Write all assigned units as XML nodes. - auto unit_assignments = project->UnitsInContext()->Units(); - for (auto it = unit_assignments->begin(); it != unit_assignments->end(); ++it) { - if ((*it)->declaration().is(IfcSchema::IfcNamedUnit::Class())) { - IfcSchema::IfcNamedUnit* named_unit = (*it)->as(); - ptree* node = format_entity_instance(mapping_, named_unit, units); - if (node) { - node->put(".SI_equivalent", IfcParse::get_SI_equivalent(named_unit)); - } - } else if ((*it)->declaration().is(IfcSchema::IfcMonetaryUnit::Class())) { - format_entity_instance(mapping_, (*it)->as(), units); - } - } - - // Layer assignments. IfcPresentationLayerAssignments don't have GUIDs (only optional Identifier) - // so use names as the IDs and only insert those with unique names. In case of possible duplicate names/IDs - // the first IfcPresentationLayerAssignment occurrence takes precedence. - std::set layer_names; - IfcSchema::IfcPresentationLayerAssignment::list::ptr layer_assignments = file->instances_by_type(); - for (IfcSchema::IfcPresentationLayerAssignment::list::it it = layer_assignments->begin(); it != layer_assignments->end(); ++it) { - const std::string& name = (*it)->Name(); - if (layer_names.find(name) == layer_names.end()) { - layer_names.insert(name); - ptree node; - node.put(".id", name); - format_entity_instance(mapping_, *it, node, layers); - } - } - - IfcSchema::IfcRelAssociatesMaterial::list::ptr materal_associations = file->instances_by_type(); - std::set emitted_materials; - for (IfcSchema::IfcRelAssociatesMaterial::list::it it = materal_associations->begin(); it != materal_associations->end(); ++it) { - IfcSchema::IfcMaterialSelect* mat = (**it).RelatingMaterial(); - if (emitted_materials.find(mat) == emitted_materials.end()) { - emitted_materials.insert(mat); - ptree node; - node.put(".id", qualify_unrooted_instance(mat)); - if (mat->as() || mat->as()) { - IfcSchema::IfcMaterialLayerSet* layerset = mat->as(); - if (!layerset) { - layerset = mat->as()->ForLayerSet(); - } - if (layerset->LayerSetName()) { - node.put(".LayerSetName", *layerset->LayerSetName()); - } - IfcSchema::IfcMaterialLayer::list::ptr ls = layerset->MaterialLayers(); - for (IfcSchema::IfcMaterialLayer::list::it jt = ls->begin(); jt != ls->end(); ++jt) { - ptree subnode; - if ((*jt)->Material()) { - subnode.put(".Name", (*jt)->Material()->Name()); - } - format_entity_instance(mapping_, *jt, subnode, node); - } - } else if (mat->as()) { - IfcSchema::IfcMaterial::list::ptr mats = mat->as()->Materials(); - for (IfcSchema::IfcMaterial::list::it jt = mats->begin(); jt != mats->end(); ++jt) { - ptree subnode; - format_entity_instance(mapping_, *jt, subnode, node); - } - } - format_entity_instance(mapping_, mat->as(), node, materials); - } - } - - root.add_child("ifc.header", header); - root.add_child("ifc.units", units); - root.add_child("ifc.connections", connections); - root.add_child("ifc.properties", properties); - root.add_child("ifc.quantities", quantities); - root.add_child("ifc.work", work); - root.add_child("ifc.calendars", calendars); - root.add_child("ifc.types", types); - root.add_child("ifc.layers", layers); - root.add_child("ifc.groups", groups); - root.add_child("ifc.materials", materials); - root.add_child("ifc.decomposition", decomposition); - - root.put("ifc..xmlns:xlink", "http://www.w3.org/1999/xlink"); - -#if BOOST_VERSION >= 105600 - boost::property_tree::xml_writer_settings settings = boost::property_tree::xml_writer_make_settings('\t', 1); -#else - boost::property_tree::xml_writer_settings settings('\t', 1); -#endif - - std::ofstream f(IfcUtil::path::from_utf8(xml_filename).c_str()); - boost::property_tree::write_xml(f, root, settings); - */ - #endif \ No newline at end of file diff --git a/src/serializers/schema_dependent/XmlSerializer.cpp b/src/serializers/schema_dependent/XmlSerializer.cpp index bd9740eac0..ed6ec61a3b 100644 --- a/src/serializers/schema_dependent/XmlSerializer.cpp +++ b/src/serializers/schema_dependent/XmlSerializer.cpp @@ -57,8 +57,8 @@ std::map POSTFIX_SCHEMA(argument_name_map); // Format an IFC attribute and maybe returns as string. Only literal scalar // values are converted. Things like entity instances and lists are omitted. -boost::optional format_attribute(ifcopenshell::geometry::abstract_mapping* mapping, AttributeValue argument, IfcUtil::ArgumentType argument_type, const std::string& argument_name) { - boost::optional value; +std::optional format_attribute(ifcopenshell::geometry::abstract_mapping* mapping, AttributeValue argument, IfcUtil::ArgumentType argument_type, const std::string& argument_name) { + std::optional value; // Hard-code lat-lon as it represents an array // of integers best emitted as a single decimal @@ -104,29 +104,27 @@ boost::optional format_attribute(ifcopenshell::geometry::abstract_m value = stream.str(); break; } case IfcUtil::Argument_ENTITY_INSTANCE: { - IfcUtil::IfcBaseClass* e = argument; - if (!e->declaration().as_entity()) { - IfcUtil::IfcBaseType* f = e->as(); - value = format_attribute(mapping, f->get_attribute_value(0), f->get_attribute_value(0).type(), argument_name); - } else if (e->declaration().is(IfcSchema::IfcSIUnit::Class()) || e->declaration().is(IfcSchema::IfcConversionBasedUnit::Class())) { + express::Base e = argument; + if (e.declaration().as_entity() == nullptr) { + auto f = e.as(); + value = format_attribute(mapping, f.get_attribute_value(0), f.get_attribute_value(0).type(), argument_name); + } else if (e.declaration().is(IfcSchema::IfcSIUnit::Class()) || e.declaration().is(IfcSchema::IfcConversionBasedUnit::Class())) { // Some string concatenation to have a unit name as a XML attribute. std::string unit_name; - if (e->declaration().is(IfcSchema::IfcSIUnit::Class())) { - IfcSchema::IfcSIUnit* unit = e->as(); - unit_name = IfcSchema::IfcSIUnitName::ToString(unit->Name()); - if (unit->Prefix()) { - unit_name = IfcSchema::IfcSIPrefix::ToString(*unit->Prefix()) + unit_name; + if (auto unit = e.as()) { + unit_name = IfcSchema::IfcSIUnitName::ToString(unit.Name()); + if (unit.Prefix()) { + unit_name = IfcSchema::IfcSIPrefix::ToString(*unit.Prefix()) + unit_name; } } else { - IfcSchema::IfcConversionBasedUnit* unit = e->as(); - unit_name = unit->Name(); + auto cunit = e.as(); + unit_name = cunit.Name(); } value = unit_name; - } else if (e->declaration().is(IfcSchema::IfcLocalPlacement::Class())) { - IfcSchema::IfcLocalPlacement* placement = e->as(); + } else if (auto placement = e.as()) { auto item = mapping->map(e); auto matrix = ifcopenshell::geometry::taxonomy::cast< ifcopenshell::geometry::taxonomy::matrix4>(item); @@ -151,28 +149,28 @@ boost::optional format_attribute(ifcopenshell::geometry::abstract_m } // Appends to a node with possibly existing attributes -ptree* format_entity_instance(ifcopenshell::geometry::abstract_mapping* mapping, IfcUtil::IfcBaseEntity* instance, ptree& child, ptree& tree, bool as_link = false) { - const unsigned n = instance->declaration().as_entity()->attribute_count(); +ptree* format_entity_instance(ifcopenshell::geometry::abstract_mapping* mapping, const express::Base& instance, ptree& child, ptree& tree, bool as_link = false) { + const unsigned n = instance.declaration().as_entity()->attribute_count(); for (unsigned i = 0; i < n; ++i) { try { - instance->get_attribute_value(i); + instance.get_attribute_value(i); } catch (const std::exception&) { Logger::Error("Expected " + boost::lexical_cast(n) + " attributes for:", instance); break; } - auto argument = instance->get_attribute_value(i); + auto argument = instance.get_attribute_value(i); if (argument.isNull()) continue; - std::string argument_name = instance->declaration().as_entity()->attribute_by_index(i)->name(); + std::string argument_name = instance.declaration().as_entity()->attribute_by_index(i)->name(); std::map::const_iterator argument_name_it; argument_name_it = POSTFIX_SCHEMA(argument_name_map).find(argument_name); if (argument_name_it != POSTFIX_SCHEMA(argument_name_map).end()) { argument_name = argument_name_it->second; } - const IfcUtil::ArgumentType argument_type = instance->get_attribute_value(i).type(); + const IfcUtil::ArgumentType argument_type = instance.get_attribute_value(i).type(); - const std::string qualified_name = instance->declaration().name() + "." + argument_name; - boost::optional value; + const std::string qualified_name = instance.declaration().name() + "." + argument_name; + std::optional value; try { value = format_attribute(mapping, argument, argument_type, qualified_name); } catch (const std::exception& e) { @@ -191,26 +189,26 @@ ptree* format_entity_instance(ifcopenshell::geometry::abstract_mapping* mapping, } } } - return &tree.add_child(instance->declaration().name(), child); + return &tree.add_child(instance.declaration().name(), child); } // Formats an entity instances as a ptree node, and insert into the DOM. Recurses // over the entity attributes and writes them as xml attributes of the node. -ptree* format_entity_instance(ifcopenshell::geometry::abstract_mapping* mapping, IfcUtil::IfcBaseEntity* instance, ptree& tree, bool as_link = false) { +ptree* format_entity_instance(ifcopenshell::geometry::abstract_mapping* mapping, const express::Base& instance, ptree& tree, bool as_link = false) { ptree child; return format_entity_instance(mapping, instance, child, tree, as_link); } -std::string qualify_unrooted_instance(IfcUtil::IfcBaseInterface* inst) { - return inst->declaration().name() + "_" + boost::lexical_cast(inst->as()->id()); +std::string qualify_unrooted_instance(const express::Base& inst) { + return inst.declaration().name() + "_" + std::to_string(inst.id()); } // A function to be called recursively. Template specialization is used // to descend into decomposition, containment and property relationships. template -ptree* descend(ifcopenshell::geometry::abstract_mapping* mapping, A* instance, ptree& tree, IfcUtil::IfcBaseClass* parent=nullptr) { - if (instance->declaration().is(IfcSchema::IfcObjectDefinition::Class())) { - return descend(mapping, instance->template as(), tree, parent); +ptree* descend(ifcopenshell::geometry::abstract_mapping* mapping, A instance, ptree& tree, express::Base parent = express::Base()) { + if (instance.declaration().is(IfcSchema::IfcObjectDefinition::Class())) { + return descend(mapping, instance.template as(), tree, parent); } else { return format_entity_instance(mapping, instance, tree); } @@ -219,13 +217,27 @@ ptree* descend(ifcopenshell::geometry::abstract_mapping* mapping, A* instance, p // Returns related entity instances using IFC's objectified relationship // model. The second and third argument require a member function pointer. template -auto get_related(T* t, F f, G g) { - typename U::list::ptr li = (*t.*f)()->template as(); - typename aggregate_of::ptr acc(new aggregate_of); - for (typename U::list::it it = li->begin(); it != li->end(); ++it) { - U* u = *it; +auto get_related(T t, F f, G g) { + auto li = (t.*f)(); + std::vector acc; + for (auto& u : li) { try { - acc->push((*u.*g)()->template as()); + auto vs = (u.as().*g)(); + if constexpr (std::is_base_of_v) { + if (auto vv = vs.as()) { + acc.push_back(vv); + } + } else if constexpr (std::is_base_of_v) { + if (auto vv = vs.concrete().as()) { + acc.push_back(vv); + } + } else { + for (auto& v : vs) { + if (auto vv = v.as()) { + acc.push_back(vv); + } + } + } } catch (IfcParse::IfcException& e) { Logger::Error(e); } @@ -236,10 +248,10 @@ auto get_related(T* t, F f, G g) { // Descends into the tree by recursing into IfcRelContainedInSpatialStructure, // IfcRelDecomposes, IfcRelDefinesByType, IfcRelDefinesByProperties relations. template <> -ptree* descend(ifcopenshell::geometry::abstract_mapping* mapping, IfcSchema::IfcObjectDefinition* product, ptree& tree, IfcUtil::IfcBaseClass* parent) { - if (product->declaration().is(IfcSchema::IfcElement::Class())) { - auto voids = product->as()->FillsVoids(); - if (voids && voids->size() == 1 && (*voids->begin())->RelatingOpeningElement() != parent) { +ptree* descend(ifcopenshell::geometry::abstract_mapping* mapping, const IfcSchema::IfcObjectDefinition& product, ptree& tree, express::Base parent) { + if (product.declaration().is(IfcSchema::IfcElement::Class())) { + auto voids = product.as().FillsVoids(); + if (voids.size() == 1 && voids.front().RelatingOpeningElement() != parent) { // Fills are placed under their corresponding opening, return early to avoid duplication. return nullptr; } @@ -247,125 +259,119 @@ ptree* descend(ifcopenshell::geometry::abstract_mapping* mapping, IfcSchema::Ifc ptree& child = *format_entity_instance(mapping, product, tree); - if (product->declaration().is(IfcSchema::IfcOpeningElement::Class())) { - IfcSchema::IfcOpeningElement* opening = product->as(); - IfcSchema::IfcElement::list::ptr fills = get_related( + if (auto opening = product.as()) { + auto fills = get_related( opening, &IfcSchema::IfcOpeningElement::HasFillings, &IfcSchema::IfcRelFillsElement::RelatedBuildingElement); - for (IfcSchema::IfcElement::list::it it = fills->begin(); it != fills->end(); ++it) { - descend(mapping, *it, child, product); + for (auto& f : fills) { + descend(mapping, f, child, product); } } - if (product->declaration().is(IfcSchema::IfcSpatialStructureElement::Class())) { - IfcSchema::IfcSpatialStructureElement* structure = product->as(); - - IfcSchema::IfcObjectDefinition::list::ptr elements = get_related + if (auto structure = product.as()) { + auto elements = get_related (structure, &IfcSchema::IfcSpatialStructureElement::ContainsElements, &IfcSchema::IfcRelContainedInSpatialStructure::RelatedElements); - for (IfcSchema::IfcObjectDefinition::list::it it = elements->begin(); it != elements->end(); ++it) { - descend(mapping, *it, child, product); + for (auto& el : elements) { + descend(mapping, el, child, product); } } - if (product->declaration().is(IfcSchema::IfcElement::Class())) { - IfcSchema::IfcElement* element = static_cast(product); - IfcSchema::IfcOpeningElement::list::ptr openings = get_related( + if (auto element = product.as()) { + auto openings = get_related( element, &IfcSchema::IfcElement::HasOpenings, &IfcSchema::IfcRelVoidsElement::RelatedOpeningElement); - for (IfcSchema::IfcOpeningElement::list::it it = openings->begin(); it != openings->end(); ++it) { - descend(mapping, *it, child, product); + for (auto& op : openings) { + descend(mapping, op, child, product); } } #ifdef SCHEMA_IfcRelDecomposes_HAS_RelatedObjects - IfcSchema::IfcObjectDefinition::list::ptr structures = get_related + auto structures = get_related (product, &IfcSchema::IfcObjectDefinition::IsDecomposedBy, &IfcSchema::IfcRelDecomposes::RelatedObjects); #else - IfcSchema::IfcObjectDefinition::list::ptr structures = get_related + auto structures = get_related (product, &IfcSchema::IfcObjectDefinition::IsDecomposedBy, &IfcSchema::IfcRelAggregates::RelatedObjects); - structures->push(get_related + auto nested = get_related - (product, &IfcSchema::IfcObjectDefinition::IsNestedBy, &IfcSchema::IfcRelNests::RelatedObjects)); + (product, &IfcSchema::IfcObjectDefinition::IsNestedBy, &IfcSchema::IfcRelNests::RelatedObjects); + + structures.insert(structures.end(), nested.begin(), nested.end()); #endif - for (IfcSchema::IfcObjectDefinition::list::it it = structures->begin(); it != structures->end(); ++it) { - IfcSchema::IfcObjectDefinition* ob = *it; + for (auto& ob : structures) { descend(mapping, ob, child, product); } - if (product->declaration().is(IfcSchema::IfcObject::Class())) { - IfcSchema::IfcObject* object = product->as(); - - IfcSchema::IfcPropertySetDefinition::list::ptr property_sets = get_related + if (auto object = product.as()) { + auto property_sets = get_related (object, &IfcSchema::IfcObject::IsDefinedBy, &IfcSchema::IfcRelDefinesByProperties::RelatingPropertyDefinition); #ifdef SCHEMAS_HAS_IfcPropertySetDefinitionSet - aggregate_of::ptr property_set_sets = get_related + auto property_set_sets = get_related (object, &IfcSchema::IfcObject::IsDefinedBy, &IfcSchema::IfcRelDefinesByProperties::RelatingPropertyDefinition); - for (auto& s : *property_set_sets) { - property_sets->push((decltype(property_sets))*s); + for (auto& s : property_set_sets) { + auto set_sets_value = (decltype(property_sets))s; + property_sets.insert(property_sets.end(), set_sets_value.begin(), set_sets_value.end()); } #endif - for (IfcSchema::IfcPropertySetDefinition::list::it it = property_sets->begin(); it != property_sets->end(); ++it) { - IfcSchema::IfcPropertySetDefinition* pset = *it; - if (pset->declaration().is(IfcSchema::IfcPropertySet::Class())) { + for (auto& pset : property_sets) { + if (pset.declaration().is(IfcSchema::IfcPropertySet::Class())) { format_entity_instance(mapping, pset, child, true); - } else if (pset->declaration().is(IfcSchema::IfcElementQuantity::Class())) { + } else if (pset.declaration().is(IfcSchema::IfcElementQuantity::Class())) { format_entity_instance(mapping, pset, child, true); } } #ifdef SCHEMA_IfcObject_HAS_IsTypedBy - IfcSchema::IfcTypeObject::list::ptr types = get_related + auto types = get_related (object, &IfcSchema::IfcObject::IsTypedBy, &IfcSchema::IfcRelDefinesByType::RelatingType); #else - IfcSchema::IfcTypeObject::list::ptr types = get_related + auto types = get_related (object, &IfcSchema::IfcObject::IsDefinedBy, &IfcSchema::IfcRelDefinesByType::RelatingType); #endif - for (IfcSchema::IfcTypeObject::list::it it = types->begin(); it != types->end(); ++it) { - IfcSchema::IfcTypeObject* type = *it; + for (auto& type : types) { format_entity_instance(mapping, type, child, true); } } - if (product->declaration().is(IfcSchema::IfcProduct::Class())) { - std::map layers = mapping->get_layers(product); - for (std::map::const_iterator it = layers.begin(); it != layers.end(); ++it) { + if (product.declaration().is(IfcSchema::IfcProduct::Class())) { + auto layers = mapping->get_layers(product); + for (auto& p : layers) { // IfcPresentationLayerAssignments don't have GUIDs (only optional Identifier) so use name as the ID. // Note that the IfcPresentationLayerAssignment passed here doesn't really matter as as_link is true // for the format_entity_instance() call. ptree node; - node.put(".xlink:href", "#" + it->first); - format_entity_instance(mapping, it->second, node, child, true); + node.put(".xlink:href", "#" + p.first); + format_entity_instance(mapping, p.second, node, child, true); } - IfcSchema::IfcRelAssociates::list::ptr associations = product->HasAssociations(); - for (IfcSchema::IfcRelAssociates::list::it it = associations->begin(); it != associations->end(); ++it) { - if ((*it)->as()) { - IfcSchema::IfcMaterialSelect* mat = (*it)->as()->RelatingMaterial(); + auto associations = product.HasAssociations(); + for (auto& rel : associations) { + if (auto relmat = rel.as()) { + IfcSchema::IfcMaterialSelect mat = relmat.RelatingMaterial(); ptree node; node.put(".xlink:href", "#" + qualify_unrooted_instance(mat)); - format_entity_instance(mapping, mat->as(), node, child, true); + format_entity_instance(mapping, mat.concrete(), node, child, true); } } } #if defined(SCHEMA_HAS_IfcAlignmentSegment) && defined(SCHEMA_IfcAlignmentSegment_HAS_DesignParameters) - if (auto* als = product->as()) { + if (auto als = product.as()) { ptree node; - format_entity_instance(mapping, als->DesignParameters(), node, child, false); + format_entity_instance(mapping, als.DesignParameters(), node, child, false); } #endif @@ -373,42 +379,38 @@ ptree* descend(ifcopenshell::geometry::abstract_mapping* mapping, IfcSchema::Ifc } // Format IfcProperty instances and insert into the DOM. IfcComplexProperties are flattened out. -void format_properties(ifcopenshell::geometry::abstract_mapping* mapping, IfcSchema::IfcProperty::list::ptr properties, ptree& node) { - for (IfcSchema::IfcProperty::list::it it = properties->begin(); it != properties->end(); ++it) { - IfcSchema::IfcProperty* p = *it; - if (p->declaration().is(IfcSchema::IfcComplexProperty::Class())) { - IfcSchema::IfcComplexProperty* complex = p->as(); - format_properties(mapping, complex->HasProperties(), node); +void format_properties(ifcopenshell::geometry::abstract_mapping* mapping, const std::vector& properties, ptree& node) { + for (auto& p : properties) { + if (auto complex = p.as()) { + format_properties(mapping, complex.HasProperties(), node); } else { format_entity_instance(mapping, p, node); } } } -void writeGroupToNode(ifcopenshell::geometry::abstract_mapping* mapping, IfcSchema::IfcGroup* group, ptree& node, std::setnotRootGroups) { +void writeGroupToNode(ifcopenshell::geometry::abstract_mapping* mapping, IfcSchema::IfcGroup group, ptree& node, std::set notRootGroups) { // @todo tfk: instead of a set shouldn't we just have a set, the current approach // might not work with non-unique or NIL group names. // @todo tfk: should the set be a passed as a reference? - if (!group->Name()) { + if (!group.Name()) { return; } - if (notRootGroups.find(*group->Name()) != notRootGroups.end()) { + if (notRootGroups.find(*group.Name()) != notRootGroups.end()) { return; } // Write one group to root ptree* node2 = descend(mapping, group, node); - auto father = group->IsGroupedBy(); - for (auto iter = father->begin(); iter != father->end(); iter++) + auto father = group.IsGroupedBy(); + for (auto& ii : father) { - IfcSchema::IfcRelAssigns* ii = *iter; - auto objs = ii->RelatedObjects(); - for (auto objit = objs->begin(); objit != objs->end(); objit++) { - auto entity = *objit; - if (entity->declaration().is(IfcSchema::IfcGroup::Class()) && entity->Name()) { - writeGroupToNode(mapping, entity->as(), *node2, notRootGroups); - notRootGroups.emplace(*entity->Name()); + auto objs = ii.RelatedObjects(); + for (auto entity : objs) { + if (entity.as() && entity.Name()) { + writeGroupToNode(mapping, entity.as(), *node2, notRootGroups); + notRootGroups.emplace(*entity.Name()); } else { // Write child to father group @@ -419,24 +421,22 @@ void writeGroupToNode(ifcopenshell::geometry::abstract_mapping* mapping, IfcSche } // Format IfcElementQuantity instances and insert into the DOM. -void format_quantities(ifcopenshell::geometry::abstract_mapping* mapping, IfcSchema::IfcPhysicalQuantity::list::ptr quantities, ptree& node) { - for (IfcSchema::IfcPhysicalQuantity::list::it it = quantities->begin(); it != quantities->end(); ++it) { - IfcSchema::IfcPhysicalQuantity* p = *it; +void format_quantities(ifcopenshell::geometry::abstract_mapping* mapping, const std::vector& quantities, ptree& node) { + for (auto& p : quantities) { ptree* node2 = format_entity_instance(mapping, p, node); - if (node2 && p->declaration().is(IfcSchema::IfcPhysicalComplexQuantity::Class())) { - IfcSchema::IfcPhysicalComplexQuantity* complex = p->as(); - format_quantities(mapping, complex->HasQuantities(), *node2); + if (node2 && p.declaration().is(IfcSchema::IfcPhysicalComplexQuantity::Class())) { + format_quantities(mapping, p.as().HasQuantities(), *node2); } } } // Format IfcTask instances and insert into the DOM. -void format_tasks(ifcopenshell::geometry::abstract_mapping* mapping, IfcSchema::IfcTask* task, ptree& node) { +void format_tasks(ifcopenshell::geometry::abstract_mapping* mapping, IfcSchema::IfcTask task, ptree& node) { ptree* ntask = format_entity_instance(mapping, task, node); if (ntask) { #ifdef SCHEMA_IfcTask_HAS_TaskTime - IfcSchema::IfcTaskTime* task_time = task->TaskTime(); + IfcSchema::IfcTaskTime task_time = task.TaskTime(); if (task_time) { format_entity_instance(mapping, task_time, *ntask); @@ -444,101 +444,94 @@ void format_tasks(ifcopenshell::geometry::abstract_mapping* mapping, IfcSchema:: #endif #ifdef SCHEMA_IfcProcess_HAS_IsSuccessorFrom - IfcSchema::IfcRelSequence::list::ptr successor_from = task->IsSuccessorFrom(); - for (IfcSchema::IfcRelSequence::list::it it = successor_from->begin(); it != successor_from->end(); ++it) + auto successor_from = task.IsSuccessorFrom(); + for (auto& rel : successor_from) { - IfcSchema::IfcProcess* relating_process = (*it)->RelatingProcess(); + IfcSchema::IfcProcess relating_process = rel.RelatingProcess(); ptree nobject; - nobject.put(".id", relating_process->GlobalId()); + nobject.put(".id", relating_process.GlobalId()); ntask->add_child("IsSuccessorFrom", nobject); } #endif #ifdef SCHEMA_IfcProcess_HAS_IsPredecessorTo - IfcSchema::IfcRelSequence::list::ptr predecessor_to = task->IsPredecessorTo(); - for (IfcSchema::IfcRelSequence::list::it it = predecessor_to->begin(); it != predecessor_to->end(); ++it) + auto predecessor_to = task.IsPredecessorTo(); + for (auto& rel : predecessor_to) { - IfcSchema::IfcProcess* relating_process = (*it)->RelatedProcess(); + IfcSchema::IfcProcess relating_process = rel.RelatedProcess(); ptree nobject; - nobject.put(".id", relating_process->GlobalId()); + nobject.put(".id", relating_process.GlobalId()); ntask->add_child("IsPredecessorTo", nobject); } #endif - IfcSchema::IfcPropertySetDefinition::list::ptr property_sets = get_related + auto property_sets = get_related (task, &IfcSchema::IfcObject::IsDefinedBy, &IfcSchema::IfcRelDefinesByProperties::RelatingPropertyDefinition); - for (IfcSchema::IfcPropertySetDefinition::list::it it = property_sets->begin(); it != property_sets->end(); ++it) { - IfcSchema::IfcPropertySetDefinition* pset = *it; - if (pset->declaration().is(IfcSchema::IfcPropertySet::Class())) { + for (auto& pset : property_sets) { + if (pset.declaration().is(IfcSchema::IfcPropertySet::Class())) { format_entity_instance(mapping, pset, *ntask, true); } - else if (pset->declaration().is(IfcSchema::IfcElementQuantity::Class())) { + else if (pset.declaration().is(IfcSchema::IfcElementQuantity::Class())) { format_entity_instance(mapping, pset, *ntask, true); } } #ifdef SCHEMA_IfcProcess_HAS_OperatesOn - IfcSchema::IfcRelAssignsToProcess::list::ptr operates = task->OperatesOn(); - if (operates->size() > 0) + auto operates = task.OperatesOn(); + for (auto& operation : operates) { - for (IfcSchema::IfcRelAssignsToProcess::list::it i = operates->begin(); i != operates->end(); ++i) + auto objects = operation.RelatedObjects(); + for (auto& object : objects) { - IfcSchema::IfcRelAssignsToProcess* operation = (*i); - IfcSchema::IfcObjectDefinition::list::ptr objects = operation->RelatedObjects(); - for (IfcSchema::IfcObjectDefinition::list::it it2 = objects->begin(); it2 != objects->end(); ++it2) + ptree nobject; + nobject.put(".id", object.GlobalId()); + if (object.declaration().is(IfcSchema::IfcProduct::Class())) { - IfcSchema::IfcObjectDefinition* object = *it2; - ptree nobject; - nobject.put(".id", object->GlobalId()); - if (object->declaration().is(IfcSchema::IfcProduct::Class())) - { - ntask->add_child("Input", nobject); - } - else if (object->declaration().is(IfcSchema::IfcResource::Class())) - { - ntask->add_child("Resource", nobject); - } - else if (object->declaration().is(IfcSchema::IfcControl::Class())) - { - ntask->add_child("Control", nobject); - } - else - { - nobject.put(".Type", object->declaration().name()); - ntask->add_child("OperatesOn", nobject); - } + ntask->add_child("Input", nobject); + } + else if (object.declaration().is(IfcSchema::IfcResource::Class())) + { + ntask->add_child("Resource", nobject); + } + else if (object.declaration().is(IfcSchema::IfcControl::Class())) + { + ntask->add_child("Control", nobject); + } + else + { + nobject.put(".Type", object.declaration().name()); + ntask->add_child("OperatesOn", nobject); } } } #endif - IfcSchema::IfcRelAssigns::list::ptr assignments = task->HasAssignments(); - for (IfcSchema::IfcRelAssigns::list::it i = assignments->begin(); i != assignments->end(); ++i) + auto assignments = task.HasAssignments(); + for (auto& assignment : assignments) { - IfcSchema::IfcRelAssigns* assignment = *i; - if (assignment->declaration().is(IfcSchema::IfcRelAssignsToProduct::Class())) { - IfcSchema::IfcRelAssignsToProduct* assign_to_product = assignment->as(); - IfcSchema::IfcProduct* product = assign_to_product->RelatingProduct()->as(); + if (auto assign_to_product = assignment.as()) { + IfcSchema::IfcRoot product = assign_to_product.RelatingProduct().as(); + if (!product) { + product = assign_to_product.RelatingProduct().as(); + } ptree nobject; - nobject.put(".id", product->GlobalId()); + nobject.put(".id", product.GlobalId()); ntask->add_child("Output", nobject); } } #ifdef SCHEMA_IfcObjectDefinition_HAS_IsNestedBy - IfcSchema::IfcRelNests::list::ptr nested_by = task->IsNestedBy(); - for (IfcSchema::IfcRelNests::list::it it = nested_by->begin(); it != nested_by->end(); ++it) + auto nested_by = task.IsNestedBy(); + for (auto& rel : nested_by) { - IfcSchema::IfcObjectDefinition::list::ptr related_objects = (*it)->RelatedObjects(); - for (IfcSchema::IfcObjectDefinition::list::it it2 = related_objects->begin(); it2 != related_objects->end(); ++it2) + auto related_objects = rel.RelatedObjects(); + for (auto& object : related_objects) { - if (!(*it2)->declaration().is(IfcSchema::IfcTask::Class())) { - continue; - } - IfcSchema::IfcTask* task2 = (*it2)->as(); - format_tasks(mapping, task2, *ntask); + if (auto task2 = object.as()) { + format_tasks(mapping, task2, *ntask); + } } } #endif @@ -550,12 +543,12 @@ void format_tasks(ifcopenshell::geometry::abstract_mapping* mapping, IfcSchema:: void POSTFIX_SCHEMA(XmlSerializer)::finalize() { POSTFIX_SCHEMA(argument_name_map).insert(std::make_pair("GlobalId", "id")); - IfcSchema::IfcProject::list::ptr projects = file->instances_by_type(); - if (projects->size() != 1) { + auto projects = file->instances_by_type(); + if (projects.size() != 1) { Logger::Message(Logger::LOG_ERROR, "Expected a single IfcProject"); return; } - IfcSchema::IfcProject* project = *projects->begin(); + IfcSchema::IfcProject& project = projects.front(); ptree root, header, units, decomposition, properties, quantities, types, layers, materials, work, calendars, connections, groups; @@ -570,20 +563,20 @@ void POSTFIX_SCHEMA(XmlSerializer)::finalize() { }; // Write the SPF header as XML nodes. - BOOST_FOREACH(const std::string & s, catch_exceptions([this]() { return file->header().file_description()->description(); })) { + BOOST_FOREACH(const std::string & s, catch_exceptions([this]() { return file->header().file_description().description(); })) { header.add_child("file_description.description", ptree(s)); } - BOOST_FOREACH(const std::string& s, catch_exceptions([this]() { return file->header().file_name()->author(); })) { + BOOST_FOREACH(const std::string& s, catch_exceptions([this]() { return file->header().file_name().author(); })) { header.add_child("file_name.author", ptree(s)); } - BOOST_FOREACH(const std::string& s, catch_exceptions([this]() { return file->header().file_name()->organization(); })) { + BOOST_FOREACH(const std::string& s, catch_exceptions([this]() { return file->header().file_name().organization(); })) { header.add_child("file_name.organization", ptree(s)); } - BOOST_FOREACH(const std::string& s, catch_exceptions([this]() { return file->header().file_schema()->schema_identifiers(); })) { + BOOST_FOREACH(const std::string& s, catch_exceptions([this]() { return file->header().file_schema().schema_identifiers(); })) { header.add_child("file_schema.schema_identifiers", ptree(s)); } try { - header.put("file_description.implementation_level", file->header().file_description()->implementation_level()); + header.put("file_description.implementation_level", file->header().file_description().implementation_level()); } catch (const IfcParse::IfcException& ex) { std::stringstream ss; @@ -591,7 +584,7 @@ void POSTFIX_SCHEMA(XmlSerializer)::finalize() { Logger::Message(Logger::LOG_ERROR, ss.str()); } try { - header.put("file_name.name", file->header().file_name()->name()); + header.put("file_name.name", file->header().file_name().name()); } catch (const IfcParse::IfcException& ex) { std::stringstream ss; @@ -599,7 +592,7 @@ void POSTFIX_SCHEMA(XmlSerializer)::finalize() { Logger::Message(Logger::LOG_ERROR, ss.str()); } try { - header.put("file_name.time_stamp", file->header().file_name()->time_stamp()); + header.put("file_name.time_stamp", file->header().file_name().time_stamp()); } catch (const IfcParse::IfcException& ex) { std::stringstream ss; @@ -607,7 +600,7 @@ void POSTFIX_SCHEMA(XmlSerializer)::finalize() { Logger::Message(Logger::LOG_ERROR, ss.str()); } try { - header.put("file_name.preprocessor_version", file->header().file_name()->preprocessor_version()); + header.put("file_name.preprocessor_version", file->header().file_name().preprocessor_version()); } catch (const IfcParse::IfcException& ex) { std::stringstream ss; @@ -615,7 +608,7 @@ void POSTFIX_SCHEMA(XmlSerializer)::finalize() { Logger::Message(Logger::LOG_ERROR, ss.str()); } try { - header.put("file_name.originating_system", file->header().file_name()->originating_system()); + header.put("file_name.originating_system", file->header().file_name().originating_system()); } catch (const IfcParse::IfcException& ex) { std::stringstream ss; @@ -624,7 +617,7 @@ void POSTFIX_SCHEMA(XmlSerializer)::finalize() { } try { // @nb inconsistent spelling - header.put("file_name.authorization", file->header().file_name()->authorization()); + header.put("file_name.authorization", file->header().file_name().authorization()); } catch (const IfcParse::IfcException& ex) { std::stringstream ss; @@ -636,20 +629,19 @@ void POSTFIX_SCHEMA(XmlSerializer)::finalize() { descend(mapping_, project, decomposition); // Write all property sets and values as XML nodes. - IfcSchema::IfcPropertySet::list::ptr psets = file->instances_by_type(); - for (IfcSchema::IfcPropertySet::list::it it = psets->begin(); it != psets->end(); ++it) { - IfcSchema::IfcPropertySet* pset = *it; + auto psets = file->instances_by_type(); + for (auto& pset : psets) { ptree* node = format_entity_instance(mapping_, pset, properties); if (node) { - format_properties(mapping_, pset->HasProperties(), *node); + format_properties(mapping_, pset.HasProperties(), *node); } } // Write all group sets and values as XML nodes. - IfcSchema::IfcGroup::list::ptr gsets = file->instances_by_type(); + auto gsets = file->instances_by_type(); std::set notRootGroups; //selfname, fathername - for (IfcSchema::IfcGroup::list::it it = gsets->begin(); it != gsets->end(); ++it) { - writeGroupToNode(mapping_, *it, groups, notRootGroups); + for (auto& g : gsets) { + writeGroupToNode(mapping_, g, groups, notRootGroups); } for (auto it = groups.begin(); it != groups.end();) { if (notRootGroups.find(it->second.get(".Name")) != notRootGroups.end()) { @@ -660,33 +652,27 @@ void POSTFIX_SCHEMA(XmlSerializer)::finalize() { } // Write all quantities and values as XML nodes. - IfcSchema::IfcElementQuantity::list::ptr qtosets = file->instances_by_type(); - for (IfcSchema::IfcElementQuantity::list::it it = qtosets->begin(); it != qtosets->end(); ++it) { - IfcSchema::IfcElementQuantity* qto = *it; + auto qtosets = file->instances_by_type(); + for (auto& qto : qtosets) { ptree* node = format_entity_instance(mapping_, qto, quantities); if (node) { - format_quantities(mapping_, qto->Quantities(), *node); + format_quantities(mapping_, qto.Quantities(), *node); } } // Write all work schedules and values as XML nodes. ptree pwork_schedules; - IfcSchema::IfcWorkSchedule::list::ptr pschedules = file->instances_by_type(); - for (IfcSchema::IfcWorkSchedule::list::it it = pschedules->begin(); it != pschedules->end(); ++it) { - IfcSchema::IfcWorkSchedule* schedule = *it; + auto pschedules = file->instances_by_type(); + for (auto& schedule : pschedules) { ptree* nschedule = format_entity_instance(mapping_, schedule, pwork_schedules); if(nschedule) { - IfcSchema::IfcRelAssignsToControl::list::ptr controls = schedule->Controls(); - for(IfcSchema::IfcRelAssignsToControl::list::it it2 = controls->begin(); it2 != controls->end(); ++it2) { - IfcSchema::IfcRelAssignsToControl* control = *it2; - - IfcSchema::IfcObjectDefinition::list::ptr objects = control->RelatedObjects(); - for(IfcSchema::IfcObjectDefinition::list::it it3 = objects->begin(); it3 != objects->end(); ++it3) { - IfcSchema::IfcObjectDefinition* object = *it3; - - if (object && object->declaration().is(IfcSchema::IfcTask::Class())) { - IfcSchema::IfcTask* task = object->as(); + auto controls = schedule.Controls(); + for(auto& control : controls) { + auto objects = control.RelatedObjects(); + for(auto& object : objects) { + if (object && object.declaration().is(IfcSchema::IfcTask::Class())) { + IfcSchema::IfcTask task = object.as(); format_tasks(mapping_, task, *nschedule); } } @@ -697,22 +683,20 @@ void POSTFIX_SCHEMA(XmlSerializer)::finalize() { // Write all work plans and values as XML nodes. ptree pwork_plans; - IfcSchema::IfcWorkPlan::list::ptr pplans = file->instances_by_type(); - for (IfcSchema::IfcWorkPlan::list::it it = pplans->begin(); it != pplans->end(); ++it) { - IfcSchema::IfcWorkPlan* plan = *it; + auto pplans = file->instances_by_type(); + for (auto& plan : pplans) { ptree* nschedule = format_entity_instance(mapping_, plan, pwork_plans); if (nschedule) { #ifdef SCHEMA_IfcObjectDefinition_HAS_IsDecomposedBy - auto decomposed_by = plan->IsDecomposedBy(); - for (auto it2 = decomposed_by->begin(); it2 != decomposed_by->end(); ++it2) + auto decomposed_by = plan.IsDecomposedBy(); + for (auto& rel : decomposed_by) { - IfcSchema::IfcObjectDefinition::list::ptr related_objects = (*it2)->RelatedObjects(); - for (IfcSchema::IfcObjectDefinition::list::it it3 = related_objects->begin(); it3 != related_objects->end(); ++it3) + auto related_objects = rel.RelatedObjects(); + for (auto& work_schedule : related_objects) { - IfcSchema::IfcObjectDefinition* work_schedule = *it3; ptree pwork_schedule; - pwork_schedule.put(".id", work_schedule->GlobalId()); + pwork_schedule.put(".id", work_schedule.GlobalId()); nschedule->add_child("IfcWorkSchedule", pwork_schedule); } } @@ -723,51 +707,43 @@ void POSTFIX_SCHEMA(XmlSerializer)::finalize() { // Write all work calendars and values as XML nodes. #ifdef SCHEMA_HAS_IfcWorkCalendar - IfcSchema::IfcWorkCalendar::list::ptr pcalendars = file->instances_by_type(); - for (IfcSchema::IfcWorkCalendar::list::it it = pcalendars->begin(); it != pcalendars->end(); ++it) { - IfcSchema::IfcWorkCalendar* calendar = *it; + auto pcalendars = file->instances_by_type(); + for (auto& calendar : pcalendars) { ptree* ncalendar = format_entity_instance(mapping_, calendar, calendars); if (ncalendar) { - IfcSchema::IfcWorkTime::list::ptr working_times = calendar->WorkingTimes().value_or(nullptr); - if (working_times != nullptr) { - for (IfcSchema::IfcWorkTime::list::it it2 = working_times->begin(); it2 != working_times->end(); ++it2) - { - IfcSchema::IfcWorkTime* working_time = *it2; - format_entity_instance(mapping_, working_time, *ncalendar); - } + auto working_times = calendar.WorkingTimes().value_or(std::vector{}); + for (auto& working_time : working_times) + { + format_entity_instance(mapping_, working_time, *ncalendar); } } } #endif - IfcSchema::IfcRelConnectsElements::list::ptr pconnections = file->instances_by_type(); - for (IfcSchema::IfcRelConnectsElements::list::it it = pconnections->begin(); it != pconnections->end(); ++it) { - IfcSchema::IfcRelConnectsElements* connection = *it; - + auto pconnections = file->instances_by_type(); + for (auto& connection : pconnections) { ptree* nconnection = format_entity_instance(mapping_, connection, connections); ptree nrelatedElement; ptree nrelatingElement; - format_entity_instance(mapping_,connection->RelatedElement(), nrelatedElement, true); - format_entity_instance(mapping_,connection->RelatingElement(), nrelatingElement, true); + format_entity_instance(mapping_,connection.RelatedElement(), nrelatedElement, true); + format_entity_instance(mapping_,connection.RelatingElement(), nrelatingElement, true); nconnection->add_child("RelatedElement", nrelatedElement); nconnection->add_child("RelatingElement", nrelatingElement); } // Write all type objects as XML nodes. - IfcSchema::IfcTypeObject::list::ptr type_objects = file->instances_by_type(); - for (IfcSchema::IfcTypeObject::list::it it = type_objects->begin(); it != type_objects->end(); ++it) { - IfcSchema::IfcTypeObject* type_object = *it; + auto type_objects = file->instances_by_type(); + for (auto& type_object : type_objects) { ptree* node = descend(mapping_, type_object, types); - if (node && type_object->HasPropertySets()) { - IfcSchema::IfcPropertySetDefinition::list::ptr property_sets = *type_object->HasPropertySets(); - for (IfcSchema::IfcPropertySetDefinition::list::it jt = property_sets->begin(); jt != property_sets->end(); ++jt) { - IfcSchema::IfcPropertySetDefinition* pset = *jt; - if (pset->declaration().is(IfcSchema::IfcPropertySet::Class())) { + if (node && type_object.HasPropertySets()) { + auto property_sets = *type_object.HasPropertySets(); + for (auto& pset : property_sets) { + if (pset.declaration().is(IfcSchema::IfcPropertySet::Class())) { format_entity_instance(mapping_, pset, *node, true); } } @@ -775,16 +751,15 @@ void POSTFIX_SCHEMA(XmlSerializer)::finalize() { } // Write all assigned units as XML nodes. - auto unit_assignments = project->UnitsInContext()->Units(); - for (auto it = unit_assignments->begin(); it != unit_assignments->end(); ++it) { - if ((*it)->declaration().is(IfcSchema::IfcNamedUnit::Class())) { - IfcSchema::IfcNamedUnit* named_unit = (*it)->as(); + auto unit_assignments = project.UnitsInContext().Units(); + for (auto& unit : unit_assignments) { + if (auto named_unit = unit.as()) { ptree* node = format_entity_instance(mapping_, named_unit, units); if (node) { node->put(".SI_equivalent", IfcParse::get_SI_equivalent(named_unit)); } - } else if ((*it)->declaration().is(IfcSchema::IfcMonetaryUnit::Class())) { - format_entity_instance(mapping_, (*it)->as(), units); + } else if (auto mon_unit = unit.as()) { + format_entity_instance(mapping_, mon_unit, units); } } @@ -792,49 +767,50 @@ void POSTFIX_SCHEMA(XmlSerializer)::finalize() { // so use names as the IDs and only insert those with unique names. In case of possible duplicate names/IDs // the first IfcPresentationLayerAssignment occurrence takes precedence. std::set layer_names; - IfcSchema::IfcPresentationLayerAssignment::list::ptr layer_assignments = file->instances_by_type(); - for (IfcSchema::IfcPresentationLayerAssignment::list::it it = layer_assignments->begin(); it != layer_assignments->end(); ++it) { - const std::string& name = (*it)->Name(); + auto layer_assignments = file->instances_by_type(); + for (auto& assignment : layer_assignments) { + const std::string& name = assignment.Name(); if (layer_names.find(name) == layer_names.end()) { layer_names.insert(name); ptree node; node.put(".id", name); - format_entity_instance(mapping_, *it, node, layers); + format_entity_instance(mapping_, assignment, node, layers); } } - IfcSchema::IfcRelAssociatesMaterial::list::ptr materal_associations = file->instances_by_type(); - std::set emitted_materials; - for (IfcSchema::IfcRelAssociatesMaterial::list::it it = materal_associations->begin(); it != materal_associations->end(); ++it) { - IfcSchema::IfcMaterialSelect* mat = (**it).RelatingMaterial(); + auto materal_associations = file->instances_by_type(); + std::set emitted_materials; + for (auto& rel : materal_associations) { + IfcSchema::IfcMaterialSelect mat = rel.RelatingMaterial(); if (emitted_materials.find(mat) == emitted_materials.end()) { emitted_materials.insert(mat); ptree node; node.put(".id", qualify_unrooted_instance(mat)); - if (mat->as() || mat->as()) { - IfcSchema::IfcMaterialLayerSet* layerset = mat->as(); + // @todo this does not handle IfcMaterialProfileSetUsage and IfcMaterialConstituentSet + if (mat.concrete().as() || mat.concrete().as()) { + IfcSchema::IfcMaterialLayerSet layerset = mat.concrete().as(); if (!layerset) { - layerset = mat->as()->ForLayerSet(); + layerset = mat.concrete().as().ForLayerSet(); } - if (layerset->LayerSetName()) { - node.put(".LayerSetName", *layerset->LayerSetName()); + if (layerset.LayerSetName()) { + node.put(".LayerSetName", *layerset.LayerSetName()); } - IfcSchema::IfcMaterialLayer::list::ptr ls = layerset->MaterialLayers(); - for (IfcSchema::IfcMaterialLayer::list::it jt = ls->begin(); jt != ls->end(); ++jt) { + auto ls = layerset.MaterialLayers(); + for (auto& layer : ls) { ptree subnode; - if ((*jt)->Material()) { - subnode.put(".Name", (*jt)->Material()->Name()); + if (layer.Material()) { + subnode.put(".Name", layer.Material()); } - format_entity_instance(mapping_, *jt, subnode, node); + format_entity_instance(mapping_, layer, subnode, node); } - } else if (mat->as()) { - IfcSchema::IfcMaterial::list::ptr mats = mat->as()->Materials(); - for (IfcSchema::IfcMaterial::list::it jt = mats->begin(); jt != mats->end(); ++jt) { + } else if (auto matlist = mat.concrete().as()) { + auto mats = matlist.Materials(); + for (auto& mat : mats) { ptree subnode; - format_entity_instance(mapping_, *jt, subnode, node); + format_entity_instance(mapping_, mat, subnode, node); } } - format_entity_instance(mapping_, mat->as(), node, materials); + format_entity_instance(mapping_, mat.concrete(), node, materials); } } diff --git a/src/svgfill/src/arrange_polygons.cpp b/src/svgfill/src/arrange_polygons.cpp index 7bddc2e41a..476ae332df 100644 --- a/src/svgfill/src/arrange_polygons.cpp +++ b/src/svgfill/src/arrange_polygons.cpp @@ -134,9 +134,9 @@ T take_first_if_single_item(const std::vector& vec) { } template -boost::optional maybe_take_first_if_single_item(const std::vector& vec) { +std::optional maybe_take_first_if_single_item(const std::vector& vec) { if (vec.size() == 0) { - return boost::none; + return std::nullopt; } if (true || vec.size() == 1) { return vec.front(); @@ -144,9 +144,9 @@ boost::optional maybe_take_first_if_single_item(const std::vector& vec) { } template -boost::optional subtract_retain_largest(const T& lhs, const T& rhs) { +std::optional subtract_retain_largest(const T& lhs, const T& rhs) { std::vector result; - boost::optional mp; + std::optional mp; CGAL::difference(lhs, rhs, std::back_inserter(result)); @@ -156,12 +156,12 @@ boost::optional subtract_retain_largest(const T& lhs, const T& rhs) { if (result.size() > 0) { if (result.front().has_holes()) { - return boost::none; + return std::nullopt; } return result.front().outer_boundary(); } - return boost::none; + return std::nullopt; } // Function to write polygons as line segments in OBJ format @@ -487,7 +487,7 @@ void arrange_cgal_polygons(const std::vector& input_polygons_, std::v // std::cerr << poly1.area() << " " << poly2.area() << std::endl; // std::cerr.flush(); - boost::optional mp1, mp2, mp3, mp4; + std::optional mp1, mp2, mp3, mp4; bool swap = false; swap = poly1->area() <= poly2->area(); @@ -1209,8 +1209,8 @@ void arrange_cgal_polygons(const std::vector& input_polygons_, std::v } auto incoming = CGAL::Ray_2(other, neighbour - other); - boost::optional> closest_neighbouring_segment; - boost::optional> closest_intersection_point; + std::optional> closest_neighbouring_segment; + std::optional> closest_intersection_point; K::FT sq_distance_along_ray = std::numeric_limits::infinity(); for (auto vlt = vit->second.begin(); vlt != vit->second.end(); ++vlt) { @@ -1317,8 +1317,8 @@ void arrange_cgal_polygons(const std::vector& input_polygons_, std::v // create ray incoming -> M CGAL::Ray_2 ray(incoming, M - incoming); // intersect ray with boundary - boost::optional> closest_segment; - boost::optional> closest_intersection_point; + std::optional> closest_segment; + std::optional> closest_intersection_point; K::FT sq_distance_along_ray = std::numeric_limits::infinity(); for (auto jt = bnd.edges_begin(); jt != bnd.edges_end(); ++jt) { const auto& seg = *jt; diff --git a/src/svgfill/src/graph_2d.h b/src/svgfill/src/graph_2d.h index aaaa059b4e..0fbf48b3d6 100644 --- a/src/svgfill/src/graph_2d.h +++ b/src/svgfill/src/graph_2d.h @@ -54,8 +54,8 @@ public: return adjacency_list.find(p); } - boost::optional< CGAL::Segment_2 > query(const Point_2& p, typename Kernel::FT eps) { - boost::optional< CGAL::Segment_2 > closest_segment; + std::optional< CGAL::Segment_2 > query(const Point_2& p, typename Kernel::FT eps) { + std::optional< CGAL::Segment_2 > closest_segment; typename Kernel::FT closest_distance = std::numeric_limits::infinity(); for (auto& p1 : adjacency_list) { for (auto& p2 : p1.second) { diff --git a/src/svgfill/src/svgfill.cpp b/src/svgfill/src/svgfill.cpp index 8a2a1bb008..5b1ebaf07f 100644 --- a/src/svgfill/src/svgfill.cpp +++ b/src/svgfill/src/svgfill.cpp @@ -48,7 +48,7 @@ private: svgfill::point_2 start_, xy_; public: - boost::optional class_name; + std::optional class_name; std::vector> segments; void on_enter_element(tag::element::any) @@ -59,7 +59,7 @@ public: void on_enter_element(tag::element::g) { ++depth_; - if (enabled_at_ == -1 && !class_name.is_initialized()) { + if (enabled_at_ == -1 && !class_name.has_value()) { enabled_at_ = depth_; segments.emplace_back(); } @@ -78,7 +78,7 @@ public: template void set(tag::attribute::class_, Str const & s) { - if (enabled_at_ == -1 && class_name.is_initialized() && std::string(s.begin(), s.size()).find(*class_name) != std::string::npos) { + if (enabled_at_ == -1 && class_name.has_value() && std::string(s.begin(), s.size()).find(*class_name) != std::string::npos) { enabled_at_ = depth_; segments.emplace_back(); } @@ -157,7 +157,7 @@ boost::mpl::fold< boost::mpl::insert >::type processed_attributes_t; -bool svgfill::svg_to_line_segments(const std::string& data, const boost::optional& class_name, std::vector>& segments) +bool svgfill::svg_to_line_segments(const std::string& data, const std::optional& class_name, std::vector>& segments) { Context context; context.class_name = class_name; @@ -187,7 +187,7 @@ bool svgfill::line_segments_to_polygons(solver s, double eps, const std::vector< return line_segments_to_polygons(s, eps, segments, polygons, fn); } -bool svgfill::svg_to_polygons(const std::string& data, const boost::optional& class_name, std::vector& polygons) { +bool svgfill::svg_to_polygons(const std::string& data, const std::optional& class_name, std::vector& polygons) { Context context; context.class_name = class_name; xmlDoc* doc = xmlReadMemory(data.c_str(), data.size(), nullptr, nullptr, 0); diff --git a/src/svgfill/src/svgfill.h b/src/svgfill/src/svgfill.h index 396fc9c924..5c2a68834f 100644 --- a/src/svgfill/src/svgfill.h +++ b/src/svgfill/src/svgfill.h @@ -35,10 +35,11 @@ #define SVGFILL_API #endif -#include - #include +#include #include +#include +#include namespace svgfill { typedef std::array point_2; @@ -107,12 +108,12 @@ namespace svgfill { } }; - SVGFILL_API bool svg_to_line_segments(const std::string& data, const boost::optional& class_name, std::vector>& segments); + SVGFILL_API bool svg_to_line_segments(const std::string& data, const std::optional& class_name, std::vector>& segments); SVGFILL_API bool line_segments_to_polygons(solver s, double eps, const std::vector>& segments, std::vector>& polygons); SVGFILL_API bool line_segments_to_polygons(solver s, double eps, const std::vector>& segments, std::vector>& polygons, std::function& progress); SVGFILL_API std::string polygons_to_svg(const std::vector>& polygons, bool random_color=false); SVGFILL_API std::string polygons_to_svg(const std::vector& polygons, bool random_color = false); - SVGFILL_API bool svg_to_polygons(const std::string& data, const boost::optional& class_name, std::vector& polygons); + SVGFILL_API bool svg_to_polygons(const std::string& data, const std::optional& class_name, std::vector& polygons); SVGFILL_API bool arrange_polygons(const std::vector& polygons, std::vector& arranged); } diff --git a/win/build-deps.cmd b/win/build-deps.cmd index 776864ab84..f490f4a20f 100644 --- a/win/build-deps.cmd +++ b/win/build-deps.cmd @@ -200,6 +200,7 @@ IF "%IFCOS_INSTALL_PYTHON%"=="TRUE" ( echo PYTHONHOME=%PYTHONHOME%>>"%~dp0\%BUILD_DEPS_CACHE_PATH%" ) +goto :SWIG :nuget set DEPENDENCY_NAME=nuget @@ -565,7 +566,7 @@ IF NOT "%IFCOS_INSTALL_PYTHON%"=="TRUE" ( :: nuget doesn't support providing architecture for packages. if NOT %TARGET_ARCH%==x64 ( - call cecho.cmd 0 12 "Automatic insallation of Python for x86 builds is not supported," + call cecho.cmd 0 12 "Automatic installation of Python for x86 builds is not supported," call cecho.cmd 0 12 "please install Python %PYTHON_VERSION% manually and ensure that it is available in PATH." call cecho.cmd 0 12 "https://www.python.org/ftp/python/%PYTHON_VERSION%/%PYTHON_INSTALLER%" goto :Error @@ -583,7 +584,7 @@ IF NOT %ERRORLEVEL%==0 GOTO :Error :SWIG set DEPENDENCY_NAME=SWIG -set SWIG_VERSION=4.1.0 +set SWIG_VERSION=4.4.1 set DEPENDENCY_DIR=%DEPS_DIR%\swig-%SWIG_VERSION% set DEPENDENCY_INSTALL_DIR=%INSTALL_DIR%\swig-%SWIG_VERSION% echo SWIG_INSTALL_DIR=%DEPENDENCY_INSTALL_DIR%>>"%~dp0\%BUILD_DEPS_CACHE_PATH%" @@ -625,6 +626,8 @@ call :InstallCMakeProject "%DEPENDENCY_DIR%\%BUILD_DIR%" Release IF NOT %ERRORLEVEL%==0 GOTO :Error robocopy "%INSTALL_DIR%\swigwin\bin" "%INSTALL_DIR%\swigwin" /move /e +goto :Successful + :cgal IF EXIST "%INSTALL_DIR%\cgal" (